From 6c397da1f8ec4ab0a4e7aee5ccb161f8244afe9e Mon Sep 17 00:00:00 2001 From: Daniel Mills Date: Fri, 23 Jul 2021 16:13:17 -0400 Subject: [PATCH] INMS Additions --- .../com/volmit/iris/core/nms/INMSBinding.java | 4 +++ .../iris/core/nms/v16_1/NMSBinding16_1.java | 10 ++++++ .../iris/core/nms/v16_2/NMSBinding16_2.java | 10 ++++++ .../iris/core/nms/v16_3/NMSBinding16_3.java | 10 ++++++ .../iris/core/nms/v17_1/NMSBinding17_1.java | 10 ++++++ .../iris/core/nms/v1X/NMSBinding1X.java | 32 +++++++++++++++++++ 6 files changed, 76 insertions(+) diff --git a/src/main/java/com/volmit/iris/core/nms/INMSBinding.java b/src/main/java/com/volmit/iris/core/nms/INMSBinding.java index 913159e67..d501ab80a 100644 --- a/src/main/java/com/volmit/iris/core/nms/INMSBinding.java +++ b/src/main/java/com/volmit/iris/core/nms/INMSBinding.java @@ -25,8 +25,12 @@ import org.bukkit.block.Biome; import org.bukkit.generator.ChunkGenerator; public interface INMSBinding { + boolean supportsCustomHeight(); + Object getBiomeBaseFromId(int id); + int getMinHeight(World world); + boolean supportsCustomBiomes(); int getTrueBiomeBaseId(Object biomeBase); diff --git a/src/main/java/com/volmit/iris/core/nms/v16_1/NMSBinding16_1.java b/src/main/java/com/volmit/iris/core/nms/v16_1/NMSBinding16_1.java index 124a5e5c2..703c5ee4a 100644 --- a/src/main/java/com/volmit/iris/core/nms/v16_1/NMSBinding16_1.java +++ b/src/main/java/com/volmit/iris/core/nms/v16_1/NMSBinding16_1.java @@ -68,6 +68,16 @@ public class NMSBinding16_1 implements INMSBinding { return null; } + @Override + public int getMinHeight(World world) { + return 0; + } + + @Override + public boolean supportsCustomHeight() { + return false; + } + @Override public boolean supportsCustomBiomes() { return false; diff --git a/src/main/java/com/volmit/iris/core/nms/v16_2/NMSBinding16_2.java b/src/main/java/com/volmit/iris/core/nms/v16_2/NMSBinding16_2.java index 9c50070bb..68e89f37e 100644 --- a/src/main/java/com/volmit/iris/core/nms/v16_2/NMSBinding16_2.java +++ b/src/main/java/com/volmit/iris/core/nms/v16_2/NMSBinding16_2.java @@ -125,6 +125,16 @@ public class NMSBinding16_2 implements INMSBinding { return false; } + @Override + public int getMinHeight(World world) { + return 0; + } + + @Override + public boolean supportsCustomHeight() { + return false; + } + private Class[] classify(Object... par) { Class[] g = new Class[par.length]; for (int i = 0; i < g.length; i++) { diff --git a/src/main/java/com/volmit/iris/core/nms/v16_3/NMSBinding16_3.java b/src/main/java/com/volmit/iris/core/nms/v16_3/NMSBinding16_3.java index e8bbb9b8c..c65f5fa31 100644 --- a/src/main/java/com/volmit/iris/core/nms/v16_3/NMSBinding16_3.java +++ b/src/main/java/com/volmit/iris/core/nms/v16_3/NMSBinding16_3.java @@ -53,6 +53,16 @@ public class NMSBinding16_3 implements INMSBinding { return null; } + @Override + public boolean supportsCustomHeight() { + return false; + } + + @Override + public int getMinHeight(World world) { + return 0; + } + @Override public boolean supportsCustomBiomes() { return false; diff --git a/src/main/java/com/volmit/iris/core/nms/v17_1/NMSBinding17_1.java b/src/main/java/com/volmit/iris/core/nms/v17_1/NMSBinding17_1.java index 7901655bc..bab80640d 100644 --- a/src/main/java/com/volmit/iris/core/nms/v17_1/NMSBinding17_1.java +++ b/src/main/java/com/volmit/iris/core/nms/v17_1/NMSBinding17_1.java @@ -58,6 +58,11 @@ public class NMSBinding17_1 implements INMSBinding { return null; } + @Override + public boolean supportsCustomHeight() { + return false; + } + private Field getFieldForBiomeStorage(Object storage) { Field f = biomeStorageCache; @@ -108,6 +113,11 @@ public class NMSBinding17_1 implements INMSBinding { return true; } + @Override + public int getMinHeight(World world) { + return world.getMinHeight(); + } + @Override public Object getCustomBiomeBaseFor(String mckey) { try { diff --git a/src/main/java/com/volmit/iris/core/nms/v1X/NMSBinding1X.java b/src/main/java/com/volmit/iris/core/nms/v1X/NMSBinding1X.java index 40abfa80b..f72c2b0a2 100644 --- a/src/main/java/com/volmit/iris/core/nms/v1X/NMSBinding1X.java +++ b/src/main/java/com/volmit/iris/core/nms/v1X/NMSBinding1X.java @@ -24,12 +24,44 @@ import org.bukkit.World; import org.bukkit.block.Biome; import org.bukkit.generator.ChunkGenerator; +import java.lang.reflect.Method; + public class NMSBinding1X implements INMSBinding { + private static final boolean supportsCustomHeight = testCustomHeight(); + + @SuppressWarnings("ConstantConditions") + private static boolean testCustomHeight() { + try + { + if(World.class.getDeclaredMethod("getMaxHeight") != null && World.class.getDeclaredMethod("getMinHeight") != null); + { + return true; + } + } + + catch(Throwable ignored) + { + + } + + return false; + } + + @Override + public boolean supportsCustomHeight() { + return supportsCustomHeight; + } + @Override public Object getBiomeBaseFromId(int id) { return null; } + @Override + public int getMinHeight(World world) { + return supportsCustomHeight ? world.getMinHeight() : 0; + } + @Override public boolean supportsCustomBiomes() { return false;