diff --git a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java index bb244f9f5..0dd4bb822 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java @@ -954,6 +954,7 @@ public class CraftWorld implements World { @Override public void setBiome(int x, int y, int z, Biome bio) { + Preconditions.checkArgument(bio != Biome.CUSTOM, "Cannot set the biome to %s", bio); BiomeBase bb = CraftBlock.biomeToBiomeBase(getHandle().r().b(IRegistry.ay), bio); BlockPosition pos = new BlockPosition(x, 0, z); if (this.world.isLoaded(pos)) { diff --git a/src/main/java/org/bukkit/craftbukkit/block/CraftBlock.java b/src/main/java/org/bukkit/craftbukkit/block/CraftBlock.java index 7654c0f8b..d7bcdd80d 100644 --- a/src/main/java/org/bukkit/craftbukkit/block/CraftBlock.java +++ b/src/main/java/org/bukkit/craftbukkit/block/CraftBlock.java @@ -499,11 +499,12 @@ public class CraftBlock implements Block { return null; } - return Registry.BIOME.get(CraftNamespacedKey.fromMinecraft(registry.getKey(base))); + Biome biome = Registry.BIOME.get(CraftNamespacedKey.fromMinecraft(registry.getKey(base))); + return (biome == null) ? Biome.CUSTOM : biome; } public static BiomeBase biomeToBiomeBase(IRegistry registry, Biome bio) { - if (bio == null) { + if (bio == null || bio == Biome.CUSTOM) { return null; } diff --git a/src/main/java/org/bukkit/craftbukkit/generator/CustomChunkGenerator.java b/src/main/java/org/bukkit/craftbukkit/generator/CustomChunkGenerator.java index 3e6d78a1f..7ce7e1303 100644 --- a/src/main/java/org/bukkit/craftbukkit/generator/CustomChunkGenerator.java +++ b/src/main/java/org/bukkit/craftbukkit/generator/CustomChunkGenerator.java @@ -65,6 +65,7 @@ public class CustomChunkGenerator extends InternalChunkGenerator { @Override public void setBiome(int x, int y, int z, Biome bio) { + Preconditions.checkArgument(bio != Biome.CUSTOM, "Cannot set the biome to %s", bio); biome.setBiome(x >> 2, y >> 2, z >> 2, CraftBlock.biomeToBiomeBase((IRegistry) biome.registry, bio)); } } diff --git a/src/test/java/org/bukkit/BiomeTest.java b/src/test/java/org/bukkit/BiomeTest.java index 7105dbfe6..3f478abc0 100644 --- a/src/test/java/org/bukkit/BiomeTest.java +++ b/src/test/java/org/bukkit/BiomeTest.java @@ -13,14 +13,19 @@ public class BiomeTest extends AbstractTestingBase { @Test public void testBukkitToMinecraft() { for (Biome biome : Biome.values()) { + if (biome == Biome.CUSTOM) { + continue; + } + Assert.assertNotNull("No NMS mapping for " + biome, CraftBlock.biomeToBiomeBase(RegistryGeneration.WORLDGEN_BIOME, biome)); } } @Test public void testMinecraftToBukkit() { - for (Object biome : RegistryGeneration.WORLDGEN_BIOME) { - Assert.assertNotNull("No Bukkit mapping for " + biome, CraftBlock.biomeBaseToBiome(RegistryGeneration.WORLDGEN_BIOME, (BiomeBase) biome)); + for (BiomeBase biomeBase : RegistryGeneration.WORLDGEN_BIOME) { + Biome biome = CraftBlock.biomeBaseToBiome(RegistryGeneration.WORLDGEN_BIOME, biomeBase); + Assert.assertTrue("No Bukkit mapping for " + biomeBase, biome != null && biome != Biome.CUSTOM); } } }