From ed5aa1f4695c23c3da1d9eb2d3ae118d306e6b60 Mon Sep 17 00:00:00 2001 From: md678685 Date: Sat, 16 Sep 2017 15:23:56 +0100 Subject: [PATCH] Alter config options for EssentialsX Spawn listeners (#1491) * Add spawn-join-listener-priority setting * Make "none" an option for priority settings * Register each listener with separate priorities * Add note to spawn-join-listener priority Warns about effect on spawn-on-join --- .../com/earth2me/essentials/ISettings.java | 2 ++ .../src/com/earth2me/essentials/Settings.java | 19 +++++++++-- Essentials/src/config.yml | 7 ++++ .../essentials/spawn/EssentialsSpawn.java | 33 ++++++++++++------- 4 files changed, 46 insertions(+), 15 deletions(-) diff --git a/Essentials/src/com/earth2me/essentials/ISettings.java b/Essentials/src/com/earth2me/essentials/ISettings.java index 78a70e5df..8f6a3eaae 100644 --- a/Essentials/src/com/earth2me/essentials/ISettings.java +++ b/Essentials/src/com/earth2me/essentials/ISettings.java @@ -192,6 +192,8 @@ public interface ISettings extends IConf { EventPriority getRespawnPriority(); + EventPriority getSpawnJoinPriority(); + long getTpaAcceptCancellation(); long getTeleportInvulnerability(); diff --git a/Essentials/src/com/earth2me/essentials/Settings.java b/Essentials/src/com/earth2me/essentials/Settings.java index 0d58da16d..d924653d6 100644 --- a/Essentials/src/com/earth2me/essentials/Settings.java +++ b/Essentials/src/com/earth2me/essentials/Settings.java @@ -961,9 +961,10 @@ public class Settings implements net.ess3.api.ISettings { return config.getBoolean("disable-item-pickup-while-afk", false); } - @Override - public EventPriority getRespawnPriority() { - String priority = config.getString("respawn-listener-priority", "normal").toLowerCase(Locale.ENGLISH); + private EventPriority getPriority(String priority) { + if ("none".equals(priority)) { + return null; + } if ("lowest".equals(priority)) { return EventPriority.LOWEST; } @@ -982,6 +983,18 @@ public class Settings implements net.ess3.api.ISettings { return EventPriority.NORMAL; } + @Override + public EventPriority getRespawnPriority() { + String priority = config.getString("respawn-listener-priority", "normal").toLowerCase(Locale.ENGLISH); + return getPriority(priority); + } + + @Override + public EventPriority getSpawnJoinPriority() { + String priority = config.getString("spawn-join-listener-priority", "normal").toLowerCase(Locale.ENGLISH); + return getPriority(priority); + } + @Override public long getTpaAcceptCancellation() { return config.getLong("tpa-accept-cancellation", 120); diff --git a/Essentials/src/config.yml b/Essentials/src/config.yml index 12e720dc6..2614bc6c4 100644 --- a/Essentials/src/config.yml +++ b/Essentials/src/config.yml @@ -881,11 +881,18 @@ newbies: #kit: '' kit: tools +# What priority should we use for handling respawns? +# Set this to none, if you want vanilla respawning behaviour. # Set this to lowest, if you want Multiverse to handle the respawning. # Set this to high, if you want EssentialsSpawn to handle the respawning. # Set this to highest, if you want to force EssentialsSpawn to handle the respawning. respawn-listener-priority: high +# What priority should we use for handling spawning on joining the server? +# See respawn-listener-priority for possible values. +# Note: changing this may impact or break spawn-on-join functionality. +spawn-join-listener-priority: high + # When users die, should they respawn at their first home or bed, instead of the spawnpoint? respawn-at-home: false diff --git a/EssentialsSpawn/src/com/earth2me/essentials/spawn/EssentialsSpawn.java b/EssentialsSpawn/src/com/earth2me/essentials/spawn/EssentialsSpawn.java index 40ea6927c..0d592550a 100644 --- a/EssentialsSpawn/src/com/earth2me/essentials/spawn/EssentialsSpawn.java +++ b/EssentialsSpawn/src/com/earth2me/essentials/spawn/EssentialsSpawn.java @@ -7,6 +7,7 @@ import org.bukkit.command.Command; import org.bukkit.command.CommandSender; import org.bukkit.event.Event; import org.bukkit.event.EventException; +import org.bukkit.event.EventPriority; import org.bukkit.event.Listener; import org.bukkit.event.player.PlayerJoinEvent; import org.bukkit.event.player.PlayerRespawnEvent; @@ -41,18 +42,26 @@ public class EssentialsSpawn extends JavaPlugin implements IEssentialsSpawn { ess.addReloadListener(spawns); final EssentialsSpawnPlayerListener playerListener = new EssentialsSpawnPlayerListener(ess, spawns); - pluginManager.registerEvent(PlayerRespawnEvent.class, playerListener, ess.getSettings().getRespawnPriority(), new EventExecutor() { - @Override - public void execute(final Listener ll, final Event event) throws EventException { - ((EssentialsSpawnPlayerListener) ll).onPlayerRespawn((PlayerRespawnEvent) event); - } - }, this); - pluginManager.registerEvent(PlayerJoinEvent.class, playerListener, ess.getSettings().getRespawnPriority(), new EventExecutor() { - @Override - public void execute(final Listener ll, final Event event) throws EventException { - ((EssentialsSpawnPlayerListener) ll).onPlayerJoin((PlayerJoinEvent) event); - } - }, this); + + EventPriority respawnPriority = ess.getSettings().getRespawnPriority(); + if (respawnPriority != null) { + pluginManager.registerEvent(PlayerRespawnEvent.class, playerListener, respawnPriority, new EventExecutor() { + @Override + public void execute(final Listener ll, final Event event) throws EventException { + ((EssentialsSpawnPlayerListener) ll).onPlayerRespawn((PlayerRespawnEvent) event); + } + }, this); + } + + EventPriority joinPriority = ess.getSettings().getSpawnJoinPriority(); + if (joinPriority != null) { + pluginManager.registerEvent(PlayerJoinEvent.class, playerListener, joinPriority, new EventExecutor() { + @Override + public void execute(final Listener ll, final Event event) throws EventException { + ((EssentialsSpawnPlayerListener) ll).onPlayerJoin((PlayerJoinEvent) event); + } + }, this); + } } @Override