You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: CHANGELOG.md
+35-1Lines changed: 35 additions & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -2,24 +2,58 @@
2
2
3
3
All notable changes to Effective Instruments will be documented in this file.
4
4
5
+
## [1.2.1] - 2026-03-26
6
+
7
+
### Bug Fixes
8
+
- Fixed player logout not cleaning up aura effects on buffed targets in abrupt disconnection scenarios
9
+
- Fixed effect cleanup incorrectly stripping long-duration effects from other sources (e.g. beacons) that matched the aura's amplifier — now also checks remaining duration
10
+
- Fixed `onInstrumentClose` bypassing debug logging when clearing aura selection
11
+
- Fixed compact mode icon (16px) overflowing the 14px button — icon now scales to fit
12
+
13
+
### Security & Hardening
14
+
- Added 5-tick (~250ms) rate limiting on `SelectAuraC2SPacket` and `InstrumentOpenC2SPacket` to prevent packet spam
15
+
- Effect amplifiers in aura JSON files are now clamped to 0–4 (Level I–V) with a warning if exceeded
16
+
- Aura JSON files over 64KB are skipped with a warning to guard against maliciously large files
17
+
- Aura IDs derived from filenames are validated against `[a-z0-9_]+` — non-conforming files are skipped
18
+
- Suspicious instrument IDs from unknown namespaces are logged at WARN level
19
+
20
+
### Performance
21
+
- Pet entity allowlist is now cached statically instead of being re-parsed every tick interval per musician
22
+
- Tick handler now iterates only active musicians instead of all players in the level
23
+
- Enabled presets list is pre-computed on load instead of being rebuilt on every call
24
+
25
+
### Improvements
26
+
- Aura button tooltips now show actual effects with levels (e.g. "Speed I, Regeneration I")
27
+
- Aura selector buttons now wrap into multiple rows when total width exceeds 60% of screen width
28
+
- Replaced misleading `ConcurrentHashMap` with `HashMap` (all access is on the main server thread)
- Updated test data from obsolete aura names to current v1.2.0 names
31
+
- Added link to INSTRUMENT_AURAS.md design reference in README
32
+
- Added server admin note in README about disabling Smoky Allure's Hero of the Village effect
33
+
5
34
## [1.2.0] - 2026-03-23
6
35
7
36
### Features
8
-
-**Instrument-specific auras:** Each instrument can have its own aura (or set of allowed auras) configured via `config/effective_instruments/instrument_auras.json`. The selector only shows auras allowed for the current instrument.
37
+
-**15 unique instrument auras** replacing the original 4 generic presets — each instrument now has its own thematic aura (Zephyr's Blessing, Warcry Cadence, Moonlit Passage, Smoky Allure, Ghost Flame, and more)
38
+
-**Instrument-specific aura filtering:** Each instrument can have its own set of allowed auras configured via `config/effective_instruments/instrument_auras.json`. The selector only shows auras allowed for the current instrument.
39
+
-**All EMI Note Block Instrument variants mapped** — all 16 variants (basedrum, bass, bell, bit, chime, etc.) now have assigned auras instead of showing all auras
9
40
-**Per-instrument aura memory:** Manual aura overrides are remembered per-instrument within the session (forgotten on logout)
10
41
-**`/effectiveinstruments status [player]`** command to view aura state (selected aura, instrument, active status, buffed target count)
11
42
- CI workflow for automated builds via GitHub Actions
12
43
- Unit test scaffolding with JUnit 5
13
44
14
45
### Changes
15
46
-**Aura selection now clears when closing an instrument** (previously persisted across close/reopen). The instrument-specific default will auto-select on next open.
47
+
-**Old aura presets replaced:** Soothing Hymn, Invigorating March, Guardian Chorus, and Luminous Nocturne have been replaced by 15 instrument-specific auras. Existing installs keep their old files (marker-based generation).
16
48
- Network protocol bumped to version 3 (clients and servers must use matching mod versions)
17
49
-`/effectiveinstruments reload` now also reloads instrument-aura mappings and reports mapping count
50
+
- Server-side validation: players can only select auras allowed for their current instrument
18
51
19
52
### Technical
20
53
- New `InstrumentOpenC2SPacket`: client sends instrument ID to server when opening an instrument screen
21
54
- New `SyncAuraSelectionS2CPacket`: server syncs auto-selected aura back to client
22
55
-`NoteActivityHandler` now captures instrument ID from note metadata as a fallback
56
+
-`InstrumentAuraMapping` supports both string shorthand and object form (with `default` + `allowed` list)
Copy file name to clipboardExpand all lines: CURSEFORGE_DESCRIPTION.md
+78-25Lines changed: 78 additions & 25 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -1,32 +1,53 @@
1
1
# Effective Instruments
2
2
3
-
**Play music. Empower allies.** Effective Instruments adds a magical aura system to [Genshin Instruments](https://www.curseforge.com/minecraft/mc-mods/genshin-instruments), letting musicians grant potion effects to nearby players and tamed pets while they perform. Pick an aura, play your instrument, and watch enchanted music notes drift outward as your allies receive buffs.
3
+
**Play music. Empower allies.** Effective Instruments adds a magical aura system to [Genshin Instruments](https://www.curseforge.com/minecraft/mc-mods/genshin-instruments), letting musicians grant potion effects to nearby players and tamed pets while they perform. Every instrument has its own unique aura — pick up a Windsong Lyre and feel the breeze quicken your step, or pound the Glorious Drum to steel your allies for battle.
4
4
5
5
---
6
6
7
7
## How It Works
8
8
9
9
1.**Open any instrument** from Genshin Instruments (or Even More Instruments).
10
-
2.**Select an aura**from the icon buttons that appear in the top-right corner of the instrument screen.
10
+
2.**Your instrument's aura auto-selects.**Each instrument has a default aura mapped to it — no manual selection needed.
11
11
3.**Start playing.** As long as you're actively playing notes, your aura applies its potion effects to all valid targets within range. Colored music note particles float outward to show the aura's reach.
12
-
4.**Stop playing** and the aura deactivates after a short grace window (configurable, default 5 seconds). Effects are applied with a set duration and will naturally expire on their own.
12
+
4.**Stop playing** and the aura deactivates after a short grace window (configurable, default 5 seconds). Effects will naturally expire on their own.
13
+
5.**Close the instrument** and the aura clears. Open the same instrument again and it remembers your last selection for that session.
13
14
14
-
Switching to a different aura **immediately clears**the previous aura's effects from all targets before the new one kicks in — no stacking exploits, clean transitions.
15
+
If an instrument has multiple allowed auras, use the selector buttons in the top-right corner of the instrument screen to switch between them.
15
16
16
17
---
17
18
18
-
## Built-In Auras
19
+
## Instrument Auras
19
20
20
-
Effective Instruments ships with four aura presets out of the box:
21
+
Every instrument ships with its own unique, thematic aura:
21
22
22
-
| Aura | Effects | Color |
23
+
### Genshin Instruments
24
+
25
+
| Instrument | Aura | Effects |
26
+
|---|---|---|
27
+
|**Windsong Lyre**| Zephyr's Blessing | Speed I |
28
+
|**Vintage Lyre**| Echoes of Antiquity | Regeneration I |
29
+
|**Floral Zither**| Bloom Veil | Absorption I + Saturation I |
30
+
|**Glorious Drum**| Warcry Cadence | Strength I + Resistance I |
|**Djem Djem Drum**| Rhythm of the Earth | Haste I + Jump Boost I |
34
+
35
+
### Even More Instruments
36
+
37
+
| Instrument | Aura | Effects |
23
38
|---|---|---|
24
-
|**Soothing Hymn**| Regeneration I | Green |
25
-
|**Invigorating March**| Speed I + Haste I | Orange |
26
-
|**Guardian Chorus**| Resistance I + Absorption I | Blue |
27
-
|**Luminous Nocturne**| Night Vision | Lavender |
39
+
|**Guitar**| Wanderer's Anthem | Speed I + Jump Boost I |
40
+
|**Keyboard**| Harmonic Resonance | Regeneration I + Haste I |
41
+
|**Koto**| Tranquil Current | Water Breathing + Dolphin's Grace |
42
+
|**Pipa**| Silk Road Vigor | Speed I + Strength I |
43
+
|**Saxophone**| Smoky Allure | Hero of the Village I |
44
+
|**Shamisen**| Ghost Flame | Fire Resistance + Strength I |
45
+
|**Trombone**| Bulwark Fanfare | Resistance I + Absorption II |
46
+
|**Violin**| Heartstring Aria | Regeneration I + Absorption I |
47
+
48
+
Note Block Instrument variants (basedrum, bass, bell, etc.) are also mapped to thematically matching auras — see `_README_INSTRUMENTS.txt` in your config folder for the full list.
28
49
29
-
Each has its own unique icon in the instrument UI, with a highlighted variant when selected. All four can be freely customized, disabled, or deleted entirely.
50
+
All auras can be freely customized, disabled, or deleted. Add your own by creating new JSON files.
30
51
31
52
---
32
53
@@ -38,7 +59,7 @@ Every aura is defined by a simple JSON file in your config folder:
38
59
config/effective_instruments/auras/
39
60
```
40
61
41
-
On first launch, the mod generates the four default aura JSON files and a `_README.txt` reference guide. From there, you have full control:
62
+
On first launch, the mod generates 15 default aura JSON files and a `_README.txt` reference guide. From there, you have full control:
42
63
43
64
-**Edit** any default aura — change its effects, duration, radius, color, name, or description
44
65
-**Disable** an aura by setting `"enabled": false` — it stays on disk but won't appear in-game
@@ -83,9 +104,39 @@ Each entry in the `effects` array takes:
83
104
84
105
If `icon`/`iconSelected` are omitted, the button displays the first letter of the display name as a fallback — so custom auras don't require any texture work.
85
106
86
-
### Hot Reload
107
+
---
108
+
109
+
## Instrument-Aura Mapping
110
+
111
+
The file `config/effective_instruments/instrument_auras.json` controls which auras are available for each instrument and which one auto-selects when opened.
112
+
113
+
**Two formats are supported per entry:**
87
114
88
-
Use the command `/effectiveinstruments reload` (requires operator permission level 2) to reload all aura JSON files without restarting the game. If a player has an aura selected that no longer exists or was disabled after reload, their selection is automatically cleared.
115
+
**String shorthand** — single aura, default and only option:
- If an instrument is **not listed**, all enabled auras are shown (backwards-compatible)
129
+
- The default aura is always included in the allowed list automatically
130
+
- Use `/effectiveinstruments reload` to apply changes without restarting
131
+
132
+
---
133
+
134
+
## Commands
135
+
136
+
| Command | Permission | Description |
137
+
|---|---|---|
138
+
|`/effectiveinstruments reload`| OP (level 2) | Reload all aura presets and instrument mappings |
139
+
|`/effectiveinstruments status [player]`| OP (level 2) | Show a player's current aura state |
89
140
90
141
---
91
142
@@ -112,7 +163,6 @@ All config files live under a single folder: `config/effective_instruments/`.
112
163
|`includeOtherPlayers`|`true`| Whether other players in range receive effects |
113
164
|`includeTamedPets`|`true`| Whether tamed animals in range receive effects |
114
165
|`petEntityTypeAllowlist`|`[]`| Extra entity type IDs to treat as pets (e.g. `["alexsmobs:crow"]`) |
115
-
|`screenClassAllowlist`|`[]`| Fully-qualified class names for instrument screens from other mods that don't extend Genshin Instruments' `InstrumentScreen`|
116
166
117
167
### Client Config (`client.toml`)
118
168
@@ -122,31 +172,33 @@ All config files live under a single folder: `config/effective_instruments/`.
122
172
|`overlayScale`|`1.0`| Scale factor for overlay buttons (0.5 - 2.0) |
123
173
|`compactMode`|`false`| Use a compact button layout |
124
174
|`particlesMode`|`ALL`| Floating music note particles: `ALL`, `MINIMAL`, or `NONE`|
175
+
|`screenClassAllowlist`|`[]`| Fully-qualified class names for instrument screens from other mods that don't extend Genshin Instruments' `InstrumentScreen`|
125
176
126
177
---
127
178
128
179
## Visual Effects
129
180
130
-
When an aura is active, colored **floating music note particles** spawn across the full radius of the aura's effect range. The particles are tinted to match the aura's configured color — green drifting notes for Soothing Hymn, orange for Invigorating March, and so on. They gently rise, drift, pulse in size, and fade out.
181
+
When an aura is active, colored **floating music note particles** spawn across the full radius of the aura's effect range. The particles are tinted to match the aura's configured color — teal drifting notes for Zephyr's Blessing, crimson for Warcry Cadence, violet for Moonlit Passage, and so on. They gently rise, drift, pulse in size, and fade out.
131
182
132
-
Particle rendering is entirely client-side. If particles cause performance issues, use the `particlesMode` client config option to reduce or disable them. The server always sends particle data; the client decides whether to render it.
183
+
Particle rendering is entirely client-side. If particles cause performance issues, use the `particlesMode` client config option to reduce or disable them.
133
184
134
185
---
135
186
136
187
## Smart Buff Handling
137
188
138
189
-**Strongest wins:** If a target already has a stronger version of the same effect from another source (e.g. a beacon or potion), the aura won't overwrite it.
139
190
-**Clean switching:** Changing auras instantly strips the old aura's effects from all targets. The mod tracks exactly which effects it applied to which entities and only removes its own.
191
+
-**Clean close:** Closing an instrument clears the aura and strips tracked effects. The instrument's default aura will auto-select next time it's opened.
140
192
-**Ambient effects:** Aura-applied effects use the ambient flag (subtle swirling particles) to distinguish them from potions and to keep the visual clutter low.
141
-
-**Deselecting:**Clicking the active aura button to deselect lets existing effects expire naturally rather than stripping them immediately.
193
+
-**Per-instrument memory:**If you override the default aura for an instrument, your choice is remembered for that instrument within the session (forgotten on logout).
142
194
143
195
---
144
196
145
197
## Compatibility
146
198
147
199
-**Genshin Instruments** (required) — all instrument screens are automatically detected
148
-
-**Even More Instruments** (optional) — all EMI screens extend Genshin Instruments' `InstrumentScreen` and are automatically supported
149
-
-**Other instrument mods** — use the `screenClassAllowlist`server config to add support for screens from mods that don't extend `InstrumentScreen`
200
+
-**Even More Instruments** (optional) — all EMI screens extend Genshin Instruments' `InstrumentScreen` and are automatically supported, including all 16 Note Block Instrument variants
201
+
-**Other instrument mods** — use the `screenClassAllowlist`client config to add support for screens from mods that don't extend `InstrumentScreen`
150
202
151
203
Effects from other mods (potion effects, beacons, etc.) are never stripped or overwritten unless the aura provides a stronger or equal version.
152
204
@@ -163,7 +215,8 @@ Effects from other mods (potion effects, beacons, etc.) are never stripped or ov
163
215
## Quick Start
164
216
165
217
1. Install the mod alongside Genshin Instruments.
166
-
2. Open any instrument in-game. You'll see four aura icons in the top-right corner.
167
-
3. Click one to select it, then start playing. Nearby allies will receive the buff.
168
-
4. To customize or add auras, edit the JSON files in `config/effective_instruments/auras/`.
169
-
5. Use `/effectiveinstruments reload` to apply changes without restarting.
218
+
2. Open any instrument in-game. Its unique aura auto-selects and the corresponding button appears in the top-right corner.
219
+
3. Start playing. Nearby allies will receive the buff.
220
+
4. To customize auras, edit the JSON files in `config/effective_instruments/auras/`.
221
+
5. To change instrument mappings, edit `config/effective_instruments/instrument_auras.json`.
222
+
6. Use `/effectiveinstruments reload` to apply changes without restarting.
0 commit comments