本篇教程由作者设定未经允许禁止转载。
数据包概述:
0.3.5.9 版本及以前数据包文件地址:
https://github.com/ClumsyAlien/tac-example-datapack-0.2/tree/0.3.5
(注意分支选择为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 (一般不需要调整)
1. 打开 data → tac,进入配置文件目录。其中我们需要修改的是 guns 和 recipes 两个文件夹,guns 文件夹内的文件控制枪械的各个属性,recipes 文件夹内的文件控制枪械的制造材料需求
(0.3.10 补充:modifiers 文件夹内的文件控制配件的各个属性,tags 文件夹内的文件控制一些基本的设置分组内容)
(注意,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", //持枪模式,一般不修改(因为是对应动画文件中的持枪动作的)
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)
2. 第三部分,换弹相关
"magFed": true, //是否为弹匣装填
"maxAmmo": 30, //最大弹容量(弹匣内,如果 "openBolt" 处的设置为 "false" 则会在战术换弹后多 1 发)
"maxAdditionalAmmoPerOC": [10, 20, 30], //三级扩容弹匣的相关设定(分别对应“亚空间扩容”(Over Capacity) 或者“扩容弹匣”的三个等级,每级为设定数值分别加上 "maxAmmo" ,并非累加)
"openBolt": false //是否为开膛待击(如果为 true ,则没有膛内一发的额外子弹)
*其他几行均为换弹时间控制,不建议修改,因为这些数值与动画关联
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 版本更新注释:该条目已不再生效)
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" 的倍率
4. 其他设置
一般不建议更改其他设置,保留即可
合成数据
(使用 hk416 举例):
"type": "tac:workbench", //表示制造为枪械工作台内容
"tag": "forge:materials/epic" //消耗 TaC 的“史诗材料”,注意这里使用的是「矿物词典」而非注册名,因为 TaC 的枪械工作台无法识别注册名,只能使用「矿物词典」
"count": 5 //消耗 5 个史诗材料
"result": {
"item": "tac:hk416_a5"
} //制作产物为一把 hk416
(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 子弹
(火药的「矿物词典」:"forge:gunpowder")
(通过数据包删除老式四倍镜的合成方式):
(完全删除内容也是可行的,但是必须要在数据包内有一个空内容的文件存在,否则模组将自动使用默认的配置)
(使用枪械工作台举例):
"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": 物品注册名
}
},
(使用终极材料举例):
(注意,在写下材料的注册名或者是「矿物词典」之后,一定要注意前面是否是 "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 文件显示想要显示的文字
]
}