Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package com.walkingdead.walkingdeadmod.items.backpack;
- import net.minecraft.entity.player.EntityPlayer;
- import net.minecraft.entity.player.InventoryPlayer;
- import net.minecraft.inventory.ClickType;
- import net.minecraft.inventory.Container;
- import net.minecraft.inventory.InventoryBasic;
- import net.minecraft.inventory.Slot;
- import net.minecraft.item.ItemStack;
- public class ContainerModTileEntity extends Container{
- public static int GUIID = 2;
- public final InventoryItem inventory;
- private static final int INV_START = InventoryItem.INV_SIZE, INV_END = INV_START+26,
- HOTBAR_START = INV_END+1, HOTBAR_END = HOTBAR_START+8;
- public ContainerModTileEntity(EntityPlayer par1Player, InventoryPlayer inventoryPlayer, InventoryItem inventoryItem) {
- this.inventory = inventoryItem;
- int i;
- InventoryBasic backpackgui = new InventoryBasic("backpackgui", true, 9);
- for (int y = 0; y < 3; ++y) {
- for (int x = 0; x < 3; ++x) {
- this.addSlotToContainer(new SingleItemSlot(this.inventory, x + y * 3, 62 + x * 18, 17 + y * 18));
- }
- }
- for (i = 0; i < 3; ++i)
- {
- for (int j = 0; j < 9; ++j)
- {
- this.addSlotToContainer(new Slot(inventoryPlayer, j + i * 9 + 9, 8 + j * 18, 84 + i * 18));
- }
- }
- for (i = 0; i < 9; ++i)
- {
- this.addSlotToContainer(new Slot(inventoryPlayer, i, 8 + i * 18, 142));
- }
- }
- @Override
- public boolean canInteractWith(EntityPlayer player) {
- return inventory.isUsableByPlayer(player);
- }
- public ItemStack transferStackInSlot(EntityPlayer par1EntityPlayer, int index)
- {
- ItemStack itemstack = null;
- Slot slot = (Slot) this.inventorySlots.get(index);
- if (slot != null && slot.getHasStack())
- {
- ItemStack itemstack1 = slot.getStack();
- itemstack = itemstack1.copy();
- if (index < INV_START)
- {
- if (!this.mergeItemStack(itemstack1, INV_START, HOTBAR_END+1, true))
- {
- return null;
- }
- slot.onSlotChange(itemstack1, itemstack);
- }
- else
- {
- if (index >= INV_START)
- {
- if (!this.mergeItemStack(itemstack1, 0, INV_START, false))
- {
- return null;
- }
- }
- else if (index >= HOTBAR_START && index < HOTBAR_END+1)
- {
- if (!this.mergeItemStack(itemstack1, INV_START, INV_END+1, false))
- {
- return null;
- }
- }
- }
- if (itemstack1.getCount() == 0)
- {
- slot.putStack((ItemStack) null);
- }
- else
- {
- slot.onSlotChanged();
- }
- if (itemstack1.getCount() == itemstack.getCount())
- {
- return null;
- }
- }
- return itemstack;
- }
- @Override
- public ItemStack slotClick(int slot, int button, ClickType clickTypeIn, EntityPlayer player) {
- if (slot >= 0 && getSlot(slot) != null && getSlot(slot).getStack() == player.getHeldItemMainhand()) {
- return null;
- }
- return super.slotClick(slot, button, clickTypeIn, player);
- }
- @Override
- protected boolean mergeItemStack(ItemStack stack, int start, int end, boolean backwards)
- {
- boolean flag1 = false;
- int k = (backwards ? end - 1 : start);
- Slot slot;
- ItemStack itemstack1;
- if (stack.isStackable())
- {
- while (stack.getCount() > 0 && (!backwards && k < end || backwards && k >= start))
- {
- slot = (Slot) inventorySlots.get(k);
- itemstack1 = slot.getStack();
- if (!slot.isItemValid(stack)) {
- k += (backwards ? -1 : 1);
- continue;
- }
- if (itemstack1 != null && itemstack1.getItem() == stack.getItem() &&
- (!stack.getHasSubtypes() || stack.getItemDamage() == itemstack1.getItemDamage()) && ItemStack.areItemStackTagsEqual(stack, itemstack1))
- {
- int l = itemstack1.getCount() + stack.getCount();
- if (l <= stack.getMaxStackSize() && l <= slot.getSlotStackLimit()) {
- stack.setCount(0);;
- itemstack1.setCount(l);
- inventory.markDirty();
- flag1 = true;
- } else if (itemstack1.getCount() < stack.getMaxStackSize() && l < slot.getSlotStackLimit()) {
- stack.setCount(stack.getCount() - stack.getMaxStackSize() - itemstack1.getCount());
- itemstack1.setCount(stack.getMaxStackSize());
- inventory.markDirty();
- flag1 = true;
- }
- }
- k += (backwards ? -1 : 1);
- }
- }
- if (stack.getCount() > 0)
- {
- k = (backwards ? end - 1 : start);
- while (!backwards && k < end || backwards && k >= start) {
- slot = (Slot) inventorySlots.get(k);
- itemstack1 = slot.getStack();
- if (!slot.isItemValid(stack)) {
- k += (backwards ? -1 : 1);
- continue;
- }
- if (itemstack1 == null) {
- int l = stack.getCount();
- if (l <= slot.getSlotStackLimit()) {
- slot.putStack(stack.copy());
- stack.setCount(0);
- inventory.markDirty();
- flag1 = true;
- break;
- } else {
- putStackInSlot(k, new ItemStack(stack.getItem(), slot.getSlotStackLimit(), stack.getItemDamage()));
- stack.setCount(stack.getCount() - slot.getSlotStackLimit());
- inventory.markDirty();
- flag1 = true;
- }
- }
- k += (backwards ? -1 : 1);
- }
- }
- return flag1;
- }
- }
Add Comment
Please, Sign In to add comment