From 5fb9fb2803e9bf1fbdb007a5e8c8d2d121064e83 Mon Sep 17 00:00:00 2001 From: Skylar <118846397+NobleSkye@users.noreply.github.com> Date: Tue, 13 Jan 2026 15:30:45 -0800 Subject: [PATCH] added hytale domain and hytale egg --- .../Features/HytaleSubdomainFeature.php | 60 ++++++++++++ database/Seeders/eggs/hytale/egg-hytale.json | 95 +++++++++++++++++++ 2 files changed, 155 insertions(+) create mode 100644 app/Services/Subdomain/Features/HytaleSubdomainFeature.php create mode 100644 database/Seeders/eggs/hytale/egg-hytale.json diff --git a/app/Services/Subdomain/Features/HytaleSubdomainFeature.php b/app/Services/Subdomain/Features/HytaleSubdomainFeature.php new file mode 100644 index 000000000..cc16749fe --- /dev/null +++ b/app/Services/Subdomain/Features/HytaleSubdomainFeature.php @@ -0,0 +1,60 @@ +allocation->ip; + $port = $server->allocation->port; + $subdomain_split = explode(".", $subdomain); + $fullDomain = $subdomain_split[0] . '.' . $domain; + + $records = []; + + // A record pointing to the server IP + $records[] = [ + 'name' => $subdomain, + 'type' => 'A', + 'content' => $ip, + 'ttl' => 300, + ]; + + // SRV record for Hytale (only if not using default port) + if ($port != 25565) { + $records[] = [ + 'name' => '_hytale._tcp.' . $subdomain, + 'type' => 'SRV', + 'content' => [ + 'service' => '_hytale', + 'proto' => '_tcp', + 'name' => $subdomain, + 'priority' => 0, + 'weight' => 5, + 'port' => $port, + 'target' => $fullDomain, + 'content' => "SRV 0 5 {$port} {$fullDomain}", + ], + 'ttl' => 300, + ]; + } + + return $records; + } +} + diff --git a/database/Seeders/eggs/hytale/egg-hytale.json b/database/Seeders/eggs/hytale/egg-hytale.json new file mode 100644 index 000000000..928608504 --- /dev/null +++ b/database/Seeders/eggs/hytale/egg-hytale.json @@ -0,0 +1,95 @@ +{ + "_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PTERODACTYL PANEL - PTERODACTYL.IO", + "meta": { + "version": "PTDL_v2", + "update_url": null + }, + "exported_at": "2026-01-13T05:17:28+00:00", + "name": "Hytale", + "author": "hello@pterodactyl.io", + "description": "Set out on an adventure built for both creation and play. Hytale blends the freedom of a sandbox with the momentum of an RPG: explore a procedurally generated world full of dungeons, secrets, and a variety of creatures, then shape it block by block.", + "features": [ + "java_version", + "subdomain_hytale" + ], + "docker_images": { + "ghcr.io/pterodactyl/games:hytale": "ghcr.io/pterodactyl/games:hytale" + }, + "file_denylist": [], + "startup": "java -XX:AOTCache=Server\/HytaleServer.aot -Xms128M $( ((SERVER_MEMORY)) && printf %s \"-Xmx${SERVER_MEMORY}M\" ) -jar Server\/HytaleServer.jar $( ((HYTALE_ALLOW_OP)) && printf %s \"--allow-op\" ) --assets Assets.zip --bind 0.0.0.0:${SERVER_PORT}", + "config": { + "files": "{}", + "startup": "{\n \"done\": \"Hytale Server Booted\"\n}", + "logs": "{}", + "stop": "/stop" + }, + "scripts": { + "installation": { + "script": "#!\/bin\/ash\nset -e\n\nmkdir -p \/mnt\/server\ncd \/mnt\/server\n\necho -e \"Downloading Hytale Downloader CLI...\"\n\nDOWNLOAD_URL=\"https:\/\/downloader.hytale.com\/hytale-downloader.zip\"\n\nrm -f hytale-downloader.zip\ncurl -o hytale-downloader.zip $DOWNLOAD_URL\nunzip -o hytale-downloader.zip -d hytale-downloader\nmv hytale-downloader\/hytale-downloader-linux-amd64 hytale-downloader\/hytale-downloader-linux\nchmod 555 hytale-downloader\/hytale-downloader-linux\n\necho -e \"Verifying Hytale Downloader installation...\"\n\necho -e \"Hytale Downloader version: `.\/hytale-downloader\/hytale-downloader-linux -version`\"\n\necho -e \"Hytale Downloader installed successfully.\"", + "container": "ghcr.io/pterodactyl/installers:alpine", + "entrypoint": "ash" + } + }, + "variables": [ + { + "name": "Accept Early Plugins", + "description": "Hytale warns that loading early plugins is unsupported and may cause stability issues.", + "env_variable": "HYTALE_ACCEPT_EARLY_PLUGINS", + "default_value": "false", + "user_viewable": true, + "user_editable": true, + "rules": "required|boolean", + "field_type": "text" + }, + { + "name": "Auth Mode", + "description": "Authentication mode.", + "env_variable": "HYTALE_AUTH_MODE", + "default_value": "authenticated", + "user_viewable": true, + "user_editable": true, + "rules": "required|string|in:authenticated,offline", + "field_type": "text" + }, + { + "name": "Patchline", + "description": "The branch of Hytale to install.", + "env_variable": "HYTALE_PATCHLINE", + "default_value": "release", + "user_viewable": true, + "user_editable": true, + "rules": "required|string|in:release,pre-release", + "field_type": "text" + }, + { + "name": "Disable Sentry", + "description": "Hytale uses Sentry to track crashes. Disable Sentry during active plugin development.", + "env_variable": "DISABLE_SENTRY", + "default_value": "false", + "user_viewable": true, + "user_editable": true, + "rules": "required|boolean", + "field_type": "text" + }, + { + "name": "Use Ahead-of-Time Cache", + "description": "Hytale provides a pre-trained AOT Java cache which can significantly improve boot times.", + "env_variable": "USE_AOT_CACHE", + "default_value": "false", + "user_viewable": true, + "user_editable": true, + "rules": "required|boolean", + "field_type": "text" + }, + { + "name": "Allow operators", + "description": "Allow operators", + "env_variable": "HYTALE_ALLOW_OP", + "default_value": "false", + "user_viewable": true, + "user_editable": true, + "rules": "required|boolean", + "field_type": "text" + } + ] +} \ No newline at end of file