PaperSpigot-Parent/Spigot-Server-Patches/0033-Allow-specified-ItemStacks-to-retain-their-invalid-d.patch
Zach Brown 233814297b Remove the spigot TileEntity/Entity capping feature
It appears to cause visual glitching issues with certain TNT entities
fired from cannons. TileEntity tick capping has already been removed
for some time, Entity tick capping removal is new to this patch.
2015-05-30 01:39:20 -05:00

69 lines
2.9 KiB
Diff

From e6897370898bf85f873be3cc8e83a7cac16972dc Mon Sep 17 00:00:00 2001
From: Byteflux <byte@byteflux.net>
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<Integer> dataValueAllowedItems;
+ private static void dataValueAllowedItems()
+ {
+ dataValueAllowedItems = new HashSet<Integer>( getList( "data-value-allowed-items", Collections.emptyList() ) );
+ Bukkit.getLogger().info( "Data value allowed items: " + StringUtils.join(dataValueAllowedItems, ", ") );
+ }
}
--
2.4.1.windows.1