String zu ItemStack konventieren

Dieses Thema im Forum "Programmierung" wurde erstellt von delta242, 17. Januar 2013.

  1. delta242
    Offline

    delta242

    Registriert seit:
    28. Mai 2012
    Beiträge:
    90
    Hey,
    grad so ein wenig mit Bukkit rumprogrammiert und hatte die Idee, dass ein Spieler so was wie /inv speichern eingeben kann, sich dann sein inventar löscht und sich player.getInventory().getContents() in die Config reinschreibt. Wenn der Spieler nun /inv laden eingibt, bekommt der Spieler die Items, die in der config gespeichert sind.

    Die Contents in die Config reinspeichern funktioniert ja ganz einfach mit this.getConfig().set("inventar", p.getInventory().getContents().toString()); Allerdings das laden geht nicht, da inventar ja ein String und kein ItemStack[] ist. Somit kann man nicht die Methode p.getInventory().setContents(inventar) nicht aufrufen.

    Dem String ItemStack casten geht auch nicht.

    Weiss jemand, wie man aus einem String wieder ein ItemStack machen kann?

    MfG,
    delta242.
     
    #1
  2. Dean
    Offline

    Dean Administrator Entwickler

    Registriert seit:
    11. August 2011
    Beiträge:
    2.109
    Ort:
    NRW
    Minecraft:
    DeanR
    MOVED

    *10Zeichen*
     
    #2
  3. Benni1000
    Offline

    Benni1000 Ehem. Teammitglied

    Registriert seit:
    4. Mai 2012
    Beiträge:
    1.408
    Ich würde das ganz anders machen.
    Laufe mit einer Schleife das Inventar durch.
    Jetzt Speicherst du die werte die du bekommst folgendermaßen ab:
    ITEMID-DAMAGE-ANZAHL
    z.b.
    Dann hast du alle items in dem format abgespeichert.
    Jetzt kannst du wenn du die Datei einliest alle Items wieder in einen Itemstack zurückverwandeln,
    indem du an den - zeichen den string splittest und so die abgespeicherten Werte zurückerhälst.
    Oder du machst das ganze mit einer Datenbank was sinnvoller wäre.
    Um einen ItemStack zu erzeugen kannst du das hier machen:
    Code (Text):
    1.  
    2. [TABLE="class: memname"]
    3. [TR]
    4. [/TR]
    5. [TR]
    6. [TD]ItemStack[/TD]
    7. [TD]([/TD]
    8. [TD="class: paramtype"]final int[/TD]
    9. [TD="class: paramname"][I]type[/I],[/TD]
    10. [/TR]
    11. [TR]
    12. [TD="class: paramkey, align: right"][/TD]
    13. [TD][/TD]
    14. [TD="class: paramtype"]final int[/TD]
    15. [TD="class: paramname"][I]amount[/I],[/TD]
    16. [/TR]
    17. [TR]
    18. [TD="class: paramkey, align: right"][/TD]
    19. [TD][/TD]
    20. [TD="class: paramtype"]final short[/TD]
    21. [TD="class: paramname"][I]damage[/I][/TD]
    22. [/TR]
    23. [TR]
    24. [TD][/TD]
    25. [TD])[/TD]
    26. [/TR]
    27. [/TABLE]
    28.  
    Jetzt kannst du die Itemstacks einzeln in das inventar zurücklegen.
     
    #3
  4. MrFlieder
    Offline

    MrFlieder

    Registriert seit:
    30. Dezember 2011
    Beiträge:
    333
    Ort:
    Österreich
    Minecraft:
    MrFlieder
    Wenn du das ganze aus der config.yml ausliest, kannst du auch verwenden:

    Code (Text):
    1.  
    2. ItemStack item = getConfig().getItemStack("Pfad");
    3.  
     
    #4
  5. Calenria
    Offline

    Calenria

    Registriert seit:
    28. Juli 2012
    Beiträge:
    387
    Minecraft:
    Calenria
    Denk daran Bücher, Verzauberung und Gefärbte/Umbenannte Items mit zu speichern. Oder Funktioniert das mittlerweile mit einem Serialisierten ItemStack, ich glaub nicht oder?
     
    #5
  6. Benni1000
    Offline

    Benni1000 Ehem. Teammitglied

    Registriert seit:
    4. Mai 2012
    Beiträge:
    1.408
    Bücher sind sogar nochmal extra problematisch.
    Ich habe schonmal Bücher abgespeichert und es war nicht lustig.
    Hier kann man sich anschauen wie ich das damals gemacht habe:
    http://benni1000.eu/plugins/BookShelf/BookShelf_src.zip
     
    #6
  7. Calenria
    Offline

    Calenria

    Registriert seit:
    28. Juli 2012
    Beiträge:
    387
    Minecraft:
    Calenria
    Ansonsten z.B. TuxTwoLib benutzen :)

    Edit: Für Bücher gibts ja jetzt auch was in der Bukkit Api: BookMeta
     
    #7