diff options
Diffstat (limited to 'src/main/java/io/github/cottonmc/cotton/gui/ValidatedSlot.java')
-rw-r--r-- | src/main/java/io/github/cottonmc/cotton/gui/ValidatedSlot.java | 46 |
1 files changed, 46 insertions, 0 deletions
diff --git a/src/main/java/io/github/cottonmc/cotton/gui/ValidatedSlot.java b/src/main/java/io/github/cottonmc/cotton/gui/ValidatedSlot.java new file mode 100644 index 0000000..9301761 --- /dev/null +++ b/src/main/java/io/github/cottonmc/cotton/gui/ValidatedSlot.java @@ -0,0 +1,46 @@ +package io.github.cottonmc.cotton.gui; + +import net.minecraft.container.Slot; +import net.minecraft.entity.player.PlayerEntity; +import net.minecraft.inventory.Inventory; +import net.minecraft.item.ItemStack; + +public class ValidatedSlot extends Slot { + private final int slotNumber; + + public ValidatedSlot(Inventory inventoryIn, int index, int xPosition, int yPosition) { + super(inventoryIn, index, xPosition, yPosition); + if (inventoryIn==null) throw new IllegalArgumentException("Can't make an itemslot from a null inventory!"); + this.slotNumber = index; + } + + @Override + public boolean canInsert(ItemStack stack) { + return inventory.isValidInvStack(slotNumber, stack); + } + + @Override + public boolean canTakeItems(PlayerEntity player) { + return inventory.canPlayerUseInv(player); + } + + @Override + public ItemStack getStack() { + if (inventory==null) { + System.out.println("Prevented null-inventory from WItemSlot with slot #: "+slotNumber); + return ItemStack.EMPTY; + } + + ItemStack result = super.getStack(); + if (result==null) { + System.out.println("Prevented null-itemstack crash from: "+inventory.getClass().getCanonicalName()); + return ItemStack.EMPTY; + } + + return result; + } + + public int getInventoryIndex() { + return slotNumber; + } +}
\ No newline at end of file |