Jump to content

Recommended Posts

Posted

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?

Posted (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 by Joey
vertippt

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
×
×
  • Create New...
B
B