diff --git a/Spigot-Server-Patches/0041-Allow-specified-ItemStacks-to-retain-their-invalid-d.patch b/Spigot-Server-Patches/0041-Allow-specified-ItemStacks-to-retain-their-invalid-d.patch new file mode 100644 index 0000000000..a972d6f967 --- /dev/null +++ b/Spigot-Server-Patches/0041-Allow-specified-ItemStacks-to-retain-their-invalid-d.patch @@ -0,0 +1,68 @@ +From e8247725af871a8acef3db45c6ea71747d9e938f Mon Sep 17 00:00:00 2001 +From: Byteflux +Date: Sun, 30 Nov 2014 18:58:07 -0600 +Subject: [PATCH] Allow specified ItemStacks to retain their invalid data + + +diff --git a/src/main/java/net/minecraft/server/ItemStack.java b/src/main/java/net/minecraft/server/ItemStack.java +index a00c3f4..e5af375 100644 +--- a/src/main/java/net/minecraft/server/ItemStack.java ++++ b/src/main/java/net/minecraft/server/ItemStack.java +@@ -17,6 +17,8 @@ import org.bukkit.entity.Player; + import org.bukkit.event.world.StructureGrowEvent; + // CraftBukkit end + ++import org.github.paperspigot.PaperSpigotConfig; // PaperSpigot ++ + public final class ItemStack { + + public static final DecimalFormat a = new DecimalFormat("#.###"); +@@ -286,9 +288,13 @@ public final class ItemStack { + } + + // Is this a block? +- if (CraftMagicNumbers.getBlock(CraftMagicNumbers.getId(this.getItem())) != Blocks.AIR) { ++ // PaperSpigot start - Allow specific blocks to retain their data values ++ int id = CraftMagicNumbers.getId(this.getItem()); ++ if (CraftMagicNumbers.getBlock(id) != Blocks.AIR) { + // If vanilla doesn't use data on it don't allow any +- if (!(this.usesData() || this.getItem().usesDurability())) { ++ if ((PaperSpigotConfig.dataValueAllowedItems == null || !PaperSpigotConfig.dataValueAllowedItems.contains(id)) && ++ (!(this.usesData() || this.getItem().usesDurability()))) { ++ // PaperSpigot end + i = 0; + } + } +diff --git a/src/main/java/org/github/paperspigot/PaperSpigotConfig.java b/src/main/java/org/github/paperspigot/PaperSpigotConfig.java +index a7b18e4..01cd24a 100644 +--- a/src/main/java/org/github/paperspigot/PaperSpigotConfig.java ++++ b/src/main/java/org/github/paperspigot/PaperSpigotConfig.java +@@ -6,11 +6,10 @@ import java.io.IOException; + import java.lang.reflect.InvocationTargetException; + import java.lang.reflect.Method; + import java.lang.reflect.Modifier; +-import java.util.HashMap; +-import java.util.List; +-import java.util.Map; ++import java.util.*; + import java.util.logging.Level; + import net.minecraft.server.MinecraftServer; ++import org.apache.commons.lang.StringUtils; + import org.bukkit.Bukkit; + import org.bukkit.command.Command; + import org.bukkit.configuration.InvalidConfigurationException; +@@ -169,4 +168,11 @@ public class PaperSpigotConfig + strengthEffectModifier = getDouble( "effect-modifiers.strength", 1.3D ); + weaknessEffectModifier = getDouble( "effect-modifiers.weakness", -0.5D ); + } ++ ++ public static Set dataValueAllowedItems; ++ private static void dataValueAllowedItems() ++ { ++ dataValueAllowedItems = new HashSet( getList( "data-value-allowed-items", Collections.emptyList() ) ); ++ Bukkit.getLogger().info( "Data value allowed items: " + StringUtils.join(dataValueAllowedItems, ", ") ); ++ } + } +-- +1.9.1 +