前期准备

在TaCZ的配置中开启“默认模型包调试模式”(将否变为是),否则会一直被默认枪械数据覆盖。此处推荐使用Cloth Config API

枪械数据文件修改-第1张图片

文件夹路径

.minecraft\versions\1.20.1-Forge_47.3.1\config\tacz\custom\tacz_default_gun\tacz\guns\data

不要直接粘贴该路径,打开你的版本文件夹再在原有的文件夹路径后面粘贴\config\tacz\custom\tacz_default_gun\tacz\guns\data这一段,也可顺着这个路径点过去。点开后应该会看到写着枪械名字的.JSON文件:

枪械数据文件修改-第2张图片用记事本或Visual Studio打开你想要修改的枪械数据文件,修改对应数据。

枪械数据翻译

以ak47为例,也可直接打开ak47_data.json文件或前往https://tacwiki.mcma.club/zh/gunpack/first_gun/查看,这里只是搬运并进行了翻译标记:

弹药

  指定枪械弹药

  "ammo": "tacz:762x39",

  弹容

  "ammo_amount": 30,

  扩容弹匣弹药总数

  "extended_mag_ammo_amount": [

    34,

    37,

    40

枪栓

  枪栓类型:开膛待机(open_bolt)、闭膛待击(closed_bolt)、手动上膛(manual_action)

  "bolt": "closed_bolt",

射速

  每分钟射出弹药量,最大不应超过 1200

  "rpm": 600,

子弹实体属性

  "bullet": {

    寿命,单位秒

    "life": 0.8,

    用于霰弹,默认为 1,每发的伤害 / bullet_amount,每次射击扣除一发子弹

    "bullet_amount": 1,

    伤害

    经测试,在距离-伤害分段常函数已填写时仅修改此项只会改变枪械面板的伤害,实际伤害不变。记得同时修改距离-伤害分段常函数

    "damage": 9,

    曳光弹间隔数量,没有此字段则不发射曳光弹

    设置为 0 则是每发都是曳光弹

    "tracer_count_interval": 0,

额外伤害

    为空则表示没有任何额外伤害计算内容

    "extra_damage": {

      护甲穿透率,默认为 0,也就是没有穿甲伤害

      "armor_ignore": 0.3,

      爆头伤害 x1.5

      "head_shot_multiplier": 1.5,

      距离-伤害分段常函数

      "damage_adjust": [

        这样就能写抵近伤害了

        {"distance": 0.5, "damage": 10},

        {"distance": 25, "damage": 9},

        {"distance": 50, "damage": 8.5},

        {"distance": 80, "damage": 7.5},

        {"distance": 120, "damage": 6.5},

        如果你忘记写这个无穷,那么超过上述距离,就认为是 0

        {"distance": "infinite", "damage": 5.5}

子弹杂项

    速度 m/s

    "speed": 240,

    重力

    "gravity": 0.0245,

    击退效果

    "knockback": 0,

    阻力

    "friction": 0.01,

    点燃目标

    "ignite": false,

    点燃时间,默认为 2 秒,仅用于实体

    "ignite_entity_time": 2,

    穿透数

    "pierce": 1

    是否爆炸,没有此字段时为 false

    "explosion": {

    "radius": 5,

    "damage": 5,

    爆炸导致的击退,默认为 false,需要服务器也开启爆炸击退才能使用

    "knockback": false

换弹相关

不推荐修改此分类内容,换弹动画匹配不上

  "reload": {

    magazine 是弹匣供弹,manual 是手动供弹

    "type": "magazine",

    弹匣供弹换弹时长(秒),到达此时间点,服务端就更新枪内子弹数量

    "feed": {

      空仓换弹

      "empty": 2.25,

      战术换弹

      "tactical": 1.55

    弹匣供弹总时长(秒),到达此时间点,枪械才可以进行开火、检视等行为

    "cooldown": {

      空仓换弹

      "empty": 2.6,

      战术换弹

      "tactical": 2.0

动作时长

  枪械抬起的动作时长,单位秒。

  抬起动作完成后,枪械可以进行开火、检视等行为

  "draw_time": 0.35,

  收枪的动作时长,单位秒。

  "put_away_time": 0.4,

  瞄准时长,单位秒。

  "aim_time": 0.2,

  "sprint_time": 0.2,

  拉栓上膛的时间,仅当枪栓类型为 manual_action 时有效

  "bolt_action_time": 0.9,

开火模式

  "fire_mode": [

    全自动

    "auto",

    半自动

    "semi"

多连发

  多连发数据,仅多连发会调用

  "burst_data": {

    是否连续射击

    "continuous_shoot": true,

    连发数

    "count": 3,

    组内连发的射速

    "bpm": 900,

    每组连发之间的时间间隔(上一组结束时间到下一组开始的时间间隔),单位秒

    "min_interval": 0.3

后坐力

  "recoil": {

    "pitch": [

    time 表示关键帧在时间轴上的位置,value 表示随机取值的取值范围

      {"time": 0, "value": [0.7, 0.7]},

      {"time": 0.25, "value": [0.7, 0.7]},

      {"time": 0.45, "value": [-0.175, -0.175]},

      {"time": 0.6, "value": [0, 0]}

    ],

    "yaw": [

      {"time": 0, "value": [-0.35, -0.15]},

      {"time": 0.25, "value": [-0.35, -0.15]},

      {"time": 0.45, "value": [0, 0]}

受伤晃动

  受伤晃动幅度修改,乘数,1 为原版晃动程度,0 为完全不晃动,默认为 0.05

  "hurt_bob_tweak_multiplier": 0.05,

子弹散布

  不准确度

  "inaccuracy": {

    站立射击散布

    "stand": 5,

    移动射击散布

    "move": 5.75,

    潜行射击散布

    "sneak": 3.5,

    趴下射击散布

    "lie": 2.5,

    瞄准射击时散布

    "aim": 0.15

配件

  开放的配件槽。未指定的槽位默认关闭。全部配件槽类型有:

  scope, stock, muzzle, grip, laser, extended_mag

  "allow_attachment_types": [

    "scope",

    "stock",

    "muzzle",

    "extended_mag"

  ],

  专属的配件属性

  "exclusive_attachments": {

    配件 ID,后面的数据和配件的 data 部分结构完全一致

    "tacz:scope_standard_8x": {

      "weight": 2.0,

      "ads_addend": 0.04,

      "inaccuracy_addend": -0.4,

      "recoil_modifier": {

        "pitch": -0.2,

        "yaw": -0.1

应用修改

修改完枪械数据文件记得将其保存,再启动游戏就能应用修改了,退回标题屏幕后重新进入世界也能起到同样的作用。如想在游戏时应用修改,输入/tacz reload指令即可。