package me.youhavetrouble.preventstabby.util; import me.clip.placeholderapi.PlaceholderAPI; import me.youhavetrouble.preventstabby.PreventStabby; import net.kyori.adventure.platform.bukkit.BukkitAudiences; import net.kyori.adventure.text.Component; import net.kyori.adventure.text.minimessage.MiniMessage; import net.kyori.adventure.text.serializer.legacy.LegacyComponentSerializer; import org.bukkit.Bukkit; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; import java.util.UUID; public class PluginMessages { public static final MiniMessage MINIMESSAGE = MiniMessage.miniMessage(); private static final BukkitAudiences audiences = PreventStabby.getAudiences(); public static Component parseMessage(String message) { message = makeColorsWork('&', message); message = makeColorsWork(LegacyComponentSerializer.SECTION_CHAR, message); return MINIMESSAGE.deserialize(message); } public static Component parseMessage(CommandSender sender,String message) { if (sender instanceof Player && isPlaceholderApiEnabled()) { Player player = (Player) sender; message = PlaceholderAPI.setPlaceholders(player, message); } return parseMessage(message); } private static boolean isPlaceholderApiEnabled() { return PreventStabby.getPlugin().getServer().getPluginManager().getPlugin("PlaceholderAPI") != null; } public static void sendMessage(CommandSender sender, String message) { audiences.sender(sender).sendMessage(parseMessage(sender, message)); } public static void sendActionBar(Player player, String message) { Component parsedMessage = parseMessage(player, message); audiences.player(player).sendActionBar(parsedMessage); } public static void sendActionBar(UUID uuid, String message) { Player player = Bukkit.getPlayer(uuid); if (player == null) return; sendActionBar(player, message); } public static String parsePlayerName(Player player, String message) { message = message.replaceAll("%player%", player.getDisplayName()); return message; } public static void broadcastMessage(Player player, String message) { message = parsePlayerName(player, message); if (PreventStabby.getPlugin().getServer().getPluginManager().getPlugin("PlaceholderAPI") != null) { message = PlaceholderAPI.setPlaceholders(player, message); } audiences.all().sendMessage(parseMessage(message)); } public static void broadcastMessage(String message) { audiences.all().sendMessage(parseMessage(message)); } /** * Swaps most legacy color codes to adventure minimessage tags. * @param symbol Usually '&'. * @param string String to replace symbols in. * @return String with legacy color codes replaced with minimessage tags. */ private static String makeColorsWork(Character symbol, String string) { // Adventure and ChatColor do not like each other, so this is a thing. string = string.replaceAll(symbol + "0", ""); string = string.replaceAll(symbol + "1", ""); string = string.replaceAll(symbol + "2", ""); string = string.replaceAll(symbol + "3", ""); string = string.replaceAll(symbol + "4", ""); string = string.replaceAll(symbol + "5", ""); string = string.replaceAll(symbol + "6", ""); string = string.replaceAll(symbol + "7", ""); string = string.replaceAll(symbol + "8", ""); string = string.replaceAll(symbol + "9", ""); string = string.replaceAll(symbol + "a", ""); string = string.replaceAll(symbol + "b", ""); string = string.replaceAll(symbol + "c", ""); string = string.replaceAll(symbol + "d", ""); string = string.replaceAll(symbol + "e", ""); string = string.replaceAll(symbol + "f", ""); string = string.replaceAll(symbol + "k", ""); string = string.replaceAll(symbol + "l", ""); string = string.replaceAll(symbol + "m", ""); string = string.replaceAll(symbol + "n", ""); string = string.replaceAll(symbol + "o", ""); string = string.replaceAll(symbol + "r", ""); return string; } }