diff options
Diffstat (limited to 'bukkit/src/main')
3 files changed, 23 insertions, 0 deletions
diff --git a/bukkit/src/main/java/com/leonardobishop/quests/bukkit/BukkitQuestsPlugin.java b/bukkit/src/main/java/com/leonardobishop/quests/bukkit/BukkitQuestsPlugin.java index 633509a5..239e8c68 100644 --- a/bukkit/src/main/java/com/leonardobishop/quests/bukkit/BukkitQuestsPlugin.java +++ b/bukkit/src/main/java/com/leonardobishop/quests/bukkit/BukkitQuestsPlugin.java @@ -282,6 +282,7 @@ public class BukkitQuestsPlugin extends JavaPlugin implements Quests { } if (Bukkit.getPluginManager().isPluginEnabled("PlayerBlockTracker")) { this.playerBlockTrackerHook = new PlayerBlockTrackerHook(); + this.playerBlockTrackerHook.fixPlayerBlockTracker(); } taskTypeManager.registerTaskType(new MiningTaskType(this)); diff --git a/bukkit/src/main/java/com/leonardobishop/quests/bukkit/hook/playerblocktracker/AbstractPlayerBlockTrackerHook.java b/bukkit/src/main/java/com/leonardobishop/quests/bukkit/hook/playerblocktracker/AbstractPlayerBlockTrackerHook.java index 2e07316b..a3931390 100644 --- a/bukkit/src/main/java/com/leonardobishop/quests/bukkit/hook/playerblocktracker/AbstractPlayerBlockTrackerHook.java +++ b/bukkit/src/main/java/com/leonardobishop/quests/bukkit/hook/playerblocktracker/AbstractPlayerBlockTrackerHook.java @@ -12,4 +12,9 @@ public interface AbstractPlayerBlockTrackerHook { */ boolean checkBlock(Block block); + /** + * Changes PlayerBlockTracker listener to be called after the Quests' one is + */ + void fixPlayerBlockTracker(); + } diff --git a/bukkit/src/main/java/com/leonardobishop/quests/bukkit/hook/playerblocktracker/PlayerBlockTrackerHook.java b/bukkit/src/main/java/com/leonardobishop/quests/bukkit/hook/playerblocktracker/PlayerBlockTrackerHook.java index 34bf95af..0ab896b7 100644 --- a/bukkit/src/main/java/com/leonardobishop/quests/bukkit/hook/playerblocktracker/PlayerBlockTrackerHook.java +++ b/bukkit/src/main/java/com/leonardobishop/quests/bukkit/hook/playerblocktracker/PlayerBlockTrackerHook.java @@ -1,7 +1,11 @@ package com.leonardobishop.quests.bukkit.hook.playerblocktracker; import com.gestankbratwurst.playerblocktracker.PlayerBlockTracker; +import org.bukkit.Bukkit; import org.bukkit.block.Block; +import org.bukkit.event.HandlerList; +import org.bukkit.event.block.BlockBreakEvent; +import org.bukkit.plugin.RegisteredListener; public class PlayerBlockTrackerHook implements AbstractPlayerBlockTrackerHook { @@ -10,4 +14,17 @@ public class PlayerBlockTrackerHook implements AbstractPlayerBlockTrackerHook { return PlayerBlockTracker.isTracked(block); } + @Override + public void fixPlayerBlockTracker() { + PlayerBlockTracker playerBlockTracker = (PlayerBlockTracker) Bukkit.getPluginManager().getPlugin("PlayerBlockTracker"); + HandlerList handlerList = BlockBreakEvent.getHandlerList(); + RegisteredListener[] listeners = handlerList.getRegisteredListeners(); + for (RegisteredListener listener : listeners) { + if (listener.getPlugin() != playerBlockTracker) { + handlerList.unregister(listener); + handlerList.register(listener); + } + } + handlerList.bake(); + } } |
