优化海月权杖射击动画

This commit is contained in:
Atsuishio 2025-05-24 17:05:22 +08:00 committed by Light_Quanta
parent 833bb8a85e
commit 82b26ffdcb
No known key found for this signature in database
GPG key ID: 11A39A1B8C890959

View file

@ -63,9 +63,6 @@ public class AureliaSceptre extends GunItem implements GeoItem {
ItemStack stack = player.getMainHandItem(); ItemStack stack = player.getMainHandItem();
if (!(stack.getItem() instanceof GunItem)) return PlayState.STOP; if (!(stack.getItem() instanceof GunItem)) return PlayState.STOP;
if (ClientEventHandler.firePosTimer > 0) {
return event.setAndContinue(RawAnimation.begin().thenLoop("animation.aurelia_sceptre.fire"));
}
if (player.isSprinting() && player.onGround() if (player.isSprinting() && player.onGround()
&& ClientEventHandler.cantSprint == 0 && ClientEventHandler.cantSprint == 0
@ -76,6 +73,21 @@ public class AureliaSceptre extends GunItem implements GeoItem {
return event.setAndContinue(RawAnimation.begin().thenLoop("animation.aurelia_sceptre.idle")); return event.setAndContinue(RawAnimation.begin().thenLoop("animation.aurelia_sceptre.idle"));
} }
private PlayState firePredicate(AnimationState<AureliaSceptre> event) {
LocalPlayer player = Minecraft.getInstance().player;
if (player == null) return PlayState.STOP;
ItemStack stack = player.getMainHandItem();
if (!(stack.getItem() instanceof GunItem gunItem)) return PlayState.STOP;
var data = GunData.from(stack);
if (ClientEventHandler.holdFire && gunItem.canShoot(data) && !data.overHeat.get()) {
return event.setAndContinue(RawAnimation.begin().thenLoop("animation.aurelia_sceptre.fire"));
}
return event.setAndContinue(RawAnimation.begin().thenLoop("animation.aurelia_sceptre.idle"));
}
private PlayState meleePredicate(AnimationState<AureliaSceptre> event) { private PlayState meleePredicate(AnimationState<AureliaSceptre> event) {
if (ClientEventHandler.gunMelee > 0) { if (ClientEventHandler.gunMelee > 0) {
return event.setAndContinue(RawAnimation.begin().thenPlay("animation.aurelia_sceptre.hit")); return event.setAndContinue(RawAnimation.begin().thenPlay("animation.aurelia_sceptre.hit"));
@ -100,6 +112,8 @@ public class AureliaSceptre extends GunItem implements GeoItem {
public void registerControllers(AnimatableManager.ControllerRegistrar data) { public void registerControllers(AnimatableManager.ControllerRegistrar data) {
var idleController = new AnimationController<>(this, "idleController", 6, this::idlePredicate); var idleController = new AnimationController<>(this, "idleController", 6, this::idlePredicate);
data.add(idleController); data.add(idleController);
var fireController = new AnimationController<>(this, "fireController", 3, this::firePredicate);
data.add(fireController);
var meleeController = new AnimationController<>(this, "meleeController", 0, this::meleePredicate); var meleeController = new AnimationController<>(this, "meleeController", 0, this::meleePredicate);
data.add(meleeController); data.add(meleeController);
} }