File Details
Runic Instruments 0.9.2 (Forge 1.20.1)
- R
- Apr 19, 2026
- 369.70 KB
- 188
- 1.20.1
- Forge
File Name
runicinstruments-0.9.2.jar
Supported Versions
- 1.20.1
Curse Maven Snippet
[0.9.2] — 2026-04-19
Closes the 0.9.x → 1.0 punch list: real survival progression, full localization, real MineColonies integration, and a proper config-key rename. No breaking gameplay changes for existing worlds.
Added
- Custom advancement trigger
runicinstruments:played_notesand a per-player, per-instrument-family note counter persisted underPlayerPersistedNBT (survives death and re-login). All 75 gated resonance advancement files now use it instead ofminecraft:impossible, with thresholds T2 = 50 notes, T3 = 200 + first-T2-of-family, T4 = 500 + first-T3-of-family. Note-block instrument variants fold into their themed family so playing abell_note_block_instrumentstill progresses the Ukulele family. Seetools/gen_advancements.pyfor the generator. - Localization for all 90 resonances.
writeResonancenow emitsdisplayNameanddescriptionas{"translate": "..."}Components, andassets/runicinstruments/lang/en_us.jsoncarries 180 new entries (resonance.runicinstruments.<id>.name/.description). User-edited literal-string JSONs continue to load unchanged. Seetools/gen_lang.py. - Explicit icon paths in default JSONs.
writeResonancenow writesiconandiconSelectedfields pointing at the on-disk convention so resonance JSONs are self-describing. The selector still falls back to the same convention when the fields are absent, so old user JSONs keep working. - Tests:
PlayedNotesTriggerTestround-trips the trigger condition JSON;InstrumentFamilyTestlocks in note-block-to-family folding.
Changed
- MineColonies
colony_moraleis no longer a placeholder. The handler reflectively pokesICitizenData.setSaturation(so MineColonies' own daily happiness pass sees well-fed citizens) and applies vanillaSaturation+Regenerationso the buff is observable in the citizen renderer and AI. Falls back to vanilla effects only if the saturation API has shifted in a future MineColonies build. - Config key rename
auraTickIntervalTicks→resonanceTickIntervalTicks. The legacy key is still read for backwards compatibility (a one-time WARN points users at the new key). All callers route throughRIServerConfig.getResonanceTickInterval().
Migration notes
- Existing worlds: nothing required. Resonance JSONs in
config/runic_instruments/resonances/keep their literal display names unless the file is deleted (then the new translatable form regenerates). - Server operators:
auraTickIntervalTickskeeps working but is deprecated — rename it in yourserver.tomlat your convenience.
Housekeeping
- Archived stale analysis docs to
docs/history/:RUNIC_INSTRUMENTS_REFINEMENT_AUDIT.md(0.9.1-era, items all closed) andRUNIC-INSTRUMENTS.md(0.9.0-era overview, superseded by README).
Test & build
./gradlew buildand./gradlew testboth pass on Java 17.
[0.9.1] — 2026-04-18
Refinement release focused on correctness, migration, UI polish, and a test foundation. No gameplay-content expansions beyond loot coverage.
Added
- Resonance icons.
SyncedResonanceDatanow carries icon and selected-iconResourceLocations, and the selector widget blits them as 32×32 textures with a fallback to the letter-in-color-box when the resource is absent. Defaults torunicinstruments:gui/resonance/<id>and<id>_selectedso existing on-disk icons light up automatically. - Keyboard navigation on the selector widget. Arrow keys move focus with row wrap-around; Enter / Space / NumPad-Enter activate the focused button; a yellow focus ring highlights the current pick. Mouse clicks still work and also update the keyboard focus.
- Initial test harness. Added
src/test/with a smoke test and a target-mode lock-in test forResonanceEffectEntryso a regression of theTargetMode.ALLbug (fixed in 0.9.0) is visible immediately. - Six new Song Scroll loot modifiers. Coverage now extends to Ancient City (0.15), Woodland Mansion (0.2), Bastion Treasure (0.18), Nether Fortress (0.15), Village Weaponsmith (0.05), and Pillager Outpost (0.12). Trial Chambers are post-1.20 and tracked for a later MC release.
Changed
- Config directory renamed.
config/runic_instruments/auras/→config/runic_instruments/resonances/. A non-destructive on-load migrator moves user-edited JSON files across on first boot; if the new directory already exists the legacy directory is left untouched. - Instrument mapping renamed.
instrument_auras.json→instrument_resonances.jsonwith the same non-destructive migration. serendipty_song→serendipity_song. Typo fixed in the default seed, the instrument mapping default, the advancement file, and the two GUI textures. User-editedserendipty_song.jsonis auto-renamed on load.- Network protocol
5→6to reflect the expandedSyncInstrumentScreenS2CPacketwire format. Incompatible with 0.9.0 clients, as expected across a protocol bump.
Fixed
- Selector grid no longer loses keyboard focus state across resizes.
Known limitations carried into 1.0
- Advancement criteria are still
minecraft:impossible(75 files). Gated resonances remain obtainable via Song Scroll loot and/runicinstruments grant. - Placeholder item textures are still placeholders; commissioned art is a 1.0 target.
- MineColonies
colony_moralestill uses the Regeneration placeholder. - Config TOML key
auraTickIntervalTicksretained verbatim for backward compatibility; the rename toresonanceTickIntervalTicksis deferred to 1.0 along with an aliasing layer. - Ensemble detection is still O(n²) across active musicians; negligible at expected player counts.
Test & build
./gradlew buildand./gradlew testboth pass on Java 17.

