From 120d2f11d1c046f5e2449878e4747a205869a43f Mon Sep 17 00:00:00 2001 From: Xanadu13 Date: Sat, 1 Jun 2024 20:42:05 +0800 Subject: [PATCH] add paper 1.20.6+ supports --- .../enderdragon/manager/GroovyManager.java | 6 +++-- .../pers/xanadu/enderdragon/util/Version.java | 24 ++++++++++++++----- src/main/resources/plugin.yml | 2 +- 3 files changed, 23 insertions(+), 9 deletions(-) diff --git a/src/main/java/pers/xanadu/enderdragon/manager/GroovyManager.java b/src/main/java/pers/xanadu/enderdragon/manager/GroovyManager.java index 2687b11..9c23072 100644 --- a/src/main/java/pers/xanadu/enderdragon/manager/GroovyManager.java +++ b/src/main/java/pers/xanadu/enderdragon/manager/GroovyManager.java @@ -61,8 +61,10 @@ public class GroovyManager { public static Object eval(String expression, Player player){ Binding binding = new Binding(); binding.setVariable("player",player); - binding.setVariable("itemStack",player.getItemInHand()); - binding.setVariable("world",player.getWorld()); + if (player != null){ + binding.setVariable("itemStack",player.getItemInHand()); + binding.setVariable("world",player.getWorld()); + } GroovyShell shell = new GroovyShell(GroovyManager.class.getClassLoader(),binding,compilerConfig); return shell.evaluate(lib+expression); } diff --git a/src/main/java/pers/xanadu/enderdragon/util/Version.java b/src/main/java/pers/xanadu/enderdragon/util/Version.java index 51be43b..1e635cf 100644 --- a/src/main/java/pers/xanadu/enderdragon/util/Version.java +++ b/src/main/java/pers/xanadu/enderdragon/util/Version.java @@ -1,12 +1,16 @@ package pers.xanadu.enderdragon.util; import lombok.Getter; +import org.bukkit.Bukkit; +import pers.xanadu.enderdragon.EnderDragon; import pers.xanadu.enderdragon.config.Lang; import pers.xanadu.enderdragon.nms.BossBar.IBossBarManager; import pers.xanadu.enderdragon.nms.NMSItem.INMSItemManager; import pers.xanadu.enderdragon.nms.RespawnAnchor.IRespawnAnchorManager; import pers.xanadu.enderdragon.nms.WorldData.IWorldDataManager; +import java.lang.reflect.Field; + import static org.bukkit.Bukkit.getServer; public class Version { @@ -24,14 +28,22 @@ public class Version { public static void init(){ try { version = getServer().getClass().getPackage().getName().split("\\.")[3]; - String[] mc_version = getServer().getBukkitVersion().split("-")[0].split("\\."); - mcMainVersion = Integer.parseInt(mc_version[1]); - if(mc_version.length<=2) mcPatchVersion = 0; - else mcPatchVersion = Integer.parseInt(mc_version[2]); } catch (Throwable throwable) { - throwable.printStackTrace(); - Lang.warn("Failed to get nms-version!"); + try{ + //paper 1.20.6+ + Class clazz = Class.forName("io.papermc.paper.util.MappingEnvironment"); + Field LEGACY_CB_VERSION = clazz.getField("LEGACY_CB_VERSION"); + version = (String) LEGACY_CB_VERSION.get(null); + }catch (ReflectiveOperationException e){ + throwable.printStackTrace(); + Lang.warn("Failed to get nms-version!"); + Bukkit.getServer().getPluginManager().disablePlugin(EnderDragon.plugin); + } } + String[] mc_version = getServer().getBukkitVersion().split("-")[0].split("\\."); + mcMainVersion = Integer.parseInt(mc_version[1]); + if(mc_version.length<=2) mcPatchVersion = 0; + else mcPatchVersion = Integer.parseInt(mc_version[2]); Lang.info("Found version: " + version); try{ Class.forName("net.minecraftforge.server.ServerMain"); diff --git a/src/main/resources/plugin.yml b/src/main/resources/plugin.yml index 5e18044..7c8293e 100644 --- a/src/main/resources/plugin.yml +++ b/src/main/resources/plugin.yml @@ -1,5 +1,5 @@ name: EnderDragon -version: 2.5.2 +version: 2.5.3 main: pers.xanadu.enderdragon.EnderDragon author: Xanadu13 api-version: 1.13