マインクラフトの話です。
mod ではなく、plugin の方で、アイテムの NBT を追加・編集をしたいということがあった。
NBTEditor や NBTCompound を 追加したらできた。
以下は、アイテムのNBTを編集してから、オリジナルのインベントリに追加するプログラム。
Inventory gui = Bukkit.getServer().createInventory(null,54,"CustomGUI");
ItemStack closeItem = new ItemStack(Material.BARRIER);
ItemMeta closeMeta = closeItem.getItemMeta();
closeMeta.setDisplayName(ChatColor.RED + "Close");
closeItem.setItemMeta(closeMeta);
gui.setItem(53,closeItem);
Material m = Material.matchMaterial(【item’s Number or Name】);
ItemStack is = new ItemStack(m);
is.setAmount(64);
NBTEditor.NBTCompound compound = NBTEditor.getNBTCompound(is);
compound.set(2,"Damage");
is = NBTEditor.getItemFromTag( compound );
gui.setItem(i,is);
player.openInventory(gui);
例えば、「スポンジ(#0019/0)」と「濡れたスポンジ(#0019/1)」のように、
同じアイテム番号だけど、2つ以上種類があるものは、
「Damage」という NBTで、分けられていることが多いようだ。
追記 2021/06/30
NBTを直接JSONで、読み書きする方法もあった。
//JSON読み込み
NBTEditor.NBTCompound compound = NBTEditor.NBTCompound.fromJson(nbtJson);
//JSON書き出し
NBTEditor.NBTCompound nbtc = NBTEditor.getNBTCompound(is);
System.out.println(nbtc.toJson());