aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/io/github/cottonmc/cotton/gui/ValidatedSlot.java
diff options
context:
space:
mode:
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.java46
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