• Es freut uns dass du in unser Minecraft Forum gefunden hast. Hier kannst du mit über 130.000 Minecraft Fans über Minecraft diskutieren, Fragen stellen und anderen helfen. In diesem Minecraft Forum kannst du auch nach Teammitgliedern, Administratoren, Moderatoren , Supporter oder Sponsoren suchen. Gerne kannst du im Offtopic Bereich unseres Minecraft Forums auch über nicht Minecraft spezifische Themen reden. Wir hoffen dir gefällt es in unserem Minecraft Forum!

Spieler Location aus einer Hashmap

gmb32

Kuhfänger
Registriert
17 Juni 2014
Beiträge
84
Diamanten
0
Hey,
ich speichere Spieler Locations in eine Hashmap zusätzlich noch ihr Inventar. Bei einen bestimmten befehl will ich das alle Spieler zu Ihrem alten Platz mit ihren Inventar gehen.

Problem ist hier:

Javascript:
if(gericht.containsKey(p)) {
                            for(Player key : gericht.keySet()) {
                                Location loc = gericht.get(key);
                                key.teleport(loc);
                                if(key.hasMetadata("Angeklagter".toString())) {
                                    key.removeMetadata("Angeklagter", Main.getInstace());
                                }
                                gericht.remove(key);
                            }
                            for(Player p2 : items.keySet()) {
                                ItemStack[] contents = items.get(p2);
                                p2.getInventory().setContents(contents);
                                p2.updateInventory();
                                items.remove(p2);
                            }
                          
                            p.sendMessage(Main.getInstace().getPrefix()+"Der Gerichtsprozess wurde beendet!");
                            Bukkit.broadcastMessage(Main.getInstace().getPrefix()+"Das Gericht wurde §cgeschlossen!");
                            gerichtenable = false;
                        }else {
                            p.sendMessage(Main.getInstace().getPrefix()+"Du bist in keinem Gerichtsprozess");
                        }

Der Fehler kommt in der Zeile for(Player key : gericht.keySet()) {
 

SirYwell

PlotSquared Entwickler
Registriert
30 Juni 2017
Beiträge
540
Diamanten
488
Minecraft
SirYwell
Um dir produktiv helfen zu können, musst du ein wenig mehr an Informationen herausrücken.
1. Welcher Fehler tritt auf?
2. gericht ist vermutlich deine HashMap. So etwas bitte auch schreiben. Dann muss man als Leser nicht herausfinden, dass es eine HashMap bestehend aus Spielern und Locations ist.

So, nun zu meinen Vorschlägen:
Bau dir ein eigenes Objekt, das aus der UUID des Spielers, der Location und dem Inventar besteht. Wenn nun jemand vor Gericht kommt, kannst du ihn zu einer Liste oder einem Set hinzufügen. Somit musst du schon mal nicht zwei HashMaps anlegen. Mit der Stream API, die mit Java 8 kam, lässt sich die Liste auch bequem auf ein Objekt mit der UUID eines bestimmten Spielers untersucht werden.
 

BlackHole

Workaholic
Registriert
1 Juli 2012
Beiträge
752
Diamanten
0
Minecraft
BlackHole
Wobei das Pair Apache Commons 3 benötigen würde. Hier wäre auch eine einfache Klasse mit Feldern für Location und Inventar geeignet.

Du solltest dir auch überlegen, was passiert soll, wenn der beteiligten Spieler gerade offline ist.
 
Oben