import com.irtimaled.bbor.common.MathHelper;
import com.irtimaled.bbor.common.models.Coords;
import com.irtimaled.bbor.common.models.DimensionId;
+import net.minecraft.client.MinecraftClient;
import net.minecraft.util.registry.BuiltinRegistries;
+import net.minecraft.world.Heightmap;
import java.util.HashMap;
import java.util.Map;
int minZ = blockZ - width;
int maxZ = blockZ + width;
- Map<Coords, BoundingBoxFlowerForest> boundingBoxes = new HashMap<>();
+ Map<Coords, BoundingBoxFlowerForest> boundingBoxes = new HashMap<>((maxX - minX) * (maxZ - minZ));
for (int x = minX; x <= maxX; x++) {
for (int z = minZ; z <= maxZ; z++) {
int biomeId = BiomeBorderHelper.getBiomeId(x, 255, z);
}
private static int getMaxYForPos(int x, int y, int z) {
- while (y > 0) {
- if (FlowerForestHelper.canGrowFlower(x, y, z)) return y;
- y--;
+ int topY = MinecraftClient.getInstance().world.getTopY(Heightmap.Type.MOTION_BLOCKING, x, z);
+ if (topY == 0) topY = y; // heightmap appears to be broken
+ while (topY > 0) {
+ if (FlowerForestHelper.canGrowFlower(x, topY, z)) return topY;
+ topY--;
}
return 0;
}