本文整理了Java中net.minecraft.world.World.getTopSolidOrLiquidBlock()
方法的一些代码示例,展示了World.getTopSolidOrLiquidBlock()
的具体用法。这些代码示例主要来源于Github
/Stackoverflow
/Maven
等平台,是从一些精选项目中提取出来的代码,具有较强的参考意义,能在一定程度帮忙到你。World.getTopSolidOrLiquidBlock()
方法的具体详情如下:
包路径:net.minecraft.world.World
类名称:World
方法名:getTopSolidOrLiquidBlock
暂无
代码示例来源:origin: SleepyTrousers/EnderIO
@Override
public @Nonnull BlockPos getTopSolidOrLiquidBlock(@Nonnull BlockPos pos) {
return wrapped.getTopSolidOrLiquidBlock(pos);
}
代码示例来源:origin: Vazkii/Botania
int x = pos.getX() + event.getRand().nextInt(16) + 8;
int z = pos.getZ() + event.getRand().nextInt(16) + 8;
int y = event.getWorld().getTopSolidOrLiquidBlock(pos).getY();
代码示例来源:origin: Vazkii/Botania
int x = source.getX() - 10 + rand.nextInt(20);
int z = source.getZ() - 10 + rand.nextInt(20);
int y = world.getTopSolidOrLiquidBlock(new BlockPos(x, -1, z)).getY();
代码示例来源:origin: amadornes/MCMultiPart
@Override
public BlockPos getTopSolidOrLiquidBlock(BlockPos pos) {
return getActualWorld().getTopSolidOrLiquidBlock(pos);
}
代码示例来源:origin: superckl/BiomeTweaker
@Override
public void generate(final World world, final Random rand, final BlockPos chunkPos) {
for (int i = 0; i < this.count; i++) {
final int x = rand.nextInt(16) + 8;
final int z = rand.nextInt(16) + 8;
final BlockPos blockpos = world.getTopSolidOrLiquidBlock(chunkPos.add(x, 0, z));
this.generator.generate(world, rand, blockpos);
}
}
代码示例来源:origin: TerraFirmaCraft/TerraFirmaCraft
@Override
public void generate(Random random, int chunkX, int chunkZ, World world, IChunkGenerator chunkGenerator, IChunkProvider chunkProvider)
{
if (!(chunkGenerator instanceof ChunkGenTFC)) return;
final BlockPos chunkBlockPos = new BlockPos(chunkX << 4, 0, chunkZ << 4);
BlockPos pos = world.getTopSolidOrLiquidBlock(chunkBlockPos.add(8 + random.nextInt(16), 0, 8 + random.nextInt(16)));
generateClay(world, random, pos);
pos = world.getTopSolidOrLiquidBlock(chunkBlockPos.add(8 + random.nextInt(16), 0, 8 + random.nextInt(16)));
if (generatePeat(world, random, pos))
{
if (random.nextInt(5) == 0)
{
// if (!cloudberryGen.generate(world, random, pos)) //todo add berry gen
// cranberryGen.generate(world, random, pos);
}
}
}
代码示例来源:origin: jabelar/ExampleMod-1.12
private void generate(World worldIn, Random random, BlockPos chunkPos, EventType eventType, WorldGenerator generator, int countPerChunk)
{
if(TerrainGen.decorate(worldIn, random, chunkPos, eventType))
{
for (int count = 0; count < countPerChunk; ++count)
{
int randX = random.nextInt(16) + 8;
int randZ = random.nextInt(16) + 8;
generator.generate(worldIn, random, worldIn.getTopSolidOrLiquidBlock(chunkPos.add(randX, 0, randZ)));
}
}
}
代码示例来源:origin: TerraFirmaCraft/TerraFirmaCraft
@Override
public void generate(Random random, int chunkX, int chunkZ, World world, IChunkGenerator chunkGenerator, IChunkProvider chunkProvider)
{
final BlockPos start = new ChunkPos(chunkX, chunkZ).getBlock(random.nextInt(16) + 8, 0, random.nextInt(16) + 8);
if (ChunkDataTFC.isStable(world, start))
return; // todo: this short-circuits a BUNCH of stuff, idk if it's a good idea.
for (int i = 3 + random.nextInt(10); i > 0; i--)
{
BlockPos pos = world.getTopSolidOrLiquidBlock(start.add(-30 + random.nextInt(60), 0, -30 + random.nextInt(60))).add(0, -1, 0);
if (random.nextInt(10) == 0) fissureGenAir.generate(world, random, pos);
else fissureGenFluid.generate(world, random, pos);
}
}
}
代码示例来源:origin: TerraFirmaCraft/TerraFirmaCraft
@Override
public void generate(Random random, int chunkX, int chunkZ, World world, IChunkGenerator chunkGenerator, IChunkProvider chunkProvider)
{
BlockPos start = new ChunkPos(chunkX, chunkZ).getBlock(random.nextInt(16) + 8, 0, random.nextInt(16) + 8);
Biome biome = world.getBiome(start);
//noinspection ConstantConditions
if (biome == BiomesTFC.BEACH || biome == BiomesTFC.OCEAN || biome == BiomesTFC.GRAVEL_BEACH || biome == BiomesTFC.LAKE || biome == BiomesTFC.RIVER || biome == BiomesTFC.DEEP_OCEAN)
return;
start = world.getTopSolidOrLiquidBlock(start).add(0, -1, 0);
if (depth > 0)
start = start.add(0, -depth - random.nextInt(60 /* todo: setting? */), 0);
generate(world, random, start);
}
代码示例来源:origin: gegy1000/Terrarium
@Override
public void composeDecoration(IChunkGenerator generator, World world, RegionGenerationHandler regionHandler, int chunkX, int chunkZ) {
int globalX = chunkX << 4;
int globalZ = chunkZ << 4;
this.decorationMap.initPosSeed(globalX, globalZ);
this.random.setSeed(this.decorationMap.next());
UnsignedByteRasterTile slopeRaster = regionHandler.getCachedChunkRaster(this.slopeComponent);
for (int i = 0; i < 2; i++) {
int localX = this.random.nextInt(16);
int localZ = this.random.nextInt(16);
if (this.random.nextInt(8) == 0) {
if (slopeRaster.getByte(localX, localZ) >= CoverGenerator.MOUNTAINOUS_SLOPE || this.random.nextInt(60) == 0) {
int spawnX = localX + globalX + 8;
int spawnZ = localZ + globalZ + 8;
BOULDER_GENERATOR.generate(world, this.random, world.getTopSolidOrLiquidBlock(new BlockPos(spawnX, 0, spawnZ)));
}
}
}
}
代码示例来源:origin: Alex-the-666/Ice_and_Fire
/**
* Discover the y coordinate that will serve as the ground level of the supplied BoundingBox. (A median of
* all the levels in the BB's horizontal rectangle).
*/
protected int getAverageGroundLevel(World worldIn, StructureBoundingBox structurebb) {
int i = 0;
int j = 0;
BlockPos.MutableBlockPos blockpos$mutableblockpos = new BlockPos.MutableBlockPos();
for (int k = this.boundingBox.minZ; k <= this.boundingBox.maxZ; ++k) {
for (int l = this.boundingBox.minX; l <= this.boundingBox.maxX; ++l) {
blockpos$mutableblockpos.setPos(l, 64, k);
if (structurebb.isVecInside(blockpos$mutableblockpos)) {
i += Math.max(worldIn.getTopSolidOrLiquidBlock(blockpos$mutableblockpos).getY(), worldIn.provider.getAverageGroundLevel() - 1);
++j;
}
}
}
if (j == 0) {
return -1;
} else {
return i / j;
}
}
代码示例来源:origin: Alex-the-666/Ice_and_Fire
/**
* Discover the y coordinate that will serve as the ground level of the supplied BoundingBox. (A median of
* all the levels in the BB's horizontal rectangle).
*/
protected int getAverageGroundLevel(World worldIn, StructureBoundingBox structurebb) {
int i = 0;
int j = 0;
BlockPos.MutableBlockPos blockpos$mutableblockpos = new BlockPos.MutableBlockPos();
for (int k = this.boundingBox.minZ; k <= this.boundingBox.maxZ; ++k) {
for (int l = this.boundingBox.minX; l <= this.boundingBox.maxX; ++l) {
blockpos$mutableblockpos.setPos(l, 64, k);
if (structurebb.isVecInside(blockpos$mutableblockpos)) {
i += Math.max(worldIn.getTopSolidOrLiquidBlock(blockpos$mutableblockpos).getY(), worldIn.provider.getAverageGroundLevel() - 1);
++j;
}
}
}
if (j == 0) {
return -1;
} else {
return i / j;
}
}
代码示例来源:origin: vadis365/TheErebus
@Override
public BlockPos getRandomizedSpawnPoint() {
BlockPos ret = this.world.getSpawnPoint();
boolean isAdventure = world.getWorldInfo().getGameType() == GameType.ADVENTURE;
int spawnFuzz = 100;
int border = MathHelper.floor(world.getWorldBorder().getClosestDistance(ret.getX(), ret.getZ()));
if (border < spawnFuzz) spawnFuzz = border;
if (spawnFuzz < 1) spawnFuzz = 1;
int spawnFuzzHalf = spawnFuzz / 2;
if (!hasSkyLight() && !isAdventure)
ret = world.getTopSolidOrLiquidBlock(ret.add(world.rand.nextInt(spawnFuzzHalf) - spawnFuzz, 0, world.rand.nextInt(spawnFuzzHalf) - spawnFuzz));
return ret;
}
}
代码示例来源:origin: Ellpeck/ActuallyAdditions
private void generateDefault(World world, Random random, int x, int z){
if(ConfigBoolValues.GENERATE_QUARTZ.isEnabled()){
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);
}
if(ConfigBoolValues.GEN_LUSH_CAVES.isEnabled()){
int randConst = 0x969ce69d;//so that it won't generate the same numbers as other mod that does the same thing
Random chunkRand = new Random(randConst ^ world.getSeed() ^ (x*29+z*31));
StructureBoundingBox box = new StructureBoundingBox(x*16+8, 0, z*16+8, x*16+8+15, 255, z*16+8+15);
if(chunkRand.nextInt(ConfigIntValues.LUSH_CAVE_CHANCE.getValue()) <= 0){
BlockPos randPos = world.getTopSolidOrLiquidBlock(new BlockPos(x*16+chunkRand.nextInt(16)+8, 0, z*16+chunkRand.nextInt(16)+8));
BlockPos pos = randPos.down(MathHelper.getInt(chunkRand, 15, randPos.getY()-15));
this.caveGen.generate(world, chunkRand, pos, box);
}
}
}
代码示例来源:origin: Ellpeck/ActuallyAdditions
private void generateRice(DecorateBiomeEvent event){
if(ConfigBoolValues.DO_RICE_GEN.isEnabled()){
for(int i = 0; i < ConfigIntValues.RICE_AMOUNT.getValue(); i++){
if(event.getRand().nextInt(3) == 0){
BlockPos randomPos = event.getChunkPos().getBlock(event.getRand().nextInt(16)+8, 0, event.getRand().nextInt(16)+8);
randomPos = event.getWorld().getTopSolidOrLiquidBlock(randomPos);
if(event.getWorld().getBlockState(randomPos).getMaterial() == Material.WATER){
ArrayList<Material> blocksAroundBottom = WorldUtil.getMaterialsAround(event.getWorld(), randomPos);
BlockPos posToGenAt = randomPos.up();
ArrayList<Material> blocksAroundTop = WorldUtil.getMaterialsAround(event.getWorld(), posToGenAt);
if(blocksAroundBottom.contains(Material.GRASS) || blocksAroundBottom.contains(Material.GROUND) || blocksAroundBottom.contains(Material.ROCK) || blocksAroundBottom.contains(Material.SAND)){
if(!blocksAroundTop.contains(Material.WATER) && event.getWorld().getBlockState(posToGenAt).getMaterial() == Material.AIR){
event.getWorld().setBlockState(posToGenAt, InitBlocks.blockWildPlant.getDefaultState().withProperty(BlockWildPlant.TYPE, TheWildPlants.RICE), 2);
}
}
}
}
}
}
}
代码示例来源:origin: PenguinSquad/Harvest-Festival
BlockPos original = townCentre.add(GATHERING_MAX_HALF - random.nextInt(GATHERING_MAXIMUM), 64, GATHERING_MAX_HALF - random.nextInt(GATHERING_MAXIMUM));
if (world.isBlockLoaded(original)) {
BlockPos pos = world.getTopSolidOrLiquidBlock(original);
if (GatheringRegistry.INSTANCE.isValidGatheringSpawn(world.getBlockState(pos.down()).getBlock())
&& world.isAirBlock(pos) && world.canBlockSeeSky(pos) && isNotTooFar(isFar, buildings, pos)) {
代码示例来源:origin: Ellpeck/ActuallyAdditions
private void genPlantNormally(IBlockState plant, int amount, boolean doIt, Material blockBelow, DecorateBiomeEvent event){
if(doIt){
for(int i = 0; i < amount; i++){
if(event.getRand().nextInt(100) == 0){
BlockPos randomPos = event.getChunkPos().getBlock(event.getRand().nextInt(16)+8, 0, event.getRand().nextInt(16)+8);
randomPos = event.getWorld().getTopSolidOrLiquidBlock(randomPos);
if(event.getWorld().getBlockState(randomPos.down()).getMaterial() == blockBelow){
if(plant.getBlock().canPlaceBlockAt(event.getWorld(), randomPos) && event.getWorld().isAirBlock(randomPos)){
event.getWorld().setBlockState(randomPos, plant, 2);
}
}
}
}
}
}
}
代码示例来源:origin: TerraFirmaCraft/TerraFirmaCraft
private void generateLooseSticks(Random rand, int chunkX, int chunkZ, World world, int amount)
{
for (int i = 0; i < amount; i++)
{
final int x = chunkX * 16 + rand.nextInt(16) + 8;
final int z = chunkZ * 16 + rand.nextInt(16) + 8;
final BlockPos pos = world.getTopSolidOrLiquidBlock(new BlockPos(x, 0, z));
if (world.getBlockState(pos).getMaterial().isReplaceable() && !world.getBlockState(pos).getMaterial().isLiquid() && world.getBlockState(pos.down()).isOpaqueCube())
{
//noinspection ConstantConditions
world.setBlockState(pos, BlocksTFC.WORLD_ITEM.getDefaultState());
TEWorldItem tile = (TEWorldItem) world.getTileEntity(pos);
if (tile != null)
tile.inventory.setStackInSlot(0, new ItemStack(Items.STICK));
}
}
}
代码示例来源:origin: joshiejack/Mariculture
int y = worldIn.getTopSolidOrLiquidBlock(new BlockPos(k, 0, l)).getY();
for (int k1 = y - 1; k1 <= y + 1; ++k1) {
BlockPos blockpos = new BlockPos(k, k1, l);
BlockPos top = worldIn.getTopSolidOrLiquidBlock(new BlockPos(k, 0, l));
if (worldIn.getBlockState(top.down()).getBlock() == Sealife.ROCKS && worldIn.getBlockState(top.up()).getBlock() == Blocks.WATER) {
worldIn.setBlockState(top, Sealife.CORAL.getStateFromMeta(rand.nextInt(Coral.values().length)), 2);
代码示例来源:origin: McJtyMods/LostCities
public static int findSuitableEmptySpot(World world, int x, int z) {
int y = world.getTopSolidOrLiquidBlock(new BlockPos(x, 0, z)).getY();
if (y == -1) {
return -1;
}
y--; // y should now be at a solid or liquid block.
if (y > world.getHeight() - 5) {
y = world.getHeight() / 2;
}
IBlockState state = world.getBlockState(new BlockPos(x, y + 1, z));
Block block = state.getBlock();
while (block.getMaterial(state).isLiquid()) {
y++;
if (y > world.getHeight()-10) {
return -1;
}
state = world.getBlockState(new BlockPos(x, y + 1, z));
block = state.getBlock();
}
return y;
}
内容来源于网络,如有侵权,请联系作者删除!