Merge pull request #229 from ajgeiss0702/ver/6.0.0

Remove bukkit-style biome IDs
This commit is contained in:
dfsek 2021-06-24 13:48:06 -07:00 committed by GitHub
commit 0acff143fb
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 9 additions and 6 deletions

View File

@ -1,5 +1,6 @@
package com.dfsek.terra.bukkit; package com.dfsek.terra.bukkit;
import com.dfsek.tectonic.exception.LoadException;
import com.dfsek.tectonic.loading.TypeRegistry; import com.dfsek.tectonic.loading.TypeRegistry;
import com.dfsek.terra.api.Logger; import com.dfsek.terra.api.Logger;
import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.TerraPlugin;
@ -62,6 +63,7 @@ import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable; import org.jetbrains.annotations.Nullable;
import java.util.HashMap; import java.util.HashMap;
import java.util.Locale;
import java.util.Map; import java.util.Map;
import java.util.Objects; import java.util.Objects;
@ -301,11 +303,16 @@ public class TerraBukkitPlugin extends JavaPlugin implements TerraPlugin {
public void register(TypeRegistry registry) { public void register(TypeRegistry registry) {
registry registry
.registerLoader(BlockData.class, (t, o, l) -> handle.createBlockData((String) o)) .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)); .registerLoader(EntityType.class, (t, o, l) -> EntityType.valueOf((String) o));
genericLoaders.register(registry); 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 @Override
public Registry<TerraAddon> getAddons() { public Registry<TerraAddon> getAddons() {
return addonLockedRegistry; return addonLockedRegistry;

View File

@ -128,10 +128,6 @@ public class TerraFabricPlugin implements TerraPlugin, ModInitializer {
private final PluginConfig config = new PluginConfigImpl(); private final PluginConfig config = new PluginConfigImpl();
private final TransformerImpl<String, ProtoBiome> biomeFixer = new TransformerImpl.Builder<String, ProtoBiome>()
.addTransform(this::parseBiome, Validator.notNull())
.addTransform(id -> parseBiome("minecraft:" + id.toLowerCase()), Validator.notNull()).build();
private ProtoBiome parseBiome(String id) { private ProtoBiome parseBiome(String id) {
Identifier identifier = Identifier.tryParse(id); Identifier identifier = Identifier.tryParse(id);
if(BuiltinRegistries.BIOME.get(identifier) == null) return null; // failure. if(BuiltinRegistries.BIOME.get(identifier) == null) return null; // failure.
@ -242,7 +238,7 @@ public class TerraFabricPlugin implements TerraPlugin, ModInitializer {
genericLoaders.register(registry); genericLoaders.register(registry);
registry registry
.registerLoader(BlockData.class, (t, o, l) -> worldHandle.createBlockData((String) o)) .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) -> { .registerLoader(Identifier.class, (t, o, l) -> {
Identifier identifier = Identifier.tryParse((String) o); Identifier identifier = Identifier.tryParse((String) o);
if(identifier == null) throw new LoadException("Invalid identifier: " + o); if(identifier == null) throw new LoadException("Invalid identifier: " + o);