Cancel inventory edits when editing is disabled, tweak listener logic for better compatibility

feat/data-edit-commands
William 3 years ago
parent b0363d10ed
commit 28c4cfb55f

@ -15,6 +15,7 @@ import org.bukkit.event.Listener;
import org.bukkit.event.block.BlockBreakEvent; import org.bukkit.event.block.BlockBreakEvent;
import org.bukkit.event.block.BlockPlaceEvent; import org.bukkit.event.block.BlockPlaceEvent;
import org.bukkit.event.entity.EntityPickupItemEvent; import org.bukkit.event.entity.EntityPickupItemEvent;
import org.bukkit.event.inventory.InventoryClickEvent;
import org.bukkit.event.inventory.InventoryCloseEvent; import org.bukkit.event.inventory.InventoryCloseEvent;
import org.bukkit.event.inventory.InventoryOpenEvent; import org.bukkit.event.inventory.InventoryOpenEvent;
import org.bukkit.event.player.PlayerDropItemEvent; import org.bukkit.event.player.PlayerDropItemEvent;
@ -36,12 +37,12 @@ public class BukkitEventListener extends EventListener implements Listener {
Bukkit.getServer().getPluginManager().registerEvents(this, huskSync); Bukkit.getServer().getPluginManager().registerEvents(this, huskSync);
} }
@EventHandler @EventHandler(priority = EventPriority.LOWEST)
public void onPlayerJoin(@NotNull PlayerJoinEvent event) { public void onPlayerJoin(@NotNull PlayerJoinEvent event) {
super.handlePlayerJoin(BukkitPlayer.adapt(event.getPlayer())); super.handlePlayerJoin(BukkitPlayer.adapt(event.getPlayer()));
} }
@EventHandler @EventHandler(priority = EventPriority.LOWEST)
public void onPlayerQuit(@NotNull PlayerQuitEvent event) { public void onPlayerQuit(@NotNull PlayerQuitEvent event) {
super.handlePlayerQuit(BukkitPlayer.adapt(event.getPlayer())); super.handlePlayerQuit(BukkitPlayer.adapt(event.getPlayer()));
} }
@ -77,12 +78,12 @@ public class BukkitEventListener extends EventListener implements Listener {
* Events to cancel if the player has not been set yet * Events to cancel if the player has not been set yet
*/ */
@EventHandler(priority = EventPriority.HIGHEST) @EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true)
public void onDropItem(@NotNull PlayerDropItemEvent event) { public void onDropItem(@NotNull PlayerDropItemEvent event) {
event.setCancelled(cancelPlayerEvent(BukkitPlayer.adapt(event.getPlayer()))); event.setCancelled(cancelPlayerEvent(BukkitPlayer.adapt(event.getPlayer())));
} }
@EventHandler(priority = EventPriority.HIGHEST) @EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true)
public void onPickupItem(@NotNull EntityPickupItemEvent event) { public void onPickupItem(@NotNull EntityPickupItemEvent event) {
if (event.getEntity() instanceof Player player) { if (event.getEntity() instanceof Player player) {
event.setCancelled(cancelPlayerEvent(BukkitPlayer.adapt(player))); event.setCancelled(cancelPlayerEvent(BukkitPlayer.adapt(player)));
@ -90,23 +91,29 @@ public class BukkitEventListener extends EventListener implements Listener {
} }
@EventHandler(priority = EventPriority.HIGHEST) @EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true)
public void onPlayerInteract(@NotNull PlayerInteractEvent event) { public void onPlayerInteract(@NotNull PlayerInteractEvent event) {
event.setCancelled(cancelPlayerEvent(BukkitPlayer.adapt(event.getPlayer()))); event.setCancelled(cancelPlayerEvent(BukkitPlayer.adapt(event.getPlayer())));
} }
@EventHandler(priority = EventPriority.HIGHEST) @EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true)
public void onBlockPlace(@NotNull BlockPlaceEvent event) { public void onBlockPlace(@NotNull BlockPlaceEvent event) {
event.setCancelled(cancelPlayerEvent(BukkitPlayer.adapt(event.getPlayer()))); event.setCancelled(cancelPlayerEvent(BukkitPlayer.adapt(event.getPlayer())));
} }
@EventHandler(priority = EventPriority.HIGHEST) @EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true)
public void onBlockBreak(@NotNull BlockBreakEvent event) { public void onBlockBreak(@NotNull BlockBreakEvent event) {
event.setCancelled(cancelPlayerEvent(BukkitPlayer.adapt(event.getPlayer()))); event.setCancelled(cancelPlayerEvent(BukkitPlayer.adapt(event.getPlayer())));
}
@EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true)
public void onInventoryClick(@NotNull InventoryClickEvent event) {
if (event.getWhoClicked() instanceof Player player) {
event.setCancelled(cancelInventoryClick(BukkitPlayer.adapt(player)));
}
} }
@EventHandler(priority = EventPriority.HIGHEST) @EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true)
public void onInventoryOpen(@NotNull InventoryOpenEvent event) { public void onInventoryOpen(@NotNull InventoryOpenEvent event) {
if (event.getPlayer() instanceof Player player) { if (event.getPlayer() instanceof Player player) {
event.setCancelled(cancelPlayerEvent(BukkitPlayer.adapt(player))); event.setCancelled(cancelPlayerEvent(BukkitPlayer.adapt(player)));

@ -65,7 +65,7 @@ public class DataEditor {
* @param user The online user with an inventory open to check * @param user The online user with an inventory open to check
* @return {@code true} if edits to the inventory or ender chest menu are allowed; {@code false} otherwise, including if they don't have an inventory open * @return {@code true} if edits to the inventory or ender chest menu are allowed; {@code false} otherwise, including if they don't have an inventory open
*/ */
public boolean cancelInventoryEdit(@NotNull OnlineUser user) { public boolean cancelMenuEdit(@NotNull OnlineUser user) {
if (this.openInventoryMenus.containsKey(user.uuid)) { if (this.openInventoryMenus.containsKey(user.uuid)) {
return !this.openInventoryMenus.get(user.uuid).canEdit; return !this.openInventoryMenus.get(user.uuid).canEdit;
} }

@ -165,11 +165,8 @@ public abstract class EventListener {
plugin.getDataEditor().closeInventoryMenu(user, menuInventory); plugin.getDataEditor().closeInventoryMenu(user, menuInventory);
} }
public final boolean cancelMenuClick(@NotNull OnlineUser user) { public final boolean cancelInventoryClick(@NotNull OnlineUser user) {
if (disabling) { return plugin.getDataEditor().cancelMenuEdit(user) || cancelPlayerEvent(user);
return true;
}
return plugin.getDataEditor().cancelInventoryEdit(user);
} }
public final boolean cancelPlayerEvent(@NotNull OnlineUser user) { public final boolean cancelPlayerEvent(@NotNull OnlineUser user) {

Loading…
Cancel
Save