From e6897370898bf85f873be3cc8e83a7cac16972dc 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 1984e7c..e6b557e 100644 --- a/src/main/java/net/minecraft/server/ItemStack.java +++ b/src/main/java/net/minecraft/server/ItemStack.java @@ -18,6 +18,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("#.###"); @@ -320,9 +322,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 815ad97..3ab2892 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; @@ -172,4 +171,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, ", ") ); + } } -- 2.4.1.windows.1