generated from MrSphay/codex-agent-repository-kit
Decompile upstream Explosion Overhaul 0.2.3.0
This commit is contained in:
@@ -0,0 +1,42 @@
|
||||
/*
|
||||
* 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;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user