net.minecraft.world.World.getTopSolidOrLiquidBlock()方法的使用及代码示例

x33g5p2x  于2022-02-02 转载在 其他  
字(11.6k)|赞(0)|评价(0)|浏览(149)

本文整理了Java中net.minecraft.world.World.getTopSolidOrLiquidBlock()方法的一些代码示例,展示了World.getTopSolidOrLiquidBlock()的具体用法。这些代码示例主要来源于Github/Stackoverflow/Maven等平台,是从一些精选项目中提取出来的代码,具有较强的参考意义,能在一定程度帮忙到你。World.getTopSolidOrLiquidBlock()方法的具体详情如下:
包路径:net.minecraft.world.World
类名称:World
方法名:getTopSolidOrLiquidBlock

World.getTopSolidOrLiquidBlock介绍

暂无

代码示例

代码示例来源:origin: SleepyTrousers/EnderIO

  1. @Override
  2. public @Nonnull BlockPos getTopSolidOrLiquidBlock(@Nonnull BlockPos pos) {
  3. return wrapped.getTopSolidOrLiquidBlock(pos);
  4. }

代码示例来源:origin: Vazkii/Botania

  1. int x = pos.getX() + event.getRand().nextInt(16) + 8;
  2. int z = pos.getZ() + event.getRand().nextInt(16) + 8;
  3. int y = event.getWorld().getTopSolidOrLiquidBlock(pos).getY();

代码示例来源:origin: Vazkii/Botania

  1. int x = source.getX() - 10 + rand.nextInt(20);
  2. int z = source.getZ() - 10 + rand.nextInt(20);
  3. int y = world.getTopSolidOrLiquidBlock(new BlockPos(x, -1, z)).getY();

代码示例来源:origin: amadornes/MCMultiPart

  1. @Override
  2. public BlockPos getTopSolidOrLiquidBlock(BlockPos pos) {
  3. return getActualWorld().getTopSolidOrLiquidBlock(pos);
  4. }

代码示例来源:origin: superckl/BiomeTweaker

  1. @Override
  2. public void generate(final World world, final Random rand, final BlockPos chunkPos) {
  3. for (int i = 0; i < this.count; i++) {
  4. final int x = rand.nextInt(16) + 8;
  5. final int z = rand.nextInt(16) + 8;
  6. final BlockPos blockpos = world.getTopSolidOrLiquidBlock(chunkPos.add(x, 0, z));
  7. this.generator.generate(world, rand, blockpos);
  8. }
  9. }

代码示例来源:origin: TerraFirmaCraft/TerraFirmaCraft

  1. @Override
  2. public void generate(Random random, int chunkX, int chunkZ, World world, IChunkGenerator chunkGenerator, IChunkProvider chunkProvider)
  3. {
  4. if (!(chunkGenerator instanceof ChunkGenTFC)) return;
  5. final BlockPos chunkBlockPos = new BlockPos(chunkX << 4, 0, chunkZ << 4);
  6. BlockPos pos = world.getTopSolidOrLiquidBlock(chunkBlockPos.add(8 + random.nextInt(16), 0, 8 + random.nextInt(16)));
  7. generateClay(world, random, pos);
  8. pos = world.getTopSolidOrLiquidBlock(chunkBlockPos.add(8 + random.nextInt(16), 0, 8 + random.nextInt(16)));
  9. if (generatePeat(world, random, pos))
  10. {
  11. if (random.nextInt(5) == 0)
  12. {
  13. // if (!cloudberryGen.generate(world, random, pos)) //todo add berry gen
  14. // cranberryGen.generate(world, random, pos);
  15. }
  16. }
  17. }

代码示例来源:origin: jabelar/ExampleMod-1.12

  1. private void generate(World worldIn, Random random, BlockPos chunkPos, EventType eventType, WorldGenerator generator, int countPerChunk)
  2. {
  3. if(TerrainGen.decorate(worldIn, random, chunkPos, eventType))
  4. {
  5. for (int count = 0; count < countPerChunk; ++count)
  6. {
  7. int randX = random.nextInt(16) + 8;
  8. int randZ = random.nextInt(16) + 8;
  9. generator.generate(worldIn, random, worldIn.getTopSolidOrLiquidBlock(chunkPos.add(randX, 0, randZ)));
  10. }
  11. }
  12. }

代码示例来源:origin: TerraFirmaCraft/TerraFirmaCraft

  1. @Override
  2. public void generate(Random random, int chunkX, int chunkZ, World world, IChunkGenerator chunkGenerator, IChunkProvider chunkProvider)
  3. {
  4. final BlockPos start = new ChunkPos(chunkX, chunkZ).getBlock(random.nextInt(16) + 8, 0, random.nextInt(16) + 8);
  5. if (ChunkDataTFC.isStable(world, start))
  6. return; // todo: this short-circuits a BUNCH of stuff, idk if it's a good idea.
  7. for (int i = 3 + random.nextInt(10); i > 0; i--)
  8. {
  9. BlockPos pos = world.getTopSolidOrLiquidBlock(start.add(-30 + random.nextInt(60), 0, -30 + random.nextInt(60))).add(0, -1, 0);
  10. if (random.nextInt(10) == 0) fissureGenAir.generate(world, random, pos);
  11. else fissureGenFluid.generate(world, random, pos);
  12. }
  13. }
  14. }

代码示例来源:origin: TerraFirmaCraft/TerraFirmaCraft

  1. @Override
  2. public void generate(Random random, int chunkX, int chunkZ, World world, IChunkGenerator chunkGenerator, IChunkProvider chunkProvider)
  3. {
  4. BlockPos start = new ChunkPos(chunkX, chunkZ).getBlock(random.nextInt(16) + 8, 0, random.nextInt(16) + 8);
  5. Biome biome = world.getBiome(start);
  6. //noinspection ConstantConditions
  7. if (biome == BiomesTFC.BEACH || biome == BiomesTFC.OCEAN || biome == BiomesTFC.GRAVEL_BEACH || biome == BiomesTFC.LAKE || biome == BiomesTFC.RIVER || biome == BiomesTFC.DEEP_OCEAN)
  8. return;
  9. start = world.getTopSolidOrLiquidBlock(start).add(0, -1, 0);
  10. if (depth > 0)
  11. start = start.add(0, -depth - random.nextInt(60 /* todo: setting? */), 0);
  12. generate(world, random, start);
  13. }

代码示例来源:origin: gegy1000/Terrarium

  1. @Override
  2. public void composeDecoration(IChunkGenerator generator, World world, RegionGenerationHandler regionHandler, int chunkX, int chunkZ) {
  3. int globalX = chunkX << 4;
  4. int globalZ = chunkZ << 4;
  5. this.decorationMap.initPosSeed(globalX, globalZ);
  6. this.random.setSeed(this.decorationMap.next());
  7. UnsignedByteRasterTile slopeRaster = regionHandler.getCachedChunkRaster(this.slopeComponent);
  8. for (int i = 0; i < 2; i++) {
  9. int localX = this.random.nextInt(16);
  10. int localZ = this.random.nextInt(16);
  11. if (this.random.nextInt(8) == 0) {
  12. if (slopeRaster.getByte(localX, localZ) >= CoverGenerator.MOUNTAINOUS_SLOPE || this.random.nextInt(60) == 0) {
  13. int spawnX = localX + globalX + 8;
  14. int spawnZ = localZ + globalZ + 8;
  15. BOULDER_GENERATOR.generate(world, this.random, world.getTopSolidOrLiquidBlock(new BlockPos(spawnX, 0, spawnZ)));
  16. }
  17. }
  18. }
  19. }

代码示例来源:origin: Alex-the-666/Ice_and_Fire

  1. /**
  2. * Discover the y coordinate that will serve as the ground level of the supplied BoundingBox. (A median of
  3. * all the levels in the BB's horizontal rectangle).
  4. */
  5. protected int getAverageGroundLevel(World worldIn, StructureBoundingBox structurebb) {
  6. int i = 0;
  7. int j = 0;
  8. BlockPos.MutableBlockPos blockpos$mutableblockpos = new BlockPos.MutableBlockPos();
  9. for (int k = this.boundingBox.minZ; k <= this.boundingBox.maxZ; ++k) {
  10. for (int l = this.boundingBox.minX; l <= this.boundingBox.maxX; ++l) {
  11. blockpos$mutableblockpos.setPos(l, 64, k);
  12. if (structurebb.isVecInside(blockpos$mutableblockpos)) {
  13. i += Math.max(worldIn.getTopSolidOrLiquidBlock(blockpos$mutableblockpos).getY(), worldIn.provider.getAverageGroundLevel() - 1);
  14. ++j;
  15. }
  16. }
  17. }
  18. if (j == 0) {
  19. return -1;
  20. } else {
  21. return i / j;
  22. }
  23. }

代码示例来源:origin: Alex-the-666/Ice_and_Fire

  1. /**
  2. * Discover the y coordinate that will serve as the ground level of the supplied BoundingBox. (A median of
  3. * all the levels in the BB's horizontal rectangle).
  4. */
  5. protected int getAverageGroundLevel(World worldIn, StructureBoundingBox structurebb) {
  6. int i = 0;
  7. int j = 0;
  8. BlockPos.MutableBlockPos blockpos$mutableblockpos = new BlockPos.MutableBlockPos();
  9. for (int k = this.boundingBox.minZ; k <= this.boundingBox.maxZ; ++k) {
  10. for (int l = this.boundingBox.minX; l <= this.boundingBox.maxX; ++l) {
  11. blockpos$mutableblockpos.setPos(l, 64, k);
  12. if (structurebb.isVecInside(blockpos$mutableblockpos)) {
  13. i += Math.max(worldIn.getTopSolidOrLiquidBlock(blockpos$mutableblockpos).getY(), worldIn.provider.getAverageGroundLevel() - 1);
  14. ++j;
  15. }
  16. }
  17. }
  18. if (j == 0) {
  19. return -1;
  20. } else {
  21. return i / j;
  22. }
  23. }

代码示例来源:origin: vadis365/TheErebus

  1. @Override
  2. public BlockPos getRandomizedSpawnPoint() {
  3. BlockPos ret = this.world.getSpawnPoint();
  4. boolean isAdventure = world.getWorldInfo().getGameType() == GameType.ADVENTURE;
  5. int spawnFuzz = 100;
  6. int border = MathHelper.floor(world.getWorldBorder().getClosestDistance(ret.getX(), ret.getZ()));
  7. if (border < spawnFuzz) spawnFuzz = border;
  8. if (spawnFuzz < 1) spawnFuzz = 1;
  9. int spawnFuzzHalf = spawnFuzz / 2;
  10. if (!hasSkyLight() && !isAdventure)
  11. ret = world.getTopSolidOrLiquidBlock(ret.add(world.rand.nextInt(spawnFuzzHalf) - spawnFuzz, 0, world.rand.nextInt(spawnFuzzHalf) - spawnFuzz));
  12. return ret;
  13. }
  14. }

代码示例来源:origin: Ellpeck/ActuallyAdditions

  1. private void generateDefault(World world, Random random, int x, int z){
  2. if(ConfigBoolValues.GENERATE_QUARTZ.isEnabled()){
  3. this.addOreSpawn(InitBlocks.blockMisc.getDefaultState().withProperty(BlockMisc.TYPE, TheMiscBlocks.ORE_QUARTZ), Blocks.STONE, world, random, x*16, z*16, MathHelper.getInt(random, 5, 8), 10, QUARTZ_MIN, QUARTZ_MAX);
  4. }
  5. if(ConfigBoolValues.GEN_LUSH_CAVES.isEnabled()){
  6. int randConst = 0x969ce69d;//so that it won't generate the same numbers as other mod that does the same thing
  7. Random chunkRand = new Random(randConst ^ world.getSeed() ^ (x*29+z*31));
  8. StructureBoundingBox box = new StructureBoundingBox(x*16+8, 0, z*16+8, x*16+8+15, 255, z*16+8+15);
  9. if(chunkRand.nextInt(ConfigIntValues.LUSH_CAVE_CHANCE.getValue()) <= 0){
  10. BlockPos randPos = world.getTopSolidOrLiquidBlock(new BlockPos(x*16+chunkRand.nextInt(16)+8, 0, z*16+chunkRand.nextInt(16)+8));
  11. BlockPos pos = randPos.down(MathHelper.getInt(chunkRand, 15, randPos.getY()-15));
  12. this.caveGen.generate(world, chunkRand, pos, box);
  13. }
  14. }
  15. }

代码示例来源:origin: Ellpeck/ActuallyAdditions

  1. private void generateRice(DecorateBiomeEvent event){
  2. if(ConfigBoolValues.DO_RICE_GEN.isEnabled()){
  3. for(int i = 0; i < ConfigIntValues.RICE_AMOUNT.getValue(); i++){
  4. if(event.getRand().nextInt(3) == 0){
  5. BlockPos randomPos = event.getChunkPos().getBlock(event.getRand().nextInt(16)+8, 0, event.getRand().nextInt(16)+8);
  6. randomPos = event.getWorld().getTopSolidOrLiquidBlock(randomPos);
  7. if(event.getWorld().getBlockState(randomPos).getMaterial() == Material.WATER){
  8. ArrayList<Material> blocksAroundBottom = WorldUtil.getMaterialsAround(event.getWorld(), randomPos);
  9. BlockPos posToGenAt = randomPos.up();
  10. ArrayList<Material> blocksAroundTop = WorldUtil.getMaterialsAround(event.getWorld(), posToGenAt);
  11. if(blocksAroundBottom.contains(Material.GRASS) || blocksAroundBottom.contains(Material.GROUND) || blocksAroundBottom.contains(Material.ROCK) || blocksAroundBottom.contains(Material.SAND)){
  12. if(!blocksAroundTop.contains(Material.WATER) && event.getWorld().getBlockState(posToGenAt).getMaterial() == Material.AIR){
  13. event.getWorld().setBlockState(posToGenAt, InitBlocks.blockWildPlant.getDefaultState().withProperty(BlockWildPlant.TYPE, TheWildPlants.RICE), 2);
  14. }
  15. }
  16. }
  17. }
  18. }
  19. }
  20. }

代码示例来源:origin: PenguinSquad/Harvest-Festival

  1. BlockPos original = townCentre.add(GATHERING_MAX_HALF - random.nextInt(GATHERING_MAXIMUM), 64, GATHERING_MAX_HALF - random.nextInt(GATHERING_MAXIMUM));
  2. if (world.isBlockLoaded(original)) {
  3. BlockPos pos = world.getTopSolidOrLiquidBlock(original);
  4. if (GatheringRegistry.INSTANCE.isValidGatheringSpawn(world.getBlockState(pos.down()).getBlock())
  5. && world.isAirBlock(pos) && world.canBlockSeeSky(pos) && isNotTooFar(isFar, buildings, pos)) {

代码示例来源:origin: Ellpeck/ActuallyAdditions

  1. private void genPlantNormally(IBlockState plant, int amount, boolean doIt, Material blockBelow, DecorateBiomeEvent event){
  2. if(doIt){
  3. for(int i = 0; i < amount; i++){
  4. if(event.getRand().nextInt(100) == 0){
  5. BlockPos randomPos = event.getChunkPos().getBlock(event.getRand().nextInt(16)+8, 0, event.getRand().nextInt(16)+8);
  6. randomPos = event.getWorld().getTopSolidOrLiquidBlock(randomPos);
  7. if(event.getWorld().getBlockState(randomPos.down()).getMaterial() == blockBelow){
  8. if(plant.getBlock().canPlaceBlockAt(event.getWorld(), randomPos) && event.getWorld().isAirBlock(randomPos)){
  9. event.getWorld().setBlockState(randomPos, plant, 2);
  10. }
  11. }
  12. }
  13. }
  14. }
  15. }
  16. }

代码示例来源:origin: TerraFirmaCraft/TerraFirmaCraft

  1. private void generateLooseSticks(Random rand, int chunkX, int chunkZ, World world, int amount)
  2. {
  3. for (int i = 0; i < amount; i++)
  4. {
  5. final int x = chunkX * 16 + rand.nextInt(16) + 8;
  6. final int z = chunkZ * 16 + rand.nextInt(16) + 8;
  7. final BlockPos pos = world.getTopSolidOrLiquidBlock(new BlockPos(x, 0, z));
  8. if (world.getBlockState(pos).getMaterial().isReplaceable() && !world.getBlockState(pos).getMaterial().isLiquid() && world.getBlockState(pos.down()).isOpaqueCube())
  9. {
  10. //noinspection ConstantConditions
  11. world.setBlockState(pos, BlocksTFC.WORLD_ITEM.getDefaultState());
  12. TEWorldItem tile = (TEWorldItem) world.getTileEntity(pos);
  13. if (tile != null)
  14. tile.inventory.setStackInSlot(0, new ItemStack(Items.STICK));
  15. }
  16. }
  17. }

代码示例来源:origin: joshiejack/Mariculture

  1. int y = worldIn.getTopSolidOrLiquidBlock(new BlockPos(k, 0, l)).getY();
  2. for (int k1 = y - 1; k1 <= y + 1; ++k1) {
  3. BlockPos blockpos = new BlockPos(k, k1, l);
  4. BlockPos top = worldIn.getTopSolidOrLiquidBlock(new BlockPos(k, 0, l));
  5. if (worldIn.getBlockState(top.down()).getBlock() == Sealife.ROCKS && worldIn.getBlockState(top.up()).getBlock() == Blocks.WATER) {
  6. worldIn.setBlockState(top, Sealife.CORAL.getStateFromMeta(rand.nextInt(Coral.values().length)), 2);

代码示例来源:origin: McJtyMods/LostCities

  1. public static int findSuitableEmptySpot(World world, int x, int z) {
  2. int y = world.getTopSolidOrLiquidBlock(new BlockPos(x, 0, z)).getY();
  3. if (y == -1) {
  4. return -1;
  5. }
  6. y--; // y should now be at a solid or liquid block.
  7. if (y > world.getHeight() - 5) {
  8. y = world.getHeight() / 2;
  9. }
  10. IBlockState state = world.getBlockState(new BlockPos(x, y + 1, z));
  11. Block block = state.getBlock();
  12. while (block.getMaterial(state).isLiquid()) {
  13. y++;
  14. if (y > world.getHeight()-10) {
  15. return -1;
  16. }
  17. state = world.getBlockState(new BlockPos(x, y + 1, z));
  18. block = state.getBlock();
  19. }
  20. return y;
  21. }

相关文章

World类方法