• 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!

Koordinaten von Spielern speichern

Minecraft Version
Java

Dino172

Redstoneengineer
Registriert
1 Februar 2015
Beiträge
30
Diamanten
0
Moin!

Ich möchte gerne ein Plugin schreiben, dass die Koordinaten von Spielern speichern kann, zumindest solange man auf dem Server ist

Folgende Ausgangssituation:

Code:
 public boolean onCommand(CommandSender cs, Command c, String s, String[] args) {

        Player p = (Player) cs;


        if (s.equalsIgnoreCase("pos")) {
            if (args.length == 0) {
                p.sendMessage(ChatColor.RED + "Zu wenig Argumente");

            } else {
                if (args[0].equalsIgnoreCase("list")) {
                    p.sendMessage("hex");
                } else {
                    p.sendMessage(ChatColor.BLUE + args[0] + " wurde gespeichert: " + p.getLocation().getBlockX() + ", " + p.getLocation().getBlockY() + ", " + p.getLocation().getBlockZ());
                    
                }
            }
        }

        return false;


Mit dem Code schaffe ich es, dass wenn ein Spieler /pos (name) eingibt im Chat für ihn steht wo die Position ist.
Nun würde ich aber gerne mit /pos list (nicht wundern: die nachricht hex war nur zum ausprobieren) diese Coordinaten aufgelistet haben.
 

TrinityX

Redstoneengineer
Registriert
17 Mai 2020
Beiträge
47
Alter
19
Diamanten
137
Minecraft
NichtTrinity
Guten Morgen @Dino172 ,

Nun gut, zunächst einmal eine HashMap kann Wertepaare speichern.
Zu beachten ist hierbei, dass die Werte, die du in diese HashMap einträgst nur solange da sind, wie auch dein Server läuft. Sobald diese gestoppt wird, sind diese Daten weg.
Möchtest du nun dauerhaft Daten speichern musst du diese bspw. in eine Datenbank speichern oder noch simpler in einer Datei, die lokal gespeichert wird.

Jetzt wäre es wichtig zu wissen, ob du jeweils nur eine Location für den Spieler speichern möchtest oder mehrere.
Als nächstes ob diese Werte dann dauerhaft gespeichert werden sollen oder nicht.
Und eine weitere Sache, die mich persönlich noch interessiert, wie sieht es mit deinen Java Kenntnissen aus?

Liebe Grüße,
Trinity
 

Dino172

Redstoneengineer
Registriert
1 Februar 2015
Beiträge
30
Diamanten
0
Moin @TrinityX !

Folgendes möchte ich erreichen:
Ein Spieler kann /pos (name) eingeben und die Koordinaten können dann mit /pos list von allen spielern eingesehen werden. Ein Spieler sollte allerdings den Befehl mehrmals ausführen können und mehrere Koordinaten speichern

Die Daten sollen allerdings nur temporär gespeichert werden. Bei einem Server restart sollen sie sich nicht speichern.

Meine Java Kenntnisse belaufen sich in dem Grundlagen Bereich. Ich kenn mich beim Aufbau aus, Methoden, Attribute etc und die einfachen Befehele, wie if, while etc.
In der Spigot Umgebung bin ich eher neuer. Trotzdem habe ich das Grundlegende, wie man ein Command oder einfache Events macht verstanden
 

TrinityX

Redstoneengineer
Registriert
17 Mai 2020
Beiträge
47
Alter
19
Diamanten
137
Minecraft
NichtTrinity
Okay gut, ich hoffe mal ich hab jetzt alles richtig verstanden.

Da die Daten nicht permanent gespeichert werden sollen wird das nun etwas einfacher.
Du meintest, dass alle Spieler die eingetragenen Koordinaten mit /pos list sehen können, heißt also wir müssen die gespeicherten Locations nicht mit einem Spieler in Bezug bringen. Das einfachste wäre hier den Namen als String in die Hashmap einzutragen und dazu noch die Location.
Java:
private final HashMap<String, Location> hashMap = new HashMap<>();
Damit hätten wir schonmal unsere HashMap. Nun müssen wir noch Werte eintragen und auslesen.
Java:
hashMap.put(name, location); //Wert eintragen

hashMap.get(name); //Wert auslesen
Nun da wir wissen wie wir etwas in die HashMap eintragen und auslesen wollen wir auch noch alle Werte anzeigen wenn ein Spieler /pos list ausführt. Dafür verwenden wir jetzt eine for-Schleife um durch alle Keys der HashMap zu iterieren. In unserem Fall ist der Key ein String und enthält den Namen für die Location.
Java:
for (String name : hashMap.keySet()) {
    Location location = hashMap.get(name); //Gibt uns die Location, die mit dem jeweiligen Key assoziert ist
    
    //Hier nur noch dem Spieler den Namen in Kombination mit den Koordinaten der Location senden und fertig.
}
Ich hoffe mal, dass ich das relativ Anfängerfreundlich rüber gebracht hab, falls nicht, darfst du gerne nachfragen.

Liebe Grüße,
Trinity
 
Oben