I have a struggle when i try to remove a gold ingot from the chest inventory when a player clicks on it. It doesn't remove the gold when a player clicks on it but it i get the message that i received gold and it got added to the database
Java:
@EventHandler
public void onInventoryClick(InventoryTransactionEvent event) {
Player player = event.getTransaction().getSource();
for (InventoryAction action : event.getTransaction().getActions()) {
if (action instanceof SlotChangeAction) {
SlotChangeAction slotAction = (SlotChangeAction) action;
Item clickedItem = slotAction.getTargetItem();
if (!clickedItem.isNull() && clickedItem.getId() == Item.GOLD_INGOT && "§650 Gold".equals(clickedItem.getCustomName())) {
Inventory inventory = slotAction.getInventory();
int slot = slotAction.getSlot();
// Annuleer eerst de transactie
event.setCancelled(true);
// Verwijder item 1 tick later om Nukkit's interne transactieproces niet te verstoren
plugin.getServer().getScheduler().scheduleDelayedTask(plugin, new Task() {
@Override
public void onRun(int currentTick) {
inventory.setItem(slot, Item.get(Item.AIR));
}
}, 1);
// Beloning geven
if (plugin.getConfig().getBoolean("mysql", false)) {
updateGoldInMySQL(player, 50);
} else {
updateGoldInYML(player, 50);
}
player.sendMessage("§6You found §650 gold§6 by clicking it!");
break;
}
}
}
}