BiomesOPlenty/src/main/java/biomesoplenty/common/world/gen/surfacebuilders/MarshSurfaceBuilder.java

49 lines
1.9 KiB
Java
Raw Normal View History

2019-05-21 00:41:51 +00:00
/*******************************************************************************
* Copyright 2014-2019, the Biomes O' Plenty Team
*
* This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License.
*
* To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/.
******************************************************************************/
package biomesoplenty.common.world.gen.surfacebuilders;
2019-05-21 00:41:51 +00:00
2020-07-03 14:22:59 +00:00
import com.mojang.serialization.Codec;
2019-06-13 05:08:11 +00:00
import net.minecraft.block.BlockState;
2019-05-21 00:41:51 +00:00
import net.minecraft.util.math.BlockPos;
import net.minecraft.world.biome.Biome;
import net.minecraft.world.chunk.IChunk;
2019-06-13 14:00:59 +00:00
import net.minecraft.world.gen.surfacebuilders.SurfaceBuilder;
2019-05-21 00:41:51 +00:00
import net.minecraft.world.gen.surfacebuilders.SurfaceBuilderConfig;
2019-06-13 14:00:59 +00:00
import java.util.Random;
public class MarshSurfaceBuilder extends SurfaceBuilder<SurfaceBuilderConfig>
{
2020-07-03 14:22:59 +00:00
public MarshSurfaceBuilder(Codec<SurfaceBuilderConfig> deserializer)
2019-06-13 14:00:59 +00:00
{
super(deserializer);
}
@Override
2019-12-31 07:27:53 +00:00
public void apply(Random random, IChunk chunkIn, Biome biomeIn, int x, int z, int startHeight, double noise, BlockState defaultBlock, BlockState defaultFluid, int seaLevel, long seed, SurfaceBuilderConfig config)
2019-06-13 14:00:59 +00:00
{
2019-12-31 07:27:53 +00:00
double d0 = Biome.BIOME_INFO_NOISE.getValue((double)x * 0.25D, (double)z * 0.25D, false);
2019-06-13 14:00:59 +00:00
if (d0 > 0.0D) {
int i = x & 15;
int j = z & 15;
2019-12-24 11:25:03 +00:00
BlockPos.Mutable blockpos$mutableblockpos = new BlockPos.Mutable();
2019-05-21 00:41:51 +00:00
2019-06-13 14:00:59 +00:00
for(int k = startHeight; k >= 0; --k) {
2019-12-31 07:27:53 +00:00
blockpos$mutableblockpos.set(i, k, j);
2019-06-13 14:00:59 +00:00
if (!chunkIn.getBlockState(blockpos$mutableblockpos).isAir()) {
if (k == 62 && chunkIn.getBlockState(blockpos$mutableblockpos).getBlock() != defaultFluid.getBlock()) {
chunkIn.setBlockState(blockpos$mutableblockpos, defaultFluid, false);
}
break;
}
}
}
2019-05-21 00:41:51 +00:00
2019-12-31 07:27:53 +00:00
SurfaceBuilder.DEFAULT.apply(random, chunkIn, biomeIn, x, z, startHeight, noise, defaultBlock, defaultFluid, seaLevel, seed, config);
2019-06-13 14:00:59 +00:00
}
}