本篇教程由作者设定未经允许禁止转载。

数据包概述:

0.3.5.9 版本及以前数据包文件地址:

https://github.com/ClumsyAlien/tac-example-datapack-0.2/tree/0.3.5

如何修改枪械数据、合成表:TaC datapack 不完全解析-第1张图片

(注意分支选择为0.3.5)


0.3.6.1 版本数据包文件地址:

https://wwwe.lanzoum.com/iWcXI0zmvxsf

密码: TAC

(注意密码为大写字符)

(数据包的位置一般位于地图文件夹(saves)下每个存档文件夹内的数据包文件夹(datapacks)之中,因此推荐模组 openloader ,方便在新建世界时的数据包加载)


0.3.8.1 版本数据包文件地址:

https://wwwe.lanzouq.com/iJwzF150ezub

密码: TAC

(注意密码为大写字符)

(进行此次补充时该版本尚未发布,以当前使用的版本为准)


数据包内容详解:

*. 注意,由于数据包版本问题,您所使用的数据包可能会有部分内容与示例不符,请选择符合您所使用的 TaC 版本的数据包,并以数据包实际内容为准(有时是排布顺序差异)

0. 最重要的两个部分,data 文件夹是修改一切数据的基础目录,pack.mcmeta 文件中的 "pack_format" 在 1.16.5 的版本中数值固定为 6 (一般不需要调整)

如何修改枪械数据、合成表:TaC datapack 不完全解析-第2张图片如何修改枪械数据、合成表:TaC datapack 不完全解析-第3张图片

1. 打开 data → tac,进入配置文件目录。其中我们需要修改的是 guns 和 recipes 两个文件夹,guns 文件夹内的文件控制枪械的各个属性,recipes 文件夹内的文件控制枪械的制造材料需求

(0.3.10 补充:modifiers 文件夹内的文件控制配件的各个属性,tags 文件夹内的文件控制一些基本的设置分组内容)如何修改枪械数据、合成表:TaC datapack 不完全解析-第4张图片

(注意,datapacks 中的数据作为对 mod 文件的补充替换,那些缺失文件的枪械数据会继续遵循 mod 中默认的内容)


枪械数据

(使用 hk416 举例):

0. 第一部分,分类、射速、开火模式:

"auto": true,    //部分枪会有的设置,开火模式分类,具体表现在游戏内的标签中有一行“自动武器”,但真正控制开火模式的是下面的 "rateSelector"

"rate": 850,    //按照 rpm 作为标准,但是建议按照 tick 的数值转换出的 rpm 进行设置(rpm = 1200 / tick),否则可能会出现连射射速不均匀(为了平衡出接近设定 rpm 的数值)的情况

//"burstRate": 20,    //部分枪会有的设置,指的是短连发的开火间隔,单位是 tick(建议不要低于 1200 / "rate" * "burstCount" 的数值)

//"burstCount": 2,    //部分枪会有的设置,指的是短连发开火一轮的射击子弹数(如果有短连发没有该项的,则默认为 3 发)

"rateSelector": [2, 1],    // 0 - 保险,1 - 半自动,2 - 全自动,3 - 短连发 (修改举例:开火模式转为默认保险、在保险/全自动/半自动/短连发内切换:[0, 2, 1, 3])

"gripType": "tac:two_handed_ak47",    //持枪模式,一般不修改(因为是对应动画文件中的持枪动作的)

如何修改枪械数据、合成表:TaC datapack 不完全解析-第5张图片1. 第二部分,后坐力与扩散:

"recoilAngle": 2.375,    //垂直后坐力强度(0.3.8.1 版本更新注释:该条目导入程序的具体数值是设定数值 / 1.5)
"horizontalRecoilAngle": 1.55,    //水平后坐力强度(0.3.8.1 版本更新注释:该条目导入程序的具体数值是设定数值 / 1.5)
"recoilKick": 1.65,    //Gun Kick(第一人称时枪械后退)幅度(0.3.8.1 版本更新注释:该条目导入程序的具体数值是设定数值 / 1.5)
"recoilAdsReduction": 0.205,    //开镜时减少后坐力效果(本例子中为开镜时减少 20.5% 的后坐力)(0.3.8.1 版本更新注释:该条目导入程序的具体数值是设定数值 * 2)
"weaponRecoilOffset": 0.805,    //武器后坐力动画速度时间(本例子中为 1-0.805=0.195),可改数值不超过 1,数值越大武器后坐力动画越快(视觉上枪越跳)

"cameraRecoilModifier": 1.15    //视觉后坐力削弱,数值越大视觉上的后坐力表现越弱,但是实际后坐力大小不变

"recoilDuration": 0.225,    //准星上抬时间,数值越小上抬越快,可改数值不超过 1

*12 - 18 行是后坐力调整的相关内容,一般不建议修改,如有调整需求按个人喜好即可

"weightKilo": 3.1,    //枪械重量,影响持枪移动的速度
"spread": 1.775,    //最高扩散,指在枪械连续射击 "projToMinAccuracy" 次后的扩散数值,该数值会在等待 "msToAccuracyReset" 后重置为 "firstShotSpread"(0.3.8.1 版本更新注释:该条目导入程序的具体数值是设定数值 * 0.5)
"firstShotSpread": 0.125,    //首发扩散,指停止射击超过 "msToAccuracyReset" 时间后的第一发射击时的扩散,随后扩散会在连续射击中线性增加至 "spread" 的数值
"hipFireInaccuracy": 5.95,    //腰射扩散,指在非瞄准状态下的扩散增加数值,直接加在 "spread" 和 "firstShotSpread" 的数值上(0.3.8.1 版本更新注释:该条目导入程序的具体数值是设定数值 * 1.75)
"projToMinAccuracy": 6,    //达到最高扩散需要的连续射击次数,越高的数值意味着越少的短点射精度差异
"msToAccuracyReset": 320,    //重置扩散状态到首发扩散需要的等待时间(毫秒),越低的数值意味着越快的精度恢复速度
"movementInaccuracy": 0.5    //移动时的扩散惩罚(按总扩散的百分比加成,一般不建议超过 1.0)

如何修改枪械数据、合成表:TaC datapack 不完全解析-第6张图片

2. 第三部分,换弹相关

"magFed": true,    //是否为弹匣装填
"maxAmmo": 30,    //最大弹容量(弹匣内,如果 "openBolt" 处的设置为 "false" 则会在战术换弹后多 1 发)

"maxAdditionalAmmoPerOC": [10, 20, 30],    //三级扩容弹匣的相关设定(分别对应“亚空间扩容”(Over Capacity) 或者“扩容弹匣”的三个等级,每级为设定数值分别加上 "maxAmmo" ,并非累加)

"openBolt": false    //是否为开膛待击(如果为 true ,则没有膛内一发的额外子弹)

*其他几行均为换弹时间控制,不建议修改,因为这些数值与动画关联

如何修改枪械数据、合成表:TaC datapack 不完全解析-第7张图片

3. 第四部分,子弹设置

"item": "tac:nato_556_bullet",    //使用的弹药类型

"visible": false,    //子弹模型可视情况(一般默认为不可视,因为目前的整个弹道系统显示的不是子弹模型,目前只有 rpg7 设置为允许)

"damage": 6.75,    //子弹伤害,会受到距离削减的影响

"armorIgnore": 1.0,    //穿甲能力增益,config 文件中的护甲无视百分比 * "armorIgnore" 的数值为最终穿甲能力

"critical": 0.00,    //额外暴击率,可以是负数(假设设置为 -0.5,如果在游戏中使用了增加暴击率的附魔,若附魔数值提供的暴击率低于 50%,将依旧无法暴击)
"criticalDamage": 0.75,    //暴击伤害增益,config 文件中的暴击伤害倍率 * "criticalDamage" 的数值为最终暴击伤害倍率

"headDamage": 1.0,    //暴头伤害增益,config 文件中的暴头伤害倍率 * "headDamage" 的数值为最终暴头伤害倍率

"size": 0.075,    //弹道子弹大小,一般不建议修改

"speed": 22,    //弹速,"speed" * "life" 即为子弹最远能达到的距离(因为调整过游戏内弹速表现,该项在 20 及以下才开始有较为明显的弹道延迟)
"life": 11,    //
子弹经过 n 次 "speed" 格后,伤害变为 "damage" * ("life" - n) / "life"0.3.8.1 版本更新注释:该条目已不再直接影响伤害,伤害削减部分加入了新的控制系统

***感谢 QQ酱151122 的指正:在 0.3.8.1 版本之前,代码中实际使用的 life 是 data 中的 1.5 倍,speed 是 data 中的 1 / 1.15;并且在第一段射程(speed / 1.15 格)内,造成的伤害理论为 damage * (life * 1.5 + 1) / (life * 1.5),而不是 damage,在此更正

"trailLengthMultiplier": 2.5,    //子弹轨迹长度调整,一般不建议修改
"ricochet": true,    //着弹点跟踪,一般不建议修改(0.3.8.1 版本更新注释:该条目已不再生效

如何修改枪械数据、合成表:TaC datapack 不完全解析-第8张图片

3.1 子弹设置(0.3.8.1 版本补充

"closeDamage": 1.1,    //近战伤害加成(在一个很短的距离内享有伤害加成的判定;这个距离目前没有可配置途径,由程序计算,与弹速和射程相关且不大于两格) 
"decayStart": 0.0,    //伤害削减起始位置,在全射程("speed" * "life")的距离内,从哪个距离("speed" * "life" * "decayStart")开始进入伤害削减线性曲线
"minDecayMultiplier": 0.35,    //最小伤害倍率,即你的武器在射程内所能造成的最低伤害("damage" * "minDecayMultiplier")(该伤害依旧会因为原版护甲等减伤系统的计算而变低)
"decayEnd": 0.95,    //伤害削减结束位置,在全射程("speed" * "life")的距离内,在哪个距离("speed" * "life" * "decayEnd")下,伤害削减线性曲线达到 "minDecayMultiplier" 的倍率

如何修改枪械数据、合成表:TaC datapack 不完全解析-第9张图片

4. 其他设置

一般不建议更改其他设置,保留即可


合成数据

(使用 hk416 举例):

"type": "tac:workbench",    //表示制造为枪械工作台内容

"tag": "forge:materials/epic"    //消耗 TaC 的“史诗材料”,注意这里使用的是「矿物词典」而非注册名,因为 TaC 的枪械工作台无法识别注册名,只能使用「矿物词典」

"count": 5    //消耗 5 个史诗材料

"result": {
    "item": "tac:hk416_a5"
}    //制作产物为一把 hk416

如何修改枪械数据、合成表:TaC datapack 不完全解析-第10张图片

(TaC 材料的「矿物词典」:forge:materials/uncommon(优秀材料),forge:materials/rare(稀有材料),forge:materials/epic(史诗材料),forge:materials/legendary(传说材料),forge:materials/ultimate(终极材料))

(使用 556 子弹举例):

"result": {
 "item": "tac:nato_556_bullet",
 "count": 60
}    //产物为 60 发 556 子弹

如何修改枪械数据、合成表:TaC datapack 不完全解析-第11张图片

(火药的「矿物词典」:"forge:gunpowder")

(通过数据包删除老式四倍镜的合成方式):
如何修改枪械数据、合成表:TaC datapack 不完全解析-第12张图片

(完全删除内容也是可行的,但是必须要在数据包内有一个空内容的文件存在,否则模组将自动使用默认的配置)

(使用枪械工作台举例):

"type": "minecraft:crafting_shaped",    //使用我的世界原版合成台

"pattern": [
 "###",
 "iIi",
 "i i"
],    //在合成台中各个物品的摆放位置情况(看代码截图更直观)

"key": {
 "#": {
   "tag": "minecraft:logs"    //要求在第一行放置三个原木,在这里使用了「矿物词典」,目的是为了使所有的原木都可以使用

 },
 "I": {
   "tag": "forge:storage_blocks/iron"    //要求在第二行中间放置一个铁块

 },
 "i": {
   "tag": "forge:ingots/iron"    //要求在第一列下面两个格子、第三列下面两个格子放置共计四块钢锭,Minecraft 原版合成台没有强制要求使用「矿物词典」的限制,因此也可以写成 "item": "minecraft:iron_ingot",也就是 "item": 物品注册名

 }
},

如何修改枪械数据、合成表:TaC datapack 不完全解析-第13张图片

(使用终极材料举例):

如何修改枪械数据、合成表:TaC datapack 不完全解析-第14张图片

(注意,在写下材料的注册名或者是「矿物词典」之后,一定要注意前面是否是 "item" 或 "tag")


配件属性配置

(使用 test.json 举例):

{
 "skin": "tac:golden",        //仅对专属皮肤类配件有效,用于设置配件对应的皮肤 ID
 "general": {
   "silencedFire": true,        //是否消音射击(开火音效使用消音音效,且不会因为枪声激怒中立生物)
   "modifyFireSoundRadius": 0.125,        //枪声范围调整(乘算,影响枪声激怒的范围)
   "additionalDamage": -1.0,        //伤害补正(加算,安装后会显示在武器伤害后面)
   "additionalHeadshotDamage": 10.0,        //爆头伤害补正(加算,在结算爆头倍率后)
   "modifyProjectileDamage": 2.0,        //伤害调整(乘算)
   "modifyProjectileSpeed": 1.25,        //弹速调整(乘算)
   "modifyProjectileSpread": 1.25,        //散布调整(乘算)
   "modifyFirstShotSpread": 0.75,        //首发散布调整(乘算)
   "modifyHipFireSpread": 0.25,        //腰射散布调整(乘算)
   "recoilModifier": 1.15,        //垂直后坐力调整(乘算)
   "horizontalRecoilModifier": 0.85,        //水平后坐力调整(乘算)
   "modifyAimDownSightSpeed": 1.25,        //开镜速度调整(乘算,速度越快开镜越快)
   "additionalAmmunition": 3,        //扩容效果(0-轻型扩容、1-中型扩容、2-重型扩容)
   "additionalWeaponWeight": 0.20,        //重量补正(加算)
   "modifyFireSoundVolume": 0.8,        //音量调整(乘算,有效区间为 0 - 1)
   "modifyRecoilSmoothening": 1.25,        //后坐平滑度调整(乘算)
   "modifyMuzzleFlashSize": 0,        //枪焰缩放倍率调整(乘算)
   "modifyWeaponWeight": 0.25,        //重量调整(加算)
   "kickModifier": 0.9        //Gunkick 调整(乘算)
 },
 "hideLimitInfo": true,        //是否隐藏安装限制
 "canApplyOn": [
   "#tac:assault_rifle"        //允许安装在突击步枪上(在 tags 部分中会解释)
 ],
 "canNotApplyOn": [
   "tac:scar_l"        //禁止在 scar_l 上安装(权限覆盖上面的白名单,因此 scar_l 将不被允许安装,其他的 AR 都可以安装)
 ],
 "extraTooltip": [
   "tooltip.extra.test"        //配合 lang 文件显示想要显示的文字
 ]
}