BlockPos.PooledMutableBlockPos blockpos$pooledmutableblockpos = BlockPos.PooledMutableBlockPos.retain(bb.minX + 0.001D, bb.minY + 0.001D, bb.minZ + 0.001D); BlockPos.PooledMutableBlockPos blockpos$pooledmutableblockpos1 = BlockPos.PooledMutableBlockPos.retain(bb.maxX - 0.001D, bb.maxY - 0.001D, bb.maxZ - 0.001D); BlockPos.PooledMutableBlockPos blockpos$pooledmutableblockpos2 = BlockPos.PooledMutableBlockPos.retain(); for (int i = blockpos$pooledmutableblockpos.getX(); i <= blockpos$pooledmutableblockpos1.getX(); ++i) { for (int j = blockpos$pooledmutableblockpos.getY(); j <= blockpos$pooledmutableblockpos1.getY(); ++j) { for (int k = blockpos$pooledmutableblockpos.getZ(); k <= blockpos$pooledmutableblockpos1.getZ(); ++k) { blockpos$pooledmutableblockpos2.setPos(i, j, k); IBlockState state = entity.world.getBlockState(blockpos$pooledmutableblockpos2); blockpos$pooledmutableblockpos.release(); blockpos$pooledmutableblockpos1.release(); blockpos$pooledmutableblockpos2.release(); } catch (Throwable throwable) { CrashReport crashreport = CrashReport.makeCrashReport(throwable, "Checking entity block collision");
BlockPos.PooledMutableBlockPos blockpos$pooledmutableblockpos = BlockPos.PooledMutableBlockPos.retain(entity.posX, entity.getEntityBoundingBox().minY - 1.0D, entity.posZ); entity.motionY += (0.05D * (double) (entity.getActivePotionEffect(MobEffects.LEVITATION).getAmplifier() + 1) - entity.motionY) * 0.2D; } else { blockpos$pooledmutableblockpos.setPos(entity.posX, 0.0D, entity.posZ); entity.motionX *= (double) f6; entity.motionZ *= (double) f6; blockpos$pooledmutableblockpos.release();
BlockPos.PooledMutableBlockPos blockpos$pooledmutableblockpos = BlockPos.PooledMutableBlockPos.retain(); blockpos$pooledmutableblockpos.setPos(l3, i4, j4); IBlockState iblockstate1 = parWorld.getBlockState(blockpos$pooledmutableblockpos); Block block = iblockstate1.getBlock(); blockpos$pooledmutableblockpos.release();
BlockPos.PooledMutableBlockPos blockpos$pooledmutableblockpos = BlockPos.PooledMutableBlockPos.retain(); blockpos$pooledmutableblockpos.setPos(l3, i4, j4); IBlockState iblockstate1 = parWorld.getBlockState(blockpos$pooledmutableblockpos); Block block = iblockstate1.getBlock(); blockpos$pooledmutableblockpos.release();
double d2 = 0.0D; int i = this.getRenderedDepth(state); BlockPos.PooledMutableBlockPos blockpos$pooledmutableblockpos = BlockPos.PooledMutableBlockPos.retain(); blockpos$pooledmutableblockpos.setPos(pos).move(enumfacing); int j = this.getRenderedDepth(worldIn.getBlockState(blockpos$pooledmutableblockpos)); j = this.getRenderedDepth(worldIn.getBlockState(blockpos$pooledmutableblockpos.down())); blockpos$pooledmutableblockpos.setPos(pos).move(enumfacing1); || this.causesDownwardCurrent(worldIn, blockpos$pooledmutableblockpos.up(), enumfacing1)) blockpos$pooledmutableblockpos.release(); return vec3d.normalize();
BlockPos.PooledMutableBlockPos pool = BlockPos.PooledMutableBlockPos.retain(); for (int offsetZ = -1; offsetZ <= 1; ++offsetZ) { if (offsetX != 0 || offsetZ != 0) { IBlockState state = world.getBlockState(pool.setPos(x + offsetX, y, z + offsetZ)); Block block = state.getBlock(); if (block == Blocks.CACTUS || block instanceof ElectricFenceBaseBlock || block instanceof ElectricFencePoleBlock) { pool.release(); return nodeType;
@Override protected void doBlockCollisions() { AxisAlignedBB axisalignedbb = this.getEntityBoundingBox(); BlockPos.PooledMutableBlockPos posMin = BlockPos.PooledMutableBlockPos.retain(axisalignedbb.minX + 0.001D, axisalignedbb.minY + 0.001D, axisalignedbb.minZ + 0.001D); BlockPos.PooledMutableBlockPos posMax = BlockPos.PooledMutableBlockPos.retain(axisalignedbb.maxX - 0.001D, axisalignedbb.maxY - 0.001D, axisalignedbb.maxZ - 0.001D); BlockPos.PooledMutableBlockPos currentPos = BlockPos.PooledMutableBlockPos.retain(); if (world.isAreaLoaded(posMin, posMax)) { for (int i = posMin.getX(); i <= posMax.getX(); ++i) { for (int j = posMin.getY(); j <= posMax.getY(); ++j) { for (int k = posMin.getZ(); k <= posMax.getZ(); ++k) { currentPos.setPos(i, j, k); IBlockState iblockstate = world.getBlockState(currentPos); try { iblockstate.getBlock().onEntityCollidedWithBlock(world, currentPos, iblockstate, this); onInsideBlock(iblockstate, currentPos); } catch (Throwable throwable) { CrashReport crashreport = CrashReport.makeCrashReport(throwable, "Colliding entity with block"); CrashReportCategory crashreportcategory = crashreport.makeCategory("Block being collided with"); CrashReportCategory.addBlockInfo(crashreportcategory, currentPos, iblockstate); throw new ReportedException(crashreport); } } } } } posMin.release(); posMax.release(); currentPos.release(); }
@Override public void generate(World world, BlockPos pos, Random random) { BlockPos.MutableBlockPos mutablePos = new BlockPos.MutableBlockPos(); for (ComponentInfo layer : this.components) { for (RepeatRule rule : layer.repeats) { rule.reset(world, random, mutablePos); } } BlockPos.PooledMutableBlockPos pooledPos = BlockPos.PooledMutableBlockPos.retain(); for (ComponentInfo layer : this.components) { mutablePos.setPos(pos); for (RepeatRule rule : layer.repeats) { rule.init(world, random, mutablePos); while (rule.continueRepeating(world, random, mutablePos)) { for (Map.Entry<BlockPos, BlockList> e : layer.blocks.entrySet()) { BlockPos coords = e.getKey(); int blockX = coords.getX() + mutablePos.getX(); int blockY = coords.getY() + mutablePos.getY(); int blockZ = coords.getZ() + mutablePos.getZ(); world.setBlockState(pooledPos.setPos(blockX, blockY, blockZ).toImmutable(), e.getValue().getRandom(random)); } rule.repeat(world, random, mutablePos); } } } pooledPos.release(); }
BlockPos.PooledMutableBlockPos blockpos$pooledmutableblockpos = BlockPos.PooledMutableBlockPos.retain(player.posX, player.getEntityBoundingBox().minY - 1.0D, player.posZ);
public static boolean isMaterialInBBSafe(@Nonnull World world, @Nonnull AxisAlignedBB bb, @Nonnull Material materialIn) { int i = MathHelper.floor(bb.minX); int j = MathHelper.ceil(bb.maxX); int k = MathHelper.floor(bb.minY); int l = MathHelper.ceil(bb.maxY); int i1 = MathHelper.floor(bb.minZ); int j1 = MathHelper.ceil(bb.maxZ); BlockPos.PooledMutableBlockPos blockpos$pooledmutableblockpos = BlockPos.PooledMutableBlockPos.retain(); for (int k1 = i; k1 < j; ++k1) { for (int l1 = k; l1 < l; ++l1) { for (int i2 = i1; i2 < j1; ++i2) { blockpos$pooledmutableblockpos.setPos(k1, l1, i2); if (world.isBlockLoaded(blockpos$pooledmutableblockpos, false) && world.getBlockState(blockpos$pooledmutableblockpos).getMaterial() == materialIn) { blockpos$pooledmutableblockpos.release(); return true; } } } } blockpos$pooledmutableblockpos.release(); return false; }
public boolean checkBlockCollision(AxisAlignedBB bb) { int j2 = MathHelper.floor(bb.minX); int k2 = MathHelper.ceil(bb.maxX); int l2 = MathHelper.floor(bb.minY); int i3 = MathHelper.ceil(bb.maxY); int j3 = MathHelper.floor(bb.minZ); int k3 = MathHelper.ceil(bb.maxZ); BlockPos.PooledMutableBlockPos blockpos$pooledmutableblockpos = BlockPos.PooledMutableBlockPos.retain(); for (int l3 = j2; l3 < k2; ++l3) { for (int i4 = l2; i4 < i3; ++i4) { for (int j4 = j3; j4 < k3; ++j4) { IBlockState iblockstate1 = this.world.getBlockState(blockpos$pooledmutableblockpos.setPos(l3, i4, j4)); if (iblockstate1.getMaterial() != Material.AIR && iblockstate1.getMaterial() != Material.SAND) { blockpos$pooledmutableblockpos.release(); return true; } } } } blockpos$pooledmutableblockpos.release(); return false; }
private boolean isCollidingWithOrigin() { AxisAlignedBB axisalignedbb = player.getEntityBoundingBox(); BlockPos.PooledMutableBlockPos blockpos$pooledmutableblockpos = BlockPos.PooledMutableBlockPos.retain(axisalignedbb.minX + 0.001D, axisalignedbb.minY + 0.001D, axisalignedbb.minZ + 0.001D); BlockPos.PooledMutableBlockPos blockpos$pooledmutableblockpos1 = BlockPos.PooledMutableBlockPos.retain(axisalignedbb.maxX - 0.001D, axisalignedbb.maxY - 0.001D, axisalignedbb.maxZ - 0.001D); BlockPos.PooledMutableBlockPos blockpos$pooledmutableblockpos2 = BlockPos.PooledMutableBlockPos.retain(); if (player.world.isAreaLoaded(blockpos$pooledmutableblockpos, blockpos$pooledmutableblockpos1)) { for (int i = blockpos$pooledmutableblockpos.getX(); i <= blockpos$pooledmutableblockpos1.getX(); ++i) { for (int j = blockpos$pooledmutableblockpos.getY(); j <= blockpos$pooledmutableblockpos1.getY(); ++j) { for (int k = blockpos$pooledmutableblockpos.getZ(); k <= blockpos$pooledmutableblockpos1.getZ(); ++k) { blockpos$pooledmutableblockpos2.setPos(i, j, k); if (blockpos$pooledmutableblockpos2.equals(origin) || blockpos$pooledmutableblockpos2.equals(origin.up())) { return true; } } } } } blockpos$pooledmutableblockpos.release(); blockpos$pooledmutableblockpos1.release(); blockpos$pooledmutableblockpos2.release(); return false; } }
public void pullFluidsFromNearbyHandlers(EnumFacing... allowedFaces) { PooledMutableBlockPos blockPos = PooledMutableBlockPos.retain(); for(EnumFacing nearbyFacing : allowedFaces) { blockPos.setPos(getPos()).move(nearbyFacing); IFluidHandler fluidHandler = FluidUtil.getFluidHandler(getWorld(), blockPos, nearbyFacing.getOpposite()); if(fluidHandler == null) continue; for(IFluidTankProperties tankProperties : fluidHandler.getTankProperties()) { FluidStack currentFluid = tankProperties.getContents(); if(currentFluid == null || currentFluid.amount == 0) continue; currentFluid.amount = Integer.MAX_VALUE; FluidStack fluidStack = fluidHandler.drain(currentFluid, false); if(fluidStack == null || fluidStack.amount == 0) continue; int canInsertAmount = importFluids.fill(fluidStack, false); if(canInsertAmount > 0) { fluidStack = fluidHandler.drain(canInsertAmount, true); importFluids.fill(fluidStack, true); } } } blockPos.release(); }
public PathNodeType checkNeighborBlocks(IBlockAccess p_193578_1_, int p_193578_2_, int p_193578_3_, int p_193578_4_, PathNodeType p_193578_5_) { BlockPos.PooledMutableBlockPos blockpos$pooledmutableblockpos = BlockPos.PooledMutableBlockPos.retain(); if (p_193578_5_ == PathNodeType.WALKABLE) { for (int i = -1; i <= 1; ++i) { for (int j = -1; j <= 1; ++j) { if (i != 0 || j != 0) { Block block = p_193578_1_.getBlockState(blockpos$pooledmutableblockpos.setPos(i + p_193578_2_, p_193578_3_, j + p_193578_4_)).getBlock(); if (block == Blocks.CACTUS) { p_193578_5_ = PathNodeType.DANGER_CACTUS; } else if (block == Blocks.FIRE) { p_193578_5_ = PathNodeType.DANGER_FIRE; } else if (block.isBurning(p_193578_1_, blockpos$pooledmutableblockpos)) p_193578_5_ = PathNodeType.DAMAGE_FIRE; } } } } blockpos$pooledmutableblockpos.release(); return p_193578_5_; }
private long dispatchEnergyToNode(BlockPos nodePos, long voltage, long amperage) { long amperesUsed = 0L; //use pooled mutable to avoid creating new objects every tick World world = tileEntityCable.getPipeWorld(); PooledMutableBlockPos blockPos = PooledMutableBlockPos.retain(); for(EnumFacing facing : EnumFacing.VALUES) { blockPos.setPos(nodePos).move(facing); //do not allow cables to load chunks if(!world.isBlockLoaded(nodePos)) continue; TileEntity tileEntity = world.getTileEntity(blockPos); if(tileEntity == null || tileEntityCable.getPipeBlock().getPipeTileEntity(tileEntity) != null) continue; IEnergyContainer energyContainer = tileEntity.getCapability(GregtechCapabilities.CAPABILITY_ENERGY_CONTAINER, null); if(energyContainer == null) continue; amperesUsed += energyContainer.acceptEnergyFromNetwork(facing.getOpposite(), voltage, amperage - amperesUsed); if(amperesUsed == amperage) break; } blockPos.release(); return amperesUsed; }
public void pushFluidsIntoNearbyHandlers(EnumFacing... allowedFaces) { PooledMutableBlockPos blockPos = PooledMutableBlockPos.retain(); for(EnumFacing nearbyFacing : allowedFaces) { blockPos.setPos(getPos()).move(nearbyFacing); IFluidHandler fluidHandler = FluidUtil.getFluidHandler(getWorld(), blockPos, nearbyFacing.getOpposite()); if(fluidHandler == null) continue; for(int tankIndex = 0; tankIndex < exportFluids.getTanks(); tankIndex++) { IFluidTank tank = exportFluids.getTankAt(tankIndex); FluidStack fluidStack = tank.getFluid(); if(fluidStack != null && fluidHandler.fill(fluidStack, false) != 0) { int filledAmount = fluidHandler.fill(fluidStack, true); tank.drain(filledAmount, true); } } } blockPos.release(); }
@Override public boolean isEntityInsideOpaqueBlock() { BlockPos.PooledMutableBlockPos blockpos$pooledmutableblockpos = BlockPos.PooledMutableBlockPos.retain(); for (int i = 0; i < 8; ++i) { int j = MathHelper.floor(this.posY + (double) (((float) ((i >> 0) % 2) - 0.5F) * 0.1F) + (double) this.getEyeHeight()); int k = MathHelper.floor(this.posX + (double) (((float) ((i >> 1) % 2) - 0.5F) * this.width * 0.8F)); int l = MathHelper.floor(this.posZ + (double) (((float) ((i >> 2) % 2) - 0.5F) * this.width * 0.8F)); if (blockpos$pooledmutableblockpos.getX() != k || blockpos$pooledmutableblockpos.getY() != j || blockpos$pooledmutableblockpos.getZ() != l) { blockpos$pooledmutableblockpos.setPos(k, j, l); if (this.world.getBlockState(blockpos$pooledmutableblockpos).causesSuffocation() && this.world.getBlockState(blockpos$pooledmutableblockpos).getMaterial() != Material.SAND) { blockpos$pooledmutableblockpos.release(); return true; } } } blockpos$pooledmutableblockpos.release(); return false; }
public static void pushFluidsFromTank(IPipeTile<?, ?> pipeTile) { PooledMutableBlockPos blockPos = PooledMutableBlockPos.retain(); for(EnumFacing side : EnumFacing.VALUES) { blockPos.setPos(pipeTile.getPipePos()).move(side); TileEntity tileEntity = pipeTile.getPipeWorld().getTileEntity(blockPos); IFluidHandler sourceHandler = pipeTile.getCapability(CapabilityFluidHandler.FLUID_HANDLER_CAPABILITY, side); IFluidHandler receiverHandler = tileEntity == null ? null : tileEntity.getCapability(CapabilityFluidHandler.FLUID_HANDLER_CAPABILITY, side.getOpposite()); if(sourceHandler == null || receiverHandler == null) { continue; } CoverPump.moveHandlerFluids(sourceHandler, receiverHandler, Integer.MAX_VALUE, FLUID_FILTER_ALWAYS_TRUE); } blockPos.release(); }
public void pullItemsFromNearbyHandlers(EnumFacing... allowedFaces) { PooledMutableBlockPos blockPos = PooledMutableBlockPos.retain(); for(EnumFacing nearbyFacing : allowedFaces) { blockPos.setPos(getPos()).move(nearbyFacing); TileEntity tileEntity = getWorld().getTileEntity(blockPos); IItemHandler itemHandler = tileEntity == null ? null : tileEntity.getCapability(CapabilityItemHandler.ITEM_HANDLER_CAPABILITY, nearbyFacing.getOpposite()); if(itemHandler == null) { continue; } moveInventoryItems(itemHandler, importItems); } blockPos.release(); }
public void pushItemsIntoNearbyHandlers(EnumFacing... allowedFaces) { PooledMutableBlockPos blockPos = PooledMutableBlockPos.retain(); for(EnumFacing nearbyFacing : allowedFaces) { blockPos.setPos(getPos()).move(nearbyFacing); TileEntity tileEntity = getWorld().getTileEntity(blockPos); IItemHandler itemHandler = tileEntity == null ? null : tileEntity.getCapability(CapabilityItemHandler.ITEM_HANDLER_CAPABILITY, nearbyFacing.getOpposite()); if(itemHandler == null) { continue; } moveInventoryItems(exportItems, itemHandler); } blockPos.release(); }