In headless/BasicIO mode, ConsoleIO.Backend remains null because
ClassicConsoleBackend is never initialized. StartConsoleSession()
must guard against a null backend to avoid crashing right after
a successful server join.
Without this fix, BasicIO mode (used for unattended / batch
automation with CREATE_NO_WINDOW) crashes with:
NullReferenceException: Object reference not set to an instance of an object.
at MinecraftClient.McClient.StartConsoleSession()
The fix adds an early return when ConsoleIO.Backend is null,
which is safe because BasicIO mode does not need interactive
console input handling at all.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Polish TUI book navigation and signed-book handling, update localized shortcut text, and document the final PageUp/PageDown interaction.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
UpdateScore Display Name was read with ReadNextString instead of ReadNextChat. In 1.20.4+ Text Components are NBT-encoded, causing ReadNextString to misinterpret the tag type byte as a string length prefix, corrupting the read offset and exhausting the packet queue.
Also fix incomplete Number Format consumption in both UpdateScore and ScoreboardObjective: the styled (Compound Tag) and fixed (Text Component) payloads after the VarInt enum were not being read, leaving stale bytes in the packet queue.
- Removed hex color handling logic from ClassicConsoleBackend, streamlining the WriteLineFormatted method.
- Updated ColorHelper to ensure consistent formatting for color codes.
- Ensured console-specific settings are reapplied after backend initialization in Program.cs.
- Added documentation for mapping system CultureInfo names to Minecraft game language codes.
- Included support for Tagalog (tl and tl-PH) language codes in the game settings.
- Added support for Filipino (fil and fil-PH) and Norwegian (no) language codes in the game settings.
- Corrected formatting for existing language codes to ensure consistency and prevent potential issues with language recognition.
- Added a property to the MinecraftClient.csproj to disable the default Avalonia compilation, preventing file-lock races during parallel builds, as the project does not utilize XAML resources.
- Add reentrant guard to Program.Restart: track the active restart
thread and silently drop concurrent calls from other threads while
allowing the restart thread itself to chain a new restart (needed
for AutoRelog retry flow).
- Fix double AutoRelog.OnDisconnectStatic invocation in HandleFailure:
the method was called once in the error-message branch and again in
the interactive-mode branch for the same failure event, doubling the
retry counter increment and potentially spawning duplicate restarts.
Made-with: Cursor
Minecraft 1.16+ servers can send custom hex colors in JSON text
components ("color": "#RRGGBB"). MCC's ChatParser.Color2tag() only
recognized the 16 named colors, silently dropping hex values and
leaving gradient/custom-colored chat as uncolored plain text.
- ChatParser: recognize hex color values and emit internal §#rrggbb
encoding; extend ColorCodeRegex to match the new format
- ClassicConsoleBackend: resolve §#rrggbb to ANSI escape codes via
ColorHelper before passing to ConsoleInteractive (adapts to the
configured ConsoleColorMode: 24-bit, 8-bit, 4-bit, or disable)
- McColorParser (TUI): parse §#rrggbb into exact SolidColorBrush
for full RGB fidelity in Avalonia
- ChatBot.GetVerbatim(): skip the full 8-char §#rrggbb sequence
instead of only 2 chars, preventing hex digits from leaking into
stripped text
Made-with: Cursor