From 21f4067198d0d653bba9d302e81d204fa892b528 Mon Sep 17 00:00:00 2001 From: evenwan Date: Sat, 2 Dec 2023 14:27:48 +0800 Subject: [PATCH 1/2] feat: NexMessage support BungeeCord --- .../main/java/su/nexmedia/engine/NexEngine.java | 4 ++++ .../nexmedia/engine/api/lang/LangMessage.java | 17 +++++++++++++++++ .../su/nexmedia/engine/utils/PlayerUtil.java | 4 ++++ .../engine/utils/message/NexMessage.java | 17 +++++++++++++++++ 4 files changed, 42 insertions(+) diff --git a/NexEngine/src/main/java/su/nexmedia/engine/NexEngine.java b/NexEngine/src/main/java/su/nexmedia/engine/NexEngine.java index 2bbf6d2..dc68c58 100644 --- a/NexEngine/src/main/java/su/nexmedia/engine/NexEngine.java +++ b/NexEngine/src/main/java/su/nexmedia/engine/NexEngine.java @@ -41,6 +41,8 @@ public void enable() { this.editorManager = new EditorManager(this); this.editorManager.setup(); + + this.getServer().getMessenger().registerOutgoingPluginChannel(this, "BungeeCord"); } @Override @@ -51,6 +53,8 @@ public void disable() { if (EngineUtils.hasVault()) VaultHook.shutdown(); PlayerBlockTracker.shutdown(); + + this.getServer().getMessenger().unregisterOutgoingPluginChannel(this); } @Override diff --git a/NexEngine/src/main/java/su/nexmedia/engine/api/lang/LangMessage.java b/NexEngine/src/main/java/su/nexmedia/engine/api/lang/LangMessage.java index c3c5c31..c8d167f 100644 --- a/NexEngine/src/main/java/su/nexmedia/engine/api/lang/LangMessage.java +++ b/NexEngine/src/main/java/su/nexmedia/engine/api/lang/LangMessage.java @@ -217,6 +217,23 @@ else if (this.type == LangMessage.OutputType.TITLES) { } } + public void send(@NotNull String playerName) { + Player pTarget = plugin.getServer().getPlayerExact(playerName); + if (pTarget != null) { + send(pTarget); + } else { + if (this.type == LangMessage.OutputType.CHAT) { + if (Bukkit.spigot().getConfig().getBoolean("settings.bungeecord", false)) { + String prefix = hasPrefix ? plugin.getConfigManager().pluginPrefix : ""; + this.asList().forEach(line -> { + PlayerUtil.sendBungeeCordMessage(playerName, prefix + line); + }); + } + } + } + + } + @NotNull public List asList() { return this.asList(this.getLocalized()); diff --git a/NexEngine/src/main/java/su/nexmedia/engine/utils/PlayerUtil.java b/NexEngine/src/main/java/su/nexmedia/engine/utils/PlayerUtil.java index f137712..ee1f2b1 100644 --- a/NexEngine/src/main/java/su/nexmedia/engine/utils/PlayerUtil.java +++ b/NexEngine/src/main/java/su/nexmedia/engine/utils/PlayerUtil.java @@ -99,6 +99,10 @@ public static void sendRichMessage(@NotNull CommandSender sender, @NotNull Strin NexParser.toMessage(message).send(sender); } + public static void sendBungeeCordMessage(@NotNull String playerName, @NotNull String message) { + NexParser.toMessage(message).sendByBungeeCord(playerName); + } + public static void sendActionBar(@NotNull Player player, @NotNull String msg) { player.spigot().sendMessage(ChatMessageType.ACTION_BAR, NexParser.toMessage(msg).build()); } diff --git a/NexEngine/src/main/java/su/nexmedia/engine/utils/message/NexMessage.java b/NexEngine/src/main/java/su/nexmedia/engine/utils/message/NexMessage.java index 844bd93..29100fb 100644 --- a/NexEngine/src/main/java/su/nexmedia/engine/utils/message/NexMessage.java +++ b/NexEngine/src/main/java/su/nexmedia/engine/utils/message/NexMessage.java @@ -1,14 +1,19 @@ package su.nexmedia.engine.utils.message; import com.google.common.base.Preconditions; +import com.google.common.io.ByteArrayDataOutput; +import com.google.common.io.ByteStreams; import net.md_5.bungee.api.ChatColor; import net.md_5.bungee.api.chat.BaseComponent; import net.md_5.bungee.api.chat.ComponentBuilder; import net.md_5.bungee.api.chat.TextComponent; +import net.md_5.bungee.chat.ComponentSerializer; +import org.bukkit.Bukkit; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; import org.jetbrains.annotations.NotNull; import su.nexmedia.engine.utils.Colorizer; +import su.nexmedia.engine.utils.EngineUtils; import su.nexmedia.engine.utils.Reflex; import su.nexmedia.engine.utils.regex.RegexUtil; @@ -99,6 +104,18 @@ public void send(@NotNull CommandSender sender) { } } + public void sendByBungeeCord(String playerName) { + for (String line : this.message.split("\n")) { + ByteArrayDataOutput out = ByteStreams.newDataOutput(); + out.writeUTF("MessageRaw"); + out.writeUTF(playerName); + out.writeUTF(ComponentSerializer.toString(this.build(line))); + + System.out.println(playerName + ": " + ComponentSerializer.toString(this.build(line))); + Bukkit.getServer().sendPluginMessage(EngineUtils.ENGINE, "BungeeCord" , out.toByteArray()); + } + } + public void send(@NotNull CommandSender... senders) { Stream.of(senders).forEach(this::send); } From bafc72f502b88eeced27f3ee23a291c7c02ec38b Mon Sep 17 00:00:00 2001 From: evenwan Date: Sat, 2 Dec 2023 14:28:46 +0800 Subject: [PATCH 2/2] chore: add maven build charset --- pom.xml | 1 + 1 file changed, 1 insertion(+) diff --git a/pom.xml b/pom.xml index a42d9a5..8b98703 100644 --- a/pom.xml +++ b/pom.xml @@ -15,6 +15,7 @@ 16 16 + UTF-8