Frage von ZombiemamLP, 46

Testen ob ein Spieler mindestens die Anzahl x eines Items im Inventar hat?

Hey liebe Community!

Ich brauche für mein Shop System nun den Kauf Mechanismus, leider scheitert es aber an der Überprüfung der Item Menge. Man bekommt das Item nämlich nur wenn man genau die angegebene Anzahl von z.B. Bronze hat. Ich komme aber nicht dahinter, wie man das leicht lösen könnte. Ich hoffe jemand kann mir helfen! Hier noch ein Teil der Shop Klasse:

http://hastebin.com/unixipatoz.java

MFG

Zombie

Antwort
von DexterNemrod, 17

Zum Überprüfen kannst du dir die Methode "containsAtLeast" ( https://hub.spigotmc.org/javadocs/bukkit/org/bukkit/inventory/Inventory.html#con...(org.bukkit.inventory.ItemStack,%20int) )  verwenden.

Allerdings musst du das Entfernen der Items selbst realisieren. Dazu kannst du über die ItemStacks die sich im Inventar befinden iterieren und so lange Stacks entfernen / in der Anzahl reduzieren bis du genug Materialien entfernt hast.

Code ist grob aus dem Gedächtnis zusammengepuzzelt, dient mehr dazu das Vorgehen zu illustrieren.

Material waehrung = ...;
int zuBezahlen = ...;

for (ItemStack stack : inventar) {
if (waehrung.equals(stack.getType())) {
if (stack.getAmount() <= zuBezahlen) {
zuBezahlen -= stack.getAmount();
inventar.remove(stack);
  } else {
stack.setAmount(stack.getAmount - zuBezahlen);
zuBezahlen = 0;
}
if (zuBezahlen == 0) break;
}
}
Kommentar von ZombiemamLP ,

Dankeschön für die Antwort, endlich mal jemand der was weiß :c 

Kommentar von DexterNemrod ,

"Endlich mal" - du hast grad mal ne halbe Stunde warten müssen auf die Hilfe, die du völlig kostenlos erhalten hast. Da brauchst du nicht mit "endlich mal" zu kommen. Niemand hier ist verpflichtet, dir zu helfen und selbst wenn niemand dir eine Lösung serviert hat, brauchst du diejenigen die einen Teil ihrer Zeit geopfert haben, um dir einen Hinweis in die richtige Richtung zu geben jetzt nicht auf diese Weise abzukanzeln.

Überdenk mal deine Anspruchshaltung mein Freund...

Kommentar von MagicPhoenixTv ,

Ähm @DexterNemrod ich bin mir nicht sicher ob mit "Endlich mal" die Zeit die inzwischen vergangen ist gemeint wurde, sondern ich glaube das er eher schon andere Fragen gestellt hat und keine Guten Antworten erhalten hat. Und das dann so auf die Art meint dass er froh ist das er mal eine Gute Antwort bekommen hat :)

Kommentar von DexterNemrod ,

So oder so, wenn ich oder andere Freizeit investieren um anderen zu helfen, reagiere ich übermäßig allergisch auf phrasen wie "endlich" "wenigstens" sowie deren äquivalente :D

Manchmal manifestiert sich das so, dass ich im Stil eines überkochenden Teekessels kurz rante, und danach ist alles wieder in Ordnung :^)

Kommentar von ZombiemamLP ,

@DexterNemrod Die Variante von MagicPhoenixTv stimmt, das letzte mal als ich eine Frage zu einem etwas anderem Thema gestellt habe, habe ich die Antwort bekommen ich solle das doch mit Command Blocks machen.. Ist nicht so hilfreich wie deine Antwort, und ich bedanke mich nochmals bei dir :) Allgemein bekommt man hier nur Antworten, wenn grade jemand da ist der sich mit dem Thema gut auskennt (da habe ich großes Glück gehabt).


EDIT: Ich betone nochmal "jemand der sich gut auskennt" :P nur so..

Antwort
von Cainer, 29

Ich bin mir nicht sicher, aber ich glaube es gibt eine Methode namens deinItemStack#getAmount

Kommentar von ZombiemamLP ,

Hmm... es ist aber anscheinend nicht möglich zu testen ob ein Spieler ein Minimum an Items hat ich kann nur testen ob ein Spieler eine bestimmte anzahl hat, oder finde ich da etwas nicht?

Kommentar von Atomtoasty ,

Du kannst dich '<|>' nutzen

Kommentar von ZombiemamLP ,

http://hastebin.com/aduyumesiq.java Kannst du mir bitte sagen wie ich das dort einbauen soll? :3 < oder > bringen mir grade herzlich wenig wenn ich den ItemStack im Inventar des Spielers nicht habe.

Keine passende Antwort gefunden?

Fragen Sie die Community