Extra sanity checks in shop trait

This commit is contained in:
fullwall 2024-09-17 02:19:31 +08:00
parent 7f9b4c629c
commit 00eef79dc9
2 changed files with 16 additions and 3 deletions

View File

@ -1000,11 +1000,15 @@ public class ShopTrait extends Trait {
@EventHandler @EventHandler
public void onInventoryClick(InventoryClickEvent evt) { public void onInventoryClick(InventoryClickEvent evt) {
if (!evt.getView().equals(view)) if (!evt.getView().equals(view) || evt.getSlotType() != SlotType.RESULT)
return;
if (evt.getSlotType() != SlotType.RESULT)
return; return;
evt.setCancelled(true); evt.setCancelled(true);
if (selectedTrade == -1)
return;
if (!trades.containsKey(selectedTrade)) {
Messaging.severe("Invalid trade selection", selectedTrade, "from", evt.getWhoClicked());
return;
}
if (!evt.getAction().name().contains("PICKUP") if (!evt.getAction().name().contains("PICKUP")
|| (evt.getCursor() != null && evt.getCursor().getType() != Material.AIR)) || (evt.getCursor() != null && evt.getCursor().getType() != Material.AIR))
return; return;

View File

@ -192,6 +192,14 @@ public class ItemAction extends NPCShopAction {
return true; return true;
} }
private void sanityCheck() {
if (metaFilter.size() > 0) {
for (ItemStack item : items) {
metaMatches(item, item, metaFilter);
}
}
}
private String stringify(ItemStack item) { private String stringify(ItemStack item) {
if (SUPPORT_TRANSLATABLE) { if (SUPPORT_TRANSLATABLE) {
return BukkitComponentSerializer.legacy().serialize(Component.text(item.getAmount() + " ") return BukkitComponentSerializer.legacy().serialize(Component.text(item.getAmount() + " ")
@ -311,6 +319,7 @@ public class ItemAction extends NPCShopAction {
} }
} }
base.items = items; base.items = items;
base.sanityCheck();
callback.accept(items.isEmpty() ? null : base); callback.accept(items.isEmpty() ? null : base);
} }
} }