diff --git a/build.gradle b/build.gradle index 52e183b..71c530d 100644 --- a/build.gradle +++ b/build.gradle @@ -17,7 +17,8 @@ configure(apiDependencies) { dependencies { // Core - externalPlugin 'org.mvplugins.multiverse.core:multiverse-core:5.0.0-SNAPSHOT' + externalPlugin 'org.mvplugins.multiverse.core:multiverse-core:5.0.0' + externalPlugin 'org.mvplugins.multiverse.netherportals:multiverse-netherportals:5.1.0-SNAPSHOT' // Utils shadowed('com.dumptruckman.minecraft:Logging:1.1.1') { diff --git a/src/main/java/org/mvplugins/multiverse/signportals/MultiverseSignPortals.java b/src/main/java/org/mvplugins/multiverse/signportals/MultiverseSignPortals.java index fc8d661..78ad970 100644 --- a/src/main/java/org/mvplugins/multiverse/signportals/MultiverseSignPortals.java +++ b/src/main/java/org/mvplugins/multiverse/signportals/MultiverseSignPortals.java @@ -8,12 +8,19 @@ 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; +import org.mvplugins.multiverse.core.utils.ReflectHelper; import org.mvplugins.multiverse.core.utils.StringFormatter; 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; import java.util.logging.Logger; @@ -22,6 +29,9 @@ public class MultiverseSignPortals extends MultiverseModule { private static final double TARGET_CORE_API_VERSION = 5.0; + @Inject + private Provider portalDetectorProvider; + /** This fires before I get Enabled. */ @Override public void onLoad() { @@ -34,11 +44,27 @@ public void onEnable() { initializeDependencyInjection(new MultiverseSignPortalsPluginBinder(this)); Logging.setDebugLevel(serviceLocator.getActiveService(CoreConfig.class).getGlobalDebug()); registerDynamicListeners(SignPortalsListener.class); + registerNetherPortalsHandleCheck(); 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.warning("Checking if player %s can use a portal at %s", player.getName(), portalLocation); + return Try.of(() -> portalDetectorProvider.get().getNotchPortalDestination(player, portalLocation) != null) + .getOrElse(false); + }))); + } + @Override public void onDisable() { shutdownDependencyInjection();