我把物品堆强制用字符串的方式储存到了yml里面 有办法根据字符串获取到物品堆么 求大佬解答
本帖最后由 南笙又emo啦 于 2022-7-24 23:52 编辑
自己写方法获取对应的类型,代码示例如下
复制代码
具体使用方法如下
复制代码
以下为我配置文件,GemItemSetting.yml的内容
复制代码
自己写方法获取对应的类型,代码示例如下
- public static ItemStack createItem(String display, int amount, String material, byte data, List<String> lore) {
- ItemStack item = new ItemStack(Material.valueOf(material.toUpperCase()));
- MaterialData materialData = new MaterialData(Material.getMaterial(material), data);
- ItemMeta meta = item.getItemMeta();
- List<String> replacedLore = new ArrayList<>();
- item.setAmount(amount);
- meta.setDisplayName(StringUtils.replaceColorChar(display));
- for (String line : lore) {
- line = StringUtils.replaceColorChar(line);
- replacedLore.add(line);
- }
- meta.setLore(replacedLore);
- item.setDurability(data);
- item.setItemMeta(meta);
- return item;
- }
具体使用方法如下
- for (String path : GemItemConfiguration.yamlConfiguration.getConfigurationSection("GemItem").getKeys(false)) {
- if (path.equals(strings[1])) {
- String gemName = GemItemConfiguration.yamlConfiguration.getString("GemItem." + path + ".Display");
- String gemMaterial = GemItemConfiguration.yamlConfiguration.getString("GemItem." + path + ".Material");
- byte gemData = (byte) GemItemConfiguration.yamlConfiguration.getInt("GemItem." + path + ".Data");
- List<String> gemLore = GemItemConfiguration.yamlConfiguration.getStringList("GemItem." + path + ".Lore");
- ItemStack gemItem = ItemUtils.createItem(gemName, 1, gemMaterial, gemData, gemLore);commandSender.sendMessage(StringUtils.replaceColorChar(GemMessageConfiguration.getPrefix() + GemMessageConfiguration.getItemElement("GetGem"))
- .replace("{name}", strings[1]).replace("{amount}", "1"));
- player.getInventory().addItem(gemItem);
- break;
- }
以下为我配置文件,GemItemSetting.yml的内容
- GemItem:
- 宝石项目:
- Display: '&a宝石项目 - 测试宝石'
- Material: 'RED_SANDSTONE'
- Data: 0
- Lore:
- - '&a测试的宝石项目'
- - '&a镶嵌后可增加攻击力'
(ItemStack) getList(路径) 或者 (ArrayList<ItemStack>) get(路径)
怎么进去怎么出来
光说 '物品堆强制用字符串的方式储存到了yml里面 ' 没说怎么储存的,
是yml序列化,是nbt序列化,还是硬set进去的
光说 '物品堆强制用字符串的方式储存到了yml里面 ' 没说怎么储存的,
是yml序列化,是nbt序列化,还是硬set进去的
按你这个情况,应该不是自己写的序列化方法。如果你是通过set的方式把一个ItemStack塞到了配置里,那你可以通过getItemStack从配置里再把这个物品掏出来
bukkit配置文件实例有个方法 getItemStack(String s)
如果是用set存进去的 可以直接get出来
怎么存的 怎么读取
如果是用set存进去的 可以直接get出来
怎么存的 怎么读取
直接序列反序列 或者重写自己物品类的反序列化方法