ServerPlugin Trouble in MineVille Plugin: HashMaps Probleme

Dieses Thema im Forum "Programmierung" wurde erstellt von djslin99, 11. April 2013.

  1. djslin99
    Offline

    djslin99

    Registriert seit:
    3. Januar 2013
    Beiträge:
    5
    Minecraft:
    djslin99
    Hallo,
    ich bin dabei ein Trouble in MineVille Plugin zu programmieren.
    Ich habe nur ein Problem mit der Hashmap.
    Wenn ich die Spieler Nummer in der Konsole ausgeben will, steht null da. Woran liegt es?
    Vielen Dank im voraus,
    djslin99


    CODE: http://pastebin.com/b0Qk7KH1
     
    #1
  2. MiCrJonas
    Offline

    MiCrJonas

    Registriert seit:
    29. Oktober 2012
    Beiträge:
    1.069
    #2
  3. Du kannst schonmal anfangen die Player Objekte aus der HashMap zu entfernen und durch Strings zu ersetzen. Dann würde ich noch empfehlen Java zu lernen und dann erst ein Plugin zu schreiben.
     
    #3
  4. MrFlieder
    Offline

    MrFlieder

    Registriert seit:
    30. Dezember 2011
    Beiträge:
    333
    Ort:
    Österreich
    Minecraft:
    MrFlieder
    Du speicherst unter Variable 1 in der HashMap ein Spielerobjekt, versuchst allerdings, den Wert von Variable p in der HashMap auszulesen, welchen es nicht gibt, und deshalb null zurückgegeben wird.
     
    #4
  5. djslin99
    Offline

    djslin99

    Registriert seit:
    3. Januar 2013
    Beiträge:
    5
    Minecraft:
    djslin99
    Zu MiCrJonas1997: Dieses Plugin soll nur als unterspiel auf dem Server laufen, wie z.B. Survivalgames, und bei MineTopia muss man soweit ich gesehen habe, den ganzen Server für "opfern" und genau das soll nicht sein.
    Ich möchte auch ein wenig üben. Aber danke für die Antwort!

    Zu manf: Wenn ich alle Spieler als string abspeicher, müsste ich sie danach immer wieder in Player umwandeln. Und man muss nicht gleich so unfreundlich sein! (Falls du die ganzen Kommentare, die ich habe als "für Anfänger" bezeichnet, stimme ich dir nicht zu, das macht alles übersichtlicher)

    Zu MrFlieder: Als 1. Wert habe ich einen Integer und als 2. Wert Player. Unten habe ich beides ausprobiert (key und value) und beides geht nicht. Aber danke für die Antwort!


    Mfg,
    djslin99
     
    #5
  6. TimBone
    Online

    TimBone

    Manf, hat dich nicht als Anfänger eingestuft, weil du Kommentare machst. Lies nur seinen Post :p
     
    #6
  7. Ich war an keiner stelle unfreundlich. Deine Kommentare sind auch vollkommen in Ordnung, auch wenn ich diese Ansicht nicht teile. Dennoch kann ich dir gerne mehrere Fehler aufzeigen.

    Zum Beispiel:
    // Normalerweise sind nach den Konventionen die Variablen nur für die Klasse selber, also private, deklariert.
    public HashMap<Integer, Player> players = new HashMap<Integer, Player>();
    // Redundant, da players.size() sich auf eine leere HashMap bezieht. Davon mal abgesehen, dass diese normal klein geschrieben wird am anfang.
    int PlayerAnzahl = players.size();

    Nun zum Grund warum man NICHT die Spieler speichert, sondern deren Namen:
    Du verschwendest einfach unnötig viel Leistung, weil der GC ( Sollte dir als nicht Anfänger ja etwas sagen)
    dieses Objekt nicht freigeben kann. Joint nun ein der gleiche Spieler erneut gibt es ein neues Player Objekt und so weiter und so fort.

    Hier dein eigentlicher Fehler: get hohlt sich die Value über den Key nicht umgekehrt.
    System.out.println(p.getName() + " hat die Nummer " + players.get(p));
     
    #7
  8. LordGarmadonLP
    Offline

    LordGarmadonLP

    Registriert seit:
    15. August 2012
    Beiträge:
    6
    Manf er denkt halt anders als du xD
     
    #8