Make SlotItemHandler override Slot.getSlotStackLimit. Closes #3497

Make Container.mergeItemStack respect target slot's max size when slot is non-empty. Closes #3498
Fix Shift clicking in Beacons with stacked items when fuel slot is empty.
This commit is contained in:
LexManos 2016-12-05 12:54:08 -08:00
parent c82d3af550
commit c6bc4ec5a9
3 changed files with 47 additions and 2 deletions

View File

@ -1,6 +1,30 @@
--- ../src-base/minecraft/net/minecraft/inventory/Container.java
+++ ../src-work/minecraft/net/minecraft/inventory/Container.java
@@ -708,7 +708,7 @@
@@ -578,18 +578,19 @@
if (!itemstack.func_190926_b() && itemstack.func_77973_b() == p_75135_1_.func_77973_b() && (!p_75135_1_.func_77981_g() || p_75135_1_.func_77960_j() == itemstack.func_77960_j()) && ItemStack.func_77970_a(p_75135_1_, itemstack))
{
int j = itemstack.func_190916_E() + p_75135_1_.func_190916_E();
+ int maxSize = Math.min(slot.func_75219_a(), p_75135_1_.func_77976_d());
- if (j <= p_75135_1_.func_77976_d())
+ if (j <= maxSize)
{
p_75135_1_.func_190920_e(0);
itemstack.func_190920_e(j);
slot.func_75218_e();
flag = true;
}
- else if (itemstack.func_190916_E() < p_75135_1_.func_77976_d())
+ else if (itemstack.func_190916_E() < maxSize)
{
- p_75135_1_.func_190918_g(p_75135_1_.func_77976_d() - itemstack.func_190916_E());
- itemstack.func_190920_e(p_75135_1_.func_77976_d());
+ p_75135_1_.func_190918_g(maxSize - itemstack.func_190916_E());
+ itemstack.func_190920_e(maxSize);
slot.func_75218_e();
flag = true;
}
@@ -708,7 +709,7 @@
p_94525_2_.func_190920_e(1);
break;
case 2:

View File

@ -1,6 +1,21 @@
--- ../src-base/minecraft/net/minecraft/inventory/ContainerBeacon.java
+++ ../src-work/minecraft/net/minecraft/inventory/ContainerBeacon.java
@@ -145,8 +145,7 @@
@@ -90,12 +90,9 @@
slot.func_75220_a(itemstack1, itemstack);
}
- else if (!this.field_82864_f.func_75216_d() && this.field_82864_f.func_75214_a(itemstack1) && itemstack1.func_190916_E() == 1)
+ else if (this.func_75135_a(itemstack1, 0, 1, false)) //Forge Fix Shift Clicking in beacons with stacks larger then 1.
{
- if (!this.func_75135_a(itemstack1, 0, 1, false))
- {
- return ItemStack.field_190927_a;
- }
+ return ItemStack.field_190927_a;
}
else if (p_82846_2_ >= 1 && p_82846_2_ < 28)
{
@@ -145,8 +142,7 @@
public boolean func_75214_a(ItemStack p_75214_1_)
{

View File

@ -87,6 +87,12 @@ public class SlotItemHandler extends Slot
}
@Override
public int getSlotStackLimit()
{
return this.itemHandler.getSlotLimit(this.index);
}
@Override
public int getItemStackLimit(@Nonnull ItemStack stack)
{