From 1fb59f1721a5e6a0aa177c81d997e7891e53f15f Mon Sep 17 00:00:00 2001 From: Krakenied Date: Tue, 21 Mar 2023 01:47:00 +0100 Subject: Fix PlayerBlockTracker event calling order --- .../quests/bukkit/BukkitQuestsPlugin.java | 1 + .../AbstractPlayerBlockTrackerHook.java | 5 +++++ .../hook/playerblocktracker/PlayerBlockTrackerHook.java | 17 +++++++++++++++++ 3 files changed, 23 insertions(+) (limited to 'bukkit/src/main/java') 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(); + } } -- cgit v1.2.3-70-g09d2