package ttftcuts.physis.common.helper; import net.minecraft.block.Block; import net.minecraft.block.material.Material; import net.minecraft.world.World; import net.minecraft.world.chunk.Chunk; import net.minecraft.world.gen.structure.StructureBoundingBox; public class WorldGenHelper { public static int getTopGroundBlock(World world, int x, int z) { /*Chunk chunk = world.getChunkFromBlockCoords(x, z); int y = chunk.getTopFilledSegment() + 15; int cx = x & 15; for (int cz = z & 15; y > 0; --y) { Block block = chunk.getBlock(cx, y, cz); if (block.getMaterial().blocksMovement() && block.getMaterial() != Material.leaves && block.getMaterial() != Material.wood && block.getMaterial() != Material.gourd && block.getMaterial() != Material.ice && !block.isFoliage(world, x, y, z) && block.isBlockNormalCube()) { return y + 1; } } return -1;*/ return getTopGroundBlockBelowLevel(world, x, 256, z); } public static int getTopGroundBlockBelowLevel(World world, int x, int y, int z) { Chunk chunk = world.getChunkFromBlockCoords(x, z); int top = chunk.getTopFilledSegment() + 15; y = Math.min(top, y); int cx = x & 15; for (int cz = z & 15; y > 0; --y) { Block block = chunk.getBlock(cx, y, cz); if (block.getMaterial().blocksMovement() && block.getMaterial() != Material.leaves && block.getMaterial() != Material.wood && block.getMaterial() != Material.gourd && block.getMaterial() != Material.ice && !block.isFoliage(world, x, y, z) && block.isBlockNormalCube()) { return y + 1; } } return -1; } public static StructureBoundingBox cloneBounds(StructureBoundingBox b) { return new StructureBoundingBox(b.minX, b.minY, b.minZ, b.maxX, b.maxY, b.maxZ); } }