Posted April 24, 20196 yr Hello everyone! In my GUI i have two slots, one for input and one for output like this: But when i open the GUI, the input slot is filled with the Item i have in the second hotbar slot. I think that the problem is in the container code, here it is: public class CompactorContainer extends Container{ private CompactorTileEntity te; public CompactorContainer(IInventory playerInventory, CompactorTileEntity te) { this.te = te; addOwnSlots(playerInventory); addPlayerSlots(playerInventory); } private void addPlayerSlots(IInventory playerInventory) { for (int row = 0; row < 3; ++row) { for (int col = 0; col < 9; ++col) { int x = 8 + col * 18; int y = row * 18 + 84; this.addSlotToContainer(new Slot(playerInventory, col + row * 9 + 10, x, y)); } } //add the slots for the hotbar for (int col = 0; col < 9; ++col) { int x = 8 + col * 18; int y = 72 + 70; this.addSlotToContainer(new Slot(playerInventory, col, x, y)); } } private void addOwnSlots(IInventory pInv) { addSlotToContainer(new Slot(pInv, 1, 48, 34)); addSlotToContainer(new Slot(pInv, 1, 110, 35)); } @Override public ItemStack transferStackInSlot(EntityPlayer playerIn, int index) { ItemStack itemstack = ItemStack.EMPTY; Slot slot = this.inventorySlots.get(index); if (slot != null && slot.getHasStack()) { ItemStack itemstack1 = slot.getStack(); itemstack = itemstack1.copy(); if (index < CompactorTileEntity.SIZE) { if (!this.mergeItemStack(itemstack1, CompactorTileEntity.SIZE, this.inventorySlots.size(), true)) { return ItemStack.EMPTY; } } else if (!this.mergeItemStack(itemstack1, 0, CompactorTileEntity.SIZE, false)) { return ItemStack.EMPTY; } if (itemstack1.isEmpty()) { slot.putStack(ItemStack.EMPTY); } else { slot.onSlotChanged(); } } return itemstack; } @Override public boolean mergeItemStack(ItemStack stack, int start, int end, boolean reverse){ return super.mergeItemStack(stack,start,end,reverse); } @Override public boolean canInteractWith(EntityPlayer playerIn) { return te.canInteractWith(playerIn); } } Thanks you all!
April 24, 20196 yr 56 minutes ago, MisterGamer _ said: private void addOwnSlots(IInventory pInv) { addSlotToContainer(new Slot(pInv, 1, 48, 34)); addSlotToContainer(new Slot(pInv, 1, 110, 35)); } Why are the indices of both of your slots the same? This should never be the case. As for the issue - look at the object you are passing to this method: 57 minutes ago, MisterGamer _ said: addOwnSlots(playerInventory); Obviously the added slots will correspond to the player's inventory since it is the inventory you are passing.
April 24, 20196 yr Author 11 minutes ago, V0idWa1k3r said: Why are the indices of both of your slots the same? This should never be the case. As for the issue - look at the object you are passing to this method: Obviously the added slots will correspond to the player's inventory since it is the inventory you are passing. So i must create a personal slot, right? Edited April 24, 20196 yr by MisterGamer _ Grammar correction
April 24, 20196 yr You need to give the slots that belong to your TE's inventory said TE's inventory, not the player's inventory.
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.