diff --git a/jsons/1.11.2.json b/jsons/1.11.2.json index e739c330d6c..3e0ff29994c 100644 --- a/jsons/1.11.2.json +++ b/jsons/1.11.2.json @@ -242,13 +242,13 @@ } }, { - "name": "com.mojang:realms:1.10.14", + "name": "com.mojang:realms:1.10.16", "downloads": { "artifact": { - "size": 3162566, - "sha1": "f08caf995313992fcfe03bc12234748328471d0a", - "path": "com/mojang/realms/1.10.14/realms-1.10.14.jar", - "url": "https://libraries.minecraft.net/com/mojang/realms/1.10.14/realms-1.10.14.jar" + "size": 3257394, + "sha1": "b4948eb06ff238e45044f47aa69c2c977ce69dcb", + "path": "com/mojang/realms/1.10.16/realms-1.10.16.jar", + "url": "https://libraries.minecraft.net/com/mojang/realms/1.10.16/realms-1.10.16.jar" } } }, @@ -558,6 +558,6 @@ "minecraftArguments": "--username ${auth_player_name} --version ${version_name} --gameDir ${game_directory} --assetsDir ${assets_root} --assetIndex ${assets_index_name} --uuid ${auth_uuid} --accessToken ${auth_access_token} --userType ${user_type} --versionType ${version_type}", "minimumLauncherVersion": 18, "releaseTime": "2016-12-21T09:29:12+00:00", - "time": "2017-02-27T10:13:05+00:00", + "time": "2017-04-07T11:44:29+00:00", "type": "release" } diff --git a/src/main/java/net/minecraftforge/items/IItemHandler.java b/src/main/java/net/minecraftforge/items/IItemHandler.java index 2e2aaf58d87..f9f725ef532 100644 --- a/src/main/java/net/minecraftforge/items/IItemHandler.java +++ b/src/main/java/net/minecraftforge/items/IItemHandler.java @@ -62,7 +62,7 @@ public interface IItemHandler * @param slot Slot to insert into. * @param stack ItemStack to insert. * @param simulate If true, the insertion is only simulated - * @return The remaining ItemStack that was not inserted (if the entire stack is accepted, then return null). + * @return The remaining ItemStack that was not inserted (if the entire stack is accepted, then return ItemStack.EMPTY). * May be the same as the input ItemStack if unchanged, otherwise a new ItemStack. **/ @Nonnull @@ -76,7 +76,7 @@ public interface IItemHandler * @param slot Slot to extract from. * @param amount Amount to extract (may be greater than the current stacks max limit) * @param simulate If true, the extraction is only simulated - * @return ItemStack extracted from the slot, must be null, if nothing can be extracted + * @return ItemStack extracted from the slot, must be ItemStack.EMPTY, if nothing can be extracted **/ @Nonnull ItemStack extractItem(int slot, int amount, boolean simulate); diff --git a/src/main/java/net/minecraftforge/items/VanillaDoubleChestItemHandler.java b/src/main/java/net/minecraftforge/items/VanillaDoubleChestItemHandler.java index da17dfde15e..c736b3a666c 100644 --- a/src/main/java/net/minecraftforge/items/VanillaDoubleChestItemHandler.java +++ b/src/main/java/net/minecraftforge/items/VanillaDoubleChestItemHandler.java @@ -131,6 +131,10 @@ public void setStackInSlot(int slot, @Nonnull ItemStack stack) ((IItemHandlerModifiable) singleHandler).setStackInSlot(targetSlot, stack); } } + + chest = getChest(!accessingUpperChest); + if (chest != null) + chest.markDirty(); } @Override @@ -140,7 +144,19 @@ public ItemStack insertItem(int slot, @Nonnull ItemStack stack, boolean simulate boolean accessingUpperChest = slot < 27; int targetSlot = accessingUpperChest ? slot : slot - 27; TileEntityChest chest = getChest(accessingUpperChest); - return chest != null ? chest.getSingleChestHandler().insertItem(targetSlot, stack, simulate) : stack; + if (chest == null) + return stack; + + int starting = stack.getCount(); + ItemStack ret = chest.getSingleChestHandler().insertItem(targetSlot, stack, simulate); + if (ret.getCount() != starting && !simulate) + { + chest = getChest(!accessingUpperChest); + if (chest != null) + chest.markDirty(); + } + + return ret; } @Override @@ -150,7 +166,18 @@ public ItemStack extractItem(int slot, int amount, boolean simulate) boolean accessingUpperChest = slot < 27; int targetSlot = accessingUpperChest ? slot : slot - 27; TileEntityChest chest = getChest(accessingUpperChest); - return chest != null ? chest.getSingleChestHandler().extractItem(targetSlot, amount, simulate) : ItemStack.EMPTY; + if (chest == null) + return ItemStack.EMPTY; + + ItemStack ret = chest.getSingleChestHandler().extractItem(targetSlot, amount, simulate); + if (!ret.isEmpty() && !simulate) + { + chest = getChest(!accessingUpperChest); + if (chest != null) + chest.markDirty(); + } + + return ret; } @Override diff --git a/src/main/java/net/minecraftforge/items/wrapper/SidedInvWrapper.java b/src/main/java/net/minecraftforge/items/wrapper/SidedInvWrapper.java index 8e5e32ff9a1..641c407e4bc 100644 --- a/src/main/java/net/minecraftforge/items/wrapper/SidedInvWrapper.java +++ b/src/main/java/net/minecraftforge/items/wrapper/SidedInvWrapper.java @@ -112,7 +112,7 @@ public ItemStack insertItem(int slot, @Nonnull ItemStack stack, boolean simulate { ItemStack copy = stack.copy(); copy.grow(stackInSlot.getCount()); - inv.setInventorySlotContents(slot1, copy); + setInventorySlotContents(slot1, copy); } return ItemStack.EMPTY; @@ -125,7 +125,7 @@ public ItemStack insertItem(int slot, @Nonnull ItemStack stack, boolean simulate { ItemStack copy = stack.splitStack(m); copy.grow(stackInSlot.getCount()); - inv.setInventorySlotContents(slot1, copy); + setInventorySlotContents(slot1, copy); return stack; } else @@ -147,7 +147,7 @@ public ItemStack insertItem(int slot, @Nonnull ItemStack stack, boolean simulate stack = stack.copy(); if (!simulate) { - inv.setInventorySlotContents(slot1, stack.splitStack(m)); + setInventorySlotContents(slot1, stack.splitStack(m)); return stack; } else @@ -159,7 +159,7 @@ public ItemStack insertItem(int slot, @Nonnull ItemStack stack, boolean simulate else { if (!simulate) - inv.setInventorySlotContents(slot1, stack); + setInventorySlotContents(slot1, stack); return ItemStack.EMPTY; } } @@ -172,7 +172,12 @@ public void setStackInSlot(int slot, @Nonnull ItemStack stack) int slot1 = getSlot(inv, slot, side); if (slot1 != -1) - inv.setInventorySlotContents(slot1, stack); + setInventorySlotContents(slot1, stack); + } + + private void setInventorySlotContents(int slot, ItemStack stack) { + inv.markDirty(); //Notify vanilla of updates, We change the handler to be responsible for this instead of the caller. So mimic vanilla behavior + inv.setInventorySlotContents(slot, stack); } @Override @@ -211,7 +216,9 @@ public ItemStack extractItem(int slot, int amount, boolean simulate) else { int m = Math.min(stackInSlot.getCount(), amount); - return inv.decrStackSize(slot1, m); + ItemStack ret = inv.decrStackSize(slot1, m); + inv.markDirty(); + return ret; } }