diff --git a/src/main/java/buttondevteam/chat/components/announce/AnnounceCommand.java b/src/main/java/buttondevteam/chat/components/announce/AnnounceCommand.java index 2fff7af..25b3ad4 100644 --- a/src/main/java/buttondevteam/chat/components/announce/AnnounceCommand.java +++ b/src/main/java/buttondevteam/chat/components/announce/AnnounceCommand.java @@ -1,10 +1,7 @@ package buttondevteam.chat.components.announce; import buttondevteam.chat.commands.ucmds.UCommandBase; -import buttondevteam.chat.components.formatter.ChatProcessing; import buttondevteam.chat.components.formatter.FormatterComponent; -import buttondevteam.chat.components.formatter.formatting.TellrawEvent; -import buttondevteam.chat.components.formatter.formatting.TellrawPart; import buttondevteam.core.ComponentManager; import buttondevteam.lib.chat.Command2; import buttondevteam.lib.chat.CommandClass; @@ -13,6 +10,12 @@ import lombok.val; import org.bukkit.Bukkit; import org.bukkit.command.CommandSender; +import static net.kyori.adventure.text.Component.text; +import static net.kyori.adventure.text.event.ClickEvent.Action.SUGGEST_COMMAND; +import static net.kyori.adventure.text.event.ClickEvent.clickEvent; +import static net.kyori.adventure.text.event.HoverEvent.Action.SHOW_TEXT; +import static net.kyori.adventure.text.event.HoverEvent.hoverEvent; + @CommandClass(modOnly = true) @RequiredArgsConstructor public class AnnounceCommand extends UCommandBase { @@ -60,11 +63,9 @@ public class AnnounceCommand extends UCommandBase { sender.sendMessage(msg); continue; } - String json = ChatProcessing.toJson(new TellrawPart(msg) - .setHoverEvent(TellrawEvent.create(TellrawEvent.HoverAction.SHOW_TEXT, "Click to edit")) - .setClickEvent(TellrawEvent.create(TellrawEvent.ClickAction.SUGGEST_COMMAND, - "/" + getCommandPath() + " edit " + (i - 1) + " " + message.replace('§', '&')))); - Bukkit.dispatchCommand(Bukkit.getConsoleSender(), "tellraw " + sender.getName() + " " + json); + sender.sendMessage(text(msg) + .hoverEvent(hoverEvent(SHOW_TEXT, text("Click to edit"))) + .clickEvent(clickEvent(SUGGEST_COMMAND, "/" + getCommandPath() + " edit " + (i - 1) + " " + message.replace('§', '&')))); } sender.sendMessage("§bCurrent wait time between announcements: " + component.announceTime.get() / 60 / 1000 + " minute(s)§r"); diff --git a/src/main/java/buttondevteam/chat/components/formatter/ChatProcessing.java b/src/main/java/buttondevteam/chat/components/formatter/ChatProcessing.java index 2d2b373..a9de1c8 100644 --- a/src/main/java/buttondevteam/chat/components/formatter/ChatProcessing.java +++ b/src/main/java/buttondevteam/chat/components/formatter/ChatProcessing.java @@ -12,18 +12,16 @@ import buttondevteam.chat.components.towny.TownyComponent; import buttondevteam.chat.listener.PlayerListener; import buttondevteam.core.ComponentManager; import buttondevteam.core.component.channel.Channel; +import buttondevteam.lib.ChromaUtils; import buttondevteam.lib.TBMCChatEvent; import buttondevteam.lib.TBMCChatEventBase; import buttondevteam.lib.TBMCCoreAPI; -import buttondevteam.lib.chat.TellrawSerializableEnum; import buttondevteam.lib.player.ChromaGamerBase; import buttondevteam.lib.player.TBMCPlayer; import buttondevteam.lib.player.TBMCPlayerBase; import com.earth2me.essentials.User; import com.google.common.collect.ImmutableList; import com.google.common.collect.Lists; -import com.google.gson.Gson; -import com.google.gson.GsonBuilder; import lombok.val; import net.ess3.api.events.AfkStatusChangeEvent; import net.kyori.adventure.text.TextComponent; @@ -101,11 +99,6 @@ public class ChatProcessing { return "@someone (" + player.getDisplayName() + "§r)"; }).build(), true, "@someone"), new RegexMatchProvider("greentext", GREENTEXT_PATTERN, FormatSettings.builder().color(GREEN).build())); - private static final Gson gson = new GsonBuilder() - .registerTypeHierarchyAdapter(TellrawSerializableEnum.class, new TellrawSerializer.TwEnum()) - .registerTypeHierarchyAdapter(Collection.class, new TellrawSerializer.TwCollection()) - .registerTypeAdapter(Boolean.class, new TellrawSerializer.TwBool()) - .registerTypeAdapter(boolean.class, new TellrawSerializer.TwBool()).disableHtmlEscaping().create(); private static final String[] testPlayers = {"Koiiev", "iie", "Alisolarflare", "NorbiPeti", "Arsen_Derby_FTW", "carrot_lynx"}; private ChatProcessing() { @@ -222,10 +215,6 @@ public class ChatProcessing { }).build())); } - public static String toJson(TellrawPart json) { - return gson.toJson(json); - } - static TextComponent.Builder createEmptyMessageLine(ChromaGamerBase user, String message, @Nullable Player player, final String channelidentifier, String origin) { val json = text(); @@ -257,7 +246,7 @@ public class ChatProcessing { ArrayList formatters = (ArrayList) commonFormatters.clone(); boolean nottest; //Not assigning a default value, so that it can only be used in the if - if ((nottest = Bukkit.getOnlinePlayers().size() > 0) || Bukkit.getVersion().equals("test")) { + if ((nottest = Bukkit.getOnlinePlayers().size() > 0) || ChromaUtils.isTest()) { String[] names; if (nottest) names = Bukkit.getOnlinePlayers().stream().filter(canSee).map(CommandSender::getName).toArray(String[]::new); diff --git a/src/main/java/buttondevteam/chat/components/formatter/formatting/ChatFormatter.java b/src/main/java/buttondevteam/chat/components/formatter/formatting/ChatFormatter.java index 98e02fd..e4c5c9c 100644 --- a/src/main/java/buttondevteam/chat/components/formatter/formatting/ChatFormatter.java +++ b/src/main/java/buttondevteam/chat/components/formatter/formatting/ChatFormatter.java @@ -204,7 +204,8 @@ public final class ChatFormatter { String openlink = null; var settings = section.Settings; DebugCommand.SendDebugMessage("Applying settings: " + settings); - if (lasttp != null && hasSameDecorations(lasttp, settings) && Objects.equals(lastlink, settings.openlink)) { + if (lasttp != null && hasSameDecorations(lasttp, settings) && Objects.equals(lastlink, settings.openlink) + && settings.onmatch == null) { // The onmatch function can change the settings DebugCommand.SendDebugMessage("This part has the same properties as the previous one, combining."); lasttp = lasttp.content(lasttp.content() + originaltext); continue; //Combine parts with the same properties diff --git a/src/test/java/buttondevteam/chat/components/formatter/ChatFormatIT.java b/src/test/java/buttondevteam/chat/components/formatter/ChatFormatIT.java index 2343a5b..669649e 100644 --- a/src/test/java/buttondevteam/chat/components/formatter/ChatFormatIT.java +++ b/src/test/java/buttondevteam/chat/components/formatter/ChatFormatIT.java @@ -97,7 +97,7 @@ public class ChatFormatIT { list.add(new ChatFormatIT(sender, "[here's a link]()", text("[here's a link]()").color(WHITE))); list.add(new ChatFormatIT(sender, "[](fakelink)", text("[](fakelink)").color(WHITE))); list.add(new ChatFormatIT(sender, "||this is a spoiler||", text("this is a spoiler").color(WHITE) - .decorate(OBFUSCATED).hoverEvent(hoverEvent(SHOW_TEXT, text("this is a spoiler").color(WHITE))))); + .decorate(OBFUSCATED).hoverEvent(hoverEvent(SHOW_TEXT, text("this is a spoiler"))))); Function whiteBoldItalic = text -> text(text).color(WHITE).decorate(BOLD).decorate(ITALIC); list.add(new ChatFormatIT(sender, "***some complicated ||test message|| with [links](https://chromagaming.figytuna.com) and other __greatness__ by NorbiPeti***", whiteBoldItalic.apply("some complicated "),