本篇教程由作者设定使用 CC BY-NC-SA 协议。
如图所示,ARIP配件包添加了几个瞄具,它们在同一镜座上安装了多个瞄具,而目前tacz并不能快速的切换瞄具,只能玩家手动切换,使它们在激烈的战斗中失去了意义。
因此,我使用KubeJS注册了一个按键,只要按下它就可以快速切换同一镜座上的多个瞄具。
注册按键方法同KubeJS注册按键,这里仅展示server_scripts中的内容
NetworkEvents.dataReceived('global.toggle_sight.consumeClick', (event) => {
const { player } = event
const { mainHandItem } = player
const { nbt } = mainHandItem
const scope_list = [
[
'arip:sight_eotech_hhs5_ogl_ftc_nozoom',
'arip:sight_eotech_hhs5_ogl_ftc',
'arip:sight_eotech_hhs5_ogl_ftc_aiminlaser'
],
['arip:sight_eotech_hhs8_nozoom', 'arip:sight_eotech_hhs8'],
[
'arip:sight_vortex_razorhdg3_6t36x56_but_venom_rd',
'arip:sight_vortex_razorhdg3_6t36x56'
]
]
if (nbt != undefined && nbt.contains('GunId')) {
let scope_id = String(nbt.AttachmentSCOPE?.tag?.AttachmentId)
scope_list.forEach((scope) => {
if (scope.indexOf(scope_id) != -1) {
let i = scope.indexOf(scope_id)
nbt.AttachmentSCOPE.tag.AttachmentId =
scope[(i + 1) % scope.length]
}
})
}
})
tacz的枪都带有nbt,通过读取nbt,可以获取瞄具id;通过修改nbt,可以修改瞄具。