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.BlockPlaceEvent;
import org.bukkit.event.entity.EntityPickupItemEvent;
import org.bukkit.event.inventory.InventoryClickEvent;
import org.bukkit.event.inventory.InventoryCloseEvent;
import org.bukkit.event.inventory.InventoryOpenEvent;
import org.bukkit.event.player.PlayerDropItemEvent;
@ -36,12 +37,12 @@ public class BukkitEventListener extends EventListener implements Listener {
Bukkit.getServer().getPluginManager().registerEvents(this, huskSync);
}
@EventHandler
@EventHandler(priority = EventPriority.LOWEST)
public void onPlayerJoin(@NotNull PlayerJoinEvent event) {
super.handlePlayerJoin(BukkitPlayer.adapt(event.getPlayer()));
}
@EventHandler
@EventHandler(priority = EventPriority.LOWEST)
public void onPlayerQuit(@NotNull PlayerQuitEvent event) {
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
*/
@EventHandler(priority = EventPriority.HIGHEST)
@EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true)
public void onDropItem(@NotNull PlayerDropItemEvent event) {
event.setCancelled(cancelPlayerEvent(BukkitPlayer.adapt(event.getPlayer())));
}
@EventHandler(priority = EventPriority.HIGHEST)
@EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true)
public void onPickupItem(@NotNull EntityPickupItemEvent event) {
if (event.getEntity() instanceof Player 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) {
event.setCancelled(cancelPlayerEvent(BukkitPlayer.adapt(event.getPlayer())));
}
@EventHandler(priority = EventPriority.HIGHEST)
@EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true)
public void onBlockPlace(@NotNull BlockPlaceEvent event) {
event.setCancelled(cancelPlayerEvent(BukkitPlayer.adapt(event.getPlayer())));
}
@EventHandler(priority = EventPriority.HIGHEST)
@EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true)
public void onBlockBreak(@NotNull BlockBreakEvent event) {
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) {
if (event.getPlayer() instanceof Player 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
* @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)) {
return !this.openInventoryMenus.get(user.uuid).canEdit;
}

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

Loading…
Cancel
Save