123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100 |
- package me.km.inventory;
- import me.km.KajetansMod;
- import net.minecraft.entity.player.EntityPlayer;
- import net.minecraft.entity.player.EntityPlayerMP;
- import net.minecraft.inventory.ClickType;
- import net.minecraft.item.ItemStack;
- public class CustomContainer extends CustomContainerBase
- {
- private boolean canBeClosed;
-
- public CustomContainer(InventoryBase inv, EntityPlayer p)
- {
- super(inv, p);
- canBeClosed = true;
- }
-
- @Override
- public void closeSafe()
- {
- if(canBeClosed)
- {
- super.closeSafe();
- }
- else if(isServerSide)
- {
- KajetansMod.scheduler.scheduleTask(() ->
- {
- if(viewer.openContainer.windowId == this.windowId)
- {
- super.closeSafe();
- }
- });
- }
- }
-
- @Override
- public void openForPlayer()
- {
- // opening container on next tick to prevent closing during noClicking or onCanceledClick
- if(isServerSide)
- {
- if(viewer.openContainer instanceof CustomContainer)
- {
- CustomContainer cc = (CustomContainer) viewer.openContainer;
- if(!cc.canBeClosed)
- {
- KajetansMod.scheduler.scheduleTask(() -> openForPlayer());
- return;
- }
- }
- super.openForPlayer();
- }
- }
-
- @Override
- public final ItemStack slotClick(int slotId, int dragType, ClickType clickTypeIn, EntityPlayer p)
- {
- if(slotId < 0 || slotId >= inv.getSizeInventory())
- {
- return super.slotClick(slotId, dragType, clickTypeIn, p);
- }
- switch(inv.getSlotStatus(slotId))
- {
- case 0: return ItemStack.EMPTY;
- case 1: return super.slotClick(slotId, dragType, clickTypeIn, p);
- case 2:
- if(isServerSide)
- {
- //System.out.println("Button was pressed");
- EntityPlayerMP player = (EntityPlayerMP) p;
- canBeClosed = false;
- onButtonClick(slotId, dragType, clickTypeIn, player);
- canBeClosed = true;
- }
- return ItemStack.EMPTY;
- case 3:
- if(isServerSide)
- {
- //System.out.println("Button was pressed, serverside cancel possible");
- EntityPlayerMP player = (EntityPlayerMP) p;
- canBeClosed = false;
- if(onButtonClick(slotId, dragType, clickTypeIn, player))
- {
- canBeClosed = true;
- return ItemStack.EMPTY;
- }
- canBeClosed = true;
- }
- return super.slotClick(slotId, dragType, clickTypeIn, p);
- }
- return ItemStack.EMPTY;
- }
-
- public boolean onButtonClick(int slotId, int dragType, ClickType clickTypeIn, EntityPlayerMP player)
- {
- return false;
- }
- }
|