grep-based JSON parsing broke on Gitea's response format (exit 3: URL malformat from corrupted release ID). Use python3 json module for reliable parsing. Also add trap-based token cleanup and upload status verification. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Welcome Screen — Vintage Story Mod
Server-side configurable welcome dialog that opens automatically when players join. Displays Markdown content rendered as VTML (Vintage Text Markup Language) in a scrollable GUI window.
Features
- Auto-open on join — dialog appears when a player connects
- Markdown content — write
welcome.mdin the server data directory, rendered as rich text (headings, bold, italic, links, lists, blockquotes, code) - Mod checker — server compares client's installed mods against a recommended/blacklisted list and shows the result in the dialog
- Reopen with HOME — players can press HOME to reopen the dialog at any time
Installation
Download the latest welcomescreen_x.x.x.zip from Releases and place it in your server's Mods/ directory. Do not extract the ZIP.
This is a universal mod — it must be installed on both server and client.
Configuration
All config files are auto-generated on first run in the server's ModConfig/ directory.
WelcomeScreenConfig.json
{
"Title": "Welcome",
"WelcomeFile": "welcome.md"
}
Title— dialog window titleWelcomeFile— path to the Markdown file (relative to server data dir)
WelcomeScreenModCheck.json
{
"Enabled": true,
"RecommendedMods": [
{ "ModId": "rpvoicechat", "DisplayName": "RPVoiceChat", "Reason": "Proximity voice chat" }
],
"BlacklistedMods": []
}
RecommendedMods— mods the server suggests clients should haveBlacklistedMods— mods the server disallows (shown as warning)
welcome.md
Place this file in the server's data directory. Standard Markdown syntax is supported:
# Server Name
Welcome to our server!
## Rules
1. Be respectful
2. No griefing
**Have fun!**
Building
Requires .NET 8 SDK and the Vintage Story API DLLs in lib/.
# Build locally
./build.sh
# Build and install to server
./build.sh --install
Project Structure
src/
WelcomeScreenMod.cs Main mod — server/client logic, network packets, config
WelcomeScreenDialog.cs GUI dialog with scrollable VTML content
MarkdownToVtml.cs Markdown → VTML converter
resources/
modinfo.json Mod metadata (version, dependencies)
lib/
VintagestoryAPI.dll VS API reference (not distributed)
protobuf-net.dll Protobuf serialization (not distributed)
CI/CD
Push a tag (v*) to trigger the build pipeline, which compiles the mod, packages the ZIP, and creates a Gitea release with the artifact attached.
License
Private mod — not publicly distributed.