diff --git a/Spigot-Server-Patches/0003-mc-dev-imports.patch b/Spigot-Server-Patches/0003-mc-dev-imports.patch index 1c1d98320..58c440f55 100644 --- a/Spigot-Server-Patches/0003-mc-dev-imports.patch +++ b/Spigot-Server-Patches/0003-mc-dev-imports.patch @@ -300,6 +300,91 @@ index 0000000..7b6f8ae + + } +} +diff --git a/src/main/java/net/minecraft/server/Slot.java b/src/main/java/net/minecraft/server/Slot.java +new file mode 100644 +index 0000000..375989f +--- /dev/null ++++ b/src/main/java/net/minecraft/server/Slot.java +@@ -0,0 +1,79 @@ ++package net.minecraft.server; ++ ++public class Slot { ++ ++ public final int index; ++ public final IInventory inventory; ++ public int rawSlotIndex; ++ public int f; ++ public int g; ++ ++ public Slot(IInventory iinventory, int i, int j, int k) { ++ this.inventory = iinventory; ++ this.index = i; ++ this.f = j; ++ this.g = k; ++ } ++ ++ public void a(ItemStack itemstack, ItemStack itemstack1) { ++ if (itemstack != null && itemstack1 != null) { ++ if (itemstack.getItem() == itemstack1.getItem()) { ++ int i = itemstack1.count - itemstack.count; ++ ++ if (i > 0) { ++ this.a(itemstack, i); ++ } ++ ++ } ++ } ++ } ++ ++ protected void a(ItemStack itemstack, int i) {} ++ ++ protected void c(ItemStack itemstack) {} ++ ++ public void a(EntityHuman entityhuman, ItemStack itemstack) { ++ this.f(); ++ } ++ ++ public boolean isAllowed(ItemStack itemstack) { ++ return true; ++ } ++ ++ public ItemStack getItem() { ++ return this.inventory.getItem(this.index); ++ } ++ ++ public boolean hasItem() { ++ return this.getItem() != null; ++ } ++ ++ public void set(ItemStack itemstack) { ++ this.inventory.setItem(this.index, itemstack); ++ this.f(); ++ } ++ ++ public void f() { ++ this.inventory.update(); ++ } ++ ++ public int getMaxStackSize() { ++ return this.inventory.getMaxStackSize(); ++ } ++ ++ public int getMaxStackSize(ItemStack itemstack) { ++ return this.getMaxStackSize(); ++ } ++ ++ public ItemStack a(int i) { ++ return this.inventory.splitStack(this.index, i); ++ } ++ ++ public boolean a(IInventory iinventory, int i) { ++ return iinventory == this.inventory && i == this.index; ++ } ++ ++ public boolean isAllowed(EntityHuman entityhuman) { ++ return true; ++ } ++} -- 1.9.1 diff --git a/Spigot-Server-Patches/0042-Remove-CraftBukkit-Feature-of-ItemStack-s-having-inf.patch b/Spigot-Server-Patches/0042-Remove-CraftBukkit-Feature-of-ItemStack-s-having-inf.patch new file mode 100644 index 000000000..db99d04f8 --- /dev/null +++ b/Spigot-Server-Patches/0042-Remove-CraftBukkit-Feature-of-ItemStack-s-having-inf.patch @@ -0,0 +1,154 @@ +From c6d478b50d868bef21254e0d81e0600171510315 Mon Sep 17 00:00:00 2001 +From: Aikar +Date: Fri, 19 Dec 2014 16:28:22 -0600 +Subject: [PATCH] Remove CraftBukkit "Feature" of ItemStack's having infinite + use if less than 0 stack size + + +diff --git a/src/main/java/net/minecraft/server/DispenseBehaviorItem.java b/src/main/java/net/minecraft/server/DispenseBehaviorItem.java +index 2450265..ea9b20c 100644 +--- a/src/main/java/net/minecraft/server/DispenseBehaviorItem.java ++++ b/src/main/java/net/minecraft/server/DispenseBehaviorItem.java +@@ -10,6 +10,7 @@ public class DispenseBehaviorItem implements IDispenseBehavior { + public DispenseBehaviorItem() {} + + public final ItemStack a(ISourceBlock isourceblock, ItemStack itemstack) { ++ if (itemstack != null && itemstack.count < 0) itemstack.count = 0; // PaperSpigot - Remove CB 'feature' of infinite items + ItemStack itemstack1 = this.b(isourceblock, itemstack); + + this.a(isourceblock); +diff --git a/src/main/java/net/minecraft/server/EntityAgeable.java b/src/main/java/net/minecraft/server/EntityAgeable.java +index 23091bd..930682a 100644 +--- a/src/main/java/net/minecraft/server/EntityAgeable.java ++++ b/src/main/java/net/minecraft/server/EntityAgeable.java +@@ -60,7 +60,7 @@ public abstract class EntityAgeable extends EntityCreature { + + if (!entityhuman.abilities.canInstantlyBuild) { + --itemstack.count; +- if (itemstack.count == 0) { // CraftBukkit - allow less than 0 stacks as "infinite" ++ if (itemstack.count <= 0) { // PaperSpigot - Remove CB 'feature' of infinite items + entityhuman.inventory.setItem(entityhuman.inventory.itemInHandIndex, (ItemStack) null); + } + } +diff --git a/src/main/java/net/minecraft/server/EntityHorse.java b/src/main/java/net/minecraft/server/EntityHorse.java +index 326c043..f93a291 100644 +--- a/src/main/java/net/minecraft/server/EntityHorse.java ++++ b/src/main/java/net/minecraft/server/EntityHorse.java +@@ -635,7 +635,7 @@ public class EntityHorse extends EntityAnimal implements IInventoryListener { + } + + if (flag) { +- if (!entityhuman.abilities.canInstantlyBuild && --itemstack.count == 0) { ++ if (!entityhuman.abilities.canInstantlyBuild && --itemstack.count <= 0) { // PaperSpigot - Remove CB 'feature' of infinite items + entityhuman.inventory.setItem(entityhuman.inventory.itemInHandIndex, (ItemStack) null); + } + +diff --git a/src/main/java/net/minecraft/server/EntityHuman.java b/src/main/java/net/minecraft/server/EntityHuman.java +index 0199856..4f3bc3c 100644 +--- a/src/main/java/net/minecraft/server/EntityHuman.java ++++ b/src/main/java/net/minecraft/server/EntityHuman.java +@@ -563,7 +563,7 @@ public abstract class EntityHuman extends EntityLiving { + public EntityItem a(ItemStack itemstack, boolean flag, boolean flag1) { + if (itemstack == null) { + return null; +- } else if (itemstack.count == 0) { ++ } else if (itemstack.count <= 0) { // PaperSpigot - Remove CB 'feature' of infinite items + return null; + } else { + double d0 = this.locY - 0.30000001192092896D + (double) this.getHeadHeight(); +@@ -920,7 +920,7 @@ public abstract class EntityHuman extends EntityLiving { + + if (itemstack.a(this, (EntityLiving) entity)) { + // CraftBukkit - bypass infinite items; <= 0 -> == 0 +- if (itemstack.count == 0 && !this.abilities.canInstantlyBuild) { ++ if (itemstack.count <= 0 && !this.abilities.canInstantlyBuild) { // PaperSpigot - Remove CB 'feature' of infinite items + this.bZ(); + } + +diff --git a/src/main/java/net/minecraft/server/ItemStack.java b/src/main/java/net/minecraft/server/ItemStack.java +index e5af375..4084dd3 100644 +--- a/src/main/java/net/minecraft/server/ItemStack.java ++++ b/src/main/java/net/minecraft/server/ItemStack.java +@@ -73,6 +73,7 @@ public final class ItemStack { + ItemStack itemstack = new ItemStack(); + + itemstack.c(nbttagcompound); ++ if (itemstack.count < 0) itemstack.count = 0; // PaperSpigot - Remove CB 'feature' of infinite items + return itemstack.getItem() != null ? itemstack : null; + } + +diff --git a/src/main/java/net/minecraft/server/PlayerConnection.java b/src/main/java/net/minecraft/server/PlayerConnection.java +index 3b4bb3f..8d97824 100644 +--- a/src/main/java/net/minecraft/server/PlayerConnection.java ++++ b/src/main/java/net/minecraft/server/PlayerConnection.java +@@ -735,7 +735,7 @@ public class PlayerConnection implements PacketListenerPlayIn, IUpdatePlayerList + } + + itemstack = this.player.inventory.getItemInHand(); +- if (itemstack != null && itemstack.count == 0) { ++ if (itemstack != null && itemstack.count <= 0) { // PaperSpigot - Remove CB 'feature' of infinite items + this.player.inventory.items[this.player.inventory.itemInHandIndex] = null; + itemstack = null; + } +diff --git a/src/main/java/net/minecraft/server/PlayerInteractManager.java b/src/main/java/net/minecraft/server/PlayerInteractManager.java +index a13610e..2012ebd 100644 +--- a/src/main/java/net/minecraft/server/PlayerInteractManager.java ++++ b/src/main/java/net/minecraft/server/PlayerInteractManager.java +@@ -342,7 +342,7 @@ public class PlayerInteractManager { + + if (itemstack1 != null) { + itemstack1.a(this.world, iblockdata.getBlock(), blockposition, this.player); +- if (itemstack1.count == 0) { ++ if (itemstack1.count <= 0) { // PaperSpigot - Remove CB 'feature' of infinite items + this.player.bZ(); + } + } +@@ -381,7 +381,7 @@ public class PlayerInteractManager { + } + } + +- if (itemstack1.count == 0) { ++ if (itemstack1.count <= 0) { // PaperSpigot - Remove CB 'feature' of infinite items + entityhuman.inventory.items[entityhuman.inventory.itemInHandIndex] = null; + } + +diff --git a/src/main/java/net/minecraft/server/PlayerInventory.java b/src/main/java/net/minecraft/server/PlayerInventory.java +index 1c27843..ea593e5 100644 +--- a/src/main/java/net/minecraft/server/PlayerInventory.java ++++ b/src/main/java/net/minecraft/server/PlayerInventory.java +@@ -515,7 +515,7 @@ public class PlayerInventory implements IInventory { + + public ItemStack getCarried() { + // CraftBukkit start +- if (this.f != null && this.f.count == 0) { ++ if (this.f != null && this.f.count <= 0) { // PaperSpigot - Remove CB 'feature' of infinite items + this.setCarried(null); + } + // CraftBukkit end +diff --git a/src/main/java/net/minecraft/server/Slot.java b/src/main/java/net/minecraft/server/Slot.java +index 375989f..42d6dcf 100644 +--- a/src/main/java/net/minecraft/server/Slot.java ++++ b/src/main/java/net/minecraft/server/Slot.java +@@ -49,6 +49,7 @@ public class Slot { + } + + public void set(ItemStack itemstack) { ++ if (itemstack != null && itemstack.count < 0) itemstack.count = 0; // PaperSpigot - Remove CB 'feature' of infinite items + this.inventory.setItem(this.index, itemstack); + this.f(); + } +diff --git a/src/main/java/net/minecraft/server/TileEntityDispenser.java b/src/main/java/net/minecraft/server/TileEntityDispenser.java +index 040a69f..3269d39 100644 +--- a/src/main/java/net/minecraft/server/TileEntityDispenser.java ++++ b/src/main/java/net/minecraft/server/TileEntityDispenser.java +@@ -100,6 +100,7 @@ public class TileEntityDispenser extends TileEntityContainer implements IInvento + + public void setItem(int i, ItemStack itemstack) { + this.items[i] = itemstack; ++ if (itemstack != null && itemstack.count < 0) itemstack.count = 0; // PaperSpigot - Remove CB 'feature' of infinite items + if (itemstack != null && itemstack.count > this.getMaxStackSize()) { + itemstack.count = this.getMaxStackSize(); + } +-- +1.9.5.msysgit.0 +