Genshin Instruments v4.0
Hey everyone! Sorry I'm late for the game!
This update introduces the long-awaited Nightwind Horn!
Enjoy thy playings!~
Changes
- Added the Nightwind Horn
- The Nightwind Horn is a sustainable instrument. You can hold it to make a loooong sound!
- The longer you press, the more echo there will eventually be.
- The sound decays after a period of time.
- Textures, as always, made by the awesome Gen!
- Added pitch-fixed note layout variants for ABC and do re mi
MIDI
- MIDI overflows now sound much better more polished.
- Before, it would sample the current sound in the octave; and pitch it by 1 octave.
- Now, the sampled sound is always the highest / lowest in the instrument, pitched by the offset of the note pressed.
- For example, to play C4, we take B3 - then pitch it up by 1 to get C4.
- Previously, would take C3, then pitch it up by 12 to get a C4.
- The default sensitivty level is now 80%
Fixed
- Game crashing for some PCs not using English as their language locale
- Players being seen as not playing and not being heard when joining a world or dimension where a player has already entered playing mode
- Incorrect naming of Arataki's Great and Glorious Drum
- Some instrument option toggles' previous value being discarded on screen refresh
- Some MIDI devices' names having weird whitespaces
API Changes
Wayy too many lmao.
If you run into migration problems, feel free to contact me, and I'll help you out resolve it directly. I'll dedicate some time to update the wiki in the future.
Noteable Changes:
- Added the ability to implement custom holdable instruments and sounds via
HeldNoteSoundRegistrar
- All instrument packet utility methods have been moved from the generic
ServerUtil
to their respective sound type packet util classes (NoteSoundPacketUtil
,HeldNoteSoundPacketUtil
). - Added InstrumentScreenRegistry in place of the old "load it yourself" method. See implementation for more details.
- [FABRIC ONLY] To add an item to the Instruments tab, you now must use the
GICreativeModeTabs#addToInstrumentsTab
.- Priority is first given to the Genshin Instruments mod (0), then EMI (1). You should thus set yours starting 3, or (much better) use the
GICreativeModeTabs#getUniquePriority
method to generate your own, consistantly unique priority identifier.- This generator uses
String#hashCode
on your mod ID, so a hash collision may occur? But extroadinarily low chances.
- This generator uses
- This works to resolve the messy instruments tab when using EMI.
- Priority is first given to the Genshin Instruments mod (0), then EMI (1). You should thus set yours starting 3, or (much better) use the
Instrument Events
InstrumentPlayedEvent
is now divided intoNoteSoundPlayedEvent
andHeldNoteSoundPlayedEvent
. The original can still be used to catch all said events.- The
ByPlayer
variants are now integrated into the aforementioned events as anInstrumentPlayedEvent.EntityInfo
optional. - Added
InstrumentOpenStateChangedEvent
. Self-explanatory.
P.S: I'm sorry this took me an eternity.
Though, you have to still consider that I am the only developer and maintainer of this project, so things will have to move my speed.
I'm also a student. And I also have other projects.
As you have seen above, I've made a lot of changes (over the course of ~4 months!) to the core mod, whilst also making sure to keep API compatibility and support for both foreign programmers (if any; else still maintain good code practices) - and the Even More Instruments! mod.
I was not prepared for a sustained instrument to be implemented in Genshin, and I thus also did not consider it from the start that I'll ever have - or need - to do it. (maybe as a nieche concept that never will get implemented bc time.)
Though, evidently, this forced change. And forced change it did.
And if you don't believe me, see it for yourself.
I did not even have the time to play the new summer event :(
Anyways, let's hope that the Natlan instrument doesn't have a new, game-breaking mechanic again.
Else... Yeah, mental teardown.
(Otherwise, addition should be swift! :3)
This version proposes API tweaks & changes, long-awaited community suggestions, and preparation for v4.0's new wind instrument.
Changes
- Added Chinese support by charmaznable & SteveNotSet
- Added GUI visibility toggle (MoonstruckLucii suggestion)
Achievements
- Master achievement now grants 5exp
- Root achievement now takes in any instrument, not just Genshin ones
- Specified Master achievement to be Genshin-specific
MIDI
- New slider added: Sensitivity
Allows the player to control how sensitive dynamic touch input should be
Technical
- Fixed conventional key namings in Player's InstrumentOpen NBT capability
Tags
- New tag group:
genshin_instruments
to specify genshin-specific instruments
API
- Moved wind instruments support from Even More Instruments! to Genshin Instruments
Fixed
- Do-ReMi and Don-Ka labeling
- Volume slider saving a way too accurate representation of volume
- Potential resource leaks while reading Instrument styler sheets
This version proposes API tweaks & changes, long-awaited community suggestions, and preparation for v4.0's new wind instrument.
Changes
- Added Chinese support by charmaznable & SteveNotSet
- Added GUI visibility toggle (MoonstruckLucii suggestion)
Achievements
- Master achievement now grants 5exp
- Root achievement now takes in any instrument, not just Genshin ones
- Specified Master achievement to be Genshin-specific
MIDI
- New slider added: Sensitivity
Allows the player to control how sensitive dynamic touch input should be
Technical
- Fixed conventional key namings in Player's InstrumentOpen NBT capability
Tags
- New tag group:
genshin_instruments
to specify genshin-specific instruments
API
- Moved wind instruments support from Even More Instruments! to Genshin Instruments
Fixed
- Do-ReMi and Don-Ka labeling
- Volume slider saving a way too accurate representation of volume
- Potential resource leaks while reading Instrument styler sheets
- Instrument buttons sometimes appearing black (Forge-only)
This version proposes API tweaks & changes, long-awaited community suggestions, and preparation for v4.0's new wind instrument.
Changes
- Added Chinese support by charmaznable & SteveNotSet
- Added GUI visibility toggle (MoonstruckLucii suggestion)
Achievements
- Master achievement now grants 5exp
- Root achievement now takes in any instrument, not just Genshin ones
- Specified Master achievement to be Genshin-specific
MIDI
- New slider added: Sensitivity
Allows the player to control how sensitive dynamic touch input should be
Technical
- Fixed conventional key namings in Player's InstrumentOpen NBT capability
Tags
- New tag group:
genshin_instruments
to specify genshin-specific instruments
API
- Moved wind instruments support from Even More Instruments! to Genshin Instruments
Fixed
- Do-ReMi and Don-Ka labeling
- Volume slider saving a way too accurate representation of volume
- Potential resource leaks while reading Instrument styler sheets
This version proposes API tweaks & changes, long-awaited community suggestions, and preparation for v4.0's new wind instrument.
Changes
- Added Chinese support by charmaznable & SteveNotSet
- Added GUI visibility toggle (MoonstruckLucii suggestion)
Achievements
- Master achievement now grants 5exp
- Root achievement now takes in any instrument, not just Genshin ones
- Specified Master achievement to be Genshin-specific
MIDI
- New slider added: Sensitivity
Allows the player to control how sensitive dynamic touch input should be
Technical
- Fixed conventional key namings in Player's InstrumentOpen NBT capability
Tags
- New tag group:
genshin_instruments
to specify genshin-specific instruments
API
- Moved wind instruments support from Even More Instruments! to Genshin Instruments
Fixed
- Do-ReMi and Don-Ka labeling
- Volume slider saving a way too accurate representation of volume
- Potential resource leaks while reading Instrument styler sheets
- Instrument buttons sometimes appearing black (Forge-only)
This version proposes API tweaks & changes, long-awaited community suggestions, and preparation for v4.0's new wind instrument.
Changes
- Added Chinese support by charmaznable & SteveNotSet
- Added GUI visibility toggle (MoonstruckLucii suggestion)
Achievements
- Master achievement now grants 5exp
- Root achievement now takes in any instrument, not just Genshin ones
- Specified Master achievement to be Genshin-specific
MIDI
- New slider added: Sensitivity
Allows the player to control how sensitive dynamic touch input should be
Technical
- Fixed conventional key namings in Player's InstrumentOpen NBT capability
Tags
- New tag group:
genshin_instruments
to specify genshin-specific instruments
API
- Moved wind instruments support from Even More Instruments! to Genshin Instruments
Fixed
- Do-ReMi and Don-Ka labeling
- Volume slider saving a way too accurate representation of volume
- Potential resource leaks while reading Instrument styler sheets
This version proposes API tweaks & changes, long-awaited community suggestions, and preparation for v4.0's new wind instrument.
Changes
- Added Chinese support by charmaznable & SteveNotSet
- Added GUI visibility toggle (MoonstruckLucii suggestion)
Achievements
- Master achievement now grants 5exp
- Root achievement now takes in any instrument, not just Genshin ones
- Specified Master achievement to be Genshin-specific
MIDI
- New slider added: Sensitivity
Allows the player to control how sensitive dynamic touch input should be
Technical
- Fixed conventional key namings in Player's InstrumentOpen NBT capability
Tags
- New tag group:
genshin_instruments
to specify genshin-specific instruments
API
- Moved wind instruments support from Even More Instruments! to Genshin Instruments
Fixed
- Do-ReMi and Don-Ka labeling
- Volume slider saving a way too accurate representation of volume
- Potential resource leaks while reading Instrument styler sheets
- Instrument buttons sometimes appearing black (Forge-only)
This patch introduces support for Minecraft 1.18.2, as well as a whole lot of bugfixes and feature tweaks, more efficient networking, and major API changes. Let's explore it!
Changes
- Major networking tweaks. Expect less delay in Multiplayer!
- Added ability to normalize the Vintage Lyre - converting it to a C major key. Enabled by default.
- Advancement background is now note-block textured
- ABC layout has been re-introduced
MIDI
- The drum now toggles its usage from exlusively left to both left and right. It's just a visual thing, but a nice one imo
- Minimum MIDI velocity is now 6
Technical
- Instrument JSON styler format has been refined. Legacy styler formats are still supported (for now), but are recommended to upgrade.
- Added model predicate
"genshinstrument:instrument_open"
- Fixed incorrect assignment of
isOpen
tag for instrument open capability (Forge-only) - Played hand has been added to the instrument open capability
- Added various more log messages for debugging
Fixed:
- Random crashes upon opening an instrument
- Lower buttons pannel not centered
- (API) Instruments with 8 or more rows crashing on note layout
As per all patches since v3.0 (;-;), this is, like, 99% the last update feature update. Unless some issues arises.
I've been working tirelessly on this patch for the past few months, and I hope it will prove worthy! :)
So see you in, what's hopefully, v4.0!
This patch introduces support for Minecraft 1.18.2, as well as a whole lot of bugfixes and feature tweaks, more efficient networking, and major API changes. Let's explore it!
Changes
- Major networking tweaks. Expect less delay in Multiplayer!
- Added ability to normalize the Vintage Lyre - converting it to a C major key. Enabled by default.
- Advancement background is now note-block textured
- ABC layout has been re-introduced
MIDI
- The drum now toggles its usage from exlusively left to both left and right. It's just a visual thing, but a nice one imo
- Minimum MIDI velocity is now 6
Technical
- Instrument JSON styler format has been refined. Legacy styler formats are still supported (for now), but are recommended to upgrade.
- Added model predicate
"genshinstrument:instrument_open"
- Played hand has been added to the instrument open capability
- Added various more log messages for debugging
Fixed:
- Drum note labels not properly saving (Fabric-only)
- Random crashes upon opening an instrument
- Lower buttons pannel not centered
- (API) Instruments with 8 or more rows crashing on note layout
As per all patches since v3.0 (;-;), this is, like, 99% the last update feature update. Unless some issues arises.
I've been working tirelessly on this patch for the past few months, and I hope it will prove worthy! :)
So see you in, what's hopefully, v4.0!
This patch introduces support for Minecraft 1.18.2, as well as a whole lot of bugfixes and feature tweaks, more efficient networking, and major API changes. Let's explore it!
Changes
- Major networking tweaks. Expect less delay in Multiplayer!
- Added ability to normalize the Vintage Lyre - converting it to a C major key. Enabled by default.
- Advancement background is now note-block textured
- ABC layout has been re-introduced
MIDI
- The drum now toggles its usage from exlusively left to both left and right. It's just a visual thing, but a nice one imo
- Minimum MIDI velocity is now 6
Technical
- Instrument JSON styler format has been refined. Legacy styler formats are still supported (for now), but are recommended to upgrade.
- Added model predicate
"genshinstrument:instrument_open"
- Fixed incorrect assignment of
isOpen
tag for instrument open capability (Forge-only) - Played hand has been added to the instrument open capability
- Added various more log messages for debugging
Fixed:
- Random crashes upon opening an instrument
- Lower buttons pannel not centered
- (API) Instruments with 8 or more rows crashing on note layout
As per all patches since v3.0 (;-;), this is, like, 99% the last update feature update. Unless some issues arises.
I've been working tirelessly on this patch for the past few months, and I hope it will prove worthy! :)
So see you in, what's hopefully, v4.0!
This patch introduces support for Minecraft 1.18.2, as well as a whole lot of bugfixes and feature tweaks, more efficient networking, and major API changes. Let's explore it!
Changes
- Major networking tweaks. Expect less delay in Multiplayer!
- Added ability to normalize the Vintage Lyre - converting it to a C major key. Enabled by default.
- Advancement background is now note-block textured
- ABC layout has been re-introduced
MIDI
- The drum now toggles its usage from exlusively left to both left and right. It's just a visual thing, but a nice one imo
- Minimum MIDI velocity is now 6
Technical
- Instrument JSON styler format has been refined. Legacy styler formats are still supported (for now), but are recommended to upgrade.
- Added model predicate
"genshinstrument:instrument_open"
- Played hand has been added to the instrument open capability
- Added various more log messages for debugging
Fixed:
- Drum note labels not properly saving (Fabric-only)
- Random crashes upon opening an instrument
- Lower buttons pannel not centered
- (API) Instruments with 8 or more rows crashing on note layout
As per all patches since v3.0 (;-;), this is, like, 99% the last update feature update. Unless some issues arises.
I've been working tirelessly on this patch for the past few months, and I hope it will prove worthy! :)
So see you in, what's hopefully, v4.0!