SPIGOT-7214: Add CraftChunk and CraftChunkSnapshot contains biome method

This commit is contained in:
md_5 2023-01-28 11:49:46 +11:00
parent 1b70687960
commit 384f31d818
No known key found for this signature in database
GPG Key ID: E8E901AC7C617C11
2 changed files with 29 additions and 0 deletions

View File

@ -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<Holder<BiomeBase>> 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);

View File

@ -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<Holder<BiomeBase>> nms = Predicates.equalTo(CraftBlock.biomeToBiomeBase(this.biomeRegistry, biome));
for (PalettedContainerRO<Holder<BiomeBase>> 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);