From b25fa9806dc286c45048251994b14a8d3e8a3ac5 Mon Sep 17 00:00:00 2001 From: StewStrong Date: Fri, 24 Nov 2023 23:08:44 -0700 Subject: [PATCH] Updated the thing --- .../mixin/feature/sound/client/MixinSoundEngine.java | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/common/src/main/java/org/valkyrienskies/mod/mixin/feature/sound/client/MixinSoundEngine.java b/common/src/main/java/org/valkyrienskies/mod/mixin/feature/sound/client/MixinSoundEngine.java index 47fad3930..7c5923fe4 100644 --- a/common/src/main/java/org/valkyrienskies/mod/mixin/feature/sound/client/MixinSoundEngine.java +++ b/common/src/main/java/org/valkyrienskies/mod/mixin/feature/sound/client/MixinSoundEngine.java @@ -19,6 +19,8 @@ import org.valkyrienskies.core.api.ships.ClientShip; import org.valkyrienskies.mod.client.audio.VelocityTickableSoundInstance; import org.valkyrienskies.mod.common.VSGameUtilsKt; +import org.valkyrienskies.mod.common.util.EntityDraggingInformation; +import org.valkyrienskies.mod.common.util.IEntityDraggingInformationProvider; import org.valkyrienskies.mod.mixinducks.com.mojang.blaze3d.audio.HasOpenALVelocity; @Mixin(SoundEngine.class) @@ -31,6 +33,7 @@ public abstract class MixinSoundEngine { protected abstract float calculatePitch(SoundInstance sound); // Applies the velocity provided by a VelocityTickableSoundInstance + @SuppressWarnings("unused") @WrapOperation( at = @At( value = "INVOKE", @@ -39,7 +42,7 @@ public abstract class MixinSoundEngine { ), method = "tickNonPaused" ) - private Object redirectGet(final Map instance, final Object obj, final Operation get) { + private Object redirectGet(final Map instance, final Object obj, final Operation get) { if (obj instanceof final VelocityTickableSoundInstance soundInstance) { final ChannelAccess.ChannelHandle handle = (ChannelAccess.ChannelHandle) instance.get(soundInstance); final float f = calculateVolume(soundInstance); @@ -59,6 +62,7 @@ private Object redirectGet(final Map instance, final Object obj, final Operation return get.call(instance, obj); } + @SuppressWarnings("unused") @WrapOperation( at = @At( value = "INVOKE", @@ -76,6 +80,12 @@ private void injectListenerVelocity(final Listener listener, final Vec3 position final ClientShip mounted = VSGameUtilsKt.getShipObjectEntityMountedTo(level, player); if (mounted != null) { ((HasOpenALVelocity) listener).setVelocity(mounted.getVelocity()); + } else { + final EntityDraggingInformation dragInfo = ((IEntityDraggingInformationProvider) player).getDraggingInformation(); + if (dragInfo.isEntityBeingDraggedByAShip()) { + final Vector3dc playerVel = dragInfo.getAddedMovementLastTick(); + ((HasOpenALVelocity) listener).setVelocity(playerVel); + } } }