No description
  • Java 83.4%
  • Shell 16.6%
Find a file
Adam Rosenbaum e94ad9b65e SoundReloadFix: fix Forge 1.7.10 duplicate OpenAL context / silent sound
Forge's post-mod-load resource refresh restarts the sound system while the
vanilla startup load is still in flight; the second SoundSystem races the
first for LWJGL's single OpenAL context and Paulscode's static init flag,
ending in a 40 s timeout, AL.destroy() and silent mode.

Coremod skips the redundant restart while a loader is in progress (still
posting SoundLoadEvent). Includes the diagnostic probe agent and findings.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-14 10:27:06 -06:00
probe SoundReloadFix: fix Forge 1.7.10 duplicate OpenAL context / silent sound 2026-10-14 10:27:06 -06:00
soundreloadfix SoundReloadFix: fix Forge 1.7.10 duplicate OpenAL context / silent sound 2026-10-14 10:27:06 -06:00
.gitignore SoundReloadFix: fix Forge 1.7.10 duplicate OpenAL context / silent sound 2026-10-14 10:27:06 -06:00
FINDINGS.md SoundReloadFix: fix Forge 1.7.10 duplicate OpenAL context / silent sound 2026-10-14 10:27:06 -06:00
README.md SoundReloadFix: fix Forge 1.7.10 duplicate OpenAL context / silent sound 2026-10-14 10:27:06 -06:00
ROLLBACK.md SoundReloadFix: fix Forge 1.7.10 duplicate OpenAL context / silent sound 2026-10-14 10:27:06 -06:00
run_test.sh SoundReloadFix: fix Forge 1.7.10 duplicate OpenAL context / silent sound 2026-10-14 10:27:06 -06:00
TESTING.md SoundReloadFix: fix Forge 1.7.10 duplicate OpenAL context / silent sound 2026-10-14 10:27:06 -06:00

ForgeSoundFix (soundreloadfix)

A small Forge coremod for Minecraft 1.7.10 / Forge 10.13.4.1614. It fixes the problem where there is no audio at all, the log shows Only one OpenAL context may be instantiated at any one time, and about 40 s later the sound system falls back to SoundSystem did not load after 30 seconds → Silent Mode.

It shows up on fast machines with few mods. Forge's post-mod-load resource refresh restarts the sound system while the vanilla startup load is still running, so two SoundSystems race for the single LWJGL OpenAL context. The loser's failure ends with the winner's context being destroyed. The fix skips that redundant restart while a load is still in flight; Forge's SoundLoadEvent is still posted. Full analysis: FINDINGS.md.

Install

Build soundreloadfix-1.0.0.jar and drop it into .minecraft/mods/. A successful start logs [SoundReloadFix]: Patched SoundManager and Sound system restart skipped.

JVM flags: -Dsoundreloadfix.enabled=false disables the patch; -Dsoundreloadfix.debug=true logs call stacks. If the SoundManager bytecode doesn't match the expected Forge 1614 shape, the mod logs a warning and patches nothing.

Build

soundreloadfix/build.sh

Requires a JDK ≥ 9 (compiles with --release 8) and the MultiMC library cache (Forge universal 1614, launchwrapper 1.12, ASM 5.0.3, log4j-api beta9). Override the cache path with MMC_LIBS=....

Layout

  • soundreloadfix/: the coremod (plugin, ASM transformer, runtime hooks).
  • probe/: diagnostic-only javaagent that logs SoundManager/Paulscode/AL.create/AL.destroy with ms timestamps and stacks.
  • run_test.sh: launch-and-capture harness used during the investigation.
  • FINDINGS.md, TESTING.md, ROLLBACK.md.