Add dimension-aware tracking for boss mobs and update the boss health
GUI system to maintain independent state for each dimension (Overworld,
Nether, End). This prevents conflicts when multiple bosses exist across
different dimensions simultaneously.
- Add `getDimension()` to `BossMob` base class and implement in
`EnderDragon` and `WitherBoss`
- Replace static boss GUI state with dimension-indexed storage
- Introduce `getIndexFromDimension()` helper for dimension mapping
- Update rendering logic to use per-dimension state
- Isolate darkening effects and health display per dimension
Ported from LCERenewed commit 5ec8a0e41ba8146aba450258d8620cd3cb0299e0 by 3UR
Implement Book & Quill:
- IUIScene_WritingBookMenu and UIScene_BookAndQuillMenu for UI
- Edited UIControl_Label to add direct editing (quite hardcoded to my needs right now)
- Reimplement scrapped custom payload packets for books and signing
- Other misc changes
TODO:
- Coloured and scambled text
- Book copying
- Clean up code
## Description
Fix issue where typing in a short seed on world creation doesn't save the seed correctly
## Changes
### Previous Behavior
Typing in a seed on the world creation menu that's less than 8 characters long will result in garbage data being saved as the seed. Happens with controller and KBM.
You can see this in-game - if you exit the world options menu and go back in, the seed will show up as boxes □□□.
Weirdly, if you type a seed again, it behaves as expected.
### Root Cause
For some reason, assigning `m_params->seed` to the seed text points it to garbage data, when it's 7 characters or less.
### New Behavior
Seed entry behaves as expected.
### Fix Implementation
- Added `static_cast<wstring>` before assignment to `m_params->seed`.
- Also replaced `(wchar_t *)` with `reinterpret_cast<wchar_t*>` in the functions.
### AI Use Disclosure
No AI was used