Ich hab diese kleine Methode geschrieben um eine bestimmte Anzahl an Items aus einem Inventar zu entfernen (für ein ShopSystem). Das funktioniert auch so weit, biss man zwei- (oder mehrmals) den selben Stack im Inventar hat (z.B. 64 + 64 oder 32 + 32 + 32). Dann werden direkt alle gleichen Stacks entfernt, obwohl ich nur einen entfernen will. (-> Amount)
Vielen Dank schon mal im Voraus!
Code:
public static void removeInventoryItems(Inventory inv, Material type, int amount) {
for (ItemStack is : inv.getContents()) {
if (is != null && is.getType() == type) {
int newamount = is.getAmount() - amount;
if (newamount > 0) {
is.setAmount(newamount);
break;
} else {
inv.remove(is);
amount = -newamount;
if (amount == 0)
break;
}
}
}
}
Vielen Dank schon mal im Voraus!