= 创作分享 =
编程开发
[CRT]关于NBT标签修改
DTFuel

[CRT]关于NBT标签修改

DTFuel 于 2023-6-18 20:38 ( 10月前 ) [复制链接] [只看楼主] [打印]
786 2
本帖最后由 DTFuel 于 2023-6-18 20:38 编辑

众所周知,Zenscript是一门编程语言



Zenscript中,NBT标签是以DataMap这么一个不可变类型储存的。修改其中的内容只能通过合并或者说覆写键值对和删除键值对来完成。DataMap只能转换成String类型,却没有类型可以转换成DataMap。这导致修改nbt成了一个极为麻烦的事。
而匠魂工具又是完全由nbt标签和meta值区分。在写一个通过一次无序合成去除某个指定强化的配方的时候,这玩意的恶心之处就显现出来了:
1.匠魂工具的nbt实在是太长了,长到用/ct hand获取的物品信息根本无法完整复制到剪贴板上,被迫手抄nbt
2.nbt标签中嵌套的几层DataMap非常令我头大,这种情况下对子DataMap的操作很复杂,我的思路是从最下层DataMap开始一层层递归直到拼出整个nbt不知道有没有更简单的办法
3.强化相关的nbt有些类型是未知的,编辑起来根本不知道怎么整




所以有大佬能给点更好的思路或是办法吗?这玩意一层层的快把我脑子给绕进去烧掉了

发表于 2023-6-18 20:38:58 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

回复 | 举报

该帖共收到 2 条回复!
youyihj
本帖最后由 youyihj 于 2023-6-19 21:34 编辑

向您隆重推荐 ZenUtils
https://github.com/friendlyhj/ZenUtils/wiki/DeepDataUpdate
不过这种匹配复杂 nbt 内容,可能只能用配方函数或自定义物品条件匹配某个工具有没有某个特性,这样就是 IData 一层层的读取,这样也不应该写又臭又长的 withTag,只针对一个 nbt ,而应该整个特殊的对 nbt 的匹配规则。

总之,对于 IData 的读取,可以用 https://github.com/Krutoy242/D.zs,写入用我的 ZenUtils
AE是什么?不存在的。我只认识应用能源。
发表于 2023-6-19 21:28:41 | 只看该作者

回复 | 举报

DTFuel
youyihj 发表于 2023-6-19 21:28
向您隆重推荐 ZenUtils
https://github.com/friendlyhj/ZenUtils/wiki/DeepDataUpdate
不过这 ...

好吧,之前用你这mod只是用来热重载调试用,wiki还没看
发表于 2023-6-19 21:50:20 | 只看该作者

回复 | 举报

百科目前不允许匿名发帖哦~ 请先 [ 登陆 ][ 注册 ] 吧~

本版积分规则

发新帖
  • 回复
  • 点评
  • 评分

[ MC百科(mcmod.cn) 除另有声明,所有开放公共编辑的内容均使用 BY-NC-SA 3.0 协议 ]

Minecraft百科CC协议
快速回复 返回顶部 返回列表