开始前提示
数据包会不定期更新
数据包格式及用法可自行阅读mc中文wiki,或在其他地方寻找教程
武器数据包的路径要求为 data/superbwarfare/guns/
所有字段均区分大小写,在json文件中要用英文双引号括起来,数字不用
所有时间单位默认都是 刻(tick) 1s=20tick
0.8.0
ID
类型:字符串
指定本文件要修改的武器ID,字符串类型。留空或不写此属性时,系统会默认尝试使用文件名作为武器ID。
RecoilX
类型:双精度浮点数
默认值:0
示例:0.0114
水平方向的后坐力
RecoilY
类型:双精度浮点数
默认值:0
示例:0.0514
竖直方向的后坐力
DefaultZoom
类型:双精度浮点数
默认值:1.25
武器的默认瞄准放大倍率
MinZoom
类型:双精度浮点数
默认值:1.25
最小放大倍率,留空等于默认倍率
MaxZoom
类型:双精度浮点数
默认值:1.25
最大放大倍率,留空等于默认倍率
Spread
类型:双精度浮点数
默认值:0
示例:3.5
武器子弹散布
Damage
类型:双精度浮点数
默认值:0
示例:2.5
武器的基础伤害
Headshot
类型:双精度浮点数
默认值:1.5
示例:1.5
武器的爆头倍率
Velocity
类型:双精度浮点数
默认值:0
示例:17
武器发射子弹的初速度,单位m/tick
BypassesArmor
类型:双精度浮点数
默认值:0
示例:0.46
武器的穿甲比例,不是百分比
0.46代表46%穿甲,可以超过100%
Magazine
类型:整数
默认值:0
示例:11
弹匣容量,不写或填入不大于0的数字时默认使用背包弹药。而不是弹匣弹药(例如加特林和海月权杖)
MeleeDamage
类型:双精度浮点数
默认值:0
示例:20
武器的近战伤害,不写这个就不能近战攻击
MeleeDuration
类型:整数
默认值:16
整个攻击动作的持续时间
MeleeDamageTime
类型:整数
默认值:6
开始近战攻击后,在第几个tick后造成近战伤害
Projectile
类型:对象
描述:包含投射物的类型和NBT数据等信息
有两个字段:
- Type | 字符串,可以填写要发射的实体的注册名,默认为
"superbwarfare:projectile"
- Data | json对象,可以填写实体的NBT
也可以在
data/superbwarfare/launchable
下新建json定义投射物属性
模组保留了几个会自动替换属性的字段,例如示例的damage部分使用了@sbw:damage
,会自动将该投射物的NBT替换为武器伤害,所有可用字段分别为:
@sbw:owner
| UUID@sbw:owner_string_lower
| 字符串@sbw:owner_string_upper
| 字符串@sbw:damage
| 双精度浮点数@sbw:explosion_radius
| 双精度浮点数@sbw:spread
| 双精度浮点数
{
"Projectile": {
"Type": "minecraft:arrow",
"Data": {
"damage": "@sbw:damage",
"pickup": 2,
"crit": false
}
}
}
ProjectileAmount
类型:整数
默认值:1
一次开火发射的子弹数量
Weight
类型:整数
默认值:0
武器的重量
DefaultFireMode
类型:枚举
默认值:"Semi"
可选值:"Semi"("半自动")
, "Burst"("N连发")
, "Auto"("全自动")
武器默认的开火模式,只能从可选值中选一个填写
设置 Burst
时连发次数由 BurstAmount
决定
AvailableFireModes
类型:枚举数组
默认值:["Semi"]
武器可用的全部开火模式
BurstAmount
类型:整数
默认值:0
武器使用Burst开火模式下,每次连发的射击次数
ReloadTypes
类型:枚举数组
默认值:["Magazine"]
可选值:"Magazine"("弹匣换弹")
, "Clip"("弹夹换弹")
, "Iterative"("逐个装填换弹")
武器的换弹类型
{
"ReloadTypes": ["Magazine", "Clip"]
}
NormalReloadTime
类型:整数
默认值:0
武器正常的换弹时间,单位是tick
EmptyReloadTime
类型:整数
默认值:0
武器空仓换弹的时间,单位是tick
BoltActionTime
类型:整数
默认值:0
栓动武器拉栓所需时间,单位是tick
PrepareTime
类型:整数
默认值:0
仓内有弹时,准备换弹的时长,单位是tick
PrepareLoadTime
类型:整数
默认值:0
仓内无弹时,需要在准备阶段往弹仓里塞一发子弹,准备换弹的时长(适用于在准备换弹期间,就往弹仓里塞一发子弹,如M870和二次灾变)
PrepareEmptyTime
类型:整数
默认值:0
仓内无弹时,不需要在准备阶段往弹仓里塞一发子弹,准备换弹的时长,单位是tick
PrepareAmmoLoadTime
类型:整数
默认值:1
准备阶段需要上弹时,准备阶段时还剩余此tick,往弹仓里装填一发子弹(0.8.2新增)
IterativeTime
类型:整数
默认值:0
若武器的换弹类型是Iterative
时,每次单发装填所使用的时间,单位是tick
IterativeAmmoLoadTime
类型:整数
默认值:1
若武器的换弹类型是Iterative
,上弹计时还剩余此tick时,往弹仓里装填一发子弹的时间,单位是tick
IterativeLoadAmount
类型:整数
默认值:1
若武器的换弹类型是Iterative
,每次单发装填的上弹数量
FinishTime
类型:整数
默认值:0
换弹结束阶段的时长
SoundRadius
类型:双精度浮点数
默认值:0
武器开火声音传播范围
RPM
类型:整数
默认值:600
武器的射速,单位 次/分
ShootDelay
类型:整数
默认值:0
武器的开火延迟,如果是直接发射则不需要填写
AmmoType
类型:字符串
武器开火所需要消耗的弹药,支持三种类型:
- 物品注册名
- 符合物品标签的所有物品,需要以
#
开头,加上物品标签名 - 卓越前线提供的五种基本弹药类型,需要以
@
开头,加上弹药种类名,只能从以下五种选择其一)- HandgunAmmo
- RifleAmmo
- ShotgunAmmo
- SniperAmmo
- HeavyAmmo
{
"AmmoType": "@RifleAmmo",
"AmmoType": "#minecraft:planks",
"AmmoType": "minecraft:arrow"
}
HeatPerShoot
类型:双精度浮点数
默认值:0
每次开火射击后,武器增加的热量,双精度浮点数类型。
ExplosionDamage
类型:双精度浮点数
默认值:0
当武器的弹药是爆炸物时,弹药的爆炸伤害
ExplosionRadius
类型:双精度浮点数
默认值:0
当武器的弹药是爆炸物时,弹药的爆炸半径
AvailablePerks
类型:字符串数组
武器所有的可用模组列表,可以填入以下类型:
- 以 @ 开头,加上Ammo, Functional, Damage,表示可以使用该类型的全部模组
- 模组注册名,表示可用该模组
- 以英文感叹号 ! 开头,加上模组注册名,表示不可用该模组
注意:务必将@放在最前面,!放在最后面
{
"AvailablePerks": [
"@Ammo",
"superbwarfare:field_doctor",
"superbwarfare:powerful_attraction",
"superbwarfare:intelligent_chip",
"superbwarfare:monster_hunter",
"superbwarfare:vorpal_weapon",
"!superbwarfare:micro_missile",
"!superbwarfare:longer_wire",
"!superbwarfare:cupid_arrow"
]
}
DamageReduce
类型:对象
武器子弹距离衰减类型,不需要距离衰减的武器可以不写,有三个字段:
Type
| 枚举 | 使用预设的衰减类型,会覆盖下面两个属性 | 可以从"Shotgun"
,"Sniper"
,"Heavy"
,"Handgun"
,"Rifle"
,"Smg"
中选择一个填写Rate
| 双精度浮点数 | 武器子弹伤害随距离衰减的比率MinDistance
| 双精度浮点数 | 武器子弹伤害的最小衰减距离,超过这个距离的子弹开始降低伤害
武器伤害衰减公式为:子弹伤害 * (1 - (距离 - 最小距离) * 比率)
{
"DamageReduce": {
"Rate": 0.5,
"MinDistance": 10
},
"DamageReduce": {
"Type": "Shotgun"
}
}