diff --git a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/TerraBukkitPlugin.java b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/TerraBukkitPlugin.java index d42b6af6f..43ee73e5f 100644 --- a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/TerraBukkitPlugin.java +++ b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/TerraBukkitPlugin.java @@ -1,5 +1,6 @@ package com.dfsek.terra.bukkit; +import com.dfsek.tectonic.exception.LoadException; import com.dfsek.tectonic.loading.TypeRegistry; import com.dfsek.terra.api.Logger; import com.dfsek.terra.api.TerraPlugin; @@ -62,6 +63,7 @@ import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import java.util.HashMap; +import java.util.Locale; import java.util.Map; import java.util.Objects; @@ -301,11 +303,16 @@ public class TerraBukkitPlugin extends JavaPlugin implements TerraPlugin { public void register(TypeRegistry registry) { registry .registerLoader(BlockData.class, (t, o, l) -> handle.createBlockData((String) o)) - .registerLoader(Biome.class, (t, o, l) -> new BukkitBiome(org.bukkit.block.Biome.valueOf((String) o))) + .registerLoader(Biome.class, (t, o, l) -> parseBiome((String) o)) .registerLoader(EntityType.class, (t, o, l) -> EntityType.valueOf((String) o)); genericLoaders.register(registry); } + private BukkitBiome parseBiome(String id) throws LoadException { + if(!id.startsWith("minecraft:")) throw new LoadException("Invalid biome identifier " + id); + return new BukkitBiome(org.bukkit.block.Biome.valueOf(id.toUpperCase(Locale.ROOT).substring(10))); + } + @Override public Registry getAddons() { return addonLockedRegistry; diff --git a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/TerraFabricPlugin.java b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/TerraFabricPlugin.java index 8184ebcfc..77c28bd20 100644 --- a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/TerraFabricPlugin.java +++ b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/TerraFabricPlugin.java @@ -128,10 +128,6 @@ public class TerraFabricPlugin implements TerraPlugin, ModInitializer { private final PluginConfig config = new PluginConfigImpl(); - private final TransformerImpl biomeFixer = new TransformerImpl.Builder() - .addTransform(this::parseBiome, Validator.notNull()) - .addTransform(id -> parseBiome("minecraft:" + id.toLowerCase()), Validator.notNull()).build(); - private ProtoBiome parseBiome(String id) { Identifier identifier = Identifier.tryParse(id); if(BuiltinRegistries.BIOME.get(identifier) == null) return null; // failure. @@ -242,7 +238,7 @@ public class TerraFabricPlugin implements TerraPlugin, ModInitializer { genericLoaders.register(registry); registry .registerLoader(BlockData.class, (t, o, l) -> worldHandle.createBlockData((String) o)) - .registerLoader(com.dfsek.terra.api.world.biome.Biome.class, (t, o, l) -> biomeFixer.translate((String) o)) + .registerLoader(com.dfsek.terra.api.world.biome.Biome.class, (t, o, l) -> parseBiome((String) o)) .registerLoader(Identifier.class, (t, o, l) -> { Identifier identifier = Identifier.tryParse((String) o); if(identifier == null) throw new LoadException("Invalid identifier: " + o);