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
public void onInventoryClick(InventoryClickEvent evt) {
if (!evt.getView().equals(view))
return;
if (evt.getSlotType() != SlotType.RESULT)
if (!evt.getView().equals(view) || evt.getSlotType() != SlotType.RESULT)
return;
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")
|| (evt.getCursor() != null && evt.getCursor().getType() != Material.AIR))
return;

View File

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