Made upgrades stackable

This commit is contained in:
Raoul Van den Berge
2016-12-04 01:19:37 +01:00
parent 0b6bae0f60
commit d6cf79264d
21 changed files with 149 additions and 42 deletions

View File

@@ -2,6 +2,7 @@
### 1.3.1 ### 1.3.1
- Updated Forge to 2180 (raoulvdberge) - Updated Forge to 2180 (raoulvdberge)
- Made Upgrades stackable (raoulvdberge)
- Fixed Disk Drive not noticing a Storage Disk being shift clicked out of the GUI (raoulvdberge) - Fixed Disk Drive not noticing a Storage Disk being shift clicked out of the GUI (raoulvdberge)
### 1.3 ### 1.3

View File

@@ -30,6 +30,95 @@ public abstract class ContainerBase extends Container {
return tile; return tile;
} }
// @todo Forge issue #3498
@Override
protected boolean mergeItemStack(ItemStack stack, int startIndex, int endIndex, boolean reverseDirection) {
boolean flag = false;
int i = startIndex;
if (reverseDirection) {
i = endIndex - 1;
}
if (stack.isStackable()) {
while (!stack.isEmpty()) {
if (reverseDirection) {
if (i < startIndex) {
break;
}
} else if (i >= endIndex) {
break;
}
Slot slot = (Slot) this.inventorySlots.get(i);
ItemStack itemstack = slot.getStack();
if (!itemstack.isEmpty() && itemstack.getItem() == stack.getItem() && (!stack.getHasSubtypes() || stack.getMetadata() == itemstack.getMetadata()) && ItemStack.areItemStackTagsEqual(stack, itemstack)) {
int j = itemstack.getCount() + stack.getCount();
if (j <= slot.getSlotStackLimit()) {
stack.setCount(0);
itemstack.setCount(j);
slot.onSlotChanged();
flag = true;
} else if (itemstack.getCount() < slot.getSlotStackLimit()) {
stack.shrink(slot.getSlotStackLimit() - itemstack.getCount());
itemstack.setCount(slot.getSlotStackLimit());
slot.onSlotChanged();
flag = true;
}
}
if (reverseDirection) {
--i;
} else {
++i;
}
}
}
if (!stack.isEmpty()) {
if (reverseDirection) {
i = endIndex - 1;
} else {
i = startIndex;
}
while (true) {
if (reverseDirection) {
if (i < startIndex) {
break;
}
} else if (i >= endIndex) {
break;
}
Slot slot1 = (Slot) this.inventorySlots.get(i);
ItemStack itemstack1 = slot1.getStack();
if (itemstack1.isEmpty() && slot1.isItemValid(stack)) {
if (stack.getCount() > slot1.getSlotStackLimit()) {
slot1.putStack(stack.splitStack(slot1.getSlotStackLimit()));
} else {
slot1.putStack(stack.splitStack(stack.getCount()));
}
slot1.onSlotChanged();
flag = true;
break;
}
if (reverseDirection) {
--i;
} else {
++i;
}
}
}
return flag;
}
protected void addPlayerInventory(int xInventory, int yInventory) { protected void addPlayerInventory(int xInventory, int yInventory) {
int id = 0; int id = 0;

View File

@@ -1,18 +1,18 @@
package com.raoulvdberge.refinedstorage.container; package com.raoulvdberge.refinedstorage.container;
import com.raoulvdberge.refinedstorage.container.slot.SlotBase;
import com.raoulvdberge.refinedstorage.container.slot.SlotFilterType; import com.raoulvdberge.refinedstorage.container.slot.SlotFilterType;
import com.raoulvdberge.refinedstorage.tile.TileConstructor; import com.raoulvdberge.refinedstorage.tile.TileConstructor;
import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.inventory.Slot; import net.minecraft.inventory.Slot;
import net.minecraft.item.ItemStack; import net.minecraft.item.ItemStack;
import net.minecraftforge.items.SlotItemHandler;
public class ContainerConstructor extends ContainerBase { public class ContainerConstructor extends ContainerBase {
public ContainerConstructor(TileConstructor constructor, EntityPlayer player) { public ContainerConstructor(TileConstructor constructor, EntityPlayer player) {
super(constructor, player); super(constructor, player);
for (int i = 0; i < 4; ++i) { for (int i = 0; i < 4; ++i) {
addSlotToContainer(new SlotItemHandler(constructor.getUpgrades(), i, 187, 6 + (i * 18))); addSlotToContainer(new SlotBase(constructor.getUpgrades(), i, 187, 6 + (i * 18)));
} }
addSlotToContainer(new SlotFilterType(constructor, 0, 80, 20)); addSlotToContainer(new SlotFilterType(constructor, 0, 80, 20));

View File

@@ -1,21 +1,21 @@
package com.raoulvdberge.refinedstorage.container; package com.raoulvdberge.refinedstorage.container;
import com.raoulvdberge.refinedstorage.container.slot.SlotBase;
import com.raoulvdberge.refinedstorage.tile.TileCrafter; import com.raoulvdberge.refinedstorage.tile.TileCrafter;
import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.inventory.Slot; import net.minecraft.inventory.Slot;
import net.minecraft.item.ItemStack; import net.minecraft.item.ItemStack;
import net.minecraftforge.items.SlotItemHandler;
public class ContainerCrafter extends ContainerBase { public class ContainerCrafter extends ContainerBase {
public ContainerCrafter(TileCrafter crafter, EntityPlayer player) { public ContainerCrafter(TileCrafter crafter, EntityPlayer player) {
super(crafter, player); super(crafter, player);
for (int i = 0; i < 9; ++i) { for (int i = 0; i < 9; ++i) {
addSlotToContainer(new SlotItemHandler(crafter.getPatternItems(), i, 8 + (18 * i), 20)); addSlotToContainer(new SlotBase(crafter.getPatternItems(), i, 8 + (18 * i), 20));
} }
for (int i = 0; i < 4; ++i) { for (int i = 0; i < 4; ++i) {
addSlotToContainer(new SlotItemHandler(crafter.getUpgrades(), i, 187, 6 + (i * 18))); addSlotToContainer(new SlotBase(crafter.getUpgrades(), i, 187, 6 + (i * 18)));
} }
addPlayerInventory(8, 55); addPlayerInventory(8, 55);

View File

@@ -1,18 +1,18 @@
package com.raoulvdberge.refinedstorage.container; package com.raoulvdberge.refinedstorage.container;
import com.raoulvdberge.refinedstorage.container.slot.SlotBase;
import com.raoulvdberge.refinedstorage.container.slot.SlotFilterType; import com.raoulvdberge.refinedstorage.container.slot.SlotFilterType;
import com.raoulvdberge.refinedstorage.tile.TileDestructor; import com.raoulvdberge.refinedstorage.tile.TileDestructor;
import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.inventory.Slot; import net.minecraft.inventory.Slot;
import net.minecraft.item.ItemStack; import net.minecraft.item.ItemStack;
import net.minecraftforge.items.SlotItemHandler;
public class ContainerDestructor extends ContainerBase { public class ContainerDestructor extends ContainerBase {
public ContainerDestructor(TileDestructor destructor, EntityPlayer player) { public ContainerDestructor(TileDestructor destructor, EntityPlayer player) {
super(destructor, player); super(destructor, player);
for (int i = 0; i < 4; ++i) { for (int i = 0; i < 4; ++i) {
addSlotToContainer(new SlotItemHandler(destructor.getUpgrades(), i, 187, 6 + (i * 18))); addSlotToContainer(new SlotBase(destructor.getUpgrades(), i, 187, 6 + (i * 18)));
} }
for (int i = 0; i < 9; ++i) { for (int i = 0; i < 9; ++i) {

View File

@@ -1,11 +1,11 @@
package com.raoulvdberge.refinedstorage.container; package com.raoulvdberge.refinedstorage.container;
import com.raoulvdberge.refinedstorage.container.slot.SlotBase;
import com.raoulvdberge.refinedstorage.container.slot.SlotFilterType; import com.raoulvdberge.refinedstorage.container.slot.SlotFilterType;
import com.raoulvdberge.refinedstorage.tile.TileDiskDrive; import com.raoulvdberge.refinedstorage.tile.TileDiskDrive;
import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.inventory.Slot; import net.minecraft.inventory.Slot;
import net.minecraft.item.ItemStack; import net.minecraft.item.ItemStack;
import net.minecraftforge.items.SlotItemHandler;
public class ContainerDiskDrive extends ContainerBase { public class ContainerDiskDrive extends ContainerBase {
public ContainerDiskDrive(TileDiskDrive drive, EntityPlayer player) { public ContainerDiskDrive(TileDiskDrive drive, EntityPlayer player) {
@@ -15,7 +15,7 @@ public class ContainerDiskDrive extends ContainerBase {
int y = 54; int y = 54;
for (int i = 0; i < 8; ++i) { for (int i = 0; i < 8; ++i) {
addSlotToContainer(new SlotItemHandler(drive.getDisks(), i, x + ((i % 2) * 18), y + Math.floorDiv(i, 2) * 18)); addSlotToContainer(new SlotBase(drive.getDisks(), i, x + ((i % 2) * 18), y + Math.floorDiv(i, 2) * 18));
} }
for (int i = 0; i < 9; ++i) { for (int i = 0; i < 9; ++i) {

View File

@@ -1,26 +1,26 @@
package com.raoulvdberge.refinedstorage.container; package com.raoulvdberge.refinedstorage.container;
import com.raoulvdberge.refinedstorage.container.slot.SlotBase;
import com.raoulvdberge.refinedstorage.container.slot.SlotFilterType; import com.raoulvdberge.refinedstorage.container.slot.SlotFilterType;
import com.raoulvdberge.refinedstorage.tile.TileDiskManipulator; import com.raoulvdberge.refinedstorage.tile.TileDiskManipulator;
import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.inventory.Slot; import net.minecraft.inventory.Slot;
import net.minecraft.item.ItemStack; import net.minecraft.item.ItemStack;
import net.minecraftforge.items.SlotItemHandler;
public class ContainerDiskManipulator extends ContainerBase { public class ContainerDiskManipulator extends ContainerBase {
public ContainerDiskManipulator(TileDiskManipulator manipulator, EntityPlayer player) { public ContainerDiskManipulator(TileDiskManipulator manipulator, EntityPlayer player) {
super(manipulator, player); super(manipulator, player);
for (int i = 0; i < 4; ++i) { for (int i = 0; i < 4; ++i) {
addSlotToContainer(new SlotItemHandler(manipulator.getUpgrades(), i, 187, 6 + (i * 18))); addSlotToContainer(new SlotBase(manipulator.getUpgrades(), i, 187, 6 + (i * 18)));
} }
for (int i = 0; i < 3; ++i) { for (int i = 0; i < 3; ++i) {
addSlotToContainer(new SlotItemHandler(manipulator.getInputDisks(), i, 44, 57 + (i * 18))); addSlotToContainer(new SlotBase(manipulator.getInputDisks(), i, 44, 57 + (i * 18)));
} }
for (int i = 0; i < 3; ++i) { for (int i = 0; i < 3; ++i) {
addSlotToContainer(new SlotItemHandler(manipulator.getOutputDisks(), i, 116, 57 + (i * 18))); addSlotToContainer(new SlotBase(manipulator.getOutputDisks(), i, 116, 57 + (i * 18)));
} }
for (int i = 0; i < 9; ++i) { for (int i = 0; i < 9; ++i) {

View File

@@ -1,18 +1,18 @@
package com.raoulvdberge.refinedstorage.container; package com.raoulvdberge.refinedstorage.container;
import com.raoulvdberge.refinedstorage.container.slot.SlotBase;
import com.raoulvdberge.refinedstorage.container.slot.SlotFilterType; import com.raoulvdberge.refinedstorage.container.slot.SlotFilterType;
import com.raoulvdberge.refinedstorage.tile.TileExporter; import com.raoulvdberge.refinedstorage.tile.TileExporter;
import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.inventory.Slot; import net.minecraft.inventory.Slot;
import net.minecraft.item.ItemStack; import net.minecraft.item.ItemStack;
import net.minecraftforge.items.SlotItemHandler;
public class ContainerExporter extends ContainerBase { public class ContainerExporter extends ContainerBase {
public ContainerExporter(TileExporter exporter, EntityPlayer player) { public ContainerExporter(TileExporter exporter, EntityPlayer player) {
super(exporter, player); super(exporter, player);
for (int i = 0; i < 4; ++i) { for (int i = 0; i < 4; ++i) {
addSlotToContainer(new SlotItemHandler(exporter.getUpgrades(), i, 187, 6 + (i * 18))); addSlotToContainer(new SlotBase(exporter.getUpgrades(), i, 187, 6 + (i * 18)));
} }
for (int i = 0; i < 9; ++i) { for (int i = 0; i < 9; ++i) {

View File

@@ -1,21 +1,21 @@
package com.raoulvdberge.refinedstorage.container; package com.raoulvdberge.refinedstorage.container;
import com.raoulvdberge.refinedstorage.container.slot.SlotBase;
import com.raoulvdberge.refinedstorage.container.slot.SlotFilterFluid; import com.raoulvdberge.refinedstorage.container.slot.SlotFilterFluid;
import com.raoulvdberge.refinedstorage.tile.TileFluidInterface; import com.raoulvdberge.refinedstorage.tile.TileFluidInterface;
import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.inventory.Slot; import net.minecraft.inventory.Slot;
import net.minecraft.item.ItemStack; import net.minecraft.item.ItemStack;
import net.minecraftforge.items.SlotItemHandler;
public class ContainerFluidInterface extends ContainerBase { public class ContainerFluidInterface extends ContainerBase {
public ContainerFluidInterface(TileFluidInterface fluidInterface, EntityPlayer player) { public ContainerFluidInterface(TileFluidInterface fluidInterface, EntityPlayer player) {
super(fluidInterface, player); super(fluidInterface, player);
for (int i = 0; i < 4; ++i) { for (int i = 0; i < 4; ++i) {
addSlotToContainer(new SlotItemHandler(fluidInterface.getUpgrades(), i, 187, 6 + (i * 18))); addSlotToContainer(new SlotBase(fluidInterface.getUpgrades(), i, 187, 6 + (i * 18)));
} }
addSlotToContainer(new SlotItemHandler(fluidInterface.getIn(), 0, 44, 32)); addSlotToContainer(new SlotBase(fluidInterface.getIn(), 0, 44, 32));
addSlotToContainer(new SlotFilterFluid(!fluidInterface.getWorld().isRemote, fluidInterface.getOut(), 0, 116, 32)); addSlotToContainer(new SlotFilterFluid(!fluidInterface.getWorld().isRemote, fluidInterface.getOut(), 0, 116, 32));
addPlayerInventory(8, 122); addPlayerInventory(8, 122);

View File

@@ -12,7 +12,6 @@ import net.minecraft.entity.player.EntityPlayerMP;
import net.minecraft.inventory.IContainerListener; import net.minecraft.inventory.IContainerListener;
import net.minecraft.inventory.Slot; import net.minecraft.inventory.Slot;
import net.minecraft.item.ItemStack; import net.minecraft.item.ItemStack;
import net.minecraftforge.items.SlotItemHandler;
public class ContainerGrid extends ContainerBase { public class ContainerGrid extends ContainerBase {
private IGrid grid; private IGrid grid;
@@ -60,13 +59,13 @@ public class ContainerGrid extends ContainerBase {
addSlotToContainer(patternResultSlot = new SlotDisabled(((TileGrid) grid).getResult(), 0, 112 + 4, 110 + 4)); addSlotToContainer(patternResultSlot = new SlotDisabled(((TileGrid) grid).getResult(), 0, 112 + 4, 110 + 4));
addSlotToContainer(new SlotItemHandler(((TileGrid) grid).getPatterns(), 0, 152, 96)); addSlotToContainer(new SlotBase(((TileGrid) grid).getPatterns(), 0, 152, 96));
addSlotToContainer(new SlotOutput(((TileGrid) grid).getPatterns(), 1, 152, 132)); addSlotToContainer(new SlotOutput(((TileGrid) grid).getPatterns(), 1, 152, 132));
} }
if (grid.getType() != EnumGridType.FLUID) { if (grid.getType() != EnumGridType.FLUID) {
for (int i = 0; i < 4; ++i) { for (int i = 0; i < 4; ++i) {
addSlotToContainer(new SlotItemHandler(grid.getFilter(), i, 204, 6 + (18 * i))); addSlotToContainer(new SlotBase(grid.getFilter(), i, 204, 6 + (18 * i)));
} }
} }
} }

View File

@@ -1,18 +1,18 @@
package com.raoulvdberge.refinedstorage.container; package com.raoulvdberge.refinedstorage.container;
import com.raoulvdberge.refinedstorage.container.slot.SlotBase;
import com.raoulvdberge.refinedstorage.container.slot.SlotFilterType; import com.raoulvdberge.refinedstorage.container.slot.SlotFilterType;
import com.raoulvdberge.refinedstorage.tile.TileImporter; import com.raoulvdberge.refinedstorage.tile.TileImporter;
import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.inventory.Slot; import net.minecraft.inventory.Slot;
import net.minecraft.item.ItemStack; import net.minecraft.item.ItemStack;
import net.minecraftforge.items.SlotItemHandler;
public class ContainerImporter extends ContainerBase { public class ContainerImporter extends ContainerBase {
public ContainerImporter(TileImporter importer, EntityPlayer player) { public ContainerImporter(TileImporter importer, EntityPlayer player) {
super(importer, player); super(importer, player);
for (int i = 0; i < 4; ++i) { for (int i = 0; i < 4; ++i) {
addSlotToContainer(new SlotItemHandler(importer.getUpgrades(), i, 187, 6 + (i * 18))); addSlotToContainer(new SlotBase(importer.getUpgrades(), i, 187, 6 + (i * 18)));
} }
for (int i = 0; i < 9; ++i) { for (int i = 0; i < 9; ++i) {

View File

@@ -1,19 +1,19 @@
package com.raoulvdberge.refinedstorage.container; package com.raoulvdberge.refinedstorage.container;
import com.raoulvdberge.refinedstorage.container.slot.SlotBase;
import com.raoulvdberge.refinedstorage.container.slot.SlotFilter; import com.raoulvdberge.refinedstorage.container.slot.SlotFilter;
import com.raoulvdberge.refinedstorage.container.slot.SlotOutput; import com.raoulvdberge.refinedstorage.container.slot.SlotOutput;
import com.raoulvdberge.refinedstorage.tile.TileInterface; import com.raoulvdberge.refinedstorage.tile.TileInterface;
import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.inventory.Slot; import net.minecraft.inventory.Slot;
import net.minecraft.item.ItemStack; import net.minecraft.item.ItemStack;
import net.minecraftforge.items.SlotItemHandler;
public class ContainerInterface extends ContainerBase { public class ContainerInterface extends ContainerBase {
public ContainerInterface(TileInterface tile, EntityPlayer player) { public ContainerInterface(TileInterface tile, EntityPlayer player) {
super(tile, player); super(tile, player);
for (int i = 0; i < 9; ++i) { for (int i = 0; i < 9; ++i) {
addSlotToContainer(new SlotItemHandler(tile.getImportItems(), i, 8 + (18 * i), 20)); addSlotToContainer(new SlotBase(tile.getImportItems(), i, 8 + (18 * i), 20));
} }
for (int i = 0; i < 9; ++i) { for (int i = 0; i < 9; ++i) {
@@ -25,7 +25,7 @@ public class ContainerInterface extends ContainerBase {
} }
for (int i = 0; i < 4; ++i) { for (int i = 0; i < 4; ++i) {
addSlotToContainer(new SlotItemHandler(tile.getUpgrades(), i, 187, 6 + (i * 18))); addSlotToContainer(new SlotBase(tile.getUpgrades(), i, 187, 6 + (i * 18)));
} }
addPlayerInventory(8, 134); addPlayerInventory(8, 134);

View File

@@ -1,18 +1,18 @@
package com.raoulvdberge.refinedstorage.container; package com.raoulvdberge.refinedstorage.container;
import com.raoulvdberge.refinedstorage.container.slot.SlotBase;
import com.raoulvdberge.refinedstorage.tile.TileNetworkTransmitter; import com.raoulvdberge.refinedstorage.tile.TileNetworkTransmitter;
import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.inventory.Slot; import net.minecraft.inventory.Slot;
import net.minecraft.item.ItemStack; import net.minecraft.item.ItemStack;
import net.minecraftforge.items.SlotItemHandler;
public class ContainerNetworkTransmitter extends ContainerBase { public class ContainerNetworkTransmitter extends ContainerBase {
public ContainerNetworkTransmitter(TileNetworkTransmitter networkTransmitter, EntityPlayer player) { public ContainerNetworkTransmitter(TileNetworkTransmitter networkTransmitter, EntityPlayer player) {
super(networkTransmitter, player); super(networkTransmitter, player);
addSlotToContainer(new SlotItemHandler(networkTransmitter.getNetworkCard(), 0, 8, 20)); addSlotToContainer(new SlotBase(networkTransmitter.getNetworkCard(), 0, 8, 20));
addSlotToContainer(new SlotItemHandler(networkTransmitter.getUpgrades(), 0, 187, 6)); addSlotToContainer(new SlotBase(networkTransmitter.getUpgrades(), 0, 187, 6));
addPlayerInventory(8, 55); addPlayerInventory(8, 55);
} }

View File

@@ -1,12 +1,12 @@
package com.raoulvdberge.refinedstorage.container; package com.raoulvdberge.refinedstorage.container;
import com.raoulvdberge.refinedstorage.container.slot.SlotBase;
import com.raoulvdberge.refinedstorage.container.slot.SlotFilter; import com.raoulvdberge.refinedstorage.container.slot.SlotFilter;
import com.raoulvdberge.refinedstorage.container.slot.SlotOutput; import com.raoulvdberge.refinedstorage.container.slot.SlotOutput;
import com.raoulvdberge.refinedstorage.tile.TileProcessingPatternEncoder; import com.raoulvdberge.refinedstorage.tile.TileProcessingPatternEncoder;
import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.inventory.Slot; import net.minecraft.inventory.Slot;
import net.minecraft.item.ItemStack; import net.minecraft.item.ItemStack;
import net.minecraftforge.items.SlotItemHandler;
import java.util.Collection; import java.util.Collection;
@@ -14,7 +14,7 @@ public class ContainerProcessingPatternEncoder extends ContainerBase {
public ContainerProcessingPatternEncoder(TileProcessingPatternEncoder encoder, EntityPlayer player) { public ContainerProcessingPatternEncoder(TileProcessingPatternEncoder encoder, EntityPlayer player) {
super(encoder, player); super(encoder, player);
addSlotToContainer(new SlotItemHandler(encoder.getPatterns(), 0, 152, 18)); addSlotToContainer(new SlotBase(encoder.getPatterns(), 0, 152, 18));
addSlotToContainer(new SlotOutput(encoder.getPatterns(), 1, 152, 58)); addSlotToContainer(new SlotOutput(encoder.getPatterns(), 1, 152, 58));
int ox = 8; int ox = 8;

View File

@@ -1,12 +1,12 @@
package com.raoulvdberge.refinedstorage.container; package com.raoulvdberge.refinedstorage.container;
import com.raoulvdberge.refinedstorage.RSItems; import com.raoulvdberge.refinedstorage.RSItems;
import com.raoulvdberge.refinedstorage.container.slot.SlotBase;
import com.raoulvdberge.refinedstorage.container.slot.SlotOutput; import com.raoulvdberge.refinedstorage.container.slot.SlotOutput;
import com.raoulvdberge.refinedstorage.tile.TileSolderer; import com.raoulvdberge.refinedstorage.tile.TileSolderer;
import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.inventory.Slot; import net.minecraft.inventory.Slot;
import net.minecraft.item.ItemStack; import net.minecraft.item.ItemStack;
import net.minecraftforge.items.SlotItemHandler;
public class ContainerSolderer extends ContainerBase { public class ContainerSolderer extends ContainerBase {
public ContainerSolderer(TileSolderer solderer, EntityPlayer player) { public ContainerSolderer(TileSolderer solderer, EntityPlayer player) {
@@ -16,7 +16,7 @@ public class ContainerSolderer extends ContainerBase {
int y = 20; int y = 20;
for (int i = 0; i < 3; ++i) { for (int i = 0; i < 3; ++i) {
addSlotToContainer(new SlotItemHandler(solderer.getItems(), i, x, y)); addSlotToContainer(new SlotBase(solderer.getItems(), i, x, y));
y += 18; y += 18;
} }
@@ -24,7 +24,7 @@ public class ContainerSolderer extends ContainerBase {
addSlotToContainer(new SlotOutput(solderer.getResult(), 0, 127, 38)); addSlotToContainer(new SlotOutput(solderer.getResult(), 0, 127, 38));
for (int i = 0; i < 4; ++i) { for (int i = 0; i < 4; ++i) {
addSlotToContainer(new SlotItemHandler(solderer.getUpgrades(), i, 187, 6 + (i * 18))); addSlotToContainer(new SlotBase(solderer.getUpgrades(), i, 187, 6 + (i * 18)));
} }
addPlayerInventory(8, 89); addPlayerInventory(8, 89);

View File

@@ -1,17 +1,17 @@
package com.raoulvdberge.refinedstorage.container; package com.raoulvdberge.refinedstorage.container;
import com.raoulvdberge.refinedstorage.container.slot.SlotBase;
import com.raoulvdberge.refinedstorage.tile.TileWirelessTransmitter; import com.raoulvdberge.refinedstorage.tile.TileWirelessTransmitter;
import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.inventory.Slot; import net.minecraft.inventory.Slot;
import net.minecraft.item.ItemStack; import net.minecraft.item.ItemStack;
import net.minecraftforge.items.SlotItemHandler;
public class ContainerWirelessTransmitter extends ContainerBase { public class ContainerWirelessTransmitter extends ContainerBase {
public ContainerWirelessTransmitter(TileWirelessTransmitter wirelessTransmitter, EntityPlayer player) { public ContainerWirelessTransmitter(TileWirelessTransmitter wirelessTransmitter, EntityPlayer player) {
super(wirelessTransmitter, player); super(wirelessTransmitter, player);
for (int i = 0; i < 4; ++i) { for (int i = 0; i < 4; ++i) {
addSlotToContainer(new SlotItemHandler(wirelessTransmitter.getUpgrades(), i, 187, 6 + (i * 18))); addSlotToContainer(new SlotBase(wirelessTransmitter.getUpgrades(), i, 187, 6 + (i * 18)));
} }
addPlayerInventory(8, 55); addPlayerInventory(8, 55);
@@ -23,7 +23,7 @@ public class ContainerWirelessTransmitter extends ContainerBase {
Slot slot = getSlot(index); Slot slot = getSlot(index);
if (slot != null && slot.getHasStack()) { if (slot.getHasStack()) {
stack = slot.getStack(); stack = slot.getStack();
if (index < 4) { if (index < 4) {

View File

@@ -0,0 +1,16 @@
package com.raoulvdberge.refinedstorage.container.slot;
import net.minecraftforge.items.IItemHandler;
import net.minecraftforge.items.SlotItemHandler;
// @todo: Forge issue #3497
public class SlotBase extends SlotItemHandler {
public SlotBase(IItemHandler itemHandler, int index, int xPosition, int yPosition) {
super(itemHandler, index, xPosition, yPosition);
}
@Override
public int getSlotStackLimit() {
return getItemHandler().getSlotLimit(getSlotIndex());
}
}

View File

@@ -9,12 +9,11 @@ import net.minecraft.util.math.BlockPos;
import net.minecraft.world.IBlockAccess; import net.minecraft.world.IBlockAccess;
import net.minecraftforge.common.IPlantable; import net.minecraftforge.common.IPlantable;
import net.minecraftforge.items.IItemHandler; import net.minecraftforge.items.IItemHandler;
import net.minecraftforge.items.SlotItemHandler;
import javax.annotation.Nonnull; import javax.annotation.Nonnull;
import java.lang.reflect.Field; import java.lang.reflect.Field;
public class SlotFilter extends SlotItemHandler { public class SlotFilter extends SlotBase {
public static final int FILTER_ALLOW_SIZE = 1; public static final int FILTER_ALLOW_SIZE = 1;
public static final int FILTER_ALLOW_BLOCKS = 2; public static final int FILTER_ALLOW_BLOCKS = 2;

View File

@@ -2,11 +2,10 @@ package com.raoulvdberge.refinedstorage.container.slot;
import net.minecraft.item.ItemStack; import net.minecraft.item.ItemStack;
import net.minecraftforge.items.IItemHandler; import net.minecraftforge.items.IItemHandler;
import net.minecraftforge.items.SlotItemHandler;
import javax.annotation.Nonnull; import javax.annotation.Nonnull;
public class SlotOutput extends SlotItemHandler { public class SlotOutput extends SlotBase {
public SlotOutput(IItemHandler inventory, int id, int x, int y) { public SlotOutput(IItemHandler inventory, int id, int x, int y) {
super(inventory, id, x, y); super(inventory, id, x, y);
} }

View File

@@ -65,6 +65,11 @@ public class ItemHandlerUpgrade extends ItemHandlerBasic {
return 0; return 0;
} }
@Override
public int getSlotLimit(int slot) {
return 1;
}
public int getItemInteractCount() { public int getItemInteractCount() {
return hasUpgrade(ItemUpgrade.TYPE_STACK) ? 64 : 1; return hasUpgrade(ItemUpgrade.TYPE_STACK) ? 64 : 1;
} }

View File

@@ -34,7 +34,6 @@ public class ItemUpgrade extends ItemBase {
setHasSubtypes(true); setHasSubtypes(true);
setMaxDamage(0); setMaxDamage(0);
setMaxStackSize(1);
} }
@Override @Override