diff --git a/api/src/main/java/com/alttd/chat/ChatImplementation.java b/api/src/main/java/com/alttd/chat/ChatImplementation.java index b76a7e8..26443a9 100644 --- a/api/src/main/java/com/alttd/chat/ChatImplementation.java +++ b/api/src/main/java/com/alttd/chat/ChatImplementation.java @@ -21,6 +21,9 @@ public class ChatImplementation implements ChatAPI{ public ChatImplementation() { instance = this; Config.init(); + + luckPerms = getLuckPerms(); + //databaseConnection = getDataBase(); // init database // init depends//or set them the first time they are called? } diff --git a/api/src/main/java/com/alttd/chat/config/Config.java b/api/src/main/java/com/alttd/chat/config/Config.java index f7c82a5..933dd2a 100644 --- a/api/src/main/java/com/alttd/chat/config/Config.java +++ b/api/src/main/java/com/alttd/chat/config/Config.java @@ -184,4 +184,9 @@ public final class Config { GACFORMAT = getString("commands.globaladminchat.format", GACFORMAT); } + public static String MESSAGECHANNEL = "altitude:chatplugin"; + private static void messageChannels() { + MESSAGECHANNEL = getString("settings.message-channel", MESSAGECHANNEL); + } + } diff --git a/api/src/main/java/com/alttd/chat/objects/ChatPlayer.java b/api/src/main/java/com/alttd/chat/objects/ChatPlayer.java index 450467a..258f6f2 100644 --- a/api/src/main/java/com/alttd/chat/objects/ChatPlayer.java +++ b/api/src/main/java/com/alttd/chat/objects/ChatPlayer.java @@ -6,6 +6,8 @@ public class ChatPlayer { // todo merge partyuser here, or make party user extend this? // todo gctoggle? + // todo cache prefixes? + private UUID uuid; private UUID replyTarget; private boolean globalChatEnabled; // this vs permission? diff --git a/galaxy/src/main/java/com/alttd/chat/ChatPlugin.java b/galaxy/src/main/java/com/alttd/chat/ChatPlugin.java index 79b6c7c..2dbecc7 100644 --- a/galaxy/src/main/java/com/alttd/chat/ChatPlugin.java +++ b/galaxy/src/main/java/com/alttd/chat/ChatPlugin.java @@ -1,8 +1,10 @@ package com.alttd.chat; import com.alttd.chat.commands.GlobalChat; +import com.alttd.chat.config.Config; import com.alttd.chat.handler.ChatHandler; import com.alttd.chat.listeners.PlayerListener; +import com.alttd.chat.listeners.PluginMessage; import org.bukkit.command.CommandExecutor; import org.bukkit.event.Listener; import org.bukkit.plugin.java.JavaPlugin; @@ -14,6 +16,8 @@ public class ChatPlugin extends JavaPlugin { private ChatAPI chatAPI; private ChatHandler chatHandler; + private String messageChannel; + @Override public void onEnable() { instance = this; @@ -21,6 +25,11 @@ public class ChatPlugin extends JavaPlugin { chatHandler = new ChatHandler(); registerListener(new PlayerListener()); registerCommand("globalchat", new GlobalChat()); + + messageChannel = Config.MESSAGECHANNEL; + getServer().getMessenger().registerOutgoingPluginChannel(this, messageChannel); + getServer().getMessenger().registerIncomingPluginChannel(this, messageChannel, new PluginMessage()); + } @Override diff --git a/galaxy/src/main/java/com/alttd/chat/commands/GlobalChat.java b/galaxy/src/main/java/com/alttd/chat/commands/GlobalChat.java index d34b9d5..efe65f5 100644 --- a/galaxy/src/main/java/com/alttd/chat/commands/GlobalChat.java +++ b/galaxy/src/main/java/com/alttd/chat/commands/GlobalChat.java @@ -5,11 +5,15 @@ import org.apache.commons.lang.StringUtils; import org.bukkit.command.Command; import org.bukkit.command.CommandExecutor; import org.bukkit.command.CommandSender; +import org.bukkit.entity.Player; public class GlobalChat implements CommandExecutor { @Override public boolean onCommand(CommandSender sender, Command command, String label, String[] args) { + if(!(sender instanceof Player)) { + return true; + } String message = StringUtils.join(args, " ", 0, args.length); ChatPlugin.getInstance().getChatHandler().globalChat(sender, message); return false; diff --git a/galaxy/src/main/java/com/alttd/chat/handler/ChatHandler.java b/galaxy/src/main/java/com/alttd/chat/handler/ChatHandler.java index a4d12b0..f1fc5d1 100644 --- a/galaxy/src/main/java/com/alttd/chat/handler/ChatHandler.java +++ b/galaxy/src/main/java/com/alttd/chat/handler/ChatHandler.java @@ -2,13 +2,20 @@ package com.alttd.chat.handler; import com.alttd.chat.ChatPlugin; import com.alttd.chat.config.Config; +import com.google.common.io.ByteArrayDataOutput; +import com.google.common.io.ByteStreams; import net.kyori.adventure.text.Component; import net.kyori.adventure.text.minimessage.MiniMessage; +import net.kyori.adventure.text.minimessage.Template; import org.bukkit.Bukkit; +import org.bukkit.Material; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; +import org.bukkit.inventory.ItemStack; +import java.util.ArrayList; import java.util.HashMap; +import java.util.List; import java.util.Map; public class ChatHandler { @@ -21,29 +28,71 @@ public class ChatHandler { public void globalChat(CommandSender source, String message) { String senderName, prefix = ""; - Map map = new HashMap<>(); - if (source instanceof Player) { - Player sender = (Player) source; - senderName = sender.getDisplayName(); - prefix = plugin.getChatAPI().getPrefix(sender.getUniqueId()); - } else { - senderName = Config.CONSOLENAME; - } + Player sender = (Player) source; + senderName = sender.getDisplayName(); // TODO this can be a component + prefix = plugin.getChatAPI().getPrefix(sender.getUniqueId()); MiniMessage miniMessage = MiniMessage.get(); if(!source.hasPermission("chat.format")) message = miniMessage.stripTokens(message); + if(message.contains("[i]")) + message = message.replace("[i]", "<[i]>"); - map.put("sender", senderName); - map.put("message", message); - map.put("server", Bukkit.getServerName()); - map.put("prefix", prefix); + List