private static void fall(IBlockState fallingBlock, World w, BlockPos pos) { try { if (newGravFallingBlock == null) { Class<?> clazz = Class.forName("v0id.exp.entity.EntityGravFallingBlock"); newGravFallingBlock = clazz.getDeclaredConstructor(World.class, double.class, double.class, double.class, IBlockState.class); } EntityFallingBlock efb = (EntityFallingBlock) newGravFallingBlock.newInstance(w, (double)pos.getX() + 0.5d, (double)pos.getY(), (double)pos.getZ() + 0.5d, fallingBlock); if (!w.isRemote) { w.setBlockToAir(pos); w.spawnEntity(efb); } } catch (Exception ex) { ExPApi.apiLogger.log(LogLevel.Fatal, "Api could not reflect %s! Is the core mod ExPetrum installed?", ex, "v0id.exp.entity.EntityGravFallingBlock.<init>!"); } }
private void dropPlatform(World world, BlockPos pos) { BlockPos anchorpos = pos.down(); IBlockState blockstate = world.getBlockState(anchorpos); Block block = blockstate.getBlock(); if (!world.isRemote && block == BWMBlocks.ANCHOR && !isAnchorSupported(world, anchorpos)) { EnumFacing facing = blockstate.getValue(DirUtils.FACING); HashSet<BlockPos> platformBlocks = new HashSet<>(); boolean success = findPlatformPart(world,anchorpos,platformBlocks); if(success) for (BlockPos plat : platformBlocks) { EntityFallingBlock entityfallingblock = new EntityFallingBlock(world, (double)plat.getX() + 0.5D, (double)plat.getY(), (double)plat.getZ() + 0.5D, world.getBlockState(plat)); entityfallingblock.setHurtEntities(true); world.spawnEntity(entityfallingblock); } } }
@Override public boolean apply(Entity entity) { if (entity instanceof EntityItem) { return true; } if (target_speed <= 1) { return false; } if (entity instanceof EntityLiving || entity instanceof IProjectile || entity instanceof EntityTNTPrimed || entity instanceof EntityFallingBlock) { return true; } if (FzConfig.fanturpeller_works_on_players && entity instanceof EntityPlayer) { EntityPlayer player = (EntityPlayer) entity; found_player = true; return !player.capabilities.isCreativeMode && !player.isSneaking(); } return false; // Falling sand doesn't work too well with this // Minecarts seem to just jump back down (and would be too heavy anyways.) // Let's try to keep this method light, hmm? }
@Override public void onUse(MagicData energy, Map<String, String> modData, List<?> selectors) { int fatigue = 0; for (Object obj : selectors) { if (obj instanceof BlockPosHit && energy.getActualUser() instanceof Entity) { fatigue++; BlockPosHit pos = (BlockPosHit) obj; World world = ((Entity) energy.getActualUser()).worldObj; VersionUtils.setAir(world, pos); EntityFallingBlock blockEntity = new EntityFallingBlock(world, pos.getIX() + 0.5, pos.getIY() + 0.5, pos.getIZ() + 0.5, world.getBlockState(pos.getBlockPos())); world.spawnEntityInWorld(blockEntity); blockEntity.setVelocity(0, 100, 0); // Causes blocks to fly upwards } if(obj instanceof Entity) { fatigue++; ((Entity)obj).addVelocity(0, 100, 0); } } energy.performMagic(fatigue * 0.2f); // 5 fatigue = 100% energy request }
@Override protected void func_149829_a( EntityFallingBlock entityFallingSand ) // onStartFalling { // Setup NBT for block to place World world = entityFallingSand.worldObj; int x = (int) ( entityFallingSand.posX - 0.5f ); int y = (int) ( entityFallingSand.posY - 0.5f ); int z = (int) ( entityFallingSand.posZ - 0.5f ); TileEntity entity = world.getTileEntity( x, y, z ); if( entity != null && entity instanceof TileEntityQBlock ) { NBTTagCompound nbttagcompound = new NBTTagCompound(); entity.writeToNBT( nbttagcompound ); entityFallingSand.field_145810_d = nbttagcompound; // data } // Prevent the falling qBlock from dropping items entityFallingSand.field_145813_c = false; // dropItems }
private void tryToFall(World world, BlockPos pos) { IBlockState blockstate = world.getBlockState(pos); if(!world.isRemote) { if (canFallBelow(world, pos.down()) && pos.getY() >= 0) { if (!fallInstantly && world.isAreaLoaded(pos.add(-32, -32, -32), pos.add(32, 32, 32))) { EntityFallingBlock ent = new EntityFallingBlock(world, (double)(pos.getX() + 0.5F), (double)(pos.getY() + 0.5F), (double)(pos.getZ()+ 0.5F), blockstate); world.spawnEntityInWorld(ent); world.playSoundAtEntity(ent, Block.soundTypeSand.soundName, 1.0F, 0.8F); } else { world.setBlockToAir(pos); while (canFallBelow(world, pos = pos.down()) && pos.getY() > 0) { } if (pos.getY() > 0) { world.destroyBlock(pos, true); world.setBlockState(pos, blockstate, 2); } } } } }
/** * If there is space to fall below will start this block falling */ private void tryToFall(World par1World, int par2, int par3, int par4) { if (IaSBlockFalling.canFallBelow(par1World, par2, par3 - 1, par4) && par3 >= 0) { final byte b0 = 32; if (!IaSBlockFalling.fallInstantly && par1World.checkChunksExist(par2 - b0, par3 - b0, par4 - b0, par2 + b0, par3 + b0, par4 + b0)) { if (!par1World.isRemote) { final EntityFallingBlock entityfallingsand = new EntityFallingBlock(par1World, par2 + 0.5F, par3 + 0.5F, par4 + 0.5F, this, par1World.getBlockMetadata(par2, par3, par4)); onStartFalling(entityfallingsand); par1World.spawnEntityInWorld(entityfallingsand); } } else { par1World.setBlockToAir(par2, par3, par4); while (IaSBlockFalling.canFallBelow(par1World, par2, par3 - 1, par4) && par3 > 0) { --par3; } if (par3 > 0) { par1World.setBlock(par2, par3, par4, this); } } } }
public void handleSpecialEntities(Entity ent) { if(ent instanceof EntityBlock) { ((EntityBlock)ent).timeExisting = 2; } else if(ent instanceof EntityFallingBlock) { ((EntityFallingBlock)ent).fallTime = 2; } else if(ent instanceof EntityFireball) { EntityFireball fireball = (EntityFireball)ent; float[] appliedAcceleration = getQuaternionFormula().applyPositionalRotation(new float[] { (float)fireball.accelerationX, (float)fireball.accelerationY, (float)fireball.accelerationZ }); fireball.accelerationX = appliedAcceleration[0]; fireball.accelerationY = appliedAcceleration[1]; fireball.accelerationZ = appliedAcceleration[2]; } else if(ent instanceof EntityArrow) { ((EntityArrow)ent).inGround = false; } }
private void checkFall(World worldIn, BlockPos pos) { if (BlockFalling.canFallInto(worldIn, pos.down()) && pos.getY() >= 0) { int i = 32; if (!BlockFalling.fallInstantly && worldIn.isAreaLoaded(pos.add(-i, -i, -i), pos.add(i, i, i))) { worldIn.spawnEntityInWorld(new EntityFallingBlock(worldIn, (double)((float)pos.getX() + 0.5F), (double)pos.getY(), (double)((float)pos.getZ() + 0.5F), this.getDefaultState())); } else { worldIn.setBlockToAir(pos); BlockPos blockpos; for (blockpos = pos; BlockFalling.canFallInto(worldIn, blockpos) && blockpos.getY() > 0; blockpos = blockpos.down()) { ; } if (blockpos.getY() > 0) { worldIn.setBlockState(blockpos, this.getDefaultState(), 2); } } } }
private void checkFallable(World worldIn, BlockPos pos) { if (canFallInto(worldIn, pos.down()) && pos.getY() >= 0) { int i = 32; if (!fallInstantly && worldIn.isAreaLoaded(pos.add(-i, -i, -i), pos.add(i, i, i))) { if (!worldIn.isRemote) { EntityFallingBlock entityfallingblock = new EntityFallingBlock(worldIn, (double)pos.getX() + 0.5D, (double)pos.getY(), (double)pos.getZ() + 0.5D, worldIn.getBlockState(pos)); this.onStartFalling(entityfallingblock); worldIn.spawnEntityInWorld(entityfallingblock); } } else { worldIn.setBlockToAir(pos); BlockPos blockpos; for (blockpos = pos.down(); canFallInto(worldIn, blockpos) && blockpos.getY() > 0; blockpos = blockpos.down()) { ; } if (blockpos.getY() > 0) { worldIn.setBlockState(blockpos.up(), this.getDefaultState()); } } } }
/** * Actually renders the given argument. This is a synthetic bridge method, always casting down its argument and then * handing it off to a worker function which does the actual work. In all probabilty, the class Render is generic * (Render<T extends Entity>) and this method has signature public void doRender(T entity, double d, double d1, * double d2, float f, float f1). But JAD is pre 1.5 so doe */ public void doRender(EntityFallingBlock entity, double x, double y, double z, float entityYaw, float partialTicks) { if (entity.getBlock() != null) { this.bindTexture(TextureMap.locationBlocksTexture); IBlockState iblockstate = entity.getBlock(); Block block = iblockstate.getBlock(); BlockPos blockpos = new BlockPos(entity); World world = entity.getWorldObj(); if (iblockstate != world.getBlockState(blockpos) && block.getRenderType() != -1) { if (block.getRenderType() == 3) { GlStateManager.pushMatrix(); GlStateManager.translate((float)x, (float)y, (float)z); GlStateManager.disableLighting(); Tessellator tessellator = Tessellator.getInstance(); WorldRenderer worldrenderer = tessellator.getWorldRenderer(); worldrenderer.begin(7, DefaultVertexFormats.BLOCK); int i = blockpos.getX(); int j = blockpos.getY(); int k = blockpos.getZ(); worldrenderer.setTranslation((double)((float)(-i) - 0.5F), (double)(-j), (double)((float)(-k) - 0.5F)); BlockRendererDispatcher blockrendererdispatcher = Minecraft.getMinecraft().getBlockRendererDispatcher(); IBakedModel ibakedmodel = blockrendererdispatcher.getModelFromBlockState(iblockstate, world, (BlockPos)null); blockrendererdispatcher.getBlockModelRenderer().renderModel(world, ibakedmodel, iblockstate, blockpos, worldrenderer, false); worldrenderer.setTranslation(0.0D, 0.0D, 0.0D); tessellator.draw(); GlStateManager.enableLighting(); GlStateManager.popMatrix(); super.doRender(entity, x, y, z, entityYaw, partialTicks); } } } }
@SubscribeEvent public void onBlockFall(EntityJoinWorldEvent event) { if (event.getEntity() != null && event.getEntity() instanceof EntityFallingBlock) { EntityPlayer player = event.getEntity().worldObj.getClosestPlayerToEntity(event.getEntity(), range); if (player != null && player.getHeldItemMainhand() != null && player.getHeldItemMainhand().getItem() == UCItems.precisionShovel) { if (NBTUtils.getInt(player.getHeldItemMainhand(), ItemGeneric.TAG_UPGRADE, -1) == 10) event.setCanceled(true); } } }
private void checkFall(World worldIn, BlockPos pos) { if (BlockFalling.canFallThrough(worldIn.getBlockState(pos.down())) && pos.getY() >= 0) { int i = 32; if (!BlockFalling.fallInstantly && worldIn.isAreaLoaded(pos.add(-32, -32, -32), pos.add(32, 32, 32))) { worldIn.spawnEntityInWorld(new EntityFallingBlock(worldIn, (double)((float)pos.getX() + 0.5F), (double)pos.getY(), (double)((float)pos.getZ() + 0.5F), this.getDefaultState())); } else { worldIn.setBlockToAir(pos); BlockPos blockpos; for (blockpos = pos; BlockFalling.canFallThrough(worldIn.getBlockState(blockpos)) && blockpos.getY() > 0; blockpos = blockpos.down()) { ; } if (blockpos.getY() > 0) { worldIn.setBlockState(blockpos, this.getDefaultState(), 2); } } } }
private void checkFallable(World worldIn, BlockPos pos) { if (canFallThrough(worldIn.getBlockState(pos.down())) && pos.getY() >= 0) { int i = 32; if (!fallInstantly && worldIn.isAreaLoaded(pos.add(-32, -32, -32), pos.add(32, 32, 32))) { if (!worldIn.isRemote) { EntityFallingBlock entityfallingblock = new EntityFallingBlock(worldIn, (double)pos.getX() + 0.5D, (double)pos.getY(), (double)pos.getZ() + 0.5D, worldIn.getBlockState(pos)); this.onStartFalling(entityfallingblock); worldIn.spawnEntityInWorld(entityfallingblock); } } else { worldIn.setBlockToAir(pos); BlockPos blockpos; for (blockpos = pos.down(); canFallThrough(worldIn.getBlockState(blockpos)) && blockpos.getY() > 0; blockpos = blockpos.down()) { ; } if (blockpos.getY() > 0) { worldIn.setBlockState(blockpos.up(), this.getDefaultState()); } } } }
private void checkFall(World worldIn, BlockPos pos) { if (worldIn.isAirBlock(pos.down()) && BlockFalling.canFallThrough(worldIn.getBlockState(pos.down())) && pos.getY() >= 0) { int i = 32; if (!BlockFalling.fallInstantly && worldIn.isAreaLoaded(pos.add(-32, -32, -32), pos.add(32, 32, 32))) { worldIn.spawnEntityInWorld(new EntityFallingBlock(worldIn, (double)((float)pos.getX() + 0.5F), (double)pos.getY(), (double)((float)pos.getZ() + 0.5F), this.getDefaultState())); } else { worldIn.setBlockToAir(pos); BlockPos blockpos; for (blockpos = pos; worldIn.isAirBlock(blockpos) && BlockFalling.canFallThrough(worldIn.getBlockState(blockpos)) && blockpos.getY() > 0; blockpos = blockpos.down()) { ; } if (blockpos.getY() > 0) { worldIn.setBlockState(blockpos, this.getDefaultState(), 2); } } } }
private void checkFallable(World worldIn, BlockPos pos) { if ((worldIn.isAirBlock(pos.down()) || canFallThrough(worldIn.getBlockState(pos.down()))) && pos.getY() >= 0) { int i = 32; if (!fallInstantly && worldIn.isAreaLoaded(pos.add(-32, -32, -32), pos.add(32, 32, 32))) { if (!worldIn.isRemote) { EntityFallingBlock entityfallingblock = new EntityFallingBlock(worldIn, (double)pos.getX() + 0.5D, (double)pos.getY(), (double)pos.getZ() + 0.5D, worldIn.getBlockState(pos)); this.onStartFalling(entityfallingblock); worldIn.spawnEntityInWorld(entityfallingblock); } } else { IBlockState state = worldIn.getBlockState(pos); worldIn.setBlockToAir(pos); BlockPos blockpos; for (blockpos = pos.down(); (worldIn.isAirBlock(blockpos) || canFallThrough(worldIn.getBlockState(blockpos))) && blockpos.getY() > 0; blockpos = blockpos.down()) { ; } if (blockpos.getY() > 0) { worldIn.setBlockState(blockpos.up(), state); //Forge: Fix loss of state information during world gen. } } } }
public void checkAndDrop(World worldIn, BlockPos pos) { if (!worldIn.isRemote && !canBlockStay(worldIn, pos) && worldIn.isAreaLoaded(pos.add(-32, -32, -32), pos.add(32, 32, 32))) { EntityFallingBlock entityfallingblock = new EntityFallingBlock(worldIn, (double)pos.getX() + 0.5D, (double)pos.getY(), (double)pos.getZ() + 0.5D, worldIn.getBlockState(pos)); entityfallingblock.shouldDropItem = true; entityfallingblock.setHurtEntities(true); worldIn.spawnEntity(entityfallingblock); } }
@SubscribeEvent public void onEntityCreation(EntityJoinWorldEvent event){ if(Config.lockedTimeFalling && (event.getEntity() instanceof EntityFallingBlock)){ if(LockedTimeData.get(event.getWorld()).getNumRunes()>0){ EntityFallingBlock fb = (EntityFallingBlock)event.getEntity(); IBlockState state = fb.getBlock(); fb.setDead(); event.getWorld().setBlockState(fb.getPosition(), state); event.setCanceled(true); } } }
public static void playEffect(double x, double y, double z) { System.out.println("Land"); EntityPlayer sender; World world; int X; int Y; int Z; sender = player.getPlayer(); world = sender.worldObj; for (int i = 0; i < 8; i++) { for (int j = 0; j < 8; j++) { EntityFallingBlock e; Block block; X = (int) x - 4 + i; Z = (int) z - 4 + j; Y = getTopBlock(world, X, Z); block = world.getBlock(X, Y, Z); e = new EntityFallingBlockM(world, X, Y + 5, Z, block); world.spawnEntityInWorld(e); } } }
/** Makes the block fall if needed. */ private void tryFall(World world, BlockPos pos) { if (world.isRemote) { return; } if (canFallThrough(world, pos.down())) { if (!BlockFalling.fallInstantly && world .isAreaLoaded(pos.add(-32,-32,-32), pos.add(32,32,32))) { EntityFallingBlock fall = new EntityFallingBlock(world, pos.getX() + 0.5D, pos.getY(), pos.getZ() + 0.5D, world.getBlockState(pos)); world.spawnEntity(fall); } else { IBlockState current = world.getBlockState(pos); world.setBlockToAir(pos); BlockPos check; for (check = pos.down(); canFallThrough(world, check) && check.getY() > 0; check = check.down()) { ; } if (check.getY() > 0) { world.setBlockState(check.up(), current); } } } }
/** * These entities are excluded from Activation range checks. * * @param entity * @param world * @return boolean If it should always tick. */ public static boolean initializeEntityActivationState(Entity entity, SpigotWorldConfig config) { // Cauldron start - another fix for Proxy Worlds if (config == null && DimensionManager.getWorld(0) != null) { config = DimensionManager.getWorld(0).spigotConfig; } else { return true; } // Cauldron end if ( ( entity.activationType == 3 && config.miscActivationRange == 0 ) || ( entity.activationType == 2 && config.animalActivationRange == 0 ) || ( entity.activationType == 1 && config.monsterActivationRange == 0 ) || (entity instanceof EntityPlayer && !(entity instanceof FakePlayer)) // Cauldron || entity instanceof EntityThrowable || entity instanceof EntityDragon || entity instanceof EntityDragonPart || entity instanceof EntityWither || entity instanceof EntityFireball || entity instanceof EntityWeatherEffect || entity instanceof EntityTNTPrimed || entity instanceof EntityFallingBlock // PaperSpigot - Always tick falling blocks || entity instanceof EntityEnderCrystal || entity instanceof EntityFireworkRocket || entity instanceof EntityVillager // Cauldron start - force ticks for entities with superclass of Entity and not a creature/monster || (entity.getClass().getSuperclass() == Entity.class && !entity.isCreatureType(EnumCreatureType.creature, false) && !entity.isCreatureType(EnumCreatureType.ambient, false) && !entity.isCreatureType(EnumCreatureType.monster, false) && !entity.isCreatureType(EnumCreatureType.waterCreature, false))) { return true; } return false; }
private void fall(World world, int x, int y, int z) { if (canFallMore(world, x, y, z) && y >= 0) { byte b0 = 32; BlockPos pos = new BlockPos(x, y, z); if (!fallInstantly && world.isAreaLoaded(pos.add(-b0, -b0, -b0), pos.add(b0, b0, b0))) { if (!world.isRemote) { // LogHelper.info("X:" + this.motionX + " Y:" + this.motionY // + " Z:"+ this.motionZ); EntityFallingBlock entityfallingblock = new EntityFallingBlock(world, (double) ((float) x + 0.5F), (double) ((float) y + 0.5F), (double) ((float) z + 0.5F), world.getBlockState(pos)); // TS removed // this.func_149829_a(entityfallingblock); entityfallingblock.motionX += this.motionX; entityfallingblock.motionY += this.motionY; entityfallingblock.motionZ += this.motionZ; // world.setBlockToAir(x, y, z); world.spawnEntity(entityfallingblock); } } else { BlockPos bp = new BlockPos(x, y, z); IBlockState tmpBS = world.getBlockState(bp); world.setBlockToAir(bp); while (canFallMore(world, x, y - 1, z) && y > 0) { --y; } if (y > 0) { bp = new BlockPos(x, y, z); world.setBlockState(bp, tmpBS); } } } }
/** * These entities are excluded from Activation range checks. * * @param entity * @param world * @return boolean If it should always tick. */ public static boolean initializeEntityActivationState(Entity entity, SpigotWorldConfig config) { // Cauldron start - another fix for Proxy Worlds if (config == null && DimensionManager.getWorld(0) != null) { config = DimensionManager.getWorld(0).spigotConfig; } else { return true; } // Cauldron end if ( ( entity.activationType == 3 && config.miscActivationRange == 0 ) || ( entity.activationType == 2 && config.animalActivationRange == 0 ) || ( entity.activationType == 1 && config.monsterActivationRange == 0 ) || (entity.getClass().equals(EntityPlayer.class) && !(entity.getClass().equals(FakePlayer.class))) // Cauldron || entity.getClass().equals(EntityThrowable.class) || entity.getClass().equals(EntityDragon.class) || entity.getClass().equals(EntityDragonPart.class) || entity.getClass().equals(EntityWither.class) || entity.getClass().equals(EntityFireball.class) || entity.getClass().equals(EntityWeatherEffect.class) || entity.getClass().equals(EntityTNTPrimed.class) || entity.getClass().equals(EntityFallingBlock.class) || entity.getClass().equals(EntityEnderCrystal.class) || entity.getClass().equals(EntityFireworkRocket.class) || entity.getClass().equals(EntityVillager.class) // Cauldron start - force ticks for entities with superclass of Entity and not a creature/monster || (entity.getClass().getSuperclass() == Entity.class && !entity.isCreatureType(EnumCreatureType.creature, false) && !entity.isCreatureType(EnumCreatureType.ambient, false) && !entity.isCreatureType(EnumCreatureType.monster, false) && !entity.isCreatureType(EnumCreatureType.waterCreature, false))) { return true; } return false; }
@Override public ActionResult<ItemStack> onItemRightClick(ItemStack itemstack, World world, EntityPlayer entityplayer, EnumHand hand) { if (!world.isRemote) { Vec3d look = entityplayer.getLookVec(); EntityFallingBlock fallingBlock = new EntityFallingBlock(world, 1, 1, 1, Blocks.WATER.getDefaultState()); fallingBlock.setPosition(entityplayer.posX + look.xCoord * 0, entityplayer.posY + look.yCoord * 0, entityplayer.posZ + look.zCoord * 0); fallingBlock.lastTickPosX = look.xCoord * 0.1; fallingBlock.lastTickPosY = look.yCoord * 0.1; fallingBlock.lastTickPosZ = look.zCoord * 0.1; fallingBlock.fallTime = 1; world.spawnEntityInWorld(fallingBlock); } return new ActionResult(EnumActionResult.PASS, itemstack); }
@Override public ActionResult<ItemStack> onItemRightClick(ItemStack itemstack, World world, EntityPlayer entityplayer, EnumHand hand) { if (!world.isRemote) { Vec3d look = entityplayer.getLookVec(); EntityFallingBlock fallingBlock = new EntityFallingBlock(world, 1, 1, 1, Blocks.WEB.getDefaultState()); fallingBlock.setPosition(entityplayer.posX + look.xCoord * 0, entityplayer.posY + look.yCoord * 0, entityplayer.posZ + look.zCoord * 0); fallingBlock.lastTickPosX = look.xCoord * 0.1; fallingBlock.lastTickPosY = look.yCoord * 0.1; fallingBlock.lastTickPosZ = look.zCoord * 0.1; fallingBlock.fallTime = 1; world.spawnEntityInWorld(fallingBlock); } return new ActionResult(EnumActionResult.PASS, itemstack); }
@Override public ActionResult<ItemStack> onItemRightClick(ItemStack itemstack, World world, EntityPlayer entityplayer, EnumHand hand) { if (!world.isRemote) { Vec3d look = entityplayer.getLookVec(); EntityFallingBlock fallingBlock = new EntityFallingBlock(world, 1, 1, 1, Blocks.LAVA.getDefaultState()); fallingBlock.setPosition(entityplayer.posX + look.xCoord * 0, entityplayer.posY + look.yCoord * 0, entityplayer.posZ + look.zCoord * 0); fallingBlock.lastTickPosX = look.xCoord * 0.1; fallingBlock.lastTickPosY = look.yCoord * 0.1; fallingBlock.lastTickPosZ = look.zCoord * 0.1; fallingBlock.fallTime = 1; world.spawnEntityInWorld(fallingBlock); } return new ActionResult(EnumActionResult.PASS, itemstack); }
@Override public ActionResult<ItemStack> onItemRightClick(ItemStack itemstack, World world, EntityPlayer entityplayer, EnumHand hand) { if (!world.isRemote) { Vec3d look = entityplayer.getLookVec(); EntityFallingBlock fallingBlock = new EntityFallingBlock(world, 1, 1, 1, Blocks.STONE.getDefaultState()); fallingBlock.setPosition(entityplayer.posX + look.xCoord * 0, entityplayer.posY + look.yCoord * 0, entityplayer.posZ + look.zCoord * 0); fallingBlock.lastTickPosX = look.xCoord * 0.1; fallingBlock.lastTickPosY = look.yCoord * 0.1; fallingBlock.lastTickPosZ = look.zCoord * 0.1; fallingBlock.fallTime = 1; world.spawnEntityInWorld(fallingBlock); } return new ActionResult(EnumActionResult.PASS, itemstack); }
private void doTheFalling(World world, int x, int y, int z) { if (canContinueFalling(world, x, y - 1, z) && y >= 0) { byte b0 = 32; // It might be a good idea to check for the value of the official falling block... if (!BlockFalling.fallInstantly && world.checkChunksExist(x - b0, y - b0, z - b0, x + b0, y + b0, z + b0)) { if (!world.isRemote) { EntityFallingBlock entityfallingblock = new EntityFallingBlock(world, x + 0.5F, y + 0.5F, z + 0.5F, this, world.getBlockMetadata(x, y, z)); this.onEntityCreated(entityfallingblock); world.spawnEntityInWorld(entityfallingblock); } } else { world.setBlockToAir(x, y, z); while (canContinueFalling(world, x, y - 1, z) && y > 0) { --y; } if (y > 0) { world.setBlock(x, y, z, this); } } } }
private void checkFallable(World worldIn, BlockPos pos) { if (canFallInto(worldIn, pos.down()) && pos.getY() >= 0) { byte b0 = 32; if (!fallInstantly && worldIn.isAreaLoaded(pos.add(-b0, -b0, -b0), pos.add(b0, b0, b0))) { if (!worldIn.isRemote) { EntityFallingBlock entityfallingblock = new EntityFallingBlock(worldIn, (double) pos.getX() + 0.5D, (double) pos.getY(), (double) pos.getZ() + 0.5D, worldIn.getBlockState(pos)); this.onStartFalling(entityfallingblock); worldIn.spawnEntityInWorld(entityfallingblock); } } else { worldIn.setBlockToAir(pos); BlockPos blockpos1; for (blockpos1 = pos.down(); canFallInto(worldIn, blockpos1) && blockpos1.getY() > 0; blockpos1 = blockpos1.down()) { } if (blockpos1.getY() > 0) { worldIn.setBlockState(blockpos1.up(), this.getDefaultState()); } } } }
private boolean createIceAtPoint(Entity projectile, EntityPlayer shooter, BlockPos pos, float potency) { World world = projectile.worldObj; if (world.isRemote) { return false; } int height = 7; float radius = 2.5f; int offset = 7; BlockPos translatedPos = pos.add(0, height + offset, 0); List<BlockPos> spikePosList = Utils.getPillarBlocksForPoint(translatedPos, EnumFacing.DOWN, height, radius, 0.3f, 0.5f); boolean success = false; for(BlockPos newPos : spikePosList) { if(world.isAirBlock(newPos)) { world.setBlockState(newPos, Blocks.ice.getDefaultState()); EntityFallingBlock entityfallingblock = new EntityFallingBlock(world, (double)newPos.getX() + 0.5D, (double)newPos.getY() + 0.05, (double)newPos.getZ() + 0.5D, world.getBlockState(newPos)); world.spawnEntityInWorld(entityfallingblock); success = true; } } return success; }
private void func_150018_e(World p_150018_1_, int p_150018_2_, int p_150018_3_, int p_150018_4_) { if (BlockFalling.func_149831_e(p_150018_1_, p_150018_2_, p_150018_3_ - 1, p_150018_4_) && p_150018_3_ >= 0) { byte var5 = 32; if (!BlockFalling.field_149832_M && p_150018_1_.checkChunksExist(p_150018_2_ - var5, p_150018_3_ - var5, p_150018_4_ - var5, p_150018_2_ + var5, p_150018_3_ + var5, p_150018_4_ + var5)) { EntityFallingBlock var6 = new EntityFallingBlock(p_150018_1_, (double)((float)p_150018_2_ + 0.5F), (double)((float)p_150018_3_ + 0.5F), (double)((float)p_150018_4_ + 0.5F), this); p_150018_1_.spawnEntityInWorld(var6); } else { p_150018_1_.setBlockToAir(p_150018_2_, p_150018_3_, p_150018_4_); while (BlockFalling.func_149831_e(p_150018_1_, p_150018_2_, p_150018_3_ - 1, p_150018_4_) && p_150018_3_ > 0) { --p_150018_3_; } if (p_150018_3_ > 0) { p_150018_1_.setBlock(p_150018_2_, p_150018_3_, p_150018_4_, this, 0, 2); } } } }