mirror of
https://github.com/PaperMC/Paper.git
synced 2024-09-12 15:08:27 +02:00
- Lots of itemstack cloning removed. Only clone if the item is actually moved - Return true when a plugin cancels inventory move item event instead of false, as false causes pulls to cycle through all items. However, pushes do not exhibit the same behavior, so this is not something plugins could of been relying on. - Add option (Default on) to cooldown hoppers when they fail to move an item due to full inventory - Skip subsequent InventoryMoveItemEvents if a plugin does not use the item after first event fire for an iteration
74 lines
3.4 KiB
Diff
74 lines
3.4 KiB
Diff
From 24bd8aa011e4db23f1dff3e17a4925e30bc4b08a 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 f84fc54ec..513c4b020 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;
|
|
|
|
@@ -384,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 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.16.1
|
|
|