1. 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!

PlugIn Fragen zu ArrayList

Dieses Thema im Forum "Programmierung" wurde erstellt von Juliplayer00, 27. Oktober 2014.

Status des Themas:
Es sind keine weiteren Antworten möglich.

  1. Juliplayer00
    Offline

    Juliplayer00 Kuhfänger

    Registriert seit:
    30. November 2013
    Beiträge:
    54
    Geschlecht:
    männlich
    Minecraft:
    Juliplayer00
    Hallo zusammen,

    ich hab eine Frage zu den ArrayLists. Und zwar habe ich meine ArrayList in der Main wie folgt definiert:
    ArrayList<Player> team_blau = new ArrayList<Player>();

    An einer anderen Stelle füge ich einen Spieler der ArrayList hinzu:
    ... Player p = Player sender ...
    Main.team_blau.add(p);

    Nun möchte ich an einer anderen Stelle ALLE Spieler in dieser Arraylist zu einer bestimmten Position teleportieren.

    Meine Frage: Wie kriege ich ALLE Spieler der ArrayList in eine Variable, dass ich folgendes machen kann:
    p_blau.teleport(location);

    Danke schonmal für eure Antworten.

    Gruß
    Julian
     
  2. Thalion
    Offline

    Thalion Minecrafter

    Registriert seit:
    22. Juli 2014
    Beiträge:
    25
    Geschlecht:
    männlich
    Minecraft:
    Spartaner_v1
    Hallo Juliplayer,



    du kannst keine Arrays unter Bukkit teleportieren.

    Die schnellste möglichkeit wäre die List zu iterieren.

    Code (Text):
    1. Location loc;
    2.  
    3. for(Player p : team_blau){
    4.     p.teleport(loc);
    5. }
    6.  
    Nur als Tipp am Rande, Player zu "speichern" ist nicht gerade Leistungsschonend. Besser wäre, wenn du die Namen ( Strings ) bzw. zukünftig vllt. UUIDs zwischenspeicherst, und dann mit z.B: "Bukkit.getPlayerExact(String arg0);" arbeitest.



    Mit freundlichen Grüßen,

    Thalion
     
    Zuletzt bearbeitet: 27. Oktober 2014
  3. HardSoul
    Offline

    HardSoul Ehemaliges Teammitglied Ehem. Teammitglied

    Registriert seit:
    2. August 2012
    Beiträge:
    716
    Geschlecht:
    männlich
    Minecraft:
    Basti07711
    Du musst eine for-Schleife machen.
    Siehe:
    Code (Text):
    1. for(Player target : Main.team_blaau){
    2.    target.teleport(location);
    3. }
     
  4. Juliplayer00
    Offline

    Juliplayer00 Kuhfänger

    Registriert seit:
    30. November 2013
    Beiträge:
    54
    Geschlecht:
    männlich
    Minecraft:
    Juliplayer00
    Ok. Wenn ich das mache, werden die Spieler aber nicht an die Position geporter, sodern an eine Zufällige im Umkreis.

    Gruß
    Julian
     
  5. SasukeKawaii
    Offline

    SasukeKawaii Erzengel Ehem. Teammitglied

    Registriert seit:
    5. Januar 2014
    Beiträge:
    1.006
    Geschlecht:
    männlich
    Hallo @Juliplayer00 zeig uns doch mal bitte deinen gesamten Code auf pastebin.com oder in CODE Tags, damit wir effektiver Fehler suchen können. Außerdem wäre die latest.log praktisch.
     
  6. HardSoul
    Offline

    HardSoul Ehemaliges Teammitglied Ehem. Teammitglied

    Registriert seit:
    2. August 2012
    Beiträge:
    716
    Geschlecht:
    männlich
    Minecraft:
    Basti07711
    Nein werden sie nicht. Du musst die Location definieren mit dem hier z.B:
    Code (Text):
    1. Location loc = new Location(<Welt>, <x>, <y>, <z>);
    2.  
    Wenn du dann die for-Schleife nimmst, wird jeder Spieler einzeln aus der ArrayList() da hin teleportiert.
     
  7. Juliplayer00
    Offline

    Juliplayer00 Kuhfänger

    Registriert seit:
    30. November 2013
    Beiträge:
    54
    Geschlecht:
    männlich
    Minecraft:
    Juliplayer00
    Ok. Ich versuche nachher noch ne andere Methode und wenns dann immernoch nicht geht, schick ich euch den Code und den Loh.

    Gruß
    Julian
     
  8. MiCrJonas
    Offline

    MiCrJonas Enderdragonjäger

    Registriert seit:
    29. Oktober 2012
    Beiträge:
    1.065
    Geschlecht:
    männlich
    Falsch. Es wir nicht der komplette Spieler gespeichert, sondern nur eine Referenz zu dem Spieler, also die Adresse zum Speicherort des Spielerobjektes.
    Wenn wir schon bei Performance sind, dann möchte ich nur erwähnen, dass ein HashSet schneller ist, als eine ArrayList, zumindest, wenn du auch "Collection#contains()" benutzt, da bei dem HashSet, wie der Name schon sagt, ein Hashverfahren benutzt wird, bei dem es keine Rolle spielt, wie viele Spieler es gibt. Bei einer ArrayList wird jeder Index durchlaufen und geprüft, ob der Spieler, der vorhanden sein soll (oder auch nicht) gleich dem Spieler an dem Index ist. Das ganze hat also eine schlechtere Performance.
     
    • Gefällt mir Gefällt mir x 1
  9. Juliplayer00
    Offline

    Juliplayer00 Kuhfänger

    Registriert seit:
    30. November 2013
    Beiträge:
    54
    Geschlecht:
    männlich
    Minecraft:
    Juliplayer00
    So hat es jetzt funktioniert:

    List<String> playerlist = new ArrayList<String>();

    //add a Player ( z.B. )
    playerlist.add(p.getName());

    //remove a Player ( z.B. )
    playerlist.remove(p.getName());

    //iterieren ( z.B. )
    for(String pn : playerlist) {
    Bukkit.getPlayerExact(pn).teleport(location);
    }


    Gruß und Dank :)
    Julian
     
  10. matteoderva
    Offline

    matteoderva Ehem. Teammitglied Ehem. Teammitglied

    Registriert seit:
    8. November 2013
    Beiträge:
    148
    Geschlecht:
    männlich
    Minecraft:
    matteoderva
    -> Closed, siehe oben.
     
Status des Themas:
Es sind keine weiteren Antworten möglich.