Files
Explosion-Overhaul/build/decompiled/com/vinlanx/explosionoverhaul/mixin/SoundEngineAudioQueueMixin.java
2026-05-04 10:03:58 +00:00

43 lines
1.7 KiB
Java

/*
* Decompiled with CFR 0.152.
*/
package com.vinlanx.explosionoverhaul.mixin;
import com.vinlanx.explosionoverhaul.client.LowPassConcussionEffect;
import com.vinlanx.explosionoverhaul.client.SoundEngineAudioQueue;
import com.vinlanx.explosionoverhaul.mixin.ChannelAccessor;
import net.minecraft.client.sounds.ChannelAccess;
import net.minecraft.client.sounds.SoundEngine;
import org.spongepowered.asm.mixin.Final;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.Shadow;
import org.spongepowered.asm.mixin.Unique;
import org.spongepowered.asm.mixin.injection.At;
import org.spongepowered.asm.mixin.injection.Inject;
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
@Mixin(value={SoundEngine.class})
public class SoundEngineAudioQueueMixin {
@Shadow
@Final
private ChannelAccess f_120224_;
@Unique
private boolean explosionoverhaul$wasActive = false;
@Inject(method={"tick(Z)V"}, at={@At(value="HEAD")})
private void explosionoverhaul$drainAudioQueue(boolean paused, CallbackInfo ci) {
boolean active = LowPassConcussionEffect.isActive();
boolean wasActive = this.explosionoverhaul$wasActive;
this.f_120224_.m_120137_(channels -> {
SoundEngineAudioQueue.drainNow();
if (active) {
channels.forEach(channel -> LowPassConcussionEffect.attachFilterToSource(((ChannelAccessor)channel).explosionoverhaul$getSource()));
} else if (wasActive) {
channels.forEach(channel -> LowPassConcussionEffect.detachFilterFromSource(((ChannelAccessor)channel).explosionoverhaul$getSource()));
}
});
this.explosionoverhaul$wasActive = active;
}
}