本篇教程由作者设定使用 CC BY-NC 协议。

须知

  • 该教程适用于1.16.5,该脚本并未在其他版本进行过测试。

  • 因本人技术有限,该教程必定存在不足之处,敬请谅解。如果您有更好的建议,请在评论区或私信指出。

  • 教程中可能涉及到的名词多数不会进行解释,比如“键”。

  • 这个脚本的作用是用NBT来重新定义或者增加钻石剑的武器等级需求。

  • 该教程所需模组:[PMMO] Project MMOPMMO and NBT Compat

  • 以一把附魔了亡灵杀手和抢夺的钻石剑作为示例,它的NBT是:{RepairCost:3,Enchantments:[{lvl:1s,id:"minecraft:smite"},{lvl:1s,id:"minecraft:looting"}],Damage:12}。重点关注NBT!

    等级配置:NBT匹配-第1张图片

  • 配置的Json文件路径(未开启版本隔离的情况下):“.minecraft\config\pmmo\req_<ItemType>_nbt.json”。<ItemType>表示设定的用途需求,比如一把镐子进行挖矿时是匹配工具的等级需求(req_tool.json),进行战斗时是匹配武器的等级需求(req_weapon.json)。

  • 本脚本因为是修改武器,所以是修改“req_weapon_nbt.json”。

  • 关于1.16.5匠魂匹配,这是我自制的两个匹配文件。可能不是很平衡,读者可以根据自己的需要来调整。PMMO模组的NBT等级匹配JSON (github.com)

示例代码

{

    "minecraft:diamond_sword": {

        "_summative_comment":"true表示等级相加,false表示以最高的为准",

        "summative": true,

        "_values_comment":"一个数组,在这个数组里填写内容",

        "values": [

            {

                "_type_comment": "指向NBT数据的第一级元素,如果它的值带有方括号说明是一个数组。需要填入“list”作为类型。type只支持:“list”、“compound”、“id”",

                "type": "list",

                "_keys_comment":"指向了附魔这个一级元素。",

                "keys": [

                    "Enchantments"

                ],

                "_index_comment": "任意正整数是指向这个数组的指定位置(第一个元素为0),-1表示遍历所有元素",

                "index": -1,

                "_sub_comment": "表示嵌套结构,用来描述附魔的下一级的元素。",

                "sub_references": [

                    {

                        "_type_comment":"compound表示复合结构,它用来指向被“{}”大括号保存的对象。",

                        "type": "compound",

                        "_keys_comment":"因为这个对象没有键,所以填双引号就好了",

                        "keys": [""],

                        "sub_references": [

                            {

                                "_type_comment":"id表示指向一个元素",

                                "type": "id",

                                "_keys_comment":"这里的id是亡灵杀手的键,读者应当根据nbt来调整。",

                                "keys": ["id"],

                                "_predicates_comment":"我们在这里开始设定条件了,前面都是用来描述怎么走到我们要修改的内容。",

                                "predicates": [

                                    {

                                        "_operator_comment":"这是设定操作符,请参照操作符篇。“EQUALS”表示对比是否相同",

                                        "operator": "EQUALS",

                                        "_comparator_comment":"在这里输入一个值,我们比较的是附魔名称,所以填入“minecraft:smite”亡灵杀手",

                                        "comparator": "minecraft:smite",

                                        "_value_comment": "如果符合条件,我们在这里设置的值就会用到这把钻石剑上。combat是战斗技能。这里要注意的是,我们通过这个PMMO and NBT Compat模组设定的等级可以超过PMMO配置的最大等级(你可以修改PMMO的配置文件提高最大等级)。",

                                        "value": {

                                            "combat": 200

                                        }

                                    }

                                ]

                            }

                        ]

                    }

                ]

            },

            {

                "_type_comment":"这是第二个条件,它和上面那个是“或”的关系,上面的条件符不符合跟这个没有关系。我们是values这个数组的第二个元素。",

                "type": "id",

                "_keys_comment":"因为它是键值对的形式,我们直接指向键,然后在predicates直接设定条件就好。Damage是表示消耗的耐久。",

                "keys": [

                    "Damage"

                ],

                "predicates": [

                    {

                        "_operator_comment":"表示大于",

                        "operator": "GREATER_THAN",

                        "_comparator_comment":"如果Damage大于4,则战斗技能需求+2级的意思。",

                        "comparator": 4,

                        "value": {

                            "combat": 2

                        }

                    }

                ]

            },

            {

                "type":"id",

                "keys":["Damage"],

                "predicates":[{

                    "_operator_comment":"这里是表示大于等于0的场合设定等级,为什么这么做:因为会覆盖掉原本PMMO的动态赋值,所以我们还得给他设定一个默认等级。因此,最终的等级需求会是40+2或者40+2+200",

                    "operator":"GREATER_THAN_OR_EQUAL",

                    "comparator":0,

                    "value":{

                        "combat":40

                    }

                }]

            }

        ]

    }

}

结果




等级配置:NBT匹配-第2张图片等级配置:NBT匹配-第3张图片


感谢: