From 4cecc52099e6f5793f9be58168da4c1a6edde208 Mon Sep 17 00:00:00 2001 From: Video Date: Mon, 28 Mar 2022 17:13:43 -0600 Subject: [PATCH] Reject oversized components from updating + removes unnecessary imports from dev-imports.txt --- build-data/dev-imports.txt | 5 --- ...t-oversized-components-from-updating.patch | 37 +++++++++++++++++++ 2 files changed, 37 insertions(+), 5 deletions(-) create mode 100644 patches/server/0020-Reject-oversized-components-from-updating.patch diff --git a/build-data/dev-imports.txt b/build-data/dev-imports.txt index e79940f..b818b96 100644 --- a/build-data/dev-imports.txt +++ b/build-data/dev-imports.txt @@ -8,8 +8,3 @@ # To import classes from the vanilla Minecraft jar use `minecraft` as the artifactId: # minecraft net.minecraft.world.level.entity.LevelEntityGetterAdapter # minecraft net/minecraft/world/level/entity/LevelEntityGetter.java - -minecraft net/minecraft/nbt/NBTTagString.java -minecraft net/minecraft/nbt/NBTTagList.java -minecraft net/minecraft/nbt/NBTTagCompound.java -minecraft net/minecraft/nbt/NBTCompressedStreamTools.java \ No newline at end of file diff --git a/patches/server/0020-Reject-oversized-components-from-updating.patch b/patches/server/0020-Reject-oversized-components-from-updating.patch new file mode 100644 index 0000000..94af5bf --- /dev/null +++ b/patches/server/0020-Reject-oversized-components-from-updating.patch @@ -0,0 +1,37 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Video +Date: Mon, 28 Mar 2022 16:49:17 -0600 +Subject: [PATCH] Reject oversized components from updating + + +diff --git a/src/main/java/net/minecraft/network/chat/ComponentUtils.java b/src/main/java/net/minecraft/network/chat/ComponentUtils.java +index 8f4c83837d0b01a3dbca2607ea718c371db48ef4..fe2717679f84fbef1b8ff1f9a3c3bf0fba8965f1 100644 +--- a/src/main/java/net/minecraft/network/chat/ComponentUtils.java ++++ b/src/main/java/net/minecraft/network/chat/ComponentUtils.java +@@ -37,8 +37,11 @@ public class ComponentUtils { + } + + public static MutableComponent updateForEntity(@Nullable CommandSourceStack source, Component text, @Nullable Entity sender, int depth) throws CommandSyntaxException { ++ // Scissors start - Reject oversized components ++ MutableComponent result; ++ + if (depth > 100) { +- return text.copy(); ++ result = text.copy(); + } else { + MutableComponent mutableComponent = text instanceof ContextAwareComponent ? ((ContextAwareComponent)text).resolve(source, sender, depth + 1) : text.plainCopy(); + +@@ -46,8 +49,12 @@ public class ComponentUtils { + mutableComponent.append(updateForEntity(source, component, sender, depth + 1)); + } + +- return mutableComponent.withStyle(resolveStyle(source, text.getStyle(), sender, depth)); ++ result = mutableComponent.withStyle(resolveStyle(source, text.getStyle(), sender, depth)); + } ++ ++ // Would the resulting component exceed 65535 bytes when encoded as a string? ++ return Component.Serializer.toJson(result).length() > 65535 ? new TextComponent("") : result; ++ // Scissors end + } + + private static Style resolveStyle(@Nullable CommandSourceStack source, Style style, @Nullable Entity sender, int depth) throws CommandSyntaxException {