31 lines
1.2 KiB
Java
31 lines
1.2 KiB
Java
package me.sashegdev.justasplash.mixin;
|
|
|
|
import com.mojang.blaze3d.audio.Library;
|
|
import org.spongepowered.asm.mixin.Mixin;
|
|
import org.spongepowered.asm.mixin.injection.At;
|
|
import org.spongepowered.asm.mixin.injection.Inject;
|
|
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
|
|
|
|
import java.lang.reflect.Constructor;
|
|
import java.lang.reflect.Field;
|
|
|
|
@Mixin(Library.class)
|
|
public class LibraryMixin {
|
|
@Inject(method = "init", at = @At("TAIL"))
|
|
private void justasplash$unlimitedChannels(String deviceName, boolean hrtf, CallbackInfo ci) {
|
|
try {
|
|
Class<?> poolClass = Class.forName("com.mojang.blaze3d.audio.Library$CountingChannelPool");
|
|
Constructor<?> ctor = poolClass.getDeclaredConstructor(int.class);
|
|
ctor.setAccessible(true);
|
|
Object pool1 = ctor.newInstance(128);
|
|
Object pool2 = ctor.newInstance(128);
|
|
Field streaming = Library.class.getDeclaredField("streamingChannels");
|
|
streaming.setAccessible(true);
|
|
streaming.set(this, pool1);
|
|
Field staticCh = Library.class.getDeclaredField("staticChannels");
|
|
staticCh.setAccessible(true);
|
|
staticCh.set(this, pool2);
|
|
} catch (Exception ignored) {}
|
|
}
|
|
}
|