diff --git a/src/main/java/com/volmit/iris/nms/INMSBinding.java b/src/main/java/com/volmit/iris/nms/INMSBinding.java index 5a31e3439..4cc662d51 100644 --- a/src/main/java/com/volmit/iris/nms/INMSBinding.java +++ b/src/main/java/com/volmit/iris/nms/INMSBinding.java @@ -1,11 +1,24 @@ package com.volmit.iris.nms; +import org.bukkit.Location; import org.bukkit.World; import org.bukkit.WorldCreator; import org.bukkit.block.Biome; public interface INMSBinding { + public Object getBiomeBaseFromId(int id); + + public int getTrueBiomeBaseId(Object biomeBase); + + public Object getTrueBiomeBase(Location location); + + public String getTrueBiomeBaseKey(Location location); + + public Object getCustomBiomeBaseFor(String mckey); + + public String getKeyForBiomeBase(Object biomeBase); + public Object getBiomeBase(World world, Biome biome); public Object getBiomeBase(Object registry, Biome biome); diff --git a/src/main/java/com/volmit/iris/nms/v17_1/NMSBinding17_1.java b/src/main/java/com/volmit/iris/nms/v17_1/NMSBinding17_1.java index 40dcd467f..aad74905c 100644 --- a/src/main/java/com/volmit/iris/nms/v17_1/NMSBinding17_1.java +++ b/src/main/java/com/volmit/iris/nms/v17_1/NMSBinding17_1.java @@ -1,12 +1,21 @@ package com.volmit.iris.nms.v17_1; +import com.volmit.iris.Iris; import com.volmit.iris.nms.INMSBinding; import com.volmit.iris.util.KMap; import net.minecraft.core.IRegistry; +import net.minecraft.core.IRegistryWritable; +import net.minecraft.data.worldgen.biome.BiomeRegistry; +import net.minecraft.resources.MinecraftKey; +import net.minecraft.resources.ResourceKey; +import net.minecraft.server.MinecraftServer; +import net.minecraft.server.level.WorldServer; import net.minecraft.world.level.biome.BiomeBase; import org.bukkit.Bukkit; +import org.bukkit.Location; import org.bukkit.World; import org.bukkit.block.Biome; +import org.bukkit.craftbukkit.v1_17_R1.CraftServer; import org.bukkit.craftbukkit.v1_17_R1.CraftWorld; import java.lang.reflect.Field; import java.lang.reflect.Method; @@ -15,6 +24,41 @@ public class NMSBinding17_1 implements INMSBinding { private final KMap baseBiomeCache = new KMap<>(); + private IRegistryWritable getCustomBiomeRegistry() + { + return ((CraftServer)Bukkit.getServer()).getHandle().getServer().getCustomRegistry().b(IRegistry.aO); + } + + @Override + public Object getBiomeBaseFromId(int id) { + return getCustomBiomeRegistry().fromId(id); + } + + @Override + public int getTrueBiomeBaseId(Object biomeBase) { + return getCustomBiomeRegistry().getId((BiomeBase)biomeBase); + } + + @Override + public Object getTrueBiomeBase(Location location) { + return ((CraftWorld)location.getWorld()).getHandle().getBiome(location.getBlockX(), location.getBlockY(), location.getBlockZ()); + } + + @Override + public String getTrueBiomeBaseKey(Location location) { + return getKeyForBiomeBase(getTrueBiomeBase(location)); + } + + @Override + public Object getCustomBiomeBaseFor(String mckey) { + return getCustomBiomeRegistry().d(ResourceKey.a(IRegistry.aO, new MinecraftKey(mckey))); + } + + @Override + public String getKeyForBiomeBase(Object biomeBase) { + return getCustomBiomeRegistry().c((BiomeBase)biomeBase).get().a().toString(); + } + @Override public Object getBiomeBase(World world, Biome biome) { diff --git a/src/main/java/com/volmit/iris/nms/v1X/NMSBinding1X.java b/src/main/java/com/volmit/iris/nms/v1X/NMSBinding1X.java index 290f98e8c..60a95880c 100644 --- a/src/main/java/com/volmit/iris/nms/v1X/NMSBinding1X.java +++ b/src/main/java/com/volmit/iris/nms/v1X/NMSBinding1X.java @@ -1,11 +1,42 @@ package com.volmit.iris.nms.v1X; import com.volmit.iris.nms.INMSBinding; +import org.bukkit.Location; import org.bukkit.World; import org.bukkit.block.Biome; public class NMSBinding1X implements INMSBinding { + @Override + public Object getBiomeBaseFromId(int id) { + return null; + } + + @Override + public int getTrueBiomeBaseId(Object biomeBase) { + return 0; + } + + @Override + public Object getTrueBiomeBase(Location location) { + return null; + } + + @Override + public String getTrueBiomeBaseKey(Location location) { + return null; + } + + @Override + public Object getCustomBiomeBaseFor(String mckey) { + return null; + } + + @Override + public String getKeyForBiomeBase(Object biomeBase) { + return null; + } + public Object getBiomeBase(World world, Biome biome) { return null;