优化代码

This commit is contained in:
17146 2025-04-15 01:09:11 +08:00 committed by Light_Quanta
parent 31c51b48de
commit 1336c66699
No known key found for this signature in database
GPG key ID: 11A39A1B8C890959

View file

@ -255,6 +255,15 @@ public class GunEventHandler {
} }
} }
public static double perkDamage(ItemStack stack) {
var data = GunData.from(stack);
var perk = data.perk.get(Perk.Type.AMMO);
if (perk instanceof AmmoPerk ammoPerk) {
return ammoPerk.damageRate;
}
return 1;
}
public static double perkSpeed(GunData data) { public static double perkSpeed(GunData data) {
var perk = data.perk.get(Perk.Type.AMMO); var perk = data.perk.get(Perk.Type.AMMO);
if (perk instanceof AmmoPerk ammoPerk) { if (perk instanceof AmmoPerk ammoPerk) {
@ -266,28 +275,27 @@ public class GunEventHandler {
/** /**
* 通用的武器换弹流程 * 通用的武器换弹流程
*/ */
private static void handleGunReload(Player player, GunData gun) { private static void handleGunReload(Player player, GunData data) {
var data = GunData.from(gun.stack); var stack = data.stack();
var stack = gun.stack(); var gunItem = data.item();
var gunItem = gun.item(); var reload = data.reload;
var reload = gun.reload;
// 启动换弹 // 启动换弹
if (reload.reloadStarter.start()) { if (reload.reloadStarter.start()) {
NeoForge.EVENT_BUS.post(new ReloadEvent.Pre(player, stack)); NeoForge.EVENT_BUS.post(new ReloadEvent.Pre(player, stack));
if (gunItem.isOpenBolt(stack)) { if (gunItem.isOpenBolt(stack)) {
if (gun.ammo.get() == 0) { if (data.ammo.get() == 0) {
reload.setTime(gun.defaultEmptyReloadTime() + 1); reload.setTime(data.defaultEmptyReloadTime() + 1);
reload.setState(ReloadState.EMPTY_RELOADING); reload.setState(ReloadState.EMPTY_RELOADING);
playGunEmptyReloadSounds(player); playGunEmptyReloadSounds(player);
} else { } else {
reload.setTime(gun.defaultNormalReloadTime() + 1); reload.setTime(data.defaultNormalReloadTime() + 1);
reload.setState(ReloadState.NORMAL_RELOADING); reload.setState(ReloadState.NORMAL_RELOADING);
playGunNormalReloadSounds(player); playGunNormalReloadSounds(player);
} }
} else { } else {
reload.setTime(gun.defaultEmptyReloadTime() + 2); reload.setTime(data.defaultEmptyReloadTime() + 2);
reload.setState(ReloadState.EMPTY_RELOADING); reload.setState(ReloadState.EMPTY_RELOADING);
playGunEmptyReloadSounds(player); playGunEmptyReloadSounds(player);
} }
@ -298,21 +306,21 @@ public class GunEventHandler {
// 换弹时额外行为 // 换弹时额外行为
var behavior = gunItem.reloadTimeBehaviors.get(reload.time()); var behavior = gunItem.reloadTimeBehaviors.get(reload.time());
if (behavior != null) { if (behavior != null) {
behavior.accept(gun); behavior.accept(data);
} }
if (reload.time() == 1) { if (reload.time() == 1) {
if (gunItem.isOpenBolt(stack)) { if (gunItem.isOpenBolt(stack)) {
if (gun.ammo.get() == 0) { if (data.ammo.get() == 0) {
playGunEmptyReload(player, gun); playGunEmptyReload(player, data);
} else { } else {
playGunNormalReload(player, gun); playGunNormalReload(player, data);
} }
} else { } else {
playGunEmptyReload(player, gun); playGunEmptyReload(player, data);
} }
data.reload.setTime(0); reload.setTime(0);
data.reload.setState(ReloadState.NOT_RELOADING); reload.setState(ReloadState.NOT_RELOADING);
reload.reloadStarter.finish(); reload.reloadStarter.finish();
} }