Перейти к содержимому

AudioEnginePlus 4.0.0-alpha для Minecraft 1.21.9 (Fabric)

Альфа4 июня 2026Minecraft 1.21.1–1.21.11Fabric363 скачиваний на Modrinth
Тестовая версия — возможны ошибки.

Файлы · 1

audioengineplus-4.0-alpha.jarОсновной607 КБСкачать
Основной · 607 КБ
SHA-14b4c0f5e907bbbcd55cb2fd14a5a1251a58193c0SHA-5123c4bdafd584835da33e750d6b569c6ddc8b2af1b142a87cd67c67e3e8d743653344366e232942328166e42c1342704f45cdaa05e8cd84460ec8eb473e5166000
Скачать

Что изменилось

v4.0 Alpha — Weather Audio, Occlusion Polish & Stability


✨ New

  • Weather-safe streaming — MemoryAudioStream loops PCM when the buffer ends instead of returning null (avoids OpenAL reload overlap)
  • Continuous ambient bypass — AsyncStreamer.isContinuousAmbientStream() keeps rain, weather, and cave ambients on vanilla OggAudioStream (no Phase 5 PCM cache for those paths)
  • Occlusion 2.1 — provisional cache + async refine; player-centric raycasting (phase4.playerCentricRaycasting, default on); smoothed gain via OcclusionState / writeSmoothedGain
  • LOOP_FAR priority — distant ambient/weather loops (>32 blocks) use SourcePriority.LOOP_FAR with shared maxAmbientSources budget
  • Reload generation guards — reloadGeneration on SoundPreloader, AsyncStreamer, and SoundReloadListener so in-flight preloads/decode do not write after resource reload
  • OcclusionApi — getOcclusionFromProvider() hook for external occlusion mods/providers
  • Cloth Config lang — en_us.json tooltip for deprecated asyncWorkerThreads

⚡ Performance

  • PCM replay — seamless loop for cached stream segments; fewer redundant OGG decodes on short repeatable streams
  • Occlusion tick — invalidates stale pending futures when source/listener block moves; sync fallback before async refine; normalized cache path for player-centric mode
  • OcclusionCache — tick-based TTL retained; provisional entries reduce “silent until ray completes” gaps
  • Smart pool — deferred eviction queue (aep$deferredEvictions); getEffectiveCount() / pending-eviction accounting; position tracking with 0.01-block epsilon
  • Dedup — greedy centroid clustering retained; weather path exempt so global loops are not merged/delayed
  • LOD — LodPcmGenerator Lanczos resampler (anti-alias) replaces box filter; correct native byte-order on ByteBuffer.duplicate() (fixes distant mob LOD crackle)
  • Preload — direct-memory headroom checks and generation-stamped async work in SoundPreloader
  • Phase 3 — async tick work stays sync on render thread (~μs per sound); asyncWorkerThreads marked unused in config

🔧 Changes

  • Updated: gradle.properties / docs — release line 3.0-alpha → 4.0-alpha
  • Updated: SoundEngineMixinPhase4 — occlusion apply order; category scaling after occlusion; WEATHER and relative sounds skip occlusion processing
  • Updated: SoundDeduplicator — weather added to dedup-exempt patterns (with block interaction sounds)
  • Updated: SoundReloadListener — coordinated cache clear: PCM, session static, LOD, occlusion state, dedup/pool, AsyncStreamer.reset()
  • Updated: SoundPhysicsRemasteredCompat — runtime occlusion disable when SPR is present (unchanged behavior, refined checks)
  • Unchanged from 3.0: StreamingBufferQueue still not wired; SoundInstancePool still removed; Caffeine still absent

🐛 Fixes

  • Duplicate rain / weather layer — second rain heard while moving or standing (PCM stream end → reload overlap + occlusion gain on listener-bound loops)
  • Shared OggAudioStream corruption — per-play MemoryAudioStream with independent cursor (carried from 3.0; loop rewind completes the fix for repeatable streams)
  • LOD crackle on distant sounds — wrong endian on duplicated PCM views in LodPcmGenerator
  • Stale occlusion after movement — cancel pending futures and refresh cache when source/listener block changes
  • Dedup replay — MergedSoundInstance never re-deferred; key counts cleared on flush
  • Resource reload races — blacklist pattern swap, native buffer ownership, and in-flight preload abandonment
  • Smart pool double-register — merged sounds only registered via play() injection path

⚠️ Known limitations (alpha)

  • StreamingBufferQueue — implemented but not connected to SoundLoader; true decode-while-playing pipeline is future work
  • Weather PCM cache — if manually cached via blacklist/config edge cases, prefer vanilla path; continuous ambients are excluded by default
  • No automated tests — heavy farms/PvP may need lower globalRayBudgetPerTick, dedupThreshold, or category limits in Phase 1
  • Phase 5 static path — enableStaticCaching still limited by staticCacheThresholdBytes; long streamed ambients should stay on OGG

📦 Upgrade from 3.0-alpha

If you had…In 4.0…
Rain/weather “ghost” audioFixed by default (no config toggle required)
Distant mob LOD noiseImproved resampler + byte-order fix
Occlusion pumping while walkingReduced; weather/relative loops excluded
Same phase5 / phase4 config keysCompatible; new: playerCentricRaycasting

Сайт использует cookie: необходимые — для входа и темы, а также счётчики посещений Яндекс Метрика и LiveInternet — по ним мы видим, как пользуются сайтом. Рекламных cookie у нас нет. Подробнее