diff --git a/src/main/java/land/chipmunk/chayapak/chomens_bot/plugins/ChatPlugin.java b/src/main/java/land/chipmunk/chayapak/chomens_bot/plugins/ChatPlugin.java
index 9c75af9..167d6a3 100644
--- a/src/main/java/land/chipmunk/chayapak/chomens_bot/plugins/ChatPlugin.java
+++ b/src/main/java/land/chipmunk/chayapak/chomens_bot/plugins/ChatPlugin.java
@@ -98,6 +98,24 @@ public class ChatPlugin extends Bot.Listener {
         }
     }
 
+    private String getTranslationByChatType (int chatType) {
+        String translation = null;
+
+        // maybe use the registry in the login packet? too lazy.,.,,.
+        switch (chatType) {
+            case 0 -> translation = "chat.type.text"; // normal vanilla chat message
+            case 1 -> translation = "chat.type.emote"; // /me
+            case 2 -> translation = "commands.message.display.incoming"; // player that received /w message
+            case 3 -> translation = "commands.message.display.outgoing"; // player that sent /w message
+            case 4 -> translation = "chat.type.announcement"; // /say
+            case 5 -> translation = "chat.type.team.text"; // player that received /teammsg message
+            case 6 -> translation = "chat.type.team.sent"; // player that sent /teammsg message
+            case 7 -> translation = "%s"; // raw, idk when and where this is used
+        }
+
+        return translation;
+    }
+
     public void packetReceived (ClientboundPlayerChatPacket packet) {
         final UUID senderUUID = packet.getSender();
 
@@ -114,54 +132,64 @@ public class ChatPlugin extends Bot.Listener {
         for (Listener listener : listeners) {
             listener.playerMessageReceived(playerMessage);
 
-            if (packet.getChatType() == 4) { // type 4 is /say
-                final Component component = Component.translatable(
-                        "chat.type.announcement",
-                        playerMessage.displayName(),
-                        playerMessage.contents()
-                );
+            final Component unsignedContent = packet.getUnsignedContent();
+
+            final String translation = getTranslationByChatType(packet.getChatType());
+
+            if (translation != null && unsignedContent == null) {
+                TranslatableComponent component = Component.translatable(translation);
+
+                if (translation.equals("chat.type.team.text") || translation.equals("chat.type.team.sent")) { // ohio
+                    component = component.args(
+                            Component.empty(), // TODO: fix team name.,.,
+                            playerMessage.displayName(),
+                            playerMessage.contents()
+                    );
+                } else {
+                    component = component.args(playerMessage.displayName(), playerMessage.contents());
+                }
 
                 listener.systemMessageReceived(component);
             } else {
-                final Component unsignedContent = packet.getUnsignedContent();
-
-                if (unsignedContent == null) return;
-
                 listener.systemMessageReceived(unsignedContent);
             }
         }
     }
 
     public void packetReceived (ClientboundDisguisedChatPacket packet) {
-        // totallynotskidded™ from chipmunkbot and modified i guess
+        final String translation = getTranslationByChatType(packet.getChatType());
 
-        final int type = packet.getChatType();
+        final Component component = packet.getMessage();
 
-        // i think im missing other types
-        if (type == 1 || type == 4 || type == 2) { // type 1 is /me, type 4 is /say, type 2 is /msg /tell or whatever thing
+        PlayerMessage parsedFromMessage = null;
+
+        for (ChatParser parser : chatParsers) {
+            parsedFromMessage = parser.parse(component);
+            if (parsedFromMessage != null) break;
+        }
+
+        if (translation != null && parsedFromMessage == null) {
             final Component name = packet.getName();
             final Component content = packet.getMessage();
 
-            String translate = null;
+            TranslatableComponent translatableComponent = Component.translatable(translation);
 
-            switch (type) {
-                case 1 -> translate = "chat.type.emote";
-                case 4 -> translate = "chat.type.announcement";
-                case 2 -> translate = "commands.message.display.incoming";
+            if (translation.equals("chat.type.team.text") || translation.equals("chat.type.team.sent")) { // ohio
+                translatableComponent = translatableComponent.args(
+                        Component.empty(), // TODO: fix team name.,.,
+                        name,
+                        content
+                );
+            } else {
+                translatableComponent = translatableComponent.args(name, content);
             }
 
-            final Component component = Component.translatable(
-                    translate,
-                    name,
-                    content
-            );
-
             for (Listener listener : listeners) {
-                listener.systemMessageReceived(component);
+                listener.systemMessageReceived(translatableComponent);
             }
 
             for (ChatParser parser : chatParsers) {
-                final PlayerMessage parsed = parser.parse(component);
+                final PlayerMessage parsed = parser.parse(translatableComponent);
 
                 if (parsed == null) continue;
 
@@ -172,15 +200,6 @@ public class ChatPlugin extends Bot.Listener {
                 }
             }
         } else {
-            final Component component = packet.getMessage();
-
-            PlayerMessage parsedFromMessage = null;
-
-            for (ChatParser parser : chatParsers) {
-                parsedFromMessage = parser.parse(component);
-                if (parsedFromMessage != null) break;
-            }
-
             if (parsedFromMessage == null) return;
 
             final PlayerMessage playerMessage = new PlayerMessage(parsedFromMessage.sender(), packet.getName(), parsedFromMessage.contents());