Est-il possible d'attacher des données à un Bukkit ItemStack?
Ok, je suis en train d'attacher des données à un Minecraft Bukkit ItemStack. J'aimerais qu'elle sorte de l'entité qu'il descend aurait aussi, mais c'est facultatif. Si je ne peux pas le faire directement, est-il un autre moyen que je peux garder un morceau de données (java int, java string) avec l'élément qu'il se déplace à travers les joueurs et leurs emplacements d'inventaire? Merci!
EDIT: Voici un exemple de code.
package path.to.the.package;
import org.bukkit.event.*;
import org.bukkit.event.PlayerInteractEvent;
import org.bukkit.plugin.java.JavaPlugin;
public ExamplePlugin extends JavaPlugin
{
public List<ItemStack> stacks = new ArrayList<ItemStack>();
public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args)
{
if(cmd.getName().equalsIgnoreCase("tester123"))
{
ItemStack stack = new ItemStack(272, 0, (byte)0);
Player p = (Player)sender;
stacks.add(stack);
p.getLocation().getWorld().dropItem(player.getLocation(), stack);
}
return true;
}
@EventHandler(priority = EventPriority.HIGHEST)
public void onItemStackRightClick(PlayerInteractEvent e)
{
Player player = e.getPlayer();
for(ItemStack item : items)
{
if(player.getItemInHand() == item)
{
//What I DO want is something like: if(item.getPluginData(this, "KEY") == "SPECIAL")
//And I would have set it like: item.setPluginData(this, "KEY", "SPECIAL");
player.sendMessage("You got one of our SPECIAL stone swords!!!!");
}
}
}
}
Je fouettée jusqu'à cet exemple, mais il ne fonctionne pas quand je clic droit sur l'une épée spéciale.
OriginalL'auteur Tom | 2013-01-15
Vous devez vous connecter pour publier un commentaire.
Je voudrais utiliser ItemStack.getItemMeta() pour définir le lore valeur:
Vous devez utiliser je.getLore().add("Special"); ajouter "Spécial" pour le Lore, et le joueur.getItemInHand().getMetaData().getLore().contient("Spécial"), afin de vérifier si la légende contient. Cela permettra d'éviter votre plugin annuler les autres plugin de données.
OriginalL'auteur Mark Lalor
Il est le http://jd.bukkit.org/apidocs/org/bukkit/metadata/Metadatable.html où vous pouvez stocker vos données dans une clé-valeur. Ressemble déjà fournit une interface pour stocker et récupérer les données.
Même
org.bukkit.entity.Item
implémente l'interfaceMetadatable
: jd.bukkit.org/apidocs/org/bukkit/entity/Item.html de Sorte que vous pouvez utilisersetMetadata(String, MetadataValue)
pour votre article.Eh bien, oui, mais ce n'est pas un ItemStack, qui est seulement une entité de l'élément. Comme vous le voyez sur la même page web, le ItemStack n'est PAS une sous-classe de la Metadatable classe donc je ne peux pas stocker plugin métadonnées.
Ah, ok. Peut-être que je ne comprends pas votre problème exact. Peut-être que vous pouvez ajouter un peu de code à votre question.
Oh, OK. Désolé, j'ai juste pensé que c'était assez clair. Lemme ajouter un peu de code
OriginalL'auteur cringe
Si vous souhaitez stocker les données invisible (insteed de l'histoire du monde), il suffit d'utiliser
metadata
:Bon article de Samer Alsayegh -> http://sameralsayegh.com/how-to-use-metadata/
OriginalL'auteur Alexandre Daubricourt