ServerHilfe Posted May 8, 2017 Share Posted May 8, 2017 Ich suche schon seit fast einer Woche nach einer Lösung.. Wie man eine bestimmte Menge an Items entfernen kann. Z.B 29 Diamanten. p.getInventory().remove(new ItemStack(org.bukkit.Material.GOLD_INGOT,29)); geht nicht, da dies nur funktioniert, wenn der ItemStack genau 29 hat.. Bei mehr funktioniert es nicht :/ Im Internet habe ich nur For schleifen gefunden die nicht Funktionieren. Wie mache ich das? Link to comment Share on other sites More sharing options...
Joey Posted May 8, 2017 Share Posted May 8, 2017 (edited) Ist evtl. ein bisschen unschön, da der Spieler die Sortierung der besagten Items verliert, allerdings währe das so mein erster Einfall: public boolean removeItem(Player p, int id, int amount){ int i = 0; for(ItemStack item : p.getInventory().getContents()){ //Geht alle Slots im Inventar durch if (!(item == null)){ //Ist in dem Slot ein Item? if (item.getType().getId() == id){ //Ist das Item das gefragte? i = i + item.getAmount(); //Hier speichern wir die komplette Anzahl der vorhandenen Items p.getInventory().remove(item); //Hier entfernen wir diese p.updateInventory(); } } }; if (i >= amount){ //Wenn genug Items vorhanden sind, geben wir dem Spieler die Differenz zurück p.getInventory().addItem(new ItemStack(Material.getMaterial(id), i-amount)); p.updateInventory(); return true; }else{ //Wenn nicht genügend Items vorhanden sind, geben wir dem Spieler seine Items wieder p.getInventory().addItem(new ItemStack(Material.getMaterial(id), i)); p.updateInventory(); } return false; } Funktioniert auch mit Werten über 64. Edited May 8, 2017 by Joey vertippt Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now