Files
2025-08-25 18:36:29 +08:00

2.5 KiB
Raw Permalink Blame History

front, hard, time
front hard time
https://mc.res.netease.com/pc/zt/20201109161633/mc-dev/assets/img/1_1.48802b15.jpg 进阶 30分钟

自定义远程武器

作者:境界

目前我的世界中国版支持以弓为主的自定义远程武器。使用附加包可以添加新的弓道具以及弓的手持位置与拉伸动画。使用弓的功能逻辑则会依赖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事件

②根据蓄力的时间,由开发者决定根据时间的长短来划分箭的伤害,以达到模拟出原版弓箭发射时的动态伤害效果。

③判断玩家的游戏模式,若为创造模式,不消耗弓的耐久和箭的数量的前提下,即可发射箭。若非创造模式,则会搜索背包内是否有箭道具,有则消耗并扣除一点弓耐久,否则直接返回,不执行后面发射箭的逻辑。