diff --git a/Essentials/src/main/java/com/earth2me/essentials/Essentials.java b/Essentials/src/main/java/com/earth2me/essentials/Essentials.java index fe58510a17c..756b1558e82 100644 --- a/Essentials/src/main/java/com/earth2me/essentials/Essentials.java +++ b/Essentials/src/main/java/com/earth2me/essentials/Essentials.java @@ -72,6 +72,7 @@ import net.ess3.provider.providers.FixedHeightWorldInfoProvider; import net.ess3.provider.providers.FlatSpawnEggProvider; import net.ess3.provider.providers.LegacyBannerDataProvider; +import net.ess3.provider.providers.LegacyBiomeNameProvider; import net.ess3.provider.providers.LegacyDamageEventProvider; import net.ess3.provider.providers.LegacyInventoryViewProvider; import net.ess3.provider.providers.LegacyItemUnbreakableProvider; @@ -373,6 +374,9 @@ public void onEnable() { // Inventory View Provider providerFactory.registerProvider(LegacyInventoryViewProvider.class, BaseInventoryViewProvider.class); + // Biome Name Provider + providerFactory.registerProvider(LegacyBiomeNameProvider.class); + // Biome Key Provider providerFactory.registerProvider(PaperBiomeKeyProvider.class); diff --git a/Essentials/src/main/java/com/earth2me/essentials/RandomTeleport.java b/Essentials/src/main/java/com/earth2me/essentials/RandomTeleport.java index 163e76dcaa0..667e5e93bff 100644 --- a/Essentials/src/main/java/com/earth2me/essentials/RandomTeleport.java +++ b/Essentials/src/main/java/com/earth2me/essentials/RandomTeleport.java @@ -7,6 +7,7 @@ import com.earth2me.essentials.utils.VersionUtil; import io.papermc.lib.PaperLib; import net.ess3.provider.BiomeKeyProvider; +import net.ess3.provider.BiomeNameProvider; import net.ess3.provider.WorldInfoProvider; import org.bukkit.Location; import org.bukkit.Material; @@ -238,8 +239,9 @@ private boolean isValidRandomLocation(final Location location) { // Exclude biome if enum or namespaced key matches private boolean isExcludedBiome(final Location location) { + final BiomeNameProvider biomeNameProvider = ess.provider(BiomeNameProvider.class); final Set excluded = getExcludedBiomes(); - final String enumKey = location.getBlock().getBiome().name().toLowerCase(); + final String enumKey = biomeNameProvider.getBiomeName(location.getBlock()); // Try with good old bukkit enum if (excluded.contains(enumKey)) { return true; diff --git a/providers/1_8Provider/src/main/java/net/ess3/provider/providers/LegacyBiomeNameProvider.java b/providers/1_8Provider/src/main/java/net/ess3/provider/providers/LegacyBiomeNameProvider.java new file mode 100644 index 00000000000..ce98ff09c04 --- /dev/null +++ b/providers/1_8Provider/src/main/java/net/ess3/provider/providers/LegacyBiomeNameProvider.java @@ -0,0 +1,17 @@ +package net.ess3.provider.providers; + +import net.ess3.provider.BiomeNameProvider; +import net.essentialsx.providers.ProviderData; +import org.bukkit.block.Block; + +import java.util.Locale; + +@ProviderData(description = "Legacy Biome Name Provider") +public class LegacyBiomeNameProvider implements BiomeNameProvider { + @Override + public String getBiomeName(final Block block) { + // For some reason, compiling against modern versions causes this call to break, possibly related to OldEnum? + // Compiling this against versions that still have proper enums allow this to work + return block.getBiome().name().toLowerCase(Locale.ENGLISH); + } +} diff --git a/providers/BaseProviders/src/main/java/net/ess3/provider/BiomeNameProvider.java b/providers/BaseProviders/src/main/java/net/ess3/provider/BiomeNameProvider.java new file mode 100644 index 00000000000..ce672c9cb33 --- /dev/null +++ b/providers/BaseProviders/src/main/java/net/ess3/provider/BiomeNameProvider.java @@ -0,0 +1,7 @@ +package net.ess3.provider; + +import org.bukkit.block.Block; + +public interface BiomeNameProvider extends Provider { + String getBiomeName(Block block); +}