fix BeardGenerator

This commit is contained in:
dfsek 2022-03-23 22:07:28 -07:00
parent 480bc738dd
commit 61797170b6

View File

@ -18,13 +18,12 @@ import net.minecraft.util.math.MathHelper;
import net.minecraft.world.chunk.Chunk; import net.minecraft.world.chunk.Chunk;
import net.minecraft.world.gen.StructureAccessor; import net.minecraft.world.gen.StructureAccessor;
import net.minecraft.world.gen.StructureWeightType; import net.minecraft.world.gen.StructureWeightType;
import net.minecraft.world.gen.feature.StructureFeature;
import com.dfsek.terra.api.world.biome.generation.BiomeProvider; import com.dfsek.terra.api.world.biome.generation.BiomeProvider;
import com.dfsek.terra.api.world.chunk.generation.ChunkGenerator; import com.dfsek.terra.api.world.chunk.generation.ChunkGenerator;
import com.dfsek.terra.api.world.info.WorldProperties; import com.dfsek.terra.api.world.info.WorldProperties;
// net.minecraft.world.gen.StructureWeightSampler
public class BeardGenerator { public class BeardGenerator {
private static final float[] STRUCTURE_WEIGHT_TABLE = Util.make(new float[13824], array -> { private static final float[] STRUCTURE_WEIGHT_TABLE = Util.make(new float[13824], array -> {
for (int i = 0; i < 24; ++i) { for (int i = 0; i < 24; ++i) {
@ -55,8 +54,8 @@ public class BeardGenerator {
this.pieces = new ObjectArrayList<>(10); this.pieces = new ObjectArrayList<>(10);
int minY = chunk.getBottomY(); int minY = chunk.getBottomY();
int maxY = chunk.getTopY(); int maxY = chunk.getTopY();
for (StructureFeature<?> structureFeature : StructureFeature.LAND_MODIFYING_STRUCTURES) { for(StructureStart start : structureAccessor.method_41035(ChunkSectionPos.from(chunk),
for(StructureStart<?> start : structureAccessor.getStructureStarts(ChunkSectionPos.from(chunk), structureFeature)) { configuredStructureFeature -> configuredStructureFeature.field_37144)) {
for(StructurePiece structurePiece : start.getChildren()) { for(StructurePiece structurePiece : start.getChildren()) {
if(!structurePiece.intersectsChunk(chunkPos, 12)) continue; if(!structurePiece.intersectsChunk(chunkPos, 12)) continue;
if(structurePiece instanceof PoolStructurePiece poolStructurePiece) { if(structurePiece instanceof PoolStructurePiece poolStructurePiece) {
@ -67,12 +66,9 @@ public class BeardGenerator {
for(JigsawJunction jigsawJunction : poolStructurePiece.getJunctions()) { for(JigsawJunction jigsawJunction : poolStructurePiece.getJunctions()) {
int k = jigsawJunction.getSourceX(); int k = jigsawJunction.getSourceX();
int l = jigsawJunction.getSourceZ(); int l = jigsawJunction.getSourceZ();
if(k <= i - 12 || l <= j - 12 || k >= i + 15 + 12 || l >= j + 15 + 12) { if(k <= i - 12 || l <= j - 12 || k >= i + 15 + 12 || l >= j + 15 + 12) continue;
continue;
}
maxY = Math.max(maxY, jigsawJunction.getSourceGroundY()); maxY = Math.max(maxY, jigsawJunction.getSourceGroundY());
minY = Math.min(minY, jigsawJunction.getSourceGroundY()); minY = Math.min(minY, jigsawJunction.getSourceGroundY());
this.junctions.add(jigsawJunction); this.junctions.add(jigsawJunction);
} }
continue; continue;
@ -82,7 +78,6 @@ public class BeardGenerator {
this.pieces.add(structurePiece); this.pieces.add(structurePiece);
} }
} }
}
this.pieceIterator = this.pieces.iterator(); this.pieceIterator = this.pieces.iterator();
this.junctionIterator = this.junctions.iterator(); this.junctionIterator = this.junctions.iterator();
this.minY = minY; this.minY = minY;