From 8abb3efbfb8702b0cfa62d022e3ba81448fda503 Mon Sep 17 00:00:00 2001 From: Jakub Szewczyk Date: Thu, 5 May 2022 20:26:18 +0100 Subject: [PATCH 1/2] Add a chat message length limit to avoid crashing with too big packets sent to clients. --- build.gradle | 4 ++-- .../java/minetweaker/api/player/IPlayer.java | 2 ++ .../mc1710/player/CommandBlockPlayer.java | 16 ++++++++++------ .../java/minetweaker/mc1710/player/MCPlayer.java | 12 ++++++++---- .../minetweaker/mc1710/player/RconPlayer.java | 16 ++++++++++------ .../minetweaker/mc1710/server/ServerPlayer.java | 16 ++++++++++------ 6 files changed, 42 insertions(+), 24 deletions(-) diff --git a/build.gradle b/build.gradle index d90db12..5e78740 100644 --- a/build.gradle +++ b/build.gradle @@ -1,4 +1,4 @@ -//version: 1646409286 +//version: 1650343995 /* DO NOT CHANGE THIS FILE! @@ -568,7 +568,7 @@ publishing { artifact source: shadowJar, classifier: "" } if(!noPublishedSources) { - artifact source: sourcesJar, classifier: "src" + artifact source: sourcesJar, classifier: "sources" } artifact source: usesShadowedDependencies.toBoolean() ? shadowDevJar : devJar, classifier: "dev" if (apiPackage) { diff --git a/src/main/java/minetweaker/api/player/IPlayer.java b/src/main/java/minetweaker/api/player/IPlayer.java index 159bf25..17a2edc 100644 --- a/src/main/java/minetweaker/api/player/IPlayer.java +++ b/src/main/java/minetweaker/api/player/IPlayer.java @@ -35,6 +35,8 @@ public interface IPlayer { @ZenMethod void sendChat(IChatMessage message); + int MAX_CHAT_MESSAGE_LENGTH = 512; + @ZenMethod void sendChat(String message); diff --git a/src/main/java/minetweaker/mc1710/player/CommandBlockPlayer.java b/src/main/java/minetweaker/mc1710/player/CommandBlockPlayer.java index c221c86..084990a 100644 --- a/src/main/java/minetweaker/mc1710/player/CommandBlockPlayer.java +++ b/src/main/java/minetweaker/mc1710/player/CommandBlockPlayer.java @@ -37,22 +37,22 @@ public class CommandBlockPlayer implements IPlayer{ public IData getData(){ return null; } - + @Override public int getXP() { return 0; } - + @Override public void setXP(int xp) { - + } - + @Override public void removeXP(int xp) { - + } - + @Override public void update(IData data){ @@ -70,6 +70,10 @@ public class CommandBlockPlayer implements IPlayer{ @Override public void sendChat(String message){ + if (message.length() > MAX_CHAT_MESSAGE_LENGTH) + { + message = message.substring(0, MAX_CHAT_MESSAGE_LENGTH); + } sender.addChatMessage(new ChatComponentText(message)); } diff --git a/src/main/java/minetweaker/mc1710/player/MCPlayer.java b/src/main/java/minetweaker/mc1710/player/MCPlayer.java index 7bde50a..08c26b1 100644 --- a/src/main/java/minetweaker/mc1710/player/MCPlayer.java +++ b/src/main/java/minetweaker/mc1710/player/MCPlayer.java @@ -51,25 +51,25 @@ public class MCPlayer implements IPlayer { public IData getData() { return NBTConverter.from(player.getEntityData(), true); } - + @Override public int getXP() { return player.experienceLevel; } - + @Override public void setXP(int xp) { player.experienceLevel = 0; player.addExperienceLevel(xp); } - + @Override public void removeXP(int xp) { final int newLvl = Math.max(0, player.experienceLevel - xp); player.experienceLevel = 0; player.addExperienceLevel(newLvl); } - + @Override public void update(IData data) { NBTConverter.updateMap(player.getEntityData(), data); @@ -87,6 +87,10 @@ public class MCPlayer implements IPlayer { @Override public void sendChat(String message) { + if (message.length() > MAX_CHAT_MESSAGE_LENGTH) + { + message = message.substring(0, MAX_CHAT_MESSAGE_LENGTH); + } player.addChatMessage(new ChatComponentText(message)); } diff --git a/src/main/java/minetweaker/mc1710/player/RconPlayer.java b/src/main/java/minetweaker/mc1710/player/RconPlayer.java index ed03ea3..0fa7a98 100644 --- a/src/main/java/minetweaker/mc1710/player/RconPlayer.java +++ b/src/main/java/minetweaker/mc1710/player/RconPlayer.java @@ -38,22 +38,22 @@ public class RconPlayer implements IPlayer { public IData getData() { return null; } - + @Override public int getXP() { return 0; } - + @Override public void setXP(int xp) { - + } - + @Override public void removeXP(int xp) { - + } - + @Override public void update(IData data) { @@ -71,6 +71,10 @@ public class RconPlayer implements IPlayer { @Override public void sendChat(String message) { + if (message.length() > MAX_CHAT_MESSAGE_LENGTH) + { + message = message.substring(0, MAX_CHAT_MESSAGE_LENGTH); + } sender.addChatMessage(new ChatComponentText(message)); } diff --git a/src/main/java/minetweaker/mc1710/server/ServerPlayer.java b/src/main/java/minetweaker/mc1710/server/ServerPlayer.java index 8ade75f..6b3ce3e 100644 --- a/src/main/java/minetweaker/mc1710/server/ServerPlayer.java +++ b/src/main/java/minetweaker/mc1710/server/ServerPlayer.java @@ -48,22 +48,22 @@ public class ServerPlayer implements IPlayer { // TODO: implement return null; } - + @Override public int getXP() { return 0; } - + @Override public void setXP(int xp) { - + } - + @Override public void removeXP(int xp) { - + } - + @Override public void update(IData data) { // TODO: implement @@ -76,6 +76,10 @@ public class ServerPlayer implements IPlayer { @Override public void sendChat(String message) { + if (message.length() > MAX_CHAT_MESSAGE_LENGTH) + { + message = message.substring(0, MAX_CHAT_MESSAGE_LENGTH); + } DedicatedServer.getServer().addChatMessage(new ChatComponentText(message)); } From 1d76f7db78c9bcdb78f426fc54c675dda7bf9359 Mon Sep 17 00:00:00 2001 From: Jakub Szewczyk Date: Fri, 6 May 2022 09:04:58 +0100 Subject: [PATCH 2/2] Do not trim messages for rcon&dedicated server --- src/main/java/minetweaker/mc1710/player/RconPlayer.java | 4 ---- src/main/java/minetweaker/mc1710/server/ServerPlayer.java | 4 ---- 2 files changed, 8 deletions(-) diff --git a/src/main/java/minetweaker/mc1710/player/RconPlayer.java b/src/main/java/minetweaker/mc1710/player/RconPlayer.java index 0fa7a98..d5e61d3 100644 --- a/src/main/java/minetweaker/mc1710/player/RconPlayer.java +++ b/src/main/java/minetweaker/mc1710/player/RconPlayer.java @@ -71,10 +71,6 @@ public class RconPlayer implements IPlayer { @Override public void sendChat(String message) { - if (message.length() > MAX_CHAT_MESSAGE_LENGTH) - { - message = message.substring(0, MAX_CHAT_MESSAGE_LENGTH); - } sender.addChatMessage(new ChatComponentText(message)); } diff --git a/src/main/java/minetweaker/mc1710/server/ServerPlayer.java b/src/main/java/minetweaker/mc1710/server/ServerPlayer.java index 6b3ce3e..0a18a4f 100644 --- a/src/main/java/minetweaker/mc1710/server/ServerPlayer.java +++ b/src/main/java/minetweaker/mc1710/server/ServerPlayer.java @@ -76,10 +76,6 @@ public class ServerPlayer implements IPlayer { @Override public void sendChat(String message) { - if (message.length() > MAX_CHAT_MESSAGE_LENGTH) - { - message = message.substring(0, MAX_CHAT_MESSAGE_LENGTH); - } DedicatedServer.getServer().addChatMessage(new ChatComponentText(message)); }