# 自定义远程武器
# 作者:境界
目前,我的世界中国版支持以弓为主的自定义远程武器。使用附加包可以添加新的弓道具以及弓的手持位置与拉伸动画。使用弓的功能逻辑则会依赖MODSDK,我们将这两个部分各自拆解一下。
# 材质包配置
①自定义弓的命名必须在符号“:”后以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用来控制大小缩放。
# 发射投掷物功能
①监听ItemReleaseUsingServerEvent事件
②根据蓄力的时间,由开发者决定根据时间的长短来划分箭的伤害,以达到模拟出原版弓箭发射时的动态伤害效果。
③判断玩家的游戏模式,若为创造模式,不消耗弓的耐久和箭的数量的前提下,即可发射箭。若非创造模式,则会搜索背包内是否有箭道具,有则消耗并扣除一点弓耐久,否则直接返回,不执行后面发射箭的逻辑。
https://mc.res.netease.com/pc/zt/20201109161633/mc-dev/assets/img/1_1.48802b15.jpg
进阶
30分钟