diff --git a/src/main/java/kaptainwutax/seedcracker/cracker/population/DesertWellData.java b/src/main/java/kaptainwutax/seedcracker/cracker/population/DesertWellData.java new file mode 100644 index 0000000..b979c21 --- /dev/null +++ b/src/main/java/kaptainwutax/seedcracker/cracker/population/DesertWellData.java @@ -0,0 +1,26 @@ +package kaptainwutax.seedcracker.cracker.population; + +import kaptainwutax.seedcracker.util.Rand; +import net.minecraft.util.math.BlockPos; +import net.minecraft.util.math.ChunkPos; +import net.minecraft.world.biome.Biome; +import net.minecraft.world.gen.decorator.Decorator; + +public class DesertWellData extends DecoratorData { + + private BlockPos pos; + + public DesertWellData(ChunkPos chunkPos, Biome biome, BlockPos pos) { + super(chunkPos, Decorator.CHANCE_HEIGHTMAP, biome); + this.pos = new BlockPos(pos.getX() & 15, pos.getY(), pos.getZ() & 15); + } + + @Override + public boolean testDecorator(Rand rand) { + if(rand.nextFloat() >= 0.001F)return false; + if(rand.nextInt(16) != this.pos.getX())return false; + if(rand.nextInt(16) != this.pos.getZ())return false; + return true; + } + +} diff --git a/src/main/java/kaptainwutax/seedcracker/finder/population/DesertWellFinder.java b/src/main/java/kaptainwutax/seedcracker/finder/population/DesertWellFinder.java index 7151bdc..bb418e4 100644 --- a/src/main/java/kaptainwutax/seedcracker/finder/population/DesertWellFinder.java +++ b/src/main/java/kaptainwutax/seedcracker/finder/population/DesertWellFinder.java @@ -1,8 +1,10 @@ package kaptainwutax.seedcracker.finder.population; -import kaptainwutax.seedcracker.cracker.DecoratorCache; +import kaptainwutax.seedcracker.SeedCracker; +import kaptainwutax.seedcracker.cracker.population.DesertWellData; import kaptainwutax.seedcracker.finder.Finder; import kaptainwutax.seedcracker.finder.structure.PieceFinder; +import kaptainwutax.seedcracker.render.Cube; import kaptainwutax.seedcracker.render.Cuboid; import net.minecraft.block.BlockState; import net.minecraft.block.Blocks; @@ -13,8 +15,10 @@ import net.minecraft.util.math.Direction; import net.minecraft.util.math.Vec3i; import net.minecraft.world.World; import net.minecraft.world.biome.Biome; +import net.minecraft.world.biome.DesertBiome; +import net.minecraft.world.biome.DesertHillsBiome; +import net.minecraft.world.biome.DesertLakesBiome; import net.minecraft.world.dimension.DimensionType; -import net.minecraft.world.gen.decorator.Decorator; import java.util.ArrayList; import java.util.List; @@ -35,14 +39,16 @@ public class DesertWellFinder extends PieceFinder { public List findInChunk() { Biome biome = this.world.getBiome(this.chunkPos.getCenterBlockPos().add(8, 0, 8)); - if(DecoratorCache.get().getSalt(biome, Decorator.CHANCE_HEIGHTMAP, false) == DecoratorCache.INVALID) { + if(!(biome instanceof DesertBiome) && !(biome instanceof DesertHillsBiome) && !(biome instanceof DesertLakesBiome)) { return new ArrayList<>(); } List result = super.findInChunk(); result.forEach(pos -> { - this.renderers.add(new Cuboid(pos, new Vec3i(5, 6, 5), new Vector4f(1.0f, 0.0f, 1.0f, 1.0f))); + this.renderers.add(new Cuboid(pos, new Vec3i(5, 6, 5), new Vector4f(0.5f, 0.5f, 1.0f, 1.0f))); + this.renderers.add(new Cube(pos.add(2, 1, 2), new Vector4f(0.5f, 0.5f, 1.0f, 1.0f))); + SeedCracker.get().onDecoratorData(new DesertWellData(this.chunkPos, biome, pos.add(2, 1, 2))); }); return result; @@ -54,7 +60,6 @@ public class DesertWellFinder extends PieceFinder { } protected void buildStructure() { - this.setDebug(); BlockState sandstone = Blocks.SANDSTONE.getDefaultState(); BlockState sandstoneSlab = Blocks.SANDSTONE_SLAB.getDefaultState(); BlockState water = Blocks.WATER.getDefaultState();