Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,9 @@
import org.mvplugins.multiverse.core.config.CoreConfig;
import org.mvplugins.multiverse.core.destination.DestinationsProvider;
import org.mvplugins.multiverse.core.command.MVCommandManager;
import org.mvplugins.multiverse.core.dynamiclistener.DynamicListenerRegistration;
import org.mvplugins.multiverse.core.module.MultiverseModule;
import org.mvplugins.multiverse.core.utils.ReflectHelper;
import org.mvplugins.multiverse.core.utils.StringFormatter;
import org.mvplugins.multiverse.external.jakarta.inject.Inject;
import org.mvplugins.multiverse.external.jakarta.inject.Provider;
Expand Down Expand Up @@ -74,6 +76,8 @@ public class MultiversePortals extends MultiverseModule {
private Provider<BstatsMetricsConfigurator> metricsConfiguratorProvider;
@Inject
private Provider<ActionHandlerProvider> actionHandlerProvider;
@Inject
protected Provider<DynamicListenerRegistration> dynamicListenerRegistrationProvider;

private FileConfiguration MVPPortalConfig;
private WorldEditConnection worldEditConnection;
Expand Down Expand Up @@ -140,23 +144,23 @@ private boolean setupConfig() {
}

private void registerEvents() {
var pluginManager = getServer().getPluginManager();

Try.run(() -> serviceLocator.getAllServices(PortalsListener.class).forEach(
listener -> pluginManager.registerEvents(listener, this)))
.onFailure(e -> {
throw new RuntimeException("Failed to register listeners. Terminating...", e);
});
registerDynamicListeners(PortalsListener.class);
DynamicListenerRegistration dynamicListenerRegistration = dynamicListenerRegistrationProvider.get();
if (portalsConfigProvider.get().getTeleportVehicles()) {
pluginManager.registerEvents(serviceLocator.getService(MVPVehicleListener.class), this);
dynamicListenerRegistration.register(serviceLocator.getService(MVPVehicleListener.class), this);
}
if (portalsConfigProvider.get().getTeleportEntities()) {
pluginManager.registerEvents(serviceLocator.getService(MVPEntityPortalListener.class), this);
dynamicListenerRegistration.register(serviceLocator.getService(MVPEntityPortalListener.class), this);
}
if (portalsConfigProvider.get().getUseOnMove()) {
pluginManager.registerEvents(serviceLocator.getService(MVPPlayerMoveListener.class), this);
dynamicListenerRegistration.register(serviceLocator.getService(MVPPlayerMoveListener.class), this);
if (portalsConfigProvider.get().getTeleportEntities()) {
pluginManager.registerEvents(serviceLocator.getService(MVPEntityMoveListener.class), this);
dynamicListenerRegistration.register(serviceLocator.getService(MVPEntityMoveListener.class), this);
if (!ReflectHelper.hasClass("io.papermc.paper.event.entity.EntityMoveEvent")) {
Logging.warning("Teleporting entities on custom/empty fills without nether portals requires" +
"PaperMC to work. You may experience issues with entities not teleporting when using custom " +
"fills if you are not using PaperMC or a fork that includes the EntityMoveEvent.");
}
}
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,11 +8,13 @@
package org.mvplugins.multiverse.portals.listeners;

import org.bukkit.Material;
import org.bukkit.event.EventHandler;
import org.bukkit.event.EventPriority;
import org.bukkit.event.block.BlockFromToEvent;
import org.bukkit.event.block.BlockPhysicsEvent;

import org.mvplugins.multiverse.core.dynamiclistener.annotations.DefaultEventPriority;
import org.mvplugins.multiverse.core.dynamiclistener.annotations.EventMethod;
import org.mvplugins.multiverse.core.dynamiclistener.annotations.IgnoreIfCancelled;
import org.mvplugins.multiverse.external.jetbrains.annotations.NotNull;
import org.mvplugins.multiverse.external.jakarta.inject.Inject;
import org.jvnet.hk2.annotations.Service;
Expand All @@ -30,7 +32,8 @@ final class MVPBlockListener implements PortalsListener {
this.portalsConfig = portalsConfig;
}

@EventHandler(ignoreCancelled = true)
@EventMethod
@IgnoreIfCancelled
void blockPhysics(BlockPhysicsEvent event) {
if (event.getChangedType() == Material.NETHER_PORTAL || event.getBlock().getType() == Material.NETHER_PORTAL) {
if (portalManager.isPortal(event.getBlock().getLocation())) {
Expand All @@ -39,7 +42,9 @@ void blockPhysics(BlockPhysicsEvent event) {
}
}

@EventHandler(ignoreCancelled = true, priority = EventPriority.LOW)
@EventMethod
@IgnoreIfCancelled
@DefaultEventPriority(EventPriority.LOW)
void blockFromTo(BlockFromToEvent event) {
// The to block should never be null, but apparently it is sometimes...
if (event.getBlock() == null || event.getToBlock() == null) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@
import java.io.File;

import com.dumptruckman.minecraft.util.Logging;
import org.mvplugins.multiverse.core.dynamiclistener.annotations.EventMethod;
import org.mvplugins.multiverse.core.event.MVConfigReloadEvent;
import org.mvplugins.multiverse.core.event.MVDebugModeEvent;
import org.mvplugins.multiverse.core.event.MVDumpsDebugInfoEvent;
Expand All @@ -19,7 +20,6 @@
import org.jvnet.hk2.annotations.Service;
import org.mvplugins.multiverse.portals.MVPortal;
import org.bukkit.Location;
import org.bukkit.event.EventHandler;

import org.mvplugins.multiverse.portals.MultiversePortals;
import org.mvplugins.multiverse.portals.config.PortalsConfig;
Expand All @@ -42,8 +42,8 @@ final class MVPCoreListener implements PortalsListener {
* This method is called when Multiverse-Core wants to know what version we are.
* @param event The Version event.
*/
@EventHandler
public void dumpsDebugInfoRequest(MVDumpsDebugInfoEvent event) {
@EventMethod
void dumpsDebugInfoRequest(MVDumpsDebugInfoEvent event) {
event.appendDebugInfo(this.plugin.getVersionInfo());
File configFile = new File(this.plugin.getDataFolder(), "config.yml");
File portalsFile = new File(this.plugin.getDataFolder(), "portals.yml");
Expand All @@ -55,15 +55,15 @@ public void dumpsDebugInfoRequest(MVDumpsDebugInfoEvent event) {
* This method is called when Multiverse-Core wants to reload the configs.
* @param event The Config Reload event.
*/
@EventHandler
public void configReload(MVConfigReloadEvent event) {
@EventMethod
void configReload(MVConfigReloadEvent event) {
plugin.reloadConfigs();
event.addConfig("Multiverse-Portals - portals.yml");
event.addConfig("Multiverse-Portals - config.yml");
}

@EventHandler
public void debugModeChange(MVDebugModeEvent event) {
@EventMethod
void debugModeChange(MVDebugModeEvent event) {
Logging.setDebugLevel(event.getLevel());
}

Expand All @@ -72,8 +72,8 @@ public void debugModeChange(MVDebugModeEvent event) {
* It's used to handle the intriquite messiness of priority between MV plugins.
* @param event The PTP event.
*/
@EventHandler
public void portalTouchEvent(MVPlayerTouchedPortalEvent event) {
@EventMethod
void portalTouchEvent(MVPlayerTouchedPortalEvent event) {
Logging.finer("Found The TouchedPortal event.");
Location l = event.getBlockTouched();
if (!event.canUseThisPortal() || (!this.portalManager.isPortal(l))) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,17 +4,21 @@
import io.papermc.paper.event.entity.EntityMoveEvent;
import org.bukkit.Location;
import org.bukkit.entity.LivingEntity;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.jetbrains.annotations.ApiStatus;
import org.jvnet.hk2.annotations.Service;
import org.mvplugins.multiverse.core.dynamiclistener.DynamicListener;
import org.mvplugins.multiverse.core.dynamiclistener.EventRunnable;
import org.mvplugins.multiverse.core.dynamiclistener.annotations.EventClass;
import org.mvplugins.multiverse.core.dynamiclistener.annotations.IgnoreIfCancelled;
import org.mvplugins.multiverse.external.jakarta.inject.Inject;
import org.mvplugins.multiverse.external.jetbrains.annotations.NotNull;
import org.mvplugins.multiverse.portals.MVPortal;
import org.mvplugins.multiverse.portals.config.PortalsConfig;
import org.mvplugins.multiverse.portals.utils.PortalManager;

@ApiStatus.Internal
@Service
public final class MVPEntityMoveListener implements Listener {
public final class MVPEntityMoveListener implements DynamicListener {

private final PortalListenerHelper helper;
private final PortalManager portalManager;
Expand All @@ -29,24 +33,30 @@ public final class MVPEntityMoveListener implements Listener {
this.portalsConfig = portalsConfig;
}

@EventHandler(ignoreCancelled = true)
void entityMove(EntityMoveEvent event) {
if (helper.isWithinSameBlock(event.getFrom(), event.getTo())) {
return;
}

LivingEntity entity = event.getEntity();
Location location = entity.getLocation();

MVPortal portal = portalManager.getPortal(location);
if (portal == null
|| !portal.getTeleportNonPlayers()
|| (portalsConfig.getNetherAnimation() && !portal.isLegacyPortal())) {
return;
}

Logging.fine("[EntityMoveEvent] Portal action for entity: " + entity);
helper.stateSuccess(entity.getName(), portal.getName());
portal.runActionFor(entity);
@EventClass("io.papermc.paper.event.entity.EntityMoveEvent")
@IgnoreIfCancelled
EventRunnable<?> entityMove() {
return new EventRunnable<EntityMoveEvent>() {
@Override
public void onEvent(EntityMoveEvent event) {
if (helper.isWithinSameBlock(event.getFrom(), event.getTo())) {
return;
}

LivingEntity entity = event.getEntity();
Location location = entity.getLocation();

MVPortal portal = portalManager.getPortal(location);
if (portal == null
|| !portal.getTeleportNonPlayers()
|| (portalsConfig.getNetherAnimation() && !portal.isLegacyPortal())) {
return;
}

Logging.fine("[EntityMoveEvent] Portal action for entity: " + entity);
helper.stateSuccess(entity.getName(), portal.getName());
portal.runActionFor(entity);
}
};
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -3,19 +3,22 @@
import com.dumptruckman.minecraft.util.Logging;
import org.bukkit.Location;
import org.bukkit.entity.Entity;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.entity.EntityPortalEvent;
import org.jetbrains.annotations.ApiStatus;
import org.jvnet.hk2.annotations.Service;
import org.mvplugins.multiverse.core.dynamiclistener.DynamicListener;
import org.mvplugins.multiverse.core.dynamiclistener.annotations.EventMethod;
import org.mvplugins.multiverse.core.dynamiclistener.annotations.IgnoreIfCancelled;
import org.mvplugins.multiverse.core.teleportation.BlockSafety;
import org.mvplugins.multiverse.external.jakarta.inject.Inject;
import org.mvplugins.multiverse.external.jetbrains.annotations.NotNull;
import org.mvplugins.multiverse.portals.MVPortal;
import org.mvplugins.multiverse.portals.config.PortalsConfig;
import org.mvplugins.multiverse.portals.utils.PortalManager;

@ApiStatus.Internal
@Service
public final class MVPEntityPortalListener implements Listener {
public final class MVPEntityPortalListener implements DynamicListener {

private final PortalManager portalManager;
private final PortalsConfig portalsConfig;
Expand All @@ -33,7 +36,8 @@ public final class MVPEntityPortalListener implements Listener {
this.helper = helper;
}

@EventHandler(ignoreCancelled = true)
@EventMethod
@IgnoreIfCancelled
void entityPortal(EntityPortalEvent event) {
Entity entity = event.getEntity();
Location location = entity.getLocation();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,10 +8,9 @@
package org.mvplugins.multiverse.portals.listeners;

import com.dumptruckman.minecraft.util.Logging;
import org.mvplugins.multiverse.core.teleportation.BlockSafety;
import org.mvplugins.multiverse.core.dynamiclistener.annotations.DefaultEventPriority;
import org.mvplugins.multiverse.core.dynamiclistener.annotations.EventMethod;
import org.mvplugins.multiverse.core.teleportation.LocationManipulation;
import org.mvplugins.multiverse.core.destination.DestinationInstance;
import org.mvplugins.multiverse.core.economy.MVEconomist;
import org.mvplugins.multiverse.core.world.LoadedMultiverseWorld;
import org.mvplugins.multiverse.core.world.WorldManager;
import org.mvplugins.multiverse.external.jakarta.inject.Inject;
Expand All @@ -22,22 +21,17 @@
import org.mvplugins.multiverse.portals.PortalPlayerSession;
import org.mvplugins.multiverse.portals.WorldEditConnection;
import org.mvplugins.multiverse.portals.config.PortalsConfig;
import org.mvplugins.multiverse.portals.event.MVPortalEvent;
import org.mvplugins.multiverse.portals.utils.PortalFiller;
import org.mvplugins.multiverse.portals.utils.PortalManager;
import org.bukkit.ChatColor;
import org.bukkit.Location;
import org.bukkit.Material;
import org.bukkit.block.Block;
import org.bukkit.block.BlockFace;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.EventPriority;
import org.bukkit.event.block.Action;
import org.bukkit.event.player.PlayerBucketEmptyEvent;
import org.bukkit.event.player.PlayerBucketFillEvent;
import org.bukkit.event.player.PlayerInteractEvent;
import org.bukkit.event.player.PlayerPortalEvent;
import org.bukkit.event.player.PlayerQuitEvent;
import org.bukkit.event.player.PlayerTeleportEvent;
import org.bukkit.inventory.EquipmentSlot;
Expand Down Expand Up @@ -68,12 +62,13 @@ final class MVPPlayerListener implements PortalsListener {
this.worldManager = worldManager;
}

@EventHandler
@EventMethod
void playerQuit(PlayerQuitEvent event) {
this.plugin.destroyPortalSession(event.getPlayer());
}

@EventHandler(priority = EventPriority.MONITOR)
@EventMethod
@DefaultEventPriority(EventPriority.MONITOR)
void playerTeleport(PlayerTeleportEvent event) {
if (event.isCancelled()) {
Logging.fine("The PlayerTeleportEvent was already cancelled. Doing nothing.");
Expand All @@ -83,7 +78,8 @@ void playerTeleport(PlayerTeleportEvent event) {
ps.playerDidTeleport(event.getTo());
}

@EventHandler(priority = EventPriority.LOW)
@EventMethod
@DefaultEventPriority(EventPriority.LOW)
void playerBucketFill(PlayerBucketFillEvent event) {
if (event.isCancelled()) {
Logging.fine("The PlayerBucketFillEvent was already cancelled. Doing nothing.");
Expand Down Expand Up @@ -112,7 +108,8 @@ void playerBucketFill(PlayerBucketFillEvent event) {
event.getPlayer());
}

@EventHandler(priority = EventPriority.LOW)
@EventMethod
@DefaultEventPriority(EventPriority.LOW)
void playerBucketEmpty(PlayerBucketEmptyEvent event) {
if (event.isCancelled()) {
Logging.fine("The PlayerBucketEmptyEvent was already cancelled. Doing nothing.");
Expand Down Expand Up @@ -153,7 +150,8 @@ void playerBucketEmpty(PlayerBucketEmptyEvent event) {
this.filler.fillRegion(portal.getPortalLocation().getRegion(), translatedLocation, fillMaterial, event.getPlayer());
}

@EventHandler(priority = EventPriority.LOW)
@EventMethod
@DefaultEventPriority(EventPriority.LOW)
void playerInteract(PlayerInteractEvent event) {
if (event.isCancelled()) {
Logging.fine("The PlayerInteractEvent was already cancelled. Doing nothing.");
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,11 @@
package org.mvplugins.multiverse.portals.listeners;

import com.dumptruckman.minecraft.util.Logging;
import org.bukkit.event.Listener;
import org.jetbrains.annotations.ApiStatus;
import org.mvplugins.multiverse.core.dynamiclistener.DynamicListener;
import org.mvplugins.multiverse.core.dynamiclistener.annotations.DefaultEventPriority;
import org.mvplugins.multiverse.core.dynamiclistener.annotations.EventMethod;
import org.mvplugins.multiverse.core.dynamiclistener.annotations.IgnoreIfCancelled;
import org.mvplugins.multiverse.external.jakarta.inject.Inject;
import org.mvplugins.multiverse.external.jetbrains.annotations.NotNull;
import org.jvnet.hk2.annotations.Service;
Expand All @@ -21,12 +25,12 @@
import org.bukkit.ChatColor;
import org.bukkit.Location;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.EventPriority;
import org.bukkit.event.player.PlayerMoveEvent;

@ApiStatus.Internal
@Service
public final class MVPPlayerMoveListener implements Listener {
public final class MVPPlayerMoveListener implements DynamicListener {

private final MultiversePortals plugin;
private final PortalsConfig portalsConfig;
Expand All @@ -42,7 +46,9 @@ public final class MVPPlayerMoveListener implements Listener {
this.helper = helper;
}

@EventHandler(ignoreCancelled = true, priority = EventPriority.LOW)
@EventMethod
@IgnoreIfCancelled
@DefaultEventPriority(EventPriority.LOW)
void playerMove(PlayerMoveEvent event) {
Player player = event.getPlayer(); // Grab Player
Location loc = player.getLocation(); // Grab Location
Expand Down
Loading
Loading