From 4a0b724be5bc33a65912ff0f400e10e49e1512af Mon Sep 17 00:00:00 2001 From: Ben Woo <30431861+benwoo1110@users.noreply.github.com> Date: Thu, 23 Jul 2026 21:16:56 +0800 Subject: [PATCH] Fix startup crash if NetherPortals not installed --- .../signportals/MultiverseSignPortals.java | 23 +++-------------- .../NetherPortalsCompatibilty.java | 25 +++++++++++++++++++ 2 files changed, 29 insertions(+), 19 deletions(-) create mode 100644 src/main/java/org/mvplugins/multiverse/signportals/NetherPortalsCompatibilty.java diff --git a/src/main/java/org/mvplugins/multiverse/signportals/MultiverseSignPortals.java b/src/main/java/org/mvplugins/multiverse/signportals/MultiverseSignPortals.java index 42b20ec..1325981 100644 --- a/src/main/java/org/mvplugins/multiverse/signportals/MultiverseSignPortals.java +++ b/src/main/java/org/mvplugins/multiverse/signportals/MultiverseSignPortals.java @@ -8,7 +8,6 @@ package org.mvplugins.multiverse.signportals; import com.dumptruckman.minecraft.util.Logging; -import org.bukkit.entity.Player; import org.jetbrains.annotations.NotNull; import org.mvplugins.multiverse.core.config.CoreConfig; import org.mvplugins.multiverse.core.module.MultiverseModule; @@ -17,8 +16,6 @@ import org.jvnet.hk2.annotations.Service; import org.mvplugins.multiverse.external.jakarta.inject.Inject; import org.mvplugins.multiverse.external.jakarta.inject.Provider; -import org.mvplugins.multiverse.external.vavr.control.Try; -import org.mvplugins.multiverse.netherportals.MultiverseNetherPortalsApi; import org.mvplugins.multiverse.signportals.listeners.SignPortalsListener; import org.mvplugins.multiverse.signportals.utils.PortalDetector; @@ -44,27 +41,15 @@ public void onEnable() { initializeDependencyInjection(new MultiverseSignPortalsPluginBinder(this)); Logging.setDebugLevel(serviceLocator.getActiveService(CoreConfig.class).getGlobalDebug()); registerDynamicListeners(SignPortalsListener.class); - registerNetherPortalsHandleCheck(); + + if (ReflectHelper.hasClass("org.mvplugins.multiverse.netherportals.MultiverseNetherPortalsApi")) { + NetherPortalsCompatibilty.registerNetherPortalsHandleCheck(portalDetectorProvider.get()); + } Logging.config("Version %s (API v%s) Enabled - By %s", this.getDescription().getVersion(), getVersionAsNumber(), StringFormatter.joinAnd(this.getDescription().getAuthors())); } - private void registerNetherPortalsHandleCheck() { - if (!ReflectHelper.hasClass("org.mvplugins.multiverse.netherportals.MultiverseNetherPortalsApi")) { - return; - } - MultiverseNetherPortalsApi.whenLoaded(api -> - api.getCustomPortalsHandler().registerHandleCheck(((entity, portalLocation) -> { - if (!(entity instanceof Player player)) { - return false; - } - Logging.finer("Checking if player %s can use NetherPortals at %s", player.getName(), portalLocation); - return Try.of(() -> portalDetectorProvider.get().getNotchPortalDestination(player, portalLocation) != null) - .getOrElse(false); - }))); - } - @Override public void onDisable() { shutdownDependencyInjection(); diff --git a/src/main/java/org/mvplugins/multiverse/signportals/NetherPortalsCompatibilty.java b/src/main/java/org/mvplugins/multiverse/signportals/NetherPortalsCompatibilty.java new file mode 100644 index 0000000..ad4294b --- /dev/null +++ b/src/main/java/org/mvplugins/multiverse/signportals/NetherPortalsCompatibilty.java @@ -0,0 +1,25 @@ +package org.mvplugins.multiverse.signportals; + +import com.dumptruckman.minecraft.util.Logging; +import org.bukkit.entity.Player; +import org.mvplugins.multiverse.external.vavr.control.Try; +import org.mvplugins.multiverse.netherportals.MultiverseNetherPortalsApi; +import org.mvplugins.multiverse.signportals.utils.PortalDetector; + +final class NetherPortalsCompatibilty { + + static void registerNetherPortalsHandleCheck(PortalDetector pd) { + MultiverseNetherPortalsApi.whenLoaded(api -> { + api.getCustomPortalsHandler().registerHandleCheck(((entity, portalLocation) -> { + if (!(entity instanceof Player player)) { + return false; + } + Logging.finer("Checking if player %s can use NetherPortals at %s", + player.getName(), portalLocation); + return Try.of(() -> pd.getNotchPortalDestination(player, portalLocation) != null) + .getOrElse(false); + })); + Logging.finer("Registered NetherPortals handle check with SignPortals."); + }); + } +}