Skip to content
Draft

SSMP #484

Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions silksong/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
# SSMP - Silk Song Multiplayer
Copy link

Copilot AI Mar 19, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The README title uses "Silk Song"; the game name is typically written as "Silksong" (and your description line already uses "Silksong"). Please make the title consistent to avoid confusion/searchability issues.

Suggested change
# SSMP - Silk Song Multiplayer
# SSMP - Silksong Multiplayer

Copilot uses AI. Check for mistakes.

Pterodactyl Egg for hosting a Hollow Knight: Silksong multiplayer server.
Comment on lines +1 to +3
Copy link

Copilot AI Mar 19, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This new egg directory isn’t referenced in the repository’s main README game list, which will make it hard for users to discover. Please add silksong to the root README (alphabetically) as required by the new egg submission checklist.

Copilot uses AI. Check for mistakes.
31 changes: 31 additions & 0 deletions silksong/SSMP.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
{
Copy link

Copilot AI Mar 19, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Most egg JSON files in this repo are named with an egg-*.json prefix (e.g. hytale/egg-hytale.json, spacestation_14/egg-spacestation14.json, openttd/egg-open-t-t-d-server.json). Consider renaming SSMP.json to follow that convention for consistency and easier discovery.

Copilot uses AI. Check for mistakes.
Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@copilot apply changes based on this feedback

"_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PTERODACTYL PANEL - PTERODACTYL.IO",
"meta": {
"version": "PTDL_v2",
"update_url": null
},
"exported_at": "2025-05-03T00:00:00+00:00",
"name": "Silksong Multiplayer (SSMP)",
"author": "twangymoney@gmail.com",
"description": "Hollow Knight: Silksong Multiplayer Server",
"features": null,
"docker_images": {
".NET 9": "ghcr.io/ptero-eggs/yolks:dotnet_9"
Copy link

Copilot AI Mar 19, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The docker_images display name uses a unique .NET 9 label; elsewhere in the repo the Dotnet yolks are typically labeled Dotnet 9 / Dotnet 8 etc. Aligning the label helps keep the panel UI consistent for users browsing images.

Suggested change
".NET 9": "ghcr.io/ptero-eggs/yolks:dotnet_9"
"Dotnet 9": "ghcr.io/ptero-eggs/yolks:dotnet_9"

Copilot uses AI. Check for mistakes.
},
"file_denylist": [],
"startup": ".\/SSMPServer {{SERVER_PORT}}",
"config": {
"files": "{}",
"startup": "{\r\n \"done\": \"Server started\"\r\n}",
"logs": "{}",
"stop": "^C"
},
"scripts": {
"installation": {
"script": "#!/bin/ash\napk add --no-cache curl unzip jq\n\nmkdir -p /mnt/server\ncd /mnt/server\n\necho \"Getting latest release URL...\"\nDOWNLOAD_URL=$(curl -s https://api.github.com/repos/Extremelyd1/SSMP/releases/latest | jq -r '.assets[] | select(.name == \"SSMPServer-linux.zip\") | .browser_download_url')\n\necho \"Downloading from: ${DOWNLOAD_URL}\"\ncurl -L -o SSMPServer-linux.zip \"${DOWNLOAD_URL}\"\n\necho \"Extracting files...\"\nunzip -o SSMPServer-linux.zip\nrm SSMPServer-linux.zip\n\necho \"Listing files:\"\nls -la\n\necho \"Setting permissions...\"\nchmod +x SSMPServer\n\necho \"Installation complete!\"",
Copy link

Copilot AI Mar 19, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The installer script doesn’t validate that DOWNLOAD_URL was successfully resolved (it can be empty/"null" if the asset name changes, the API rate-limits, or the release has no matching asset), and it doesn’t fail fast on command errors. Add a check that DOWNLOAD_URL is non-empty and not null before downloading, and ensure the script exits on failures so installs don’t silently produce a broken server directory.

Suggested change
"script": "#!/bin/ash\napk add --no-cache curl unzip jq\n\nmkdir -p /mnt/server\ncd /mnt/server\n\necho \"Getting latest release URL...\"\nDOWNLOAD_URL=$(curl -s https://api.github.com/repos/Extremelyd1/SSMP/releases/latest | jq -r '.assets[] | select(.name == \"SSMPServer-linux.zip\") | .browser_download_url')\n\necho \"Downloading from: ${DOWNLOAD_URL}\"\ncurl -L -o SSMPServer-linux.zip \"${DOWNLOAD_URL}\"\n\necho \"Extracting files...\"\nunzip -o SSMPServer-linux.zip\nrm SSMPServer-linux.zip\n\necho \"Listing files:\"\nls -la\n\necho \"Setting permissions...\"\nchmod +x SSMPServer\n\necho \"Installation complete!\"",
"script": "#!/bin/ash\nset -e\napk add --no-cache curl unzip jq\n\nmkdir -p /mnt/server\ncd /mnt/server\n\necho \"Getting latest release URL...\"\nDOWNLOAD_URL=$(curl -fsSL https://api.github.com/repos/Extremelyd1/SSMP/releases/latest | jq -r '.assets[] | select(.name == \"SSMPServer-linux.zip\") | .browser_download_url')\n\nif [ -z \"$DOWNLOAD_URL\" ] || [ \"$DOWNLOAD_URL\" = \"null\" ]; then\n echo \"Failed to resolve download URL for SSMPServer-linux.zip\" >&2\n exit 1\nfi\n\necho \"Downloading from: ${DOWNLOAD_URL}\"\ncurl -fsSL -o SSMPServer-linux.zip \"${DOWNLOAD_URL}\"\n\necho \"Extracting files...\"\nunzip -o SSMPServer-linux.zip\nrm SSMPServer-linux.zip\n\necho \"Listing files:\"\nls -la\n\necho \"Setting permissions...\"\nchmod +x SSMPServer\n\necho \"Installation complete!\"",

Copilot uses AI. Check for mistakes.
"container": "alpine:3.19",
"entrypoint": "ash"
}
},
"variables": []
}
Loading