diff --git a/src/main/java/net/aoba/cmd/GlobalChat.java b/src/main/java/net/aoba/cmd/GlobalChat.java index 4853facb..6c98ccd0 100644 --- a/src/main/java/net/aoba/cmd/GlobalChat.java +++ b/src/main/java/net/aoba/cmd/GlobalChat.java @@ -10,7 +10,12 @@ import com.google.gson.Gson; import com.google.gson.reflect.TypeToken; +import net.aoba.Aoba; +import net.aoba.settings.SettingManager; +import net.aoba.settings.types.BooleanSetting; import net.minecraft.client.MinecraftClient; +import net.minecraft.text.Text; +import net.minecraft.util.Formatting; public class GlobalChat { @@ -21,8 +26,12 @@ public class GlobalChat { private BufferedReader in; private boolean started = false; + private BooleanSetting enabled; + public GlobalChat() { gson = new Gson(); + enabled = new BooleanSetting("global_chat_enabled", "Whether or not global chat is enabled or disabled.", true); + SettingManager.register_setting(this.enabled, Aoba.getInstance().settingManager.modules_category); } private void Send(String json) { @@ -34,6 +43,14 @@ public void SendMessage(String message) { Send(gson.toJson(new MessageAction(message, null))); } + private void SendChatMessage(String message) { + MinecraftClient mc = MinecraftClient.getInstance(); + if(mc.inGameHud != null) { + mc.inGameHud.getChatHud().addMessage(Text.of(Formatting.DARK_PURPLE + "[" + Formatting.LIGHT_PURPLE + "GLOBAL" + Formatting.DARK_PURPLE + "] " + Formatting.RESET + message)); + } + } + + public void StartListener() { if(started) { System.out.println("Socket listener already started."); @@ -42,7 +59,9 @@ public void StartListener() { try { started = true; - socket = new Socket("18.119.121.174", 80); + + // Gotta love AWS! + socket = new Socket("18.221.222.43", 80); out = new PrintWriter(socket.getOutputStream(), false); in = new BufferedReader(new InputStreamReader(socket.getInputStream())); @@ -54,11 +73,14 @@ public void run() { Send(gson.toJson(new ConnectAction(MinecraftClient.getInstance().getSession().getUsername()))); String json = in.readLine(); - while(json != null) { - Map map = new Gson().fromJson(json, new TypeToken>() {}.getType()); - if(map.containsKey("message")) { - String message = map.get("message"); - CommandManager.sendChatMessage(message); + while(json != null && MinecraftClient.getInstance() != null) { + MessageResponse response = new Gson().fromJson(json, MessageResponse.class); + if(response != null) { + String user = response.getUser(); + String chatMessage = response.getMessage(); + if(user != null && chatMessage != null) { + SendChatMessage(String.format("<%s> %s", user, chatMessage)); + } } json = in.readLine(); } @@ -108,4 +130,29 @@ public MessageAction(String message, String to) { } } +/** + * Server Response + */ +class MessageResponse { + private String message; + private String user; + + public String getMessage() { + return message; + } + + public void setMessage(String message) { + this.message = message; + } + + public String getUser() { + return user; + } + + public void setUser(String user) { + this.user = user; + } +} + + diff --git a/src/main/java/net/aoba/mixin/ChatScreenMixin.java b/src/main/java/net/aoba/mixin/ChatScreenMixin.java index 12621650..c35e65a8 100644 --- a/src/main/java/net/aoba/mixin/ChatScreenMixin.java +++ b/src/main/java/net/aoba/mixin/ChatScreenMixin.java @@ -19,7 +19,8 @@ public void onSendMessage(String message, boolean addToHistory, CallbackInfoRetu Aoba.getInstance().commandManager.command(message.split(" ")); cir.setReturnValue(true); }else if (message.startsWith(".global")) { - Aoba.getInstance().globalChat.SendMessage(message); + Aoba.getInstance().globalChat.SendMessage(message.substring(8, message.length())); + cir.setReturnValue(true); } } } diff --git a/src/main/java/net/aoba/module/ModuleManager.java b/src/main/java/net/aoba/module/ModuleManager.java index f0132ecb..adf6c116 100644 --- a/src/main/java/net/aoba/module/ModuleManager.java +++ b/src/main/java/net/aoba/module/ModuleManager.java @@ -197,10 +197,12 @@ public Module getModuleByName(String string) { @Override public void OnKeyDown(KeyDownEvent event) { - for(Module module : modules) { - Key binding = module.getBind().getValue(); - if(binding.getCode() == event.GetKey()) { - module.toggle(); + if(MinecraftClient.getInstance().currentScreen == null) { + for(Module module : modules) { + Key binding = module.getBind().getValue(); + if(binding.getCode() == event.GetKey()) { + module.toggle(); + } } } }