# badskill2 **Repository Path**: uicdb/badskill2 ## Basic Information - **Project Name**: badskill2 - **Description**: 一个技能树mod 可通过json定制技能,包括消耗的物品,经验,以及mod联动部分,奖励可选择属性增幅或者通过联动mod获得更多效果。支持多页技能树 - **Primary Language**: Java - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2023-06-24 - **Last Updated**: 2024-05-29 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # BadSkill [For English](./README.md) #### 介绍 一个天赋树mod 可通过json定制天赋,包括消耗的物品,经验,以及mod联动部分,奖励可选择属性增幅或者通过联动mod获得更多效果。支持多页。\ 本mod通过数据包添加天赋树。天赋的声明和天赋树的定义是分开的,你可以在data/badskill/skill_option/中定义你的天赋,在data/badskill/skill_page/目录下构成你的树。\ 下面是例子: > data/badskill/skill_option/option0.json ``` { "consumerData": [], "exp": 0, "id": "badskill:option0", "itemStacks": [ { "count": 1, "item": "minecraft:nether_star" } ], "modifiers": [ { "attribute": "minecraft:generic.max_health", "modifiers": [ { "amount": 20.0, "name": "badskill:option0", "operation": "ADDITION", "uuid": "cad263f3-8a1f-37ba-8e38-1251dbcaecab" } ] } ] } ``` 在上面这个例子中,你添加了一个名为option0的技能,学习它将会消耗0xp和一个nether_star。学会它将会让你最大生命上限增加20.0。 **请注意** ,consumerData,exp,itemStacks这三个字段都是 **可选** 的。\ 同时,你只需要在对应语言的lang_xx.json中写下"tips.panel.modid.天赋名字.title":"你想要的名字"即可。\ 注意,modid.天赋名字对应的是你天赋注册的id,对于上面的例子来说就是badskill.option0。\ 下面是关于该文件中字段的描述。 | 名字| 描述 | |---|---| | consumerData|功能预设(mod联动) | | exp | 消耗的经验 | | itemStacks | 消耗的物品(支持nbt) | | modifiers | 学会后的属性修饰 | 其中,consumerData已经内置两个选项: | 名字| 用途 | |---|---| | score | 查询计分板数值 | | only | 当拥有一个key的天赋学会后,拒绝学习其他设置了相同key的天赋 | consumerData应该这样填,当然,key可以是任意字符。并且对于only来说,你可以自定义你的描述\ 你只需要在对应语言的lang_xx.json中写下"tips.badskill.only.你的key的名字.desc":"你想要的描述"即可。 ``` "consumerData": [ { "data": 0.0, "key": "only", "name": "badskill:only" } ] ``` 一个天赋怎么能叫”天赋树“呢?所以我们还要添加两个天赋:\ > data/badskill/skill_option/option1.json ``` { "consumerData": [ { "data": 0.0, "key": "only", "name": "badskill:only" } ], "exp": 10, "id": "badskill:option1", "itemStacks": [], "modifiers": [ { "attribute": "minecraft:generic.attack_damage", "modifiers": [ { "amount": 5.0, "name": "badskill:option1", "operation": "ADDITION", "uuid": "af830661-7881-3ba4-a580-6f384f37f4bf" } ] } ] } ``` > data/badskill/skill_option/option2.json ``` { "consumerData": [ { "data": 10.0, "key": "player.kill", "name": "badskill:score" } ], "exp": 0, "id": "badskill:option2", "itemStacks": [], "modifiers": [ { "attribute": "minecraft:generic.luck", "modifiers": [ { "amount": 10.0, "name": "badskill:option2", "operation": "ADDITION", "uuid": "5fffc73e-3209-3914-bdbf-15073046fafd" } ] } ] } ``` 恭喜你,现在已经成功的注册了三个天赋。接下来。让我们把它们挂到树上去。 >data/badskill/skill_page/01.json ``` { "id": "badskill:01", "imageLocations": [ { "height": 128, "location": "minecraft:textures/gui/book.png", "width": 64, "x": 8, "y": 8 } ], "locations": [ { "id": "badskill:option0", "location": { "height": 16, "parents": [], "width": 16, "x": 0, "y": 0 } }, { "id": "badskill:option1", "location": { "height": 8, "parents": [ "badskill:option0" ], "width": 8, "x": -40, "y": 60 } }, { "id": "badskill:option2", "location": { "height": 32, "parents": [ "badskill:option1" ], "width": 32, "x": 30, "y": 80 } } ] } ``` 有什么看不懂的?别担心,我来告诉你:\ 注意(所有的图片资源,若没有特别声明,一律为"modid:textures/.../xxx.png"格式,且 **不存在** 大写。\ |名字 |功能 |是否可选| |---|---|---| | id |天赋树的id,每个天赋树id都不一样,他们的名字决定了在天赋树gui中的排序优先级 | 必要 | | imageLocations | 图片列表,在其中声明的每个图片资源都会渲染到天赋树上(前提是资源存在) |可选 | | locations | 天赋列表 | 必要 | |icon |小图标,显示于页面上方,用于切换天赋页|可选| |background|背景图|可选| 对于locations字段,有以下内容: | 名字 |介绍 | 是否可选 | |---|---|---| | x | x坐标 | 否 | | y | y坐标 | 否 | | width | 技能宽度 | 是\|默认16 | | height | 技能高度 | 是\|默认16 | | icon | 技能图标 | 是 | 到这里,你的树已经装饰好了,把它加入游戏看看吧!\ 一些小提示:(0,0)坐标位于技能树面板的中间位置。