public class PacketListner extends JavaPlugin { private static String getStringColor(String colorName) { for(ChatColor c : ChatColor.values()) { if (c.name().equalsIgnoreCase(colorName)) { return c.toString(); } } return ""; } private static String getStringValue(String key, String value) { if (key.equalsIgnoreCase("text")) { return value; } else { return key.equalsIgnoreCase("color") ? getStringColor(value) : ""; } } private static String getBooleanValue(String key, boolean value) { if (!value) { return ""; } else if (key.equalsIgnoreCase("bold")) { return ChatColor.BOLD.toString(); } else if (key.equalsIgnoreCase("italic")) { return ChatColor.ITALIC.toString(); } else if (key.equalsIgnoreCase("underlined")) { return ChatColor.UNDERLINE.toString(); } else if (key.equalsIgnoreCase("strikethrough")) { return ChatColor.STRIKETHROUGH.toString(); } else { return key.equalsIgnoreCase("obfuscated") ? ChatColor.MAGIC.toString() : ""; } } private static String jsonToString(JSONObject source) { String result = ""; for(Object key : source.keySet()) { Object value = source.get(key); if (value instanceof String) { if (key instanceof String) { result = result + getStringValue((String)key, (String)value); } } else if (value instanceof Boolean) { if (key instanceof String) { result = result + getBooleanValue((String)key, (Boolean)value); } } else if (value instanceof JSONObject) { result = result + jsonToString((JSONObject)value); } } return result; } @Override public void onEnable() { ProtocolManager manager = ProtocolLibrary.getProtocolManager(); manager.addPacketListener(new PacketAdapter(this, PacketType.Play.Server.CHAT) { @Override public void onPacketSending(PacketEvent event) { try { String message = ""; try { String jsonMessage = ((WrappedChatComponent)event.getPacket().getChatComponents().getValues().get(0)).getJson(); if (jsonMessage != null && !jsonMessage.isEmpty()) { JSONParser parser = new JSONParser(); message = jsonToString((JSONObject) parser.parse(jsonMessage)); } } catch (Throwable var7) { } String resultMessage = Translator.translate(LanguageHelper.onGet(event.getPlayer(), "Language"), message); if (resultMessage.isEmpty()) { event.setCancelled(true); } else if (resultMessage != null) { event.getPacket().getChatComponents().write(0, WrappedChatComponent.fromText(resultMessage)); } else { event.getPacket().getStrings().write(0, true ? "{\"text\":\"" + resultMessage + "\"}" : resultMessage); } } catch (Exception var8) { } } }); } }