summaryrefslogtreecommitdiffstats
path: root/nms-patches/PlayerInventory.patch
diff options
context:
space:
mode:
Diffstat (limited to 'nms-patches/PlayerInventory.patch')
-rw-r--r--nms-patches/PlayerInventory.patch100
1 files changed, 100 insertions, 0 deletions
diff --git a/nms-patches/PlayerInventory.patch b/nms-patches/PlayerInventory.patch
new file mode 100644
index 00000000..e4b36670
--- /dev/null
+++ b/nms-patches/PlayerInventory.patch
@@ -0,0 +1,100 @@
+--- ../work/decompile-bb26c12b/net/minecraft/server/PlayerInventory.java 2014-11-27 08:59:46.861421142 +1100
++++ src/main/java/net/minecraft/server/PlayerInventory.java 2014-11-27 08:42:10.172850872 +1100
+@@ -2,6 +2,13 @@
+
+ import java.util.concurrent.Callable;
+
++// CraftBukkit start
++import java.util.List;
++
++import org.bukkit.craftbukkit.entity.CraftHumanEntity;
++import org.bukkit.entity.HumanEntity;
++// CraftBukkit end
++
+ public class PlayerInventory implements IInventory {
+
+ public ItemStack[] items = new ItemStack[36];
+@@ -10,6 +17,39 @@
+ public EntityHuman player;
+ private ItemStack f;
+ public boolean e;
++
++ // CraftBukkit start - add fields and methods
++ public List<HumanEntity> transaction = new java.util.ArrayList<HumanEntity>();
++ private int maxStack = MAX_STACK;
++
++ public ItemStack[] getContents() {
++ return this.items;
++ }
++
++ public ItemStack[] getArmorContents() {
++ return this.armor;
++ }
++
++ public void onOpen(CraftHumanEntity who) {
++ transaction.add(who);
++ }
++
++ public void onClose(CraftHumanEntity who) {
++ transaction.remove(who);
++ }
++
++ public List<HumanEntity> getViewers() {
++ return transaction;
++ }
++
++ public org.bukkit.inventory.InventoryHolder getOwner() {
++ return this.player.getBukkitEntity();
++ }
++
++ public void setMaxStackSize(int size) {
++ maxStack = size;
++ }
++ // CraftBukkit end
+
+ public PlayerInventory(EntityHuman entityhuman) {
+ this.player = entityhuman;
+@@ -42,6 +82,22 @@
+
+ return -1;
+ }
++
++ // CraftBukkit start - Watch method above! :D
++ public int canHold(ItemStack itemstack) {
++ int remains = itemstack.count;
++ for (int i = 0; i < this.items.length; ++i) {
++ if (this.items[i] == null) return itemstack.count;
++
++ // Taken from firstPartial(ItemStack)
++ if (this.items[i] != null && this.items[i].getItem() == itemstack.getItem() && this.items[i].isStackable() && this.items[i].count < this.items[i].getMaxStackSize() && this.items[i].count < this.getMaxStackSize() && (!this.items[i].usesData() || this.items[i].getData() == itemstack.getData()) && ItemStack.equals(this.items[i], itemstack)) {
++ remains -= (this.items[i].getMaxStackSize() < this.getMaxStackSize() ? this.items[i].getMaxStackSize() : this.getMaxStackSize()) - this.items[i].count;
++ }
++ if (remains <= 0) return itemstack.count;
++ }
++ return itemstack.count - remains;
++ }
++ // CraftBukkit end
+
+ public int getFirstEmptySlotIndex() {
+ for (int i = 0; i < this.items.length; ++i) {
+@@ -382,7 +438,7 @@
+ }
+
+ public int getMaxStackSize() {
+- return 64;
++ return maxStack; // CraftBukkit
+ }
+
+ public boolean b(Block block) {
+@@ -458,6 +514,11 @@
+ }
+
+ public ItemStack getCarried() {
++ // CraftBukkit start
++ if (this.f != null && this.f.count == 0) {
++ this.setCarried(null);
++ }
++ // CraftBukkit end
+ return this.f;
+ }
+