From e0ad361c8ba8cf12d0881e2871ae4b8823dab21c Mon Sep 17 00:00:00 2001 From: tastybento Date: Tue, 28 May 2019 23:27:35 -0700 Subject: [PATCH] Change for where server does not have EpicSpawners installed. https://github.com/BentoBoxWorld/addon-limits/issues/20 --- .../java/bentobox/addon/limits/Limits.java | 8 +++++ .../limits/listeners/BlockLimitsListener.java | 10 +----- .../listeners/EpicSpawnersListener.java | 33 +++++++++++++++++++ 3 files changed, 42 insertions(+), 9 deletions(-) create mode 100644 src/main/java/bentobox/addon/limits/listeners/EpicSpawnersListener.java diff --git a/src/main/java/bentobox/addon/limits/Limits.java b/src/main/java/bentobox/addon/limits/Limits.java index 8064fef..a2b62ed 100644 --- a/src/main/java/bentobox/addon/limits/Limits.java +++ b/src/main/java/bentobox/addon/limits/Limits.java @@ -3,12 +3,14 @@ package bentobox.addon.limits; import java.util.List; import java.util.stream.Collectors; +import org.bukkit.Bukkit; import org.bukkit.World; import bentobox.addon.limits.commands.AdminCommand; import bentobox.addon.limits.commands.PlayerCommand; import bentobox.addon.limits.listeners.BlockLimitsListener; import bentobox.addon.limits.listeners.EntityLimitListener; +import bentobox.addon.limits.listeners.EpicSpawnersListener; import bentobox.addon.limits.listeners.JoinListener; import world.bentobox.bentobox.api.addons.Addon; import world.bentobox.bentobox.api.addons.GameModeAddon; @@ -55,6 +57,12 @@ public class Limits extends Addon { registerListener(blockLimitListener); registerListener(new JoinListener(this)); registerListener(new EntityLimitListener(this)); + // Register epic spawners one tick after load + Bukkit.getScheduler().runTask(getPlugin(), () -> { + if (Bukkit.getServer().getPluginManager().getPlugin("EpicSpawners") != null) { + registerListener(new EpicSpawnersListener(this)); + } + }); // Done } diff --git a/src/main/java/bentobox/addon/limits/listeners/BlockLimitsListener.java b/src/main/java/bentobox/addon/limits/listeners/BlockLimitsListener.java index 659c60b..f6067e5 100644 --- a/src/main/java/bentobox/addon/limits/listeners/BlockLimitsListener.java +++ b/src/main/java/bentobox/addon/limits/listeners/BlockLimitsListener.java @@ -40,8 +40,6 @@ import world.bentobox.bentobox.api.user.User; import world.bentobox.bentobox.database.Database; import world.bentobox.bentobox.util.Util; -import com.songoda.epicspawners.api.events.SpawnerBreakEvent; - /** * @author tastybento * @@ -148,13 +146,7 @@ public class BlockLimitsListener implements Listener { handleBreak(e, e.getPlayer(), e.getBlock()); } - @EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true) - public void onBlockBreak(SpawnerBreakEvent e) { - Block b = e.getSpawner().getLocation().getBlock(); - handleBreak(e, e.getPlayer(), b); - } - - private void handleBreak(Cancellable e, Player player, Block b) { + void handleBreak(Cancellable e, Player player, Block b) { notify(e, User.getInstance(player), process(b, false), b.getType()); // Player breaks a block and there was a redstone dust/repeater/... above if (b.getRelative(BlockFace.UP).getType() == Material.REDSTONE_WIRE || b.getRelative(BlockFace.UP).getType() == Material.REPEATER || b.getRelative(BlockFace.UP).getType() == Material.COMPARATOR || b.getRelative(BlockFace.UP).getType() == Material.REDSTONE_TORCH) { diff --git a/src/main/java/bentobox/addon/limits/listeners/EpicSpawnersListener.java b/src/main/java/bentobox/addon/limits/listeners/EpicSpawnersListener.java new file mode 100644 index 0000000..9d22c5d --- /dev/null +++ b/src/main/java/bentobox/addon/limits/listeners/EpicSpawnersListener.java @@ -0,0 +1,33 @@ +package bentobox.addon.limits.listeners; + +import org.bukkit.block.Block; +import org.bukkit.event.EventHandler; +import org.bukkit.event.EventPriority; +import org.bukkit.event.Listener; + +import com.songoda.epicspawners.api.events.SpawnerBreakEvent; + +import bentobox.addon.limits.Limits; + +/** + * @author tastybento + * + */ +public class EpicSpawnersListener implements Listener { + + Limits addon; + + /** + * @param addon + */ + public EpicSpawnersListener(Limits addon) { + this.addon = addon; + } + + @EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true) + public void onBlockBreak(SpawnerBreakEvent e) { + Block b = e.getSpawner().getLocation().getBlock(); + addon.getBlockLimitListener().handleBreak(e, e.getPlayer(), b); + } + +}