@Override public ItemStack onItemRightClick(ItemStack stack, World world, EntityPlayer player) { ItemPortableCrafting item = (ItemPortableCrafting) player.getHeldItem().getItem(); if (!world.isRemote) { if (!player.isSneaking()) { if (item.type == 0) { player.displayGui(new BlockWorkbench.InterfaceCraftingTable(world, player.getPosition())); } } } return stack; }
private boolean shouldEat() { // check hunger if(!WMinecraft.getPlayer().canEat(false)) return false; // check screen if(!ignoreScreen.isChecked() && mc.currentScreen != null) return false; // check for clickable objects if(mc.currentScreen == null && mc.objectMouseOver != null) { // clickable entities Entity entity = mc.objectMouseOver.entityHit; if(entity instanceof EntityVillager || entity instanceof EntityTameable) return false; // clickable blocks BlockPos pos = mc.objectMouseOver.getBlockPos(); if(pos != null) { Block block = WMinecraft.getWorld().getBlockState(pos).getBlock(); if(block instanceof BlockContainer || block instanceof BlockWorkbench) return false; } } return true; }
@Override protected Boolean CustomBlockProcessingHandled(StructureConfiguration configuration, BuildBlock block, World world, BlockPos originalPos, EnumFacing assumedNorth, Block foundBlock, IBlockState blockState, EntityPlayer player) { HouseConfiguration houseConfig = (HouseConfiguration) configuration; if ((!houseConfig.addBed && foundBlock instanceof BlockBed) || (!houseConfig.addChest && foundBlock instanceof BlockChest) || (!houseConfig.addTorches && foundBlock instanceof BlockTorch) || (!houseConfig.addCraftingTable && (foundBlock instanceof BlockWorkbench || foundBlock instanceof BlockFurnace))) { // Don't place the block, returning true means that this has been // "handled" return true; } if (foundBlock instanceof BlockFurnace) { this.furnacePosition = block.getStartingPosition().getRelativePosition( originalPos, this.getClearSpace().getShape().getDirection(), configuration.houseFacing); } else if (foundBlock instanceof BlockTrapDoor && houseConfig.addMineShaft) { // The trap door will still be added, but the mine shaft may not be // built. this.trapDoorPosition = block.getStartingPosition().getRelativePosition( originalPos, this.getClearSpace().getShape().getDirection(), configuration.houseFacing); } else if (foundBlock instanceof BlockChest && this.chestPosition == null) { this.chestPosition = block.getStartingPosition().getRelativePosition( originalPos, this.getClearSpace().getShape().getDirection(), configuration.houseFacing); } else if (foundBlock instanceof BlockStandingSign) { this.signPosition = block.getStartingPosition().getRelativePosition( originalPos, this.getClearSpace().getShape().getDirection(), configuration.houseFacing); } if (foundBlock.getRegistryName().getResourceDomain().equals(Blocks.STAINED_GLASS.getRegistryName().getResourceDomain()) && foundBlock.getRegistryName().getResourcePath().equals(Blocks.STAINED_GLASS.getRegistryName().getResourcePath())) { blockState = blockState.withProperty(BlockStainedGlass.COLOR, houseConfig.glassColor); block.setBlockState(blockState); this.priorityOneBlocks.add(block); return true; } else if (foundBlock.getRegistryName().getResourceDomain().equals(Blocks.STAINED_GLASS_PANE.getRegistryName().getResourceDomain()) && foundBlock.getRegistryName().getResourcePath().equals(Blocks.STAINED_GLASS_PANE.getRegistryName().getResourcePath())) { block.setBlockState(foundBlock.getStateFromMeta(houseConfig.glassColor.getMetadata())); this.priorityOneBlocks.add(block); return true; } return false; }
@Override public String execute(CommandSender sender, String[] params) throws CommandException { EntityPlayerMP player = getSenderAsEntity(sender.getMinecraftISender(), EntityPlayerMP.class); Entity entity = EntityUtils.traceEntity(player, 128D); if (params.length == 0 && entity instanceof AbstractChestHorse) { ((AbstractChestHorse) entity).openGUI(player); } else if (params.length == 0 && entity instanceof EntityVillager) { player.displayVillagerTradeGui((EntityVillager) entity); } else if (params.length == 0 && entity instanceof EntityMinecartContainer) { player.displayGui((EntityMinecartContainer) entity); } else { if (params.length == 0 || params.length > 2) { BlockPos trace; try {trace = params.length > 2 ? getCoordFromParams(sender.getMinecraftISender(), params, 0) : EntityUtils.traceBlock(player, 128D);} catch (NumberFormatException nfe) {throw new CommandException("command.open.NAN", sender);} if (trace == null) throw new CommandException("command.open.noBlock", sender); TileEntity te = sender.getWorld().getTileEntity(trace); Block block = WorldUtils.getBlock(sender.getWorld(), trace); if (te instanceof IInteractionObject) player.displayGui((IInteractionObject) te); else if (te instanceof IInventory) player.displayGUIChest((IInventory) te); else if (block == Blocks.ANVIL) player.displayGui(new BlockAnvil.Anvil(sender.getWorld(), trace)); else if (block == Blocks.CRAFTING_TABLE) player.displayGui(new BlockWorkbench.InterfaceCraftingTable(sender.getWorld(), trace)); else throw new CommandException("command.open.invalidBlock", sender); } else if (params.length > 0) { if (params[0].equalsIgnoreCase("enderchest")) player.displayGUIChest(player.getInventoryEnderChest()); else if (params[0].equalsIgnoreCase("enchantment_table") || (params.length > 1 && params[0].equalsIgnoreCase("enchantment") && params[1].equalsIgnoreCase("table"))) { final World w = sender.getWorld(); player.displayGui(new IInteractionObject() { @Override public boolean hasCustomName() {return false;} @Override public String getName() {return "container.enchant";} @Override public ITextComponent getDisplayName() {return new TextComponentTranslation(this.getName());} @Override public String getGuiID() {return "minecraft:enchanting_table";} @Override public Container createContainer(InventoryPlayer playerInventory, EntityPlayer playerIn) { return new ContainerEnchantment(playerInventory, w, BlockPos.ORIGIN); } }); this.allowedInteractions.put(player, player.openContainer); } else if (params[0].equalsIgnoreCase("anvil")) { player.displayGui(new BlockAnvil.Anvil(sender.getWorld(), BlockPos.ORIGIN)); this.allowedInteractions.put(player, player.openContainer); } else if (params[0].equalsIgnoreCase("workbench") || params[0].equalsIgnoreCase("crafting_table") || (params.length > 1 && params[0].equalsIgnoreCase("crafting") && params[1].equalsIgnoreCase("table")) ) { player.displayGui(new BlockWorkbench.InterfaceCraftingTable(sender.getWorld(), BlockPos.ORIGIN)); this.allowedInteractions.put(player, player.openContainer); } else if (params[0].equalsIgnoreCase("furnace") || params[0].equalsIgnoreCase("brewing_stand") || (params.length > 1 && params[0].equalsIgnoreCase("brewing") && params[1].equalsIgnoreCase("stand"))) throw new CommandException("command.open.cantOpenTEs", sender); else throw new CommandException("command.open.invalidContainer", sender, params[0]); } else throw new CommandException("command.generic.invalidUsage", sender, this.getCommandName()); } return null; }