diff --git a/src/main/java/org/bukkit/craftbukkit/CraftChunk.java b/src/main/java/org/bukkit/craftbukkit/CraftChunk.java index 43515bd64..f1fde234b 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftChunk.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftChunk.java @@ -40,6 +40,7 @@ import net.minecraft.world.level.lighting.LightEngine; import org.bukkit.Chunk; import org.bukkit.ChunkSnapshot; import org.bukkit.World; +import org.bukkit.block.Biome; import org.bukkit.block.Block; import org.bukkit.block.BlockState; import org.bukkit.block.data.BlockData; @@ -281,6 +282,20 @@ public class CraftChunk implements Chunk { return false; } + @Override + public boolean contains(Biome biome) { + Preconditions.checkArgument(biome != null, "Biome cannot be null"); + + Predicate> nms = Predicates.equalTo(CraftBlock.biomeToBiomeBase(getHandle().biomeRegistry, biome)); + for (ChunkSection section : getHandle().getSections()) { + if (section != null && section.getBiomes().maybeHas(nms)) { + return true; + } + } + + return false; + } + @Override public ChunkSnapshot getChunkSnapshot() { return getChunkSnapshot(true, false, false); diff --git a/src/main/java/org/bukkit/craftbukkit/CraftChunkSnapshot.java b/src/main/java/org/bukkit/craftbukkit/CraftChunkSnapshot.java index 09d117778..fdd31a962 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftChunkSnapshot.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftChunkSnapshot.java @@ -81,6 +81,20 @@ public class CraftChunkSnapshot implements ChunkSnapshot { return false; } + @Override + public boolean contains(Biome biome) { + Preconditions.checkArgument(biome != null, "Biome cannot be null"); + + Predicate> nms = Predicates.equalTo(CraftBlock.biomeToBiomeBase(this.biomeRegistry, biome)); + for (PalettedContainerRO> palette : this.biome) { + if (palette.maybeHas(nms)) { + return true; + } + } + + return false; + } + @Override public Material getBlockType(int x, int y, int z) { validateChunkCoordinates(x, y, z);