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

[Bukkitplugin] Abgeändertes Item eindeutig identifizieren

D

deleted154568

Guest
Hallo Leute,

ich bin aktuell dabei, eine Plugin für Bukkit/Spigot zu schreiben. Dieses Plugin würde im optimalfall ein komplett neues Item erzeugen, da dies aber nicht ohne Clientmods möglich ist, nehme ich ein vorhandenes und ändere dieses ab. Dass heißt, dass Item bekommt einen neuen Namen und einen neuen "Lore"-Text. Allerdings würde ich dem Item noch gerne eine eindeutige, nicht sichtbare Information bei geben, da die anderen beiden Parameter relativ einfach (bis auf den Lore-Text) geändert werden, oder ein eigenes Item mit den gleichen Namen.
Deswegen hätte ich gerne eine eigene, unsichtbare Eingenschaft diesem Item hinzugefügt. Irgendetwas in Richtung NBT-Tag oder so etwas, womit ich das Item unabhängig vom Namen identifizieren kann.
 

MiCrJonas

Threadripper
Registriert
29 Oktober 2012
Beiträge
1.064
Diamanten
0
Du könntest alle ItemStacks, die das andere Item darstellen in einer Collection speichern, so kannst du immer überprüfen, ob es sich um das spezielle Item handelt. Du musst nur darauf achten, dass die Collection darauf achtet, dass es sich um das gleiche Objekt und nicht um ein selbes handelt.
Eine andere Möglichkeit sehe ich nicht.
 
D

deleted154568

Guest
Würde das auch noch nach einem Restart funktionieren? Man kann ja keine Objekte zwischen speichern, zumindest nicht vernünftig. Außerdem wäre das ja eine ziemlich unschöne Methode, da sich das Item endlos erzeugen lässt und irgendwann würde die Überprüfung einfach zu lange dauern.
 

MiCrJonas

Threadripper
Registriert
29 Oktober 2012
Beiträge
1.064
Diamanten
0
Nach einem Restart ist es weg. Mit der Leistung das würde wahrscheinlich kein allzu großes Problem sein, kommt aber drauf an, wie viele Items es gibt. Und ja, die Methode ist nicht das Gelbe vom Ei. Wo liegt denn das Problem, das mit der Lore zu machen. Die kann man nicht einfach ändern. Außerdem könntest du im Namen Farbcodes verwenden, auch wenn es nur "§f" ist, da man diese im Amboss nicht benutzen kann.
 
D

deleted154568

Guest
Das Problem einer Überprüfung mit Name und Lore-Text ist einfach, dass so eine lokalisierung nur schwierig wäre. Wenn der Serverowner dann irgendwann die Sprache ändern sollte, oder den Text in der Sprachdatei, wären alle vorher erzeugten Items nutzlos, da das Plugin sie nicht mehr erkennen würde.
Gibt es denn keine Möglichkeit, irgendetwas unsichtbares zu dem Item hinzuzufügen?
 

AnonymusChaotic

Workaholic
Registriert
22 November 2013
Beiträge
760
Diamanten
0
Ich bin zwar kein Developer, allerdings hat (oder zumindest hatte) das Plugin PaintballWarEdition irgend eine Funktion, die es dem Plugin ermöglicht, normale Schneebälle von Ingame-Schneebällen zu unterscheiden.

(mit Essentias /invsee Inventar eines anderen Spielers öffnen und Bälle hineinlegen, ev. auch auf den selben Namen umbenannt.)

Vielleicht findest Du den Code irgendwo und kannst das herauslesen ^^.
 

pasce1998

Minecrafter
Registriert
20 April 2014
Beiträge
21
Diamanten
300
Minecraft
pasce1998
@AnonymusChaotic Bei Schneebällen ist es etwas anders. Schneebälle sind Entitys und Entitys kann man Metadaten setzen und diese dann beim treffen abfragen.

@vMief leider befürchte ich das du keine dauerhaft, unsichtbare Informationen auf Items speichern kannst.
Eine kleine Idee hätte ich aber dazu.
Du könntest den Items ein Enchantment geben, welches nichts auf diesem Item bringt. Später könntest du dann abfragen, ob das Item dieses Enchantment in der Höhe hat, die du festgelegt hast. Man kann dieses Enchantment zwar sehen, aber es wäre ein Lösungsweg, da Enchantments immer gespeichert bleiben.
 
Zuletzt bearbeitet:

Janhektor

Minecrafter
Registriert
10 Januar 2013
Beiträge
11
Diamanten
0
Ich hätte eine etwas aufwändigere Idee: Du gibst dem Item eine Lore und machst bestimmte Zeilen unsichtbar.
Ich meine, irgendwann sendet der Server dem Client ja Packets. Diese Packets beinhalten bei einem Item auch Informationen zu DisplayName und Lore. Das dafür zuständige Packet musst du abfangen und modifizieren. Dann sieht der Client es anders, als es eigentlich ist.
 

pasce1998

Minecrafter
Registriert
20 April 2014
Beiträge
21
Diamanten
300
Minecraft
pasce1998
Ja, aber

ja, aber im Inventar sind es ja noch items, Zur Entity werden sie ja erst, wenn sie gerechtsklickt werden

Naja dazu kommt halt noch die Abfrage, ob der Spieler grade Paintball spielt, also in einer Liste eingetragen ist, oder halt eben nicht. Wenn der Spieler dann in der Liste, also im Spiel ist, werden dem Schneeball die Metadaten gesetzt, ansonsten eben nicht ;)
 

MiCrJonas

Threadripper
Registriert
29 Oktober 2012
Beiträge
1.064
Diamanten
0
Die Schneebälle können, wie in meinem 1. Post beschrieben, temporär gespeichert werden. Das wird wohl bei Paintball auch so sein. Da braucht man keine Metadaten.
Da hilft eine Antwort von einem, der "kein Developer", ist auch nicht weiter.
 
D

deleted154568

Guest
Ok, dass sieht schonmal interessant aus. Ich werde mich da mal reinlesen und es austesten. Wenn es damit so läuft, wie ich es gerne hätte, wäre das cool.
Ohne das Plugin würde es aber wahrscheinlich kompliziert werden, oder?
 
D

deleted154568

Guest
Eine kleine Frage am Rande: Wie sieht es denn mit dem "Unbreakable"-Attribut aus? Lässt sich das irgendwie Infame erzeugen? Denn dann wäre mir das irgendwie lieber, denn sollte das Plugin irgendwann inkompatibel werden, hätte ich einfach Pech gehabt.
 
D

deleted154568

Guest
Wäre es nicht am einfachsten einfach in die 1. Zeile der Lore zu schreiben: "Plugin name Item"?

Jedenfalls gibt es ansonsten keine Einfachere möglichkeit dafür.
Das Problem dabei ist das der Lokalisierung, wie oben schon beschrieben. Das Plugin wird später in mehreren Sprachen verfügbar sein, und wenn der Owner die Sprache ändert, ändert sich auch der Lore-Text oder wenn der Owner den Text selbst anpasst.
 
D

deleted154568

Guest
Aber wenn du Items auf Englisch und Deutsch und dann noch mit abgeändertem deutschen Text hättest, wäre es praktisch nicht möglich, alle zu identifizieren. Die Wahrscheinlichkeit, dass das Eintritt ist zwar gering, aber als Programmierer sollte man vom Worst Case ausgehen.
 
Oben