Werte einem selbst erstellten Gegenstand zuordnen und speichern / Assign and save user defined values to a custom item

  • English / German

2019-04-16: A new hotfix (0.9.5.7) is now available!

  • Werte einem selbst erstellten Gegenstand zuordnen und speichern / Assign and save user defined values to a custom item

    Moin,

    ist es möglich, benutzerdefinierte Werte einem Gegenstand so zuzuordnen, daß diese nicht vergessen werden?
    Wenn ich beispielsweise eine Axt erstelle mit einem Haltbarkeitswert, so soll dieser, wenn ich die Axt in eine Kiste lege, aus dem Inventar werfe oder sonst was mit mache, nicht zurückgesetzt werden oder verschwinden.
    Oder wenn ich ein Schild entwerfe, es aufstelle und beschrifte, soll nach dem Einsammeln die Beschriftung erhalten bleiben und beim erneuten Aufstellen wieder so angezeigt werden.
    Hintergrund ist folgender: Ich überlege, wie ich eine Art Teleporterstein basteln kann, bei dem der Spieler per Linksklick seine aktuelle Position auf diesen Stein 'prägen' kann, und mit Rechtsklick soll der Spieler sich dann dorthin teleportieren können.
    Im weiteren Verlauf plane ich eine Art Reisebuch zu entwickeln, bei dem mehrere Orte gespeichert werden sollen.
    Die Werte sollen auch bei Neustart des Spiels / Servers erhalten bleiben.
    Ob und wie das funktionieren kann: Keine Ahnung, bin neu im Spiel und habe mit Java so gut wie keine Erfahrungen :D

    Eines noch: Ich erwarte jetzt keine vorgefertigte Lösung oder daß man mir alles vorkaut (und das möchte ich auch nicht). Ich brauche eigentlich nur einen Hinweis, wo ich sowas gut nachlesen kann; die Java-Dokumentation bietet mir derzeit keine große Hilfe (zu unerfahren...).

    Bin für Tips und Hilfe dankbar.


    Gruß Inu



    ___________________________________________________________________________________________________________________________________________________________________________________________________




    Hi,

    is it possible to assign custom values to an item and store that value so it won`t be forgotten?
    For example I create a pickaxe with a durability value, this value should be assigned to that pickaxe. When I put the pickaxe in a chest or throw it away the durability value shouldn`t be gone or resetted.
    Or I create a sign, place it in the world and write some text on it, this text should still be assigned to that sign when I pick it up, and, when I place it again somewhere the text should be shown.
    The reason for my request is: I want to create some kind of teleport item where the player can store his actual position via left mousebutton and travel to that position via right mousebutton.
    Furtheron I plan to make a travel book with multiple entries.
    These values should be stored when the game / server is restarted.
    If and how this would be possible to do - I don`t know since I`m a total noob to this game and to Java especially. ^^

    One thing: I don`t expect anyone to make a plugin for me or tell me step-by-step how to arrange this (and I don`t want that). I just need a hint where to look and learn; the javadoc doesn`t help me much (I`m to unexperienced I guess).


    Thanks in advance for any tips and help.



    Sincerely, Inu


    (Sorry for my english, I`m german :P)
  • DE: Wenn du dich auf CustomItems beziehst, dann kannst du folgendermaßen "eigene Werte" pro Item speichern: Beim Hinzufügen des Items zum Inventar (zB mit Player.Inventory.insertNewCustomItem()) erhälst du das neu hinzugefügte Item zurück. Für manche Items ist ein sog. "Item.Attribute" Objekt hinterlegt, in welchem Zusatzdaten gespeichert sind (zB bei Kleidung die ID des repräsentierten Kleidungsstücks usw) - so auch für CustomItems (hier ist ein CustomItemAttribute hinterlegt). Diesem wiederum können einzelne Attribute zugewiesen werden (auch wenn die Bezeichnungen jetzt irritieren), u.a. mit CustomItemAttribute.setAttribute(), welche dann auch dauerhaft gespeichert werden können.
    Dieser Beitrag enthält ein paar Code-Schnipsel dazu ;)

    EN: If you're referring to CustomItems, you can add "custom values" per item this way: When adding the item to the inventory (e.g. by calling Player.Inventory.insertNewCustomItem()), you will get a reference to the newly added Item. Certain items have a so called "Item.Attribute" object, which contains additional data (e.g. clothes contain the actual clothing ID etc) - in this case, CustomItems have a "CustomItemAttribute". This can be used to add individual attributes (with CustomItemAttribute.setAttribute()), which are stored permanently.
    This post contains some code snippets about that ;)
  • Moin red51,

    vielen, vielen Dank! Das scheint genau das zu sein, was ich gesucht habe; das werde ich die kommenden Tage mal durcharbeiten. :thumbsup: :thumbsup: :thumbsup:

    Gruß Inu

    _________________________________________________________________________________________________________________________________

    Hi red51,

    thank you very very much! This seems to be exactly what I was looking for; going to check it out the next days. :thumbsup: :thumbsup: :thumbsup:

    Sincerely, Inu