going on an adventure

This commit is contained in:
2022-06-16 23:52:30 +02:00
parent 6fd3e4b671
commit b99c14b631
7 changed files with 135 additions and 69 deletions
@@ -2,11 +2,10 @@ package me.youhavetrouble.preventstabby.util;
import me.clip.placeholderapi.PlaceholderAPI;
import me.youhavetrouble.preventstabby.PreventStabby;
import net.md_5.bungee.api.ChatMessageType;
import net.md_5.bungee.api.chat.BaseComponent;
import net.md_5.bungee.api.chat.TextComponent;
import net.kyori.adventure.platform.bukkit.BukkitAudiences;
import net.kyori.adventure.text.Component;
import net.kyori.adventure.text.minimessage.MiniMessage;
import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
@@ -14,17 +13,21 @@ import java.util.UUID;
public class PluginMessages {
public static String parseMessage(String message) {
return ChatColor.translateAlternateColorCodes('&', message);
public static final MiniMessage MINIMESSAGE = MiniMessage.miniMessage();
private static final BukkitAudiences audiences = PreventStabby.getAudiences();
public static Component parseMessage(String message) {
message = makeColorsWork('&', message);
return MINIMESSAGE.deserialize(message);
}
public static String parseMessage(CommandSender sender,String message) {
public static Component parseMessage(CommandSender sender,String message) {
if (sender instanceof Player && isPlaceholderApiEnabled()) {
Player player = (Player) sender;
message = PlaceholderAPI.setPlaceholders(player, message);
}
return ChatColor.translateAlternateColorCodes('&', message);
return parseMessage(message);
}
private static boolean isPlaceholderApiEnabled() {
@@ -32,15 +35,12 @@ public class PluginMessages {
}
public static void sendMessage(CommandSender sender, String message) {
message = parseMessage(sender, message);
sender.sendMessage(message);
audiences.sender(sender).sendMessage(parseMessage(sender, message));
}
public static void sendActionBar(Player player, String message) {
// TODO use adventure
message = parseMessage(player, message);
BaseComponent[] component = TextComponent.fromLegacyText(parseMessage(message));
player.spigot().sendMessage(ChatMessageType.ACTION_BAR, component);
Component parsedMessage = parseMessage(player, message);
audiences.player(player).sendActionBar(parsedMessage);
}
public static void sendActionBar(UUID uuid, String message) {
@@ -51,7 +51,7 @@ public class PluginMessages {
public static String parsePlayerName(Player player, String message) {
message = message.replaceAll("%player%", player.getDisplayName());
return parseMessage(message);
return message;
}
public static void broadcastMessage(Player player, String message) {
@@ -59,9 +59,40 @@ public class PluginMessages {
if (PreventStabby.getPlugin().getServer().getPluginManager().getPlugin("PlaceholderAPI") != null) {
message = PlaceholderAPI.setPlaceholders(player, message);
}
message = parseMessage(message);
BaseComponent[] component = TextComponent.fromLegacyText(parseMessage(message));
Bukkit.spigot().broadcast(component);
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", "<black>");
string = string.replaceAll(symbol + "1", "<dark_blue>");
string = string.replaceAll(symbol + "2", "<dark_green>");
string = string.replaceAll(symbol + "3", "<dark_aqua>");
string = string.replaceAll(symbol + "4", "<dark_red>");
string = string.replaceAll(symbol + "5", "<dark_purple>");
string = string.replaceAll(symbol + "6", "<gold>");
string = string.replaceAll(symbol + "7", "<gray>");
string = string.replaceAll(symbol + "8", "<dark_gray>");
string = string.replaceAll(symbol + "9", "<blue>");
string = string.replaceAll(symbol + "a", "<green>");
string = string.replaceAll(symbol + "b", "<aqua>");
string = string.replaceAll(symbol + "c", "<red>");
string = string.replaceAll(symbol + "d", "<light_purple>");
string = string.replaceAll(symbol + "e", "<yellow>");
string = string.replaceAll(symbol + "f", "<white>");
string = string.replaceAll(symbol + "k", "<obfuscated>");
string = string.replaceAll(symbol + "l", "<bold>");
string = string.replaceAll(symbol + "m", "<strikethrough>");
string = string.replaceAll(symbol + "n", "<underlined>");
string = string.replaceAll(symbol + "o", "<italic>");
string = string.replaceAll(symbol + "r", "<reset>");
return string;
}
}