Sanitize Sent BlockEntity NBT (#7010)
Dieser Commit ist enthalten in:
Ursprung
00c6ae8419
Commit
7602dd2014
48
patches/server/0908-Sanitize-Sent-BlockEntity-NBT.patch
Normale Datei
48
patches/server/0908-Sanitize-Sent-BlockEntity-NBT.patch
Normale Datei
@ -0,0 +1,48 @@
|
|||||||
|
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Owen1212055 <23108066+Owen1212055@users.noreply.github.com>
|
||||||
|
Date: Fri, 3 Dec 2021 16:55:50 -0500
|
||||||
|
Subject: [PATCH] Sanitize Sent BlockEntity NBT
|
||||||
|
|
||||||
|
|
||||||
|
diff --git a/src/main/java/net/minecraft/network/protocol/game/ClientboundBlockEntityDataPacket.java b/src/main/java/net/minecraft/network/protocol/game/ClientboundBlockEntityDataPacket.java
|
||||||
|
index 43220caaa331eade5b183f68f09d94542b4bc3db..8c87020e422acfb6b862d9d77e74114770f1b342 100644
|
||||||
|
--- a/src/main/java/net/minecraft/network/protocol/game/ClientboundBlockEntityDataPacket.java
|
||||||
|
+++ b/src/main/java/net/minecraft/network/protocol/game/ClientboundBlockEntityDataPacket.java
|
||||||
|
@@ -17,7 +17,7 @@ public class ClientboundBlockEntityDataPacket implements Packet<ClientGamePacket
|
||||||
|
private final CompoundTag tag;
|
||||||
|
|
||||||
|
public static ClientboundBlockEntityDataPacket create(BlockEntity blockEntity, Function<BlockEntity, CompoundTag> nbtGetter) {
|
||||||
|
- return new ClientboundBlockEntityDataPacket(blockEntity.getBlockPos(), blockEntity.getType(), nbtGetter.apply(blockEntity));
|
||||||
|
+ return new ClientboundBlockEntityDataPacket(blockEntity.getBlockPos(), blockEntity.getType(), blockEntity.sanitizeSentNbt(nbtGetter.apply(blockEntity))); // Paper - Sanitize sent data
|
||||||
|
}
|
||||||
|
|
||||||
|
public static ClientboundBlockEntityDataPacket create(BlockEntity blockEntity) {
|
||||||
|
diff --git a/src/main/java/net/minecraft/network/protocol/game/ClientboundLevelChunkPacketData.java b/src/main/java/net/minecraft/network/protocol/game/ClientboundLevelChunkPacketData.java
|
||||||
|
index 52f68d7611862b0e904305f8a16f04422b2b5b3f..07b64291c3b0390b746433dd42c32534a2b05018 100644
|
||||||
|
--- a/src/main/java/net/minecraft/network/protocol/game/ClientboundLevelChunkPacketData.java
|
||||||
|
+++ b/src/main/java/net/minecraft/network/protocol/game/ClientboundLevelChunkPacketData.java
|
||||||
|
@@ -184,6 +184,7 @@ public class ClientboundLevelChunkPacketData {
|
||||||
|
BlockPos blockPos = blockEntity.getBlockPos();
|
||||||
|
if (blockEntity instanceof net.minecraft.world.level.block.entity.SkullBlockEntity) { net.minecraft.world.level.block.entity.SkullBlockEntity.sanitizeTileEntityUUID(compoundTag); } // Paper
|
||||||
|
int i = SectionPos.sectionRelative(blockPos.getX()) << 4 | SectionPos.sectionRelative(blockPos.getZ());
|
||||||
|
+ blockEntity.sanitizeSentNbt(compoundTag); // Paper - Sanitize sent data
|
||||||
|
return new ClientboundLevelChunkPacketData.BlockEntityInfo(i, blockPos.getY(), blockEntity.getType(), compoundTag.isEmpty() ? null : compoundTag);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
diff --git a/src/main/java/net/minecraft/world/level/block/entity/BlockEntity.java b/src/main/java/net/minecraft/world/level/block/entity/BlockEntity.java
|
||||||
|
index d62181bd8bccfcfdd7da8f635bdf7ebc36294705..b96d57b0bcf21508f8e03e96b7553eb486fdf212 100644
|
||||||
|
--- a/src/main/java/net/minecraft/world/level/block/entity/BlockEntity.java
|
||||||
|
+++ b/src/main/java/net/minecraft/world/level/block/entity/BlockEntity.java
|
||||||
|
@@ -256,4 +256,12 @@ public abstract class BlockEntity {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
// CraftBukkit end
|
||||||
|
+ // Paper start
|
||||||
|
+ public CompoundTag sanitizeSentNbt(CompoundTag tag) {
|
||||||
|
+ tag.remove("PublicBukkitValues");
|
||||||
|
+
|
||||||
|
+ return tag;
|
||||||
|
+ }
|
||||||
|
+ // Paper end
|
||||||
|
+
|
||||||
|
}
|
In neuem Issue referenzieren
Einen Benutzer sperren