COWMODSКаталог модов
Effective Instruments

ВЕРСИИ (2)

release

Effective Instruments 1.6.0

1.6.0
6 июл. 2026 г.2,6 тыс.Minecraft: 1.20.1forge
Скачать
Что нового
## [1.6.0] - 2026-07-01 ### Added - **Datapack-driven aura data.** Aura presets, instrument→aura mappings, and durability metadata now load from datapacks (`data/<namespace>/effectiveinstruments/aura/{presets,instrument_map,mobile_instrument_map,durability}/`) via a reload listener that re-runs on server start and every `/reload`. The mod ships its defaults as a generated datapack; modpacks can add or override any of it. Legacy `config/effective_instruments/` files still layer on top as overrides (gated by `allowConfigOverrides`). - **Client preset sync (`SyncAuraDataS2CPacket`).** Remote clients receive the server's preset registry + mappings so the selector overlay works on dedicated/LAN servers. Sent on login and after every server reload (via `OnDatapackSyncEvent`). Wire protocol bumped to **5** — pre-1.6.0 clients cannot populate a datapack-driven registry, so the handshake mismatch is intentional. - **`IAuraPerformer` seam** (`PlayerPerformer`) — groundwork for non-player performers; player behavior is unchanged. ### Fixed - Malformed datapack JSON (bad field type, invalid effect id) is now isolated per entry and can no longer abort world load or leave the aura registry half-cleared; the registry is swapped in transactionally. - The reload listener no longer reads SERVER config before it loads (regression of the 1.4.9 split); pre-config reads route through safe accessors. - Effect cleanup no longer strips beacon / other-mod effects that merely share an aura's amplifier and ambient flag — it now matches on the recorded expiry. - Vanilla `/reload` re-syncs presets to clients (previously only login and the EI commands did). - Mobile autoplay auras now activate in every dimension (discovery scan was overworld-only) and are cleared from the active set on logout. - Server authority: stationary aura selection requires a held tracked instrument, and the mobile screen-open path requires the claimed instrument to actually be held — closing two client-trusted-state holes. - Spectators, snow golems, ambient creatures, and neutral mobs are no longer hit by offensive auras under the default config. - Per-note aura application is throttled, and mobile aura radius is capped to the mobile tier's bound. - Packets now declare their network direction; a `.gitattributes` normalizes line endings (`gradlew` stays LF).
release

Effective Instruments 1.5.0 (Forge 1.20.1)

1.5.0
15 мая 2026 г.4,5 тыс.Minecraft: 1.20.1forge
Скачать
Что нового
## [1.5.0] - 2026-05-09 ### Changed - **Genshin Instruments is now an optional backend.** Previously the mod hard-required GI (`mandatory=true` in `mods.toml`, `implementation`-scoped in `build.gradle`) — users who wanted only Immersive Melodies mobile support had no path. 1.5.0 demotes GI to `compileOnly` / `mandatory=false`, on the same conceptual footing as IM. All four runtime combinations now work: 1. EI + GI only — existing stationary behavior unchanged. 2. EI + IM only — mobile tier works without GI installed (new). 3. EI + GI + IM — both tiers work. 4. EI alone — mod loads cleanly, logs a warning that no backend is installed, commands and configs still work. - **Mod description broadened** to reflect dual-backend support: *"Aura effects while playing supported modded instruments, including Genshin Instruments and Immersive Melodies"*. ### Added - **`compat/genshin/GenshinInstrumentsCompat`** — bootstrap that detects Genshin Instruments via `ModList.get().isLoaded` at common-setup and manually registers the GI event handler only when GI is present. Mirrors the existing `ImmersiveMelodiesCompat` pattern. - **`compat/genshin/GenshinInstrumentEventHandler`** — the only class that imports `com.cstav.genshinstrument.*`. Registered manually (no `@Mod.EventBusSubscriber`); never linked when GI is absent. Holds the three previously-scattered GI handlers: `onNoteSoundPlayed`, `onHeldNoteSoundPlayed`, `onInstrumentStateChanged`. - **`compat/genshin/client/GenshinInstrumentScreenBridge`** — reflection- based client bridge for GI's `InstrumentScreen`. Uses `Class.forName` + cached `Method` lookups behind an `isAvailable` gate so the client overlay holds zero compile-time references to GI types. Lazy-resolves on first use, caches success/failure to keep the hot path branch-free. - **`event/StationaryInstrumentNoteService`** — backend-agnostic note pipeline. Owns the broken-state gate, polarity-aware durability damage, aura record + immediate-apply, and per-player broken/low-durability message throttles. The GI event handler now delegates here; any future backend can do the same without touching GI-specific code. - **`/effectiveinstruments diagnose` Backends section.** New first line of the diagnose dump: `Backends: genshin=active|absent immersive_melodies= active|absent`. When neither is installed, follows up with a yellow WARNING line. Answers "is the backend even loaded?" without trawling the log. - **Dev runtime toggle.** `./gradlew runClient -PdevRuntimeGenshin=true` pulls GI as `runtimeOnly` for local testing. The default `runClient` exercises the GI-absent path. ### Removed - **`event/NoteActivityHandler`** — fully replaced by `StationaryInstrumentNoteService` (shared logic) and `GenshinInstrumentEventHandler` (GI-specific subscription). The throttle maps and per-player logout cleanup moved to the service alongside the broken/low warnings they belong with. - **GI imports from `event/InstrumentStateHandler`** — the `onInstrumentStateChanged` handler and its `isHoldingBrokenInstrument` helper moved into `GenshinInstrumentEventHandler`. The class is now 100 % backend-agnostic; `onLevelTick`, `onPlayerLogout`, `onPlayerChangedDimension`, `onPlayerDeath` remain. - **GI import from `client/event/AuraOverlayInjector`** — replaced by the `GenshinInstrumentScreenBridge` reflection layer. The `instanceof InstrumentScreen` check became `GenshinInstrumentScreenBridge.isInstrumentScreen(screen)`, and `instrumentScreen.getInstrumentId()` became `GenshinInstrumentScreenBridge.getInstrumentId(screen)` with null-safe handling for the failure case. ### Fixed - **Javadoc references to `com.cstav.genshinstrument.event.*` removed** from `AuraManager` and `EffectiveInstrumentsAPI`. The wording now describes the abstract "backend instrument-open event signal" rather than naming a class that may not be present at javadoc-generation time. ### Notes for server admins - The packet protocol version is **unchanged** at `4`. v1.4.x clients connect to v1.5.0 servers cleanly and vice versa. - **Behavior change:** if your server is currently running v1.4.x with Genshin Instruments installed, no migration is needed — the v1.5.0 jar detects GI exactly as before and runs the stationary tier. - **New deployment option:** servers that don't want GI installed can now ship just Effective Instruments + Immersive Melodies and get the mobile tier, no GI jar required.