• 欢迎加入MineBBS QQ讨论群:点击查看所有的官方讨论群
  • 我们将于近期对服务器进行迁移,服务可能中断至多2日。请各位安排好自己的访问计划,造成不便敬请谅解!
  • MineBBS入站考试已经上线!想要成为【正式会员】解锁更多功能吗?快来参与吧!【点我去看】

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

春天霹雳

【Lv:4】

正式会员
注册
2020/08/08
消息
6
金粒
581.00金粒
"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中具体的用法请查看文档
太感谢了:头发比心:
 

在线管理成员

在线会员

  • 摸鱼村-村长
  • dtp
  • E.ZR.
  • rainynote
  • mcmanzi
  • yrl123
  • 雾裕酱
  • 孺毾
  • YizhixieTS
  • zhizhuzhu1231
  • ljy20150721LJY
  • CIKI3
  • Nubec967
  • dijie0204
  • quming
  • Gyscx
  • suuu77
  • 茶思
  • FontageLing
  • huandi
  • I IKUN2004
...和 8 更多。
后退
顶部 底部