Skip to content

Subnautica Nitrox: Update to Nitrox 1.8.x#553

Open
norto22 wants to merge 1 commit into
pterodactyl:mainfrom
norto22:fix-subnautica-nitrox-egg
Open

Subnautica Nitrox: Update to Nitrox 1.8.x#553
norto22 wants to merge 1 commit into
pterodactyl:mainfrom
norto22:fix-subnautica-nitrox-egg

Conversation

@norto22
Copy link
Copy Markdown
Contributor

@norto22 norto22 commented May 19, 2026

Description

Updates the Subnautica Nitrox egg for Nitrox 1.8.x compatibility. Resolves three open issues and supersedes one open PR.

Closes #319
Closes #461
Closes #551

Supersedes #445 (binary rename only — covered here as part of a broader fix).

Issue breakdown:

What changed

Startup

  • New binary name: Nitrox.Server.Subnautica (was NitroxServer-Subnautica).
  • Game install located via SUBNAUTICA_INSTALLATION_PATH env var; --data-path and --save passed explicitly. --game-path is not used because Nitrox 1.8.x's ConfigurationKeyName-based CLI binding doesn't honor it via Configuration.Bind.
  • Stop command changed from stop to ^C. Nitrox 1.8.x's ConsoleInputService does not process Pterodactyl's TTY stdin, so the string stop was silently dropped; SIGINT is caught by .NET Generic Host for a clean save + shutdown.

Install script

  • Removed the legacy FIRST_DIR flattening block — it destroyed the Resources/ directory in Nitrox 1.8.x's flat-zip layout (root cause of classdata.tpk missing reports in [Subnautica] Issue #551).
  • Seeds a real NitroxData/saves/nitrox_world/server.cfg so the Pterodactyl config parser has a file to update on every start.
  • Cleaned up duplicate/dead branches in the old script; replaced the heredoc with a { echo; …; } > file block to avoid textarea-mangled EOT terminators.

Config & variables

  • config.files path corrected to NitroxData/saves/nitrox_world/server.cfg (the file Nitrox actually reads in 1.8.x).
  • Added MAX_CONNECTIONS, DEFAULT_PERMISSION, DISABLE_CONSOLE panel-managed keys.
  • Removed SUBNAUTICA_INSTALLATION_PATH and XDG_CONFIG_HOME variables (paths now handled in the startup command directly).
  • SAVE_NAME locked to nitrox_world (User Editable off) because wings does not template variables inside config.files keys, letting users change it would silently break panel-managed config.

Docs

  • Per-egg README rewritten following the conventional format (Requirements / Steam Guard flow / Ports / Save folder / Configuration / Known limitations / Updating).
  • Added Subnautica to the root README index (was missing).

Testing

  • ✅ Fresh install completes; SteamCMD downloads to /home/container/subnautica/; Nitrox extracts with Resources/classdata.tpk intact.
  • ✅ Server reaches "Server started" within seconds.
  • ✅ Listens on the panel-allocated UDP port (parser-driven, not hardcoded 11000).
  • ✅ Joined with the Nitrox launcher, played for ~5 minutes — no lag, no errors.
  • ✅ Panel Stop triggers clean shutdown via SIGINT (no 30s kill-timeout wait).

Known limitation (documented in per-egg README)

Nitrox 1.8.x's ConsoleInputService early-exits when Console.IsInputRedirected is true, and otherwise uses Console.KeyAvailable/Console.ReadKey which requires raw-mode TTY behavior Pterodactyl Wings doesn't currently provide. Net effect: in-game console commands typed into the panel web console don't reach Nitrox. The server itself runs fine and admin commands work in-game. A yolks-level wrapper has been discussed in #319; until that lands, this is upstream Nitrox.

Checklist for all submissions

  • Have you followed the guidelines in our Contributing document?

  • Have you checked to ensure there aren't other open Pull Requests for the same update/change?

  • Have you tested and reviewed your changes with confidence that everything works?

  • Did you branch your changes and PR from that branch and not from your master branch?

  • You verify that the start command applied does not use a shell script

  • The egg was exported from the panel

- Startup uses the renamed Nitrox.Server.Subnautica binary and
  --data-path; game install is located via SUBNAUTICA_INSTALLATION_PATH.
- Install script no longer flattens the Nitrox release zip
  (which destroyed Resources/classdata.tpk in 1.8.x), seeds the
  real server.cfg under NitroxData/saves/nitrox_world/, and orders
  SteamCMD args so +force_install_dir actually takes effect.
- Pterodactyl now manages MaxConnections, DefaultPlayerPerm and
  DisableConsole alongside the existing config keys. SAVE_NAME is
  locked to nitrox_world because wings does not template variables
  inside config.files paths.
- Stop command switched from 'stop' to ^C so .NET Generic Host
  triggers a graceful shutdown; Nitrox's in-game console handler
  doesn't read Pterodactyl's TTY stdin in 1.8.x.
- Indexed in the root README; obsolete XDG_CONFIG_HOME and
  SUBNAUTICA_INSTALLATION_PATH variables removed.

Resolves pterodactyl#319, pterodactyl#461, pterodactyl#551. Supersedes pterodactyl#445.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[Subnautica] Issue [Subnautica] Issue [Bug]: Subnautica - Server.cfg not respected or used , also console not interactive ?

1 participant