public InventoryLargeChest(String nameIn, ILockableContainer upperChestIn, ILockableContainer lowerChestIn) { this.name = nameIn; if (upperChestIn == null) { upperChestIn = lowerChestIn; } if (lowerChestIn == null) { lowerChestIn = upperChestIn; } this.upperChest = upperChestIn; this.lowerChest = lowerChestIn; if (upperChestIn.isLocked()) { lowerChestIn.setLockCode(upperChestIn.getLockCode()); } else if (lowerChestIn.isLocked()) { upperChestIn.setLockCode(lowerChestIn.getLockCode()); } }
public boolean onBlockActivated(World worldIn, BlockPos pos, IBlockState state, EntityPlayer playerIn, EnumFacing side, float hitX, float hitY, float hitZ) { if (worldIn.isRemote) { return true; } else { ILockableContainer ilockablecontainer = this.getLockableContainer(worldIn, pos); if (ilockablecontainer != null) { playerIn.displayGUIChest(ilockablecontainer); if (this.chestType == 0) { playerIn.triggerAchievement(StatList.field_181723_aa); } else if (this.chestType == 1) { playerIn.triggerAchievement(StatList.field_181737_U); } } return true; } }
public static IInventory getInventory(IInventory inv) { if (inv instanceof TileEntityChest) { TileEntityChest chest = (TileEntityChest) inv; TileEntityChest neighbour = null; if (chest.adjacentChestXNeg != null) { neighbour = chest.adjacentChestXNeg; } else if (chest.adjacentChestXPos != null) { neighbour = chest.adjacentChestXPos; } else if (chest.adjacentChestZNeg != null) { neighbour = chest.adjacentChestZNeg; } else if (chest.adjacentChestZPos != null) { neighbour = chest.adjacentChestZPos; } if (neighbour != null) { return new InventoryLargeChest("", (ILockableContainer)inv, (ILockableContainer)neighbour); } return inv; } return inv; }
/** * Displays the GUI for interacting with a chest inventory. Args: chestInventory */ public void displayGUIChest(IInventory chestInventory) { if (this.openContainer != this.inventoryContainer) { this.closeScreen(); } if (chestInventory instanceof ILockableContainer) { ILockableContainer ilockablecontainer = (ILockableContainer)chestInventory; if (ilockablecontainer.isLocked() && !this.canOpen(ilockablecontainer.getLockCode()) && !this.isSpectator()) { this.playerNetServerHandler.sendPacket(new S02PacketChat(new ChatComponentTranslation("container.isLocked", new Object[] {chestInventory.getDisplayName()}), (byte)2)); this.playerNetServerHandler.sendPacket(new S29PacketSoundEffect("random.door_close", this.posX, this.posY, this.posZ, 1.0F, 1.0F)); return; } } this.getNextWindowId(); if (chestInventory instanceof IInteractionObject) { this.playerNetServerHandler.sendPacket(new S2DPacketOpenWindow(this.currentWindowId, ((IInteractionObject)chestInventory).getGuiID(), chestInventory.getDisplayName(), chestInventory.getSizeInventory())); this.openContainer = ((IInteractionObject)chestInventory).createContainer(this.inventory, this); } else { this.playerNetServerHandler.sendPacket(new S2DPacketOpenWindow(this.currentWindowId, "minecraft:container", chestInventory.getDisplayName(), chestInventory.getSizeInventory())); this.openContainer = new ContainerChest(this.inventory, chestInventory, this); } this.openContainer.windowId = this.currentWindowId; this.openContainer.onCraftGuiOpened(this); }
public boolean onBlockActivated(World worldIn, BlockPos pos, IBlockState state, EntityPlayer playerIn, EnumHand hand, EnumFacing heldItem, float side, float hitX, float hitY) { if (worldIn.isRemote) { return true; } else { ILockableContainer ilockablecontainer = this.getLockableContainer(worldIn, pos); if (ilockablecontainer != null) { playerIn.displayGUIChest(ilockablecontainer); if (this.chestType == BlockChest.Type.BASIC) { playerIn.addStat(StatList.CHEST_OPENED); } else if (this.chestType == BlockChest.Type.TRAP) { playerIn.addStat(StatList.TRAPPED_CHEST_TRIGGERED); } } return true; } }
public boolean onBlockActivated(World worldIn, BlockPos pos, IBlockState state, EntityPlayer playerIn, EnumHand hand, @Nullable ItemStack heldItem, EnumFacing side, float hitX, float hitY, float hitZ) { if (worldIn.isRemote) { return true; } else { ILockableContainer ilockablecontainer = this.getLockableContainer(worldIn, pos); if (ilockablecontainer != null) { playerIn.displayGUIChest(ilockablecontainer); if (this.chestType == BlockChest.Type.BASIC) { playerIn.addStat(StatList.CHEST_OPENED); } else if (this.chestType == BlockChest.Type.TRAP) { playerIn.addStat(StatList.TRAPPED_CHEST_TRIGGERED); } } return true; } }
@Override public boolean onBlockActivated(World worldIn, BlockPos pos, IBlockState state, EntityPlayer playerIn, EnumHand hand, EnumFacing side, float hitX, float hitY, float hitZ) { if (worldIn.isRemote) { return true; } else { ILockableContainer ilockablecontainer = this.getLockableContainer(worldIn, pos); if (ilockablecontainer != null) { playerIn.openGui(CoreInit.modInstance, GuiIDs.limitableChest.ordinal(), worldIn, pos.getX(), pos.getY(), pos.getZ()); } return true; } }
public ILockableContainer getLockableContainer(World worldIn, BlockPos pos) { TileEntity tileentity = worldIn.getTileEntity(pos); if (!(tileentity instanceof TileEntityLimitableChest)) { return null; } else { ILockableContainer ilockablecontainer = (TileEntityLimitableChest) tileentity; if (this.isBlocked(worldIn, pos)) { return null; } else { return ilockablecontainer; } } }
@Listener public void onChestOpen(InteractInventoryEvent.Open event, @Root Player player) { Optional<GoldRushInstance> optInst = manager.getApplicableZone(player); if (!optInst.isPresent()) { return; } GoldRushInstance inst = optInst.get(); Inventory inventory = event.getTargetInventory(); if (!inst.isLocked() && inventory instanceof ContainerChest) { IInventory chestInv = ((ContainerChest) inventory).getLowerChestInventory(); if (chestInv instanceof ILockableContainer) { LockCode newLockCode = new LockCode(UUID.randomUUID().toString()); tileEntityClaimMap.put(newLockCode.getLock(), player); ((ILockableContainer) chestInv).setLockCode(newLockCode); BigDecimal risk = Optional.ofNullable( inst.cofferRisk.get(player.getUniqueId()) ).orElse(BigDecimal.ZERO); Collection<org.spongepowered.api.item.inventory.ItemStack> queue = CofferValueMap.inst().satisfy(risk.toBigInteger()); Iterator<org.spongepowered.api.item.inventory.ItemStack> it = queue.iterator(); for (int i = 0; i < chestInv.getSizeInventory(); ++i) { if (it.hasNext()) { chestInv.setInventorySlotContents(i, tf(it.next())); continue; } chestInv.setInventorySlotContents(i, ItemStack.EMPTY); } } } }
/** * Gets whether this is a locked container * @return true if the wrapped inventory is an instance of ILockableContainer and is locked */ public boolean isLocked(){ if(inventory instanceof ILockableContainer){ return ((ILockableContainer)inventory).isLocked(); } return false; }
/** * Activate the clicked on block, otherwise use the held item. */ public boolean activateBlockOrUseItem(EntityPlayer player, World worldIn, ItemStack stack, BlockPos pos, EnumFacing side, float offsetX, float offsetY, float offsetZ) { if (this.gameType == WorldSettings.GameType.SPECTATOR) { TileEntity tileentity = worldIn.getTileEntity(pos); if (tileentity instanceof ILockableContainer) { Block block = worldIn.getBlockState(pos).getBlock(); ILockableContainer ilockablecontainer = (ILockableContainer)tileentity; if (ilockablecontainer instanceof TileEntityChest && block instanceof BlockChest) { ilockablecontainer = ((BlockChest)block).getLockableContainer(worldIn, pos); } if (ilockablecontainer != null) { player.displayGUIChest(ilockablecontainer); return true; } } else if (tileentity instanceof IInventory) { player.displayGUIChest((IInventory)tileentity); return true; } return false; } else { if (!player.isSneaking() || player.getHeldItem() == null) { IBlockState iblockstate = worldIn.getBlockState(pos); if (iblockstate.getBlock().onBlockActivated(worldIn, pos, iblockstate, player, side, offsetX, offsetY, offsetZ)) { return true; } } if (stack == null) { return false; } else if (this.isCreative()) { int j = stack.getMetadata(); int i = stack.stackSize; boolean flag = stack.onItemUse(player, worldIn, pos, side, offsetX, offsetY, offsetZ); stack.setItemDamage(j); stack.stackSize = i; return flag; } else { return stack.onItemUse(player, worldIn, pos, side, offsetX, offsetY, offsetZ); } } }
/** * Displays the GUI for interacting with a chest inventory. */ public void displayGUIChest(IInventory chestInventory) { if (chestInventory instanceof ILootContainer && ((ILootContainer)chestInventory).getLootTable() != null && this.isSpectator()) { this.addChatComponentMessage((new TextComponentTranslation("container.spectatorCantOpen", new Object[0])).setStyle((new Style()).setColor(TextFormatting.RED)), true); } else { if (this.openContainer != this.inventoryContainer) { this.closeScreen(); } if (chestInventory instanceof ILockableContainer) { ILockableContainer ilockablecontainer = (ILockableContainer)chestInventory; if (ilockablecontainer.isLocked() && !this.canOpen(ilockablecontainer.getLockCode()) && !this.isSpectator()) { this.connection.sendPacket(new SPacketChat(new TextComponentTranslation("container.isLocked", new Object[] {chestInventory.getDisplayName()}), (byte)2)); this.connection.sendPacket(new SPacketSoundEffect(SoundEvents.BLOCK_CHEST_LOCKED, SoundCategory.BLOCKS, this.posX, this.posY, this.posZ, 1.0F, 1.0F)); return; } } this.getNextWindowId(); if (chestInventory instanceof IInteractionObject) { this.connection.sendPacket(new SPacketOpenWindow(this.currentWindowId, ((IInteractionObject)chestInventory).getGuiID(), chestInventory.getDisplayName(), chestInventory.getSizeInventory())); this.openContainer = ((IInteractionObject)chestInventory).createContainer(this.inventory, this); } else { this.connection.sendPacket(new SPacketOpenWindow(this.currentWindowId, "minecraft:container", chestInventory.getDisplayName(), chestInventory.getSizeInventory())); this.openContainer = new ContainerChest(this.inventory, chestInventory, this); } this.openContainer.windowId = this.currentWindowId; this.openContainer.addListener(this); } }
@Nullable public ILockableContainer getLockableContainer(World worldIn, BlockPos pos) { return this.getContainer(worldIn, pos, false); }
public EnumActionResult processRightClickBlock(EntityPlayer player, World worldIn, ItemStack stack, EnumHand hand, BlockPos pos, EnumFacing facing, float hitX, float hitY, float hitZ) { if (this.gameType == GameType.SPECTATOR) { TileEntity tileentity = worldIn.getTileEntity(pos); if (tileentity instanceof ILockableContainer) { Block block1 = worldIn.getBlockState(pos).getBlock(); ILockableContainer ilockablecontainer = (ILockableContainer)tileentity; if (ilockablecontainer instanceof TileEntityChest && block1 instanceof BlockChest) { ilockablecontainer = ((BlockChest)block1).getLockableContainer(worldIn, pos); } if (ilockablecontainer != null) { player.displayGUIChest(ilockablecontainer); return EnumActionResult.SUCCESS; } } else if (tileentity instanceof IInventory) { player.displayGUIChest((IInventory)tileentity); return EnumActionResult.SUCCESS; } return EnumActionResult.PASS; } else { if (!player.isSneaking() || player.getHeldItemMainhand().func_190926_b() && player.getHeldItemOffhand().func_190926_b()) { IBlockState iblockstate = worldIn.getBlockState(pos); if (iblockstate.getBlock().onBlockActivated(worldIn, pos, iblockstate, player, hand, facing, hitX, hitY, hitZ)) { return EnumActionResult.SUCCESS; } } if (stack.func_190926_b()) { return EnumActionResult.PASS; } else if (player.getCooldownTracker().hasCooldown(stack.getItem())) { return EnumActionResult.PASS; } else { if (stack.getItem() instanceof ItemBlock && !player.canUseCommandBlock()) { Block block = ((ItemBlock)stack.getItem()).getBlock(); if (block instanceof BlockCommandBlock || block instanceof BlockStructure) { return EnumActionResult.FAIL; } } if (this.isCreative()) { int j = stack.getMetadata(); int i = stack.func_190916_E(); EnumActionResult enumactionresult = stack.onItemUse(player, worldIn, pos, hand, facing, hitX, hitY, hitZ); stack.setItemDamage(j); stack.func_190920_e(i); return enumactionresult; } else { return stack.onItemUse(player, worldIn, pos, hand, facing, hitX, hitY, hitZ); } } } }
/** * Displays the GUI for interacting with a chest inventory. */ public void displayGUIChest(IInventory chestInventory) { if (chestInventory instanceof ILootContainer && ((ILootContainer)chestInventory).getLootTable() != null && this.isSpectator()) { this.addChatMessage((new TextComponentTranslation("container.spectatorCantOpen", new Object[0])).setStyle((new Style()).setColor(TextFormatting.RED))); } else { if (this.openContainer != this.inventoryContainer) { this.closeScreen(); } if (chestInventory instanceof ILockableContainer) { ILockableContainer ilockablecontainer = (ILockableContainer)chestInventory; if (ilockablecontainer.isLocked() && !this.canOpen(ilockablecontainer.getLockCode()) && !this.isSpectator()) { this.connection.sendPacket(new SPacketChat(new TextComponentTranslation("container.isLocked", new Object[] {chestInventory.getDisplayName()}), (byte)2)); this.connection.sendPacket(new SPacketSoundEffect(SoundEvents.BLOCK_CHEST_LOCKED, SoundCategory.BLOCKS, this.posX, this.posY, this.posZ, 1.0F, 1.0F)); return; } } this.getNextWindowId(); if (chestInventory instanceof IInteractionObject) { this.connection.sendPacket(new SPacketOpenWindow(this.currentWindowId, ((IInteractionObject)chestInventory).getGuiID(), chestInventory.getDisplayName(), chestInventory.getSizeInventory())); this.openContainer = ((IInteractionObject)chestInventory).createContainer(this.inventory, this); } else { this.connection.sendPacket(new SPacketOpenWindow(this.currentWindowId, "minecraft:container", chestInventory.getDisplayName(), chestInventory.getSizeInventory())); this.openContainer = new ContainerChest(this.inventory, chestInventory, this); } this.openContainer.windowId = this.currentWindowId; this.openContainer.addListener(this); net.minecraftforge.common.MinecraftForge.EVENT_BUS.post(new net.minecraftforge.event.entity.player.PlayerContainerEvent.Open(this, this.openContainer)); } }
public ILockableContainer getWhiteChest() { setCursor(WHITE_PODIUM); y++; return getChestAtCursor(); }
private ILockableContainer getChestAtCursor() { return ((BlockChest) world.getBlockState(cursorCoords()).getBlock()).getLockableContainer(world, cursorCoords()); }
public ILockableContainer getBlackChest() { setCursor(BLACK_PODIUM); y++; return getChestAtCursor(); }
@Override public ILockableContainer getLockableContainer() { return null; }
protected static boolean isLocked(Object o){ return o instanceof ILockableContainer && ((ILockableContainer)o).isLocked(); }