• 【MineBBS社区发展意见征集】

    欢迎参与MineBBS社区调查,助力打造更好Minecraft社区!完成问卷可获赠200金粒,优质回答可额外获得200金粒(限5名),快来参与吧!【点击参与】

已解决 JavaScript编写ll插件开发修改nbt时遇到的问题

春天霹雳

【Lv:3】

正式会员
注册
2020/08/08
消息
6
金粒
219金粒
"Count": 64b, "Damage": 0s, "Name": "minecraft:quartz_block", "WasPickedUp": 0b, "tag":{ "display":{ "Lore":["我是物品描述"] } }
如何修改nbt中tag里面的display里面的Lore的内容
我知道使用下列的写法可以修改Count的内容
let it = pl.getHand() let nbt = it.getNbt() nbt.setByte("Count",32) it.set(mc.newItem(nbt))
但是我想不到要怎么样才能修改这种套层的
希望论坛的各位大佬指点一下
 
解决方案
1.若您希望改一个物品的Lore标签:
JavaScript:
const item//假设这是你要改物品对象
const nbt=item.getNbt();
nbt.getTag("tag").getTag("display").getTag("Lore").setString(0,"你要改的值");
item.setNbt(nbt);
2.若上述代码报错,则有可能是此物品没有display标签或tag标签导致的,您可以:

JavaScript:
const item;//假设这是你要修改的物品
const nbt=item.getNbt();
nbt.setTag("tag",new NbtCompound({
    display: new NbtCompound({
        Lore: new NbtList(["要添加的值"])
    })
}));
item.setNbt(nbt)

总结:
问题根源是对NBT格式的不了解,因此您有必要了解以下的相关知识
NbtString:NBT字符串,存储文字(如"abc")
NbtLong:NBT整数,存储长的整数(如123L)
NbtInt:NBT整数,存储一般的整数(如123)
NbtShort:NBT整数,存储较短的整数(如123s)
NbtByte:NBT整数,存储十分短的整数(如123b),可能还会用来表示布尔值(1b代表true,0b代表false)
NbtFloat:NBT单浮点数,存储精度较低的小数(如1.23f)
NbtDouble:NBT双浮点数(我忘了有没有这个东西了),存储精度较高的小数(如1.23)...
1.若您希望改一个物品的Lore标签:
JavaScript:
const item//假设这是你要改物品对象
const nbt=item.getNbt();
nbt.getTag("tag").getTag("display").getTag("Lore").setString(0,"你要改的值");
item.setNbt(nbt);
2.若上述代码报错,则有可能是此物品没有display标签或tag标签导致的,您可以:

JavaScript:
const item;//假设这是你要修改的物品
const nbt=item.getNbt();
nbt.setTag("tag",new NbtCompound({
    display: new NbtCompound({
        Lore: new NbtList(["要添加的值"])
    })
}));
item.setNbt(nbt)

总结:
问题根源是对NBT格式的不了解,因此您有必要了解以下的相关知识
NbtString:NBT字符串,存储文字(如"abc")
NbtLong:NBT整数,存储长的整数(如123L)
NbtInt:NBT整数,存储一般的整数(如123)
NbtShort:NBT整数,存储较短的整数(如123s)
NbtByte:NBT整数,存储十分短的整数(如123b),可能还会用来表示布尔值(1b代表true,0b代表false)
NbtFloat:NBT单浮点数,存储精度较低的小数(如1.23f)
NbtDouble:NBT双浮点数(我忘了有没有这个东西了),存储精度较高的小数(如1.23)
NbtCompound:类似于js里的{}(如:{Count:64b,Damage:0,Name:"minecraft:grass"})
NbtList:类似于js里的[](如:["标签1","标签2"])

js中具体的用法请查看文档
 
最后编辑:
解决方案
1.若您希望改一个物品的Lore标签:
JavaScript:
const item//假设这是你要改物品对象
const nbt=item.getNbt();
nbt.getTag("tag").getTag("display").getTag("Lore").setString(0,"你要改的值");
item.setNbt(nbt);
2.若上述代码报错,则有可能是此物品没有display标签或tag标签导致的,您可以:

JavaScript:
const item;//假设这是你要修改的物品
const nbt=item.getNbt();
nbt.setTag("tag",new NbtCompound({
    display: new NbtCompound({
        Lore: new NbtList(["要添加的值"])
    })
}));
item.setNbt(nbt)

总结:
问题根源是对NBT格式的不了解,因此您有必要了解以下的相关知识
NbtString:NBT字符串,存储文字(如"abc")
NbtLong:NBT整数,存储长的整数(如123L)
NbtInt:NBT整数,存储一般的整数(如123)
NbtShort:NBT整数,存储较短的整数(如123s)
NbtByte:NBT整数,存储十分短的整数(如123b),可能还会用来表示布尔值(1b代表true,0b代表false)
NbtFloat:NBT单浮点数,存储精度较低的小数(如1.23f)
NbtDouble:NBT双浮点数(我忘了有没有这个东西了),存储精度较高的小数(如1.23)
NbtCompound:类似于js里的{}(如:{Count:64b,Damage:0,Name:"minecraft:grass"})
NbtList:类似于js里的[](如:["标签1","标签2"])

js中具体的用法请查看文档
太感谢了:头发比心:
 

在线会员

  • with
  • PHEyeji
  • RetroStudio
  • hxzkxzk
  • Shirkp
  • Lucien
  • XBen
  • 幻城工坊
  • Sheng_Kong
  • kosking
  • nuuueircu
  • 午后睡觉
  • SK-1
  • wshycaa
  • sssjiu
  • 璀星海
  • C.j.h
  • Nemoa
  • lxmao
  • Midnight1337
...和 50 更多。
后退
顶部 底部