From ea8231e4e073152752b59496e575182486ddfa2a Mon Sep 17 00:00:00 2001 From: Christian Koop Date: Sun, 25 Feb 2024 22:30:05 +0100 Subject: [PATCH] fix: Support RegionPlugin `UltimateClaims` v2 and v1 With v2 the package changed because Songoda renamed to Craftaro at one point in time. This fixes a `ClassNotFoundException` when using v2 of the plugin. The commit also refactors the code a bit as the `UltimateClaims#getInstance()` method is marked as deprecated and will be removed in the future. --- .../regionPlugins/RTP_UltimateClaims.java | 33 ++++++++++--------- 1 file changed, 17 insertions(+), 16 deletions(-) diff --git a/src/main/java/me/SuperRonanCraft/BetterRTP/references/depends/regionPlugins/RTP_UltimateClaims.java b/src/main/java/me/SuperRonanCraft/BetterRTP/references/depends/regionPlugins/RTP_UltimateClaims.java index f3c490f..2ed1e14 100644 --- a/src/main/java/me/SuperRonanCraft/BetterRTP/references/depends/regionPlugins/RTP_UltimateClaims.java +++ b/src/main/java/me/SuperRonanCraft/BetterRTP/references/depends/regionPlugins/RTP_UltimateClaims.java @@ -2,38 +2,39 @@ package me.SuperRonanCraft.BetterRTP.references.depends.regionPlugins; import org.bukkit.Chunk; import org.bukkit.Location; +import org.bukkit.plugin.java.JavaPlugin; import java.lang.reflect.Method; public class RTP_UltimateClaims implements RegionPluginCheck { - // NOT TESTED (3.1.0) - // UltimateClaims (v1.6.1) - Abandoned - // https://songoda.com/marketplace/product/ultimateclaims-the-ultimate-claiming-plugin.65 + // TESTED (v2.2.0) + // UltimateClaims (v2.2.0 + v1.10.4) + // https://craftaro.com/marketplace/product/65 public boolean check(Location loc) { boolean result = true; if (REGIONPLUGINS.ULTIMATECLAIMS.isEnabled()) try { - Chunk chunk = loc.getChunk(); - - // Get instance of UltimateClaims - Class ultimateClaimsClass = Class.forName("com.songoda.ultimateclaims.UltimateClaims"); - Method getInstanceMethod = ultimateClaimsClass.getMethod("getInstance"); - Object ultimateClaims = getInstanceMethod.invoke(null); + JavaPlugin ultimateClaimsInstance = JavaPlugin.getPlugin((Class) getPluginMainClass()); // Get the ClaimManager - Method getClaimManagerMethod = ultimateClaimsClass.getMethod("getClaimManager"); - Object claimManager = getClaimManagerMethod.invoke(ultimateClaims); + Method getClaimManagerMethod = ultimateClaimsInstance.getClass().getMethod("getClaimManager"); + Object claimManager = getClaimManagerMethod.invoke(ultimateClaimsInstance); // Get the claim based on the chunk - Method getClaimMethod = claimManager.getClass().getMethod("getClaim", Chunk.class); - Object claimObj = getClaimMethod.invoke(claimManager, chunk); - - // Check if a claim exists - return claimObj == null; + Method hasClaimMethod = claimManager.getClass().getMethod("hasClaim", Chunk.class); + return Boolean.FALSE.equals(hasClaimMethod.invoke(claimManager, loc.getChunk())); } catch (Exception e) { e.printStackTrace(); } return result; } + + private Class getPluginMainClass() throws ClassNotFoundException { + try { + return Class.forName("com.craftaro.ultimateclaims.UltimateClaims"); // v2 + } catch (ClassNotFoundException ignore) { + return Class.forName("com.songoda.ultimateclaims.UltimateClaims"); // v1 + } + } }