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 { TileEntity tileentity = worldIn.getTileEntity(pos); BlockSourceImpl blocksourceimpl = new BlockSourceImpl(worldIn, pos); TileEntityDispenser tileentitydispenser = (TileEntityDispenser)blocksourceimpl.getBlockTileEntity(); tileentitydispenser.setCustomName("Block Placer"); if (tileentity instanceof TileEntityDispenser) { playerIn.displayGUIChest((TileEntityDispenser)tileentity); } return true; } }
protected void dispense(World worldIn, BlockPos pos) { if (this.timeSinceDropped > 0) { this.timeSinceDropped--; return; } this.timeSinceDropped = TIME_BTW_DROPS; BlockSourceImpl source = new BlockSourceImpl(worldIn, pos); int i = this.getDispenseSlot(); if (i < 0) { worldIn.playEvent(1001, pos, 0); } else { ItemStack itemstack = this.getStackInSlot(i); this.setInventorySlotContents(i, this.drop.dispense(source, itemstack)); } }
/** * pulled from BlockDispenser * * @param worldIn * @param pos */ protected void dispense(World worldIn, BlockPos pos) { if (this.timeSinceDropped > 0) { this.timeSinceDropped--; return; } BlockSourceImpl source = new BlockSourceImpl(worldIn, pos); int i = this.getDispenseSlot(worldIn.rand); if (i < 0) { world.playEvent(1001, pos, 0); this.timeSinceDropped = TIME_BTW_DROPS; } else { ItemStack itemstack = this.getStackInSlot(i); IBehaviorDispenseItem ibehaviordispenseitem = this.getBehavior(itemstack); // ModCyclic.logger.info("BEHAVIOR "+ibehaviordispenseitem); try { ItemStack result = ibehaviordispenseitem.dispense(source, itemstack); this.setInventorySlotContents(i, result); this.timeSinceDropped = TIME_BTW_DROPS; } catch (Exception e) { ModCyclic.logger.error(e.getMessage()); } } }
protected void func_82526_n(World p_82526_1_, int p_82526_2_, int p_82526_3_, int p_82526_4_) { BlockSourceImpl var5 = new BlockSourceImpl(p_82526_1_, p_82526_2_, p_82526_3_, p_82526_4_); TileEntityDispenser var6 = (TileEntityDispenser)var5.func_82619_j(); if(var6 != null) { int var7 = var6.func_70361_i(); if(var7 < 0) { p_82526_1_.func_72926_e(1001, p_82526_2_, p_82526_3_, p_82526_4_, 0); } else { ItemStack var8 = var6.func_70301_a(var7); IBehaviorDispenseItem var9 = this.func_96472_a(var8); if(var9 != IBehaviorDispenseItem.field_82483_a) { ItemStack var10 = var9.func_82482_a(var5, var8); var6.func_70299_a(var7, var10.field_77994_a == 0?null:var10); } } } }
/** Change the dispenser name */ @Override public void onBlockAdded(World worldIn, BlockPos pos, IBlockState state) { super.onBlockAdded(worldIn, pos, state); BlockSourceImpl src = new BlockSourceImpl(worldIn, pos); TileEntityDispenser tile = (TileEntityDispenser)src.getBlockTileEntity(); if(!tile.hasCustomName()) tile.setCustomName(this.getLocalizedName()); }
protected void dispense(World worldIn, BlockPos pos) { BlockSourceImpl blocksourceimpl = new BlockSourceImpl(worldIn, pos); TileEntityDispenser tileentitydispenser = (TileEntityDispenser)blocksourceimpl.getBlockTileEntity(); if (tileentitydispenser != null) { int i = tileentitydispenser.getDispenseSlot(); if (i < 0) { worldIn.playAuxSFX(1001, pos, 0); } else { ItemStack itemstack = tileentitydispenser.getStackInSlot(i); IBehaviorDispenseItem ibehaviordispenseitem = this.getBehavior(itemstack); if (ibehaviordispenseitem != IBehaviorDispenseItem.itemDispenseBehaviorProvider) { try{ IPosition iposition = BlockDispenser.getDispensePosition(blocksourceimpl); BlockPos pos1 = new BlockPos(iposition.getX(), iposition.getY(), iposition.getZ()); Block block = Block.getBlockFromItem(itemstack.getItem()); if (worldIn.canBlockBePlaced(block,pos1,true,BlockPistonBase.getFacing(1),en,itemstack)){ ItemStack itemstack1 = this.dispenseStack(blocksourceimpl, itemstack, worldIn); worldIn.playSoundEffect(iposition.getX(), iposition.getY(), iposition.getZ(), block.stepSound.getPlaceSound(), 1.0f, 1.0f); if (block.getStateFromMeta(itemstack1.getMetadata())==worldIn.getBlockState(pos1))tileentitydispenser.setInventorySlotContents(i, itemstack1.stackSize == 0 ? null : itemstack1); }} catch (Exception e) {} } } } }
protected void func_82526_n(World p_82526_1_, int p_82526_2_, int p_82526_3_, int p_82526_4_) { BlockSourceImpl var5 = new BlockSourceImpl(p_82526_1_, p_82526_2_, p_82526_3_, p_82526_4_); TileEntityDispenser var6 = (TileEntityDispenser)var5.func_82619_j(); if(var6 != null) { int var7 = var6.func_70361_i(); if(var7 < 0) { p_82526_1_.func_72926_e(1001, p_82526_2_, p_82526_3_, p_82526_4_, 0); } else { ItemStack var8 = var6.func_70301_a(var7); int var9 = p_82526_1_.func_72805_g(p_82526_2_, p_82526_3_, p_82526_4_) & 7; IInventory var10 = TileEntityHopper.func_96117_b(p_82526_1_, (double)(p_82526_2_ + Facing.field_71586_b[var9]), (double)(p_82526_3_ + Facing.field_71587_c[var9]), (double)(p_82526_4_ + Facing.field_71585_d[var9])); ItemStack var11; if(var10 != null) { var11 = TileEntityHopper.func_94117_a(var10, var8.func_77946_l().func_77979_a(1), Facing.field_71588_a[var9]); if(var11 == null) { var11 = var8.func_77946_l(); if(--var11.field_77994_a == 0) { var11 = null; } } else { var11 = var8.func_77946_l(); } } else { var11 = this.field_96474_cR.func_82482_a(var5, var8); if(var11 != null && var11.field_77994_a == 0) { var11 = null; } } var6.func_70299_a(var7, var11); } } }
protected void dispense(World world, int x, int y, int z, ItemStack toDispense) { BlockSourceImpl blockSource = new BlockSourceImpl(world, x, y, z); world.playAuxSFX(1001, x, y, z, 0); IBehaviorDispenseItem ibehaviordispenseitem = getBehaviorForItemStack(toDispense); ibehaviordispenseitem.dispense(blockSource, toDispense); }
/** Custom dispense routines */ @Override protected void dispense(World worldIn, BlockPos pos) { BlockSourceImpl src = new BlockSourceImpl(worldIn, pos); TileEntityDispenser tile = (TileEntityDispenser)src.getBlockTileEntity(); if (tile != null) { int i = tile.getDispenseSlot(); if (i < 0) { worldIn.playEvent(1001, pos, 0); } else { // get the active item from its slot ItemStack itemstack = tile.getStackInSlot(i); IBehaviorDispenseItem defaultbehavior = this.getBehavior(itemstack); // make sure it's not regular dropper behavior if (defaultbehavior != IBehaviorDispenseItem.DEFAULT_BEHAVIOR) { ItemStack itemstack1 = null; // replace vanilla behavior if(defaultbehavior instanceof BehaviorProjectileDispense) { itemstack1 = this.dispenseProjectile((BehaviorProjectileDispense)defaultbehavior, src, itemstack); } else if(itemstack.getItem() instanceof ItemSplashPotion || itemstack.getItem() instanceof ItemLingeringPotion) { itemstack1 = this.dispensePotion(src, itemstack); } else if(itemstack.getItem() instanceof ItemFireball) { itemstack1 = this.dispenseFireball(src, itemstack); } // revert to vanilla on failure if(itemstack1 == null) { itemstack1 = defaultbehavior.dispense(src, itemstack); } // update the inventory tile.setInventorySlotContents(i, itemstack1.getCount() <= 0 ? ItemStack.EMPTY : itemstack1); } } } }
protected void dispense(World worldIn, BlockPos pos) { BlockSourceImpl blocksourceimpl = new BlockSourceImpl(worldIn, pos); TileEntityBlockPlacer tileentityblockplacer = (TileEntityBlockPlacer)blocksourceimpl.getBlockTileEntity(); if (tileentityblockplacer != null) { int i = tileentityblockplacer.getDispenseSlot(); if (i < 0) { worldIn.playEvent(1001, pos, 0); } else { ItemStack itemstack = tileentityblockplacer.getStackInSlot(i); if (itemstack != null && net.minecraftforge.items.VanillaInventoryCodeHooks.dropperInsertHook(worldIn, pos, tileentityblockplacer, i, itemstack)) { EnumFacing enumfacing = (EnumFacing)worldIn.getBlockState(pos).getValue(FACING); BlockPos blockpos = pos.offset(enumfacing); ItemStack itemstack1; if (itemstack.getItem() instanceof ItemBlock) { if (worldIn.getBlockState(blockpos).getMaterial() != Material.AIR) worldIn.destroyBlock(blockpos, true); itemstack1 = itemstack.copy(); itemstack = itemstack1.splitStack(1); place(itemstack, blockpos, worldIn); } else { itemstack1 = this.dropBehavior.dispense(blocksourceimpl, itemstack); if (itemstack1 != null && itemstack1.getCount() <= 0) { itemstack1 = null; } } tileentityblockplacer.setInventorySlotContents(i, itemstack1); } } } }
@Override public boolean onBlockActivated(World worldIn, BlockPos pos, IBlockState state, EntityPlayer playerIn, EnumFacing side, float hitX, float hitY, float hitZ) { if (worldIn.isRemote) return true; BlockSourceImpl blocksourceimpl = new BlockSourceImpl(worldIn, pos); EnumFacing facing = getFacing(this.getMetaFromState(state)); BlockPos outpos = pos.offset(facing); IBlockState outblock = worldIn.getBlockState(outpos); if (outblock.getBlock() != Blocks.air) { if ((outblock.getBlock() instanceof BlockLog || outblock.getBlock().getMaterial() == Material.wood) && worldIn.rand.nextBoolean()) { worldIn.playAuxSFX(2001, outpos, Block.getIdFromBlock(outblock.getBlock())); if (worldIn.rand.nextInt(7) == 0) { worldIn.scheduleUpdate(pos, this, this.tickRate(worldIn)); } } worldIn.playSoundEffect(pos.getX() + 0.5D, pos.getY() + 0.5D, pos.getZ() + 0.5D, Sounds.RANDOM_WOOD_CLICK, 0.8F, worldIn.rand.nextFloat() * 0.15F + 0.6F); return true; } else { ItemStack equipItem = playerIn.getCurrentEquippedItem(); if (equipItem != null) { if (Block.getBlockFromItem(equipItem.getItem()) instanceof BlockLog) { if (side == facing) { //Return false to allow player to put wood log on block return false; } } if (!worldIn.isRemote) { worldIn.playAuxSFX(1001, pos, 0); } } return true; } }