Java 类net.minecraft.block.BlockSourceImpl 实例源码

项目:RandomMine    文件:BlockPlacer.java   
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;
    }
}
项目:Cyclic    文件:EntityMinecartDropper.java   
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));
  }
}
项目:Cyclic    文件:EntityGoldMinecartDispenser.java   
/**
 * 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());
    }
  }
}
项目:RuneCraftery    文件:BlockDispenser.java   
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);
         }
      }

   }
}
项目:AdvancedCombat    文件:BlockTrackingDispenser.java   
/** 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());
}
项目:RandomMine    文件:BlockPlacer.java   
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) {}
            }
        }
    }
}
项目:RuneCraftery    文件:BlockDropper.java   
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);
      }

   }
}
项目:ExtraCells1    文件:BlockMEDropper.java   
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);
}
项目:AdvancedCombat    文件:BlockTrackingDispenser.java   
/** 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);
               }
           }
       }
   }
项目:EssentialFeatures    文件:BlockBlockPlacer.java   
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);
            }
        }
    }
}
项目:mcplus_mods    文件:BlockSaw.java   
@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;
    }
}