Ich habe jetzt nicht die Lösung für dein Problem, aber einige Fragen zu deinem Quellcode. Wenn das Problem sich dadurch lösen lässt, ist das Zufall.
Funktionen:
1.
Code:
if ((itemonjoin) && (!e.getPlayer().getInventory().contains(item)));
Wozu gibt es diese If-Abfrage, wenn du ihr Ergebnis sofort wieder wegwirfst? Egal zu welchem Ergebnis die Abfrage kommt, du führst immer den selben Code aus.
Ich nehme mal an, dass du dort kein Semikolon haben willst und dir ein paar Klammern fehlt:
Code:
if ((itemonjoin) && (!e.getPlayer().getInventory().contains(item))) {
ItemStack clock = new ItemStack(item);
[...]
}
Eher optisch:
2.
Code:
Object lores = new ArrayList();
((List)lores).add(itemlore);
meta.setLore((List)lores);
Warum so umständlich? Wäre es nicht viel einfacher lores einfach direkt zu einer Liste zu machen?
Code:
List<String> lores = new ArrayList<String>();
lores.add(itemlore);
meta.setLore(lores);
3.
Code:
e.getPlayer().getInventory().addItem(new ItemStack[] { clock });
Und hier willst du doch nur einen ItemStack hinzufügen, wozu also das Array?
Code:
e.getPlayer().getInventory().addItem(clock);
Zum eigentlichen Problem will mir grade nichts weiter einfallen, also gibts jetzt noch ein paar Fragen:
4. Ist der EventListener, in dem sich dieser Code befindet, bei Bukkit registriert? Und wird aufgerufen?
5. Gibt es irgendwelche Fehlermeldungen?
6. Verstehe ich das richtig, du willst das ein Item serverweit immer den selben geänderten Namen trägt? Dann brauchst du nicht nur Code zum erstmaligen geben des Items, sondern auch welchen um die vorhandenen Items zu aktualisieren.
Quote:
Originally Posted by ຖēxiຊ
das man das Item nicht im Inventar bewegen kann
|
Dazu solltest du dir mal die InventarEvents ansehen, InventoryClickEvent sollte dir da helfen können.
Quote:
Originally Posted by ຖēxiຊ
das man es bei tot nicht Verliert
|
Da musst du selber etwas basteln. Ich würde das Item beim Tod löschen, bevor es auf den Boden geworfen wird, und es dem Spieler dann beim Respawn wieder ins Inventar legen.