众所周知在游戏里
暗处的怪物是最大的威胁
拥有属性强大的武器和防具
能适当增加生存的几率
强大的装备并不容易获得
但如果你学会了自制…
这些统统不在话下!
今天就跟着发发菌学起来叭~
开始教学前,开发者们可以先在公众号后台回复“装备示例包”获取教学示范文件夹,里面不仅包括防具模型,还有实操练习的内容,对照阅读更有助于理解哦~
目前,我的世界中国版支持以弓为主的自定义远程武器。使用附加包可以添加新的弓道具以及弓的手持位置与拉伸动画。使用弓的功能逻辑则会依赖MOD SDK。
为了让开发者们更快理解,发发菌将这两部分各自拆解一下~
开发者们可以戳这里回顾MOD SDK相关知识~
材质包配置
① 自定义弓的命名必须在符号“:”后以bow结尾,这样在为物品添加使用弓动画组件行为时,动画才会正常播放。
② minecraft:icon会指向一个贴图资源短名路径,它由开发者自己在textures文件夹下添加的item_texture.json定义。
③ 当物品被玩家使用时,minecraft:use_animation会做出某个动画,这里我们添加bow这个值,以便玩家拉伸弓的时候会慢慢移动,并且视角缩小。
④ netease:frame_animation内有三个键对。其中frame_count指的是弓箭拉伸时一共有多少张序列图会播放。
在原版的弓中,冒险家们拉伸弓到最极限的这个过程,一共会播放三张贴图(●'◡'●)
行为包配置
① 这里必须将custom_item_type设置为ranged_weapon。
② minecraft:max_damage用来设置弓的最大耐久值。
③ minecraft:use_duration用来设置弓的可拉伸蓄力的使用时间,我们需要将时间设置的足够长,以免出现在一段时间内重复蓄力的问题。
④ minecraft:max_stack_size用来设置弓的堆叠数量,弓属于武器装备范畴,因此建议一个栏中只堆叠一个。
⑤ minecraft:hand_equipped用来保证自定义弓在第三人称的渲染形象和原版弓一致。
⑥ netease:render_offsets用来设置自定义弓在第一人称的手持位置,其中又包含三个键对:
controller_position_adjust |
控制位置 |
controller_rotation_adjust |
控制角度 |
controller_scale |
控制大小缩放 |
发射投掷物功能
做好了前期准备,就该轮到MOD SDK出马了:
(1)首先,我们需要监听ItemReleaseUsingServerEvent事件。
(2)接着判断蓄力的时间。这个是由开发者自行决定的,大家可以根据时间的长短来划分箭的伤害,以此模拟出原版弓箭的动态伤害效果。
(3)最后还需要判断玩家的游戏模式,这将决定弓箭的发射逻辑:
创造模式 |
发射箭时,不消耗弓的耐久和箭的数量。 |
非创造模式 |
搜索背包内是否有箭道具,有则消耗并扣除一点弓耐久;否则直接返回,不执行发射箭的逻辑。 |
物品包含词缀,当玩家点选物品时,词缀会包含物品的一些信息,如武器的附魔、伤害等。
由于当前接口限制,无论是附加包自带的接口还是中国版MOD SDK自带的接口,都无法一开始就将自定义词缀注册在道具上(如从创造背包选取下来的道具等)(;′⌒`)
下面发发菌将通过两种不同的方式,教大家如何自定义武器词缀~
利用战利品功能
使用战利品表的set_lore功能,可以将词缀写入武器道具内,而且战利品表可以随组件行为、村民交易一起使用。
但需要注意,新增的词缀不会覆盖原来的词缀哦~上述代码的最终效果如下所示:
使用MOD SDK
物品信息字典中带有一对customTips的数据,里面会包含着使用接口所改变的物品词缀信息。使用生成物品或者是ChangePlayerItemTipsAndExtraId接口就可以改变物品词缀信息啦~
通过这种方式改变的词缀是会直接覆盖掉原来的词缀的,这一点与战利品表的词缀添加功能有着明显不同。
另外,customTips支持自定义格式,包含四种自带格式:
%name% |
物品名 |
%category% |
物品类型 |
%enchanting% |
附魔属性 |
%attack_damage% |
攻击伤害 |
关于customTips的自带格式,需要注意以下几点:
① 自带格式可以与自定义文本自由组合,顺序可以打乱。当物品的自定义格式文本不存在时将不予显示。
② 自带格式的字符串采用原版的显示格式,物品名前面不带换行符;而物品类型、附魔属性前面自带一个换行符;攻击伤害前面自带两个换行符,比如:
head%name%after%category%%enchanting%\nnewline%attack_damage%\n\nend
该字符串的最终效果如下所示:
目前中国版与国际版一样,支持自定义防具模型;防具被附魔后,模型也会呈现附魔的流光效果。
数据各式解析
自定义防具的定义文件,需要放在资源包下的attachables文件夹内,具体代码如下:
① format_version有1.8.0和1.10.0两种格式,理论上都支持粒子和动画。但由于硬编码缘故,无法对模型进行绑定定位器,且防具模型只支持方块自旋转,不支持骨骼旋转。
所以开发者们需要注意一下啦,如果使用了粒子和动画,那在防具资源上可能会得出错误的效果哟~
② identifier即相对应的物品ID,使用自定义防具时,需要将identifier和对应的物品设置为同一个ID。
③ scripts中的parent_setup是用于配合官方商店中由官方推出的3D皮肤包的,可以设置显示与隐藏。若玩家装备了3D头饰皮肤,则定义了parent_setup的头部防具将不予以显示。
④ 其他四项里,除了geometry、textures的default键指向自定义的防具贴图和模型资源以外,其他可以保持不做更改。
学习完自定义装备的相关知识后,我们就可以迈出实操的第一步啦!先来做顶渔夫帽试试身手叭~
注册物品
添加模型
定义行为
按照以上示例图进行操作,大家就可以在游戏中获得一顶耐久值233的渔夫帽了!
接下来再试试为钻石剑添加吸血属性,让生存的格局进一步打开!
代码逻辑
(1)首先监听ServerChatEvent和PlayerAttackEntityEvent,通过输入聊天信息获得带有吸血词缀的钻石剑。
(2)然后在玩家攻击实体的事件回调函数内,获取手持物品并匹配词缀信息,然后通过attr组件来获得玩家生命值,并设置新的生命值。
这样大家就能获得一把既有不俗伤害,又有恢复加成的钻石剑啦~
学会自定义武器之后
开发者们就可以根据自己的偏好
自定义出不同属性的武器啦
快去制作更多的“防身道具”吧!
网易大神是网易游戏旗下的精英玩家社区。这里汇聚了广大精英玩家、游戏圈红人、行业大咖,集合了网易独家的官方资讯和福利趣闻,旨在为玩家打造一个丰富的游戏兴趣社交圈。玩家可以在网易大神与游戏中的好友实时聊天、多元互动;以游戏会友,结交更多游戏同好,和大神一起发现更多游戏乐趣。
官方网站:https://ds.163.com
官方微信:wyds_163