generated from MrSphay/codex-agent-repository-kit
43 lines
1.7 KiB
Java
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;
|
|
}
|
|
}
|
|
|