Blue Arcade (Hytale Edition)
The definitive minigame solution.
API CHANGES
- GameModule.getDisplayName() default method. Modules can now override this to declare their own display name. The core checks this method before falling back to the language.yml lookup or the descriptor name.
- ModuleConfigAPI.registerCopyOnly(String fileName) registers a config file using a copy if missing strategy: the bundled resource is only copied to disk when the file does not exist; afterwards the file is loaded without merging defaults, so entries the admin deliberately removed are never restored.
- MenuAPI.registerModuleMenuAPI(String moduleId, MenuAPI handler) and MenuAPI.unregisterModuleMenuAPI(String moduleId) modules can now register a custom MenuAPI handler for their own menus without touching the core implementation class.
- ItemClickHandler<P> functional interface for GUI item click callbacks in the inventory API.
- ItemAPI.registerClickHandler(String itemId, ItemClickHandler handler) and ItemAPI.unregisterClickHandler(String itemId) modules can now register click handlers for their lobby items.
- HytaleEventRegistry interface allows Hytale modules to register ECS systems in registerEvents() without reflection.
- MCSoundsAPI interface (extends SoundsAPI) with playNBS(P, String) and stopNBS(P) for Minecraft specific NoteBlock song playback.
- HTSoundsAPI interface (extends SoundsAPI) with playMIDI(P player, String midiId) and stopMIDI(P player) for Hytale specific MIDI song playback.
- Deprecated SoundsAPI.playNBS: use MCSoundsAPI.playNBS (Minecraft) or HTSoundsAPI.playMIDI (Hytale) instead.
All changes are additive and require no modifications to existing 3.2 modules.