mirror of
https://github.com/PaperMC/Paper.git
synced 2024-09-12 06:58:11 +02:00
This enables us a fast reference to the entities current chunk instead of having to look it up by hashmap lookups. We also store counts by type to further enable other performance optimizations in later patches.
74 lines
3.4 KiB
Diff
74 lines
3.4 KiB
Diff
From 051ae98e08452cc8838801081b84366dbc42b7f8 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 086a7fdaa..4b9bf3b4f 100644
|
|
--- a/src/main/java/com/destroystokyo/paper/PaperWorldConfig.java
|
|
+++ b/src/main/java/com/destroystokyo/paper/PaperWorldConfig.java
|
|
@@ -3,6 +3,7 @@ package com.destroystokyo.paper;
|
|
import java.util.List;
|
|
|
|
import net.minecraft.server.MinecraftServer;
|
|
+import org.bukkit.Bukkit;
|
|
import org.bukkit.configuration.file.YamlConfiguration;
|
|
import org.spigotmc.SpigotWorldConfig;
|
|
|
|
@@ -389,4 +390,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 59acc9088..d0b67d8fd 100644
|
|
--- a/src/main/java/net/minecraft/server/EntityFallingBlock.java
|
|
+++ b/src/main/java/net/minecraft/server/EntityFallingBlock.java
|
|
@@ -271,6 +271,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 b24f7d8b2..5a08f6b4e 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.save(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.18.0
|
|
|