前期准备
在TaCZ的配置中开启“默认模型包调试模式”(将否变为是),否则会一直被默认枪械数据覆盖。此处推荐使用Cloth Config API。
文件夹路径
.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文件:
用记事本或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指令即可。