• 周年纪念勋章活动已圆满结束,如有已购买但仍未申请的用户,可以通过对应勋章的下载链接申请~

已解决 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中具体的用法请查看文档
太感谢了:头发比心:
 

在线会员

  • isuo
  • 云里雾里
  • Sh1roCu
  • EternalSoot
  • Caldron
  • 78_91Vip
  • 老飞机
  • SilverEar949601
  • Yoyo666
  • Xhl_laser
  • 从宛才
  • 匡博弈
  • ymz
  • zhang2225656
  • Folia
后退
顶部 底部