Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- @SubscribeEvent
- public void onSoundPlayed(PlaySoundAtEntityEvent event)
- {
- World world = Minecraft.getMinecraft().world;
- if(SoundReverbHandler.shouldEcho(world))
- {
- try
- {
- LibraryLWJGLOpenAL lib = new LibraryLWJGLOpenAL();
- SoundSystem system = new SoundSystem();
- Field floatBuffer = ReflectionHelper.findField(LibraryLWJGLOpenAL.class, "listenerPositionAL");
- Field bufferMap = ReflectionHelper.findField(LibraryLWJGLOpenAL.class, "ALBufferMap");
- Field soundLibrary = ReflectionHelper.findField(SoundSystem.class, "soundLibrary");
- Field sndBffrMap = ReflectionHelper.findField(Library.class, "bufferMap");
- try
- {
- FloatBuffer buffer = (FloatBuffer) floatBuffer.get(lib);
- HashMap<String, IntBuffer> map = (HashMap) bufferMap.get(lib);
- Library library = (Library) soundLibrary.get(system);
- HashMap<String, SoundBuffer> bffrMap = (HashMap) sndBffrMap.get(library);
- HashMap<String, Source> srcMap = library.getSources();
- Set<String> keys = srcMap.keySet();
- Iterator<String> iter = keys.iterator();
- String sourcename;
- Source source;
- SoundBuffer soundBuffer;
- while(iter.hasNext())
- {
- sourcename = iter.next();
- source = srcMap.get(sourcename);
- soundBuffer = bffrMap.get(source.filenameURL.getFilename());
- Field channelAL = ReflectionHelper.findField(SourceLWJGLOpenAL.class, "channelOpenAL");
- channelAL.setAccessible(true);
- try
- {
- ChannelLWJGLOpenAL channelOpenAL = (ChannelLWJGLOpenAL) channelAL.get(
- new SourceLWJGLOpenAL(buffer, map.get(source.filenameURL.getFilename()),
- source, soundBuffer));
- SoundReverbHandler.onPlaySound(channelOpenAL.ALSource.get());
- }
- catch (IllegalArgumentException | IllegalAccessException e)
- {
- e.printStackTrace();
- }
- }
- }
- catch(IllegalArgumentException | IllegalAccessException e1)
- {
- e1.printStackTrace();
- }
- }
- catch (SoundSystemException e2)
- {
- e2.printStackTrace();
- }
- event.setVolume(event.getVolume() * 5F);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement