mirror of
https://github.com/PaperMC/Paper.git
synced 2025-03-02 22:59:57 +01:00
CraftBukkit removed their implementation that caused this issue, switching to Mojang's implementation which doesn't appear to share it. I already removed the important bit in the last upstream merge, this is just unused and unnecessary now. So we remove it.
65 lines
3.1 KiB
Diff
65 lines
3.1 KiB
Diff
From fbcfb4bcbf57547d045729d75dac619eacc7b088 Mon Sep 17 00:00:00 2001
|
|
From: Zach Brown <zach.brown@destroystokyo.com>
|
|
Date: Sat, 12 Nov 2016 23:25:22 -0600
|
|
Subject: [PATCH] Filter bad data from ArmorStand and SpawnEgg items
|
|
|
|
|
|
diff --git a/src/main/java/com/destroystokyo/paper/PaperWorldConfig.java b/src/main/java/com/destroystokyo/paper/PaperWorldConfig.java
|
|
index 4ca44afa9..dcf64efcc 100644
|
|
--- a/src/main/java/com/destroystokyo/paper/PaperWorldConfig.java
|
|
+++ b/src/main/java/com/destroystokyo/paper/PaperWorldConfig.java
|
|
@@ -385,4 +385,12 @@ public class PaperWorldConfig {
|
|
private void removeCorruptTEs() {
|
|
removeCorruptTEs = getBoolean("remove-corrupt-tile-entities", false);
|
|
}
|
|
+
|
|
+ public boolean filterNBTFromSpawnEgg = true;
|
|
+ private void fitlerNBTFromSpawnEgg() {
|
|
+ filterNBTFromSpawnEgg = getBoolean("filter-nbt-data-from-spawn-eggs-and-related", true);
|
|
+ if (!filterNBTFromSpawnEgg) {
|
|
+ Bukkit.getLogger().warning("Spawn Egg and Armor Stand NBT filtering disabled, this is a potential security risk");
|
|
+ }
|
|
+ }
|
|
}
|
|
diff --git a/src/main/java/net/minecraft/server/EntityFallingBlock.java b/src/main/java/net/minecraft/server/EntityFallingBlock.java
|
|
index 8059e6dcd..a4f465e38 100644
|
|
--- a/src/main/java/net/minecraft/server/EntityFallingBlock.java
|
|
+++ b/src/main/java/net/minecraft/server/EntityFallingBlock.java
|
|
@@ -251,6 +251,14 @@ public class EntityFallingBlock extends Entity {
|
|
this.block = Block.getById(nbttagcompound.getByte("Tile") & 255).fromLegacyData(i);
|
|
}
|
|
|
|
+ // Paper start - Block FallingBlocks with Command Blocks
|
|
+ // Check mappings on update - dc = "repeating_command_block" - dd = "chain_command_block"
|
|
+ final Block b = this.block.getBlock();
|
|
+ if (this.world.paperConfig.filterNBTFromSpawnEgg && (b == Blocks.COMMAND_BLOCK || b == Blocks.dc || b == Blocks.dd)) {
|
|
+ this.block = Blocks.STONE.getBlockData();
|
|
+ }
|
|
+ // Paper end
|
|
+
|
|
this.ticksLived = nbttagcompound.getInt("Time");
|
|
Block block = this.block.getBlock();
|
|
|
|
diff --git a/src/main/java/net/minecraft/server/ItemMonsterEgg.java b/src/main/java/net/minecraft/server/ItemMonsterEgg.java
|
|
index 1a01a57d2..f914ad417 100644
|
|
--- a/src/main/java/net/minecraft/server/ItemMonsterEgg.java
|
|
+++ b/src/main/java/net/minecraft/server/ItemMonsterEgg.java
|
|
@@ -102,7 +102,14 @@ public class ItemMonsterEgg extends Item {
|
|
NBTTagCompound nbttagcompound1 = entity.e(new NBTTagCompound());
|
|
UUID uuid = entity.getUniqueID();
|
|
|
|
- nbttagcompound1.a(nbttagcompound.getCompound("EntityTag"));
|
|
+ // Paper start - Filter out position and motion information
|
|
+ final NBTTagCompound entityTag = nbttagcompound.getCompound("EntityTag");
|
|
+ if (world.paperConfig.filterNBTFromSpawnEgg) {
|
|
+ entityTag.remove("Pos");
|
|
+ entityTag.remove("Motion");
|
|
+ }
|
|
+ nbttagcompound1.a(entityTag);
|
|
+ // Paper end
|
|
entity.a(uuid);
|
|
entity.f(nbttagcompound1);
|
|
}
|
|
--
|
|
2.12.2.windows.2
|
|
|