Skip to content

Commit e64ac41

Browse files
committed
Catch more json parse errors
1 parent 55a1756 commit e64ac41

File tree

2 files changed

+37
-35
lines changed

2 files changed

+37
-35
lines changed

patches/server/0268-Catch-JsonParseException-in-Entity-and-TE-names.patch

Lines changed: 35 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -48,65 +48,67 @@ index ccdee183f02ab55723e16f41efce55dc51e96297..162aa7718488a74980843944e0d026cc
4848
return net.minecraft.server.level.ChunkMap.MAX_VIEW_DISTANCE + net.minecraft.world.level.chunk.ChunkStatus.getDistance(status);
4949
}
5050
diff --git a/src/main/java/net/minecraft/world/level/BaseCommandBlock.java b/src/main/java/net/minecraft/world/level/BaseCommandBlock.java
51-
index 04a3627667498b841fbff547d1874d99cc708af4..2e6172930526efc536a214e420e690a5ea42ac3e 100644
51+
index 04a3627667498b841fbff547d1874d99cc708af4..5b125aa77e769983a0aee7c5f6eb6a8a146fead0 100644
5252
--- a/src/main/java/net/minecraft/world/level/BaseCommandBlock.java
5353
+++ b/src/main/java/net/minecraft/world/level/BaseCommandBlock.java
54-
@@ -12,6 +12,7 @@ import net.minecraft.commands.CommandSourceStack;
55-
import net.minecraft.nbt.CompoundTag;
56-
import net.minecraft.network.chat.Component;
57-
import net.minecraft.network.chat.TextComponent;
58-
+import net.minecraft.server.MCUtil;
59-
import net.minecraft.server.MinecraftServer;
60-
import net.minecraft.server.level.ServerLevel;
61-
import net.minecraft.util.StringUtil;
62-
@@ -73,7 +74,7 @@ public abstract class BaseCommandBlock implements CommandSource {
54+
@@ -73,7 +73,7 @@ public abstract class BaseCommandBlock implements CommandSource {
6355
this.command = nbt.getString("Command");
6456
this.successCount = nbt.getInt("SuccessCount");
6557
if (nbt.contains("CustomName", 8)) {
6658
- this.setName(Component.Serializer.fromJson(nbt.getString("CustomName")));
67-
+ this.setName(MCUtil.getBaseComponentFromNbt("CustomName", nbt)); // Paper - Catch ParseException
59+
+ this.setName(net.minecraft.server.MCUtil.getBaseComponentFromNbt("CustomName", nbt)); // Paper - Catch ParseException
6860
}
6961

7062
if (nbt.contains("TrackOutput", 1)) {
7163
diff --git a/src/main/java/net/minecraft/world/level/block/entity/BannerBlockEntity.java b/src/main/java/net/minecraft/world/level/block/entity/BannerBlockEntity.java
72-
index 8854901b439cdeddc528e02fa5f8539869556a3c..c72ec5b38fe8a234eb31065dfa88698dfbb6c054 100644
64+
index 8854901b439cdeddc528e02fa5f8539869556a3c..aec30b264e2e24ea101f8b3296a93293b4c9eef4 100644
7365
--- a/src/main/java/net/minecraft/world/level/block/entity/BannerBlockEntity.java
7466
+++ b/src/main/java/net/minecraft/world/level/block/entity/BannerBlockEntity.java
75-
@@ -10,6 +10,7 @@ import net.minecraft.nbt.ListTag;
76-
import net.minecraft.network.chat.Component;
77-
import net.minecraft.network.chat.TranslatableComponent;
78-
import net.minecraft.network.protocol.game.ClientboundBlockEntityDataPacket;
79-
+import net.minecraft.server.MCUtil;
80-
import net.minecraft.world.Nameable;
81-
import net.minecraft.world.item.BlockItem;
82-
import net.minecraft.world.item.DyeColor;
83-
@@ -97,7 +98,7 @@ public class BannerBlockEntity extends BlockEntity implements Nameable {
67+
@@ -97,7 +97,7 @@ public class BannerBlockEntity extends BlockEntity implements Nameable {
8468
public void load(CompoundTag nbt) {
8569
super.load(nbt);
8670
if (nbt.contains("CustomName", 8)) {
8771
- this.name = Component.Serializer.fromJson(nbt.getString("CustomName"));
88-
+ this.name = MCUtil.getBaseComponentFromNbt("CustomName", nbt); // Paper - Catch ParseException
72+
+ this.name = net.minecraft.server.MCUtil.getBaseComponentFromNbt("CustomName", nbt); // Paper - Catch ParseException
8973
}
9074

9175
this.itemPatterns = nbt.getList("Patterns", 10);
9276
diff --git a/src/main/java/net/minecraft/world/level/block/entity/BaseContainerBlockEntity.java b/src/main/java/net/minecraft/world/level/block/entity/BaseContainerBlockEntity.java
93-
index cfd1e2fbc029d928daa2d9f12df393c8cf30e850..d9ed3c53187febbc6c835286d6db17b508dbf71a 100644
77+
index cfd1e2fbc029d928daa2d9f12df393c8cf30e850..72c4c367b3531b21f1f28601735a5250069b8713 100644
9478
--- a/src/main/java/net/minecraft/world/level/block/entity/BaseContainerBlockEntity.java
9579
+++ b/src/main/java/net/minecraft/world/level/block/entity/BaseContainerBlockEntity.java
96-
@@ -5,6 +5,7 @@ import net.minecraft.core.BlockPos;
97-
import net.minecraft.nbt.CompoundTag;
98-
import net.minecraft.network.chat.Component;
99-
import net.minecraft.network.chat.TranslatableComponent;
100-
+import net.minecraft.server.MCUtil;
101-
import net.minecraft.sounds.SoundEvents;
102-
import net.minecraft.sounds.SoundSource;
103-
import net.minecraft.world.Container;
104-
@@ -31,7 +32,7 @@ public abstract class BaseContainerBlockEntity extends BlockEntity implements Co
80+
@@ -31,7 +31,7 @@ public abstract class BaseContainerBlockEntity extends BlockEntity implements Co
10581
super.load(nbt);
10682
this.lockKey = LockCode.fromTag(nbt);
10783
if (nbt.contains("CustomName", 8)) {
10884
- this.name = Component.Serializer.fromJson(nbt.getString("CustomName"));
109-
+ this.name = MCUtil.getBaseComponentFromNbt("CustomName", nbt); // Paper - Catch ParseException
85+
+ this.name = net.minecraft.server.MCUtil.getBaseComponentFromNbt("CustomName", nbt); // Paper - Catch ParseException
86+
}
87+
88+
}
89+
diff --git a/src/main/java/net/minecraft/world/level/block/entity/BeaconBlockEntity.java b/src/main/java/net/minecraft/world/level/block/entity/BeaconBlockEntity.java
90+
index 76a401bcfdacded2137142ed38d739ed65d9fae6..7c8809e679670ba0e0ea7a1e193913e45b34a97a 100644
91+
--- a/src/main/java/net/minecraft/world/level/block/entity/BeaconBlockEntity.java
92+
+++ b/src/main/java/net/minecraft/world/level/block/entity/BeaconBlockEntity.java
93+
@@ -360,7 +360,7 @@ public class BeaconBlockEntity extends BlockEntity implements MenuProvider {
94+
this.levels = nbt.getInt("Levels"); // SPIGOT-5053, use where available
95+
// CraftBukkit end
96+
if (nbt.contains("CustomName", 8)) {
97+
- this.name = Component.Serializer.fromJson(nbt.getString("CustomName"));
98+
+ this.name = net.minecraft.server.MCUtil.getBaseComponentFromNbt("CustomName", nbt); // Paper - Catch ParseException
99+
}
100+
101+
this.lockKey = LockCode.fromTag(nbt);
102+
diff --git a/src/main/java/net/minecraft/world/level/block/entity/EnchantmentTableBlockEntity.java b/src/main/java/net/minecraft/world/level/block/entity/EnchantmentTableBlockEntity.java
103+
index b03621ebd0a94ab2dceb9006aee43fd5320094e3..424ad38b5522d9b76aa1bf726a9fe2c1e934598d 100644
104+
--- a/src/main/java/net/minecraft/world/level/block/entity/EnchantmentTableBlockEntity.java
105+
+++ b/src/main/java/net/minecraft/world/level/block/entity/EnchantmentTableBlockEntity.java
106+
@@ -43,7 +43,7 @@ public class EnchantmentTableBlockEntity extends BlockEntity implements Nameable
107+
public void load(CompoundTag nbt) {
108+
super.load(nbt);
109+
if (nbt.contains("CustomName", 8)) {
110+
- this.name = Component.Serializer.fromJson(nbt.getString("CustomName"));
111+
+ this.name = net.minecraft.server.MCUtil.getBaseComponentFromNbt("CustomName", nbt); // Paper - Catch ParseException
110112
}
111113

112114
}

patches/server/0448-Add-permission-for-command-blocks.patch

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -40,10 +40,10 @@ index f6007a34b56c80e96aa29def9c070f717b61c5ed..7975508532fc0e97b10eca88e43aefe3
4040
} else {
4141
BaseCommandBlock commandblocklistenerabstract = packet.getCommandBlock(this.player.level);
4242
diff --git a/src/main/java/net/minecraft/world/level/BaseCommandBlock.java b/src/main/java/net/minecraft/world/level/BaseCommandBlock.java
43-
index 2e6172930526efc536a214e420e690a5ea42ac3e..a71cd95291e593a54c66f5672554f91b0f1470fa 100644
43+
index 5b125aa77e769983a0aee7c5f6eb6a8a146fead0..fca57e5d1e25db6367c53ad04e49508ebf2223e7 100644
4444
--- a/src/main/java/net/minecraft/world/level/BaseCommandBlock.java
4545
+++ b/src/main/java/net/minecraft/world/level/BaseCommandBlock.java
46-
@@ -200,7 +200,7 @@ public abstract class BaseCommandBlock implements CommandSource {
46+
@@ -199,7 +199,7 @@ public abstract class BaseCommandBlock implements CommandSource {
4747
}
4848

4949
public InteractionResult usedBy(Player player) {

0 commit comments

Comments
 (0)