TaCZ的无限子弹
本章涉及内容:按键注册和使用、forgeevent、loadclass、paint、玩家数据 涉及模组及版本:
rhino-forge-2001.2.3-build.6
tacz-1.20.1-1.0.3-all
architectury-9.2.14-forge
kubejs-forge-2001.6.5-build.16
probejs-6.0.1-forge
完整代码 startup_scripts
主要部分
const $GunShootEvent = Java.loadClass("com.tacz.guns.api.event.common.GunShootEvent")
const $Integer = Java.loadClass("java.lang.Integer")
const $ModSyncedEntityData = Java.loadClass("com.tacz.guns.entity.sync.ModSyncedEntityData")
const $AbstractGunItem = Java.loadClass("com.tacz.guns.api.item.gun.AbstractGunItem")
ForgeEvents.onEvent($GunShootEvent,event=>{global.gse(event)})
global.gse = event =>{
try{
// 处理事件,如果为客户端则不处理
if(event.logicalSide.isClient()) return;
let item = event.getGunItemStack();
// 获取玩家数据,判断玩家是否处于无限子弹模式
if(event.getShooter().data.get("frenzyOpen"))
item.nbt.merge({GunCurrentAmmoCount:$Integer.decode(
item.nbt.getInt("GunCurrentAmmoCount")+1+""
)});
}catch(err){
console.warn(err);
}
}该代码获取枪械物品的nbt,然后将子弹改为不消耗
注册按键
注册按键的汉化和处理 client_scripts
完整代码 server_scripts
一些注意事项
该项目只是作为示例,很多地方并不是最优解,可自行进行解决
如果对该项目代码部分不满可以将修改好的代码上传至gitee项目仓库
注册按键不要打包给服务器(具体看关于按键注册的注释)
Last updated