Jump to content

Bestimmte menge an Items auf Inventar entfernen


Recommended Posts

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

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 by Joey
vertippt
Link to comment
Share on other sites

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 account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

×
×
  • Create New...
B