Description
An advanced, image-based, server-friendly welcome popup for Hytale servers.
JoinScreen displays a clean, fully customizable popup when players join your server.
It’s ideal for rules, announcements, onboarding, navigation, and first-time player flow, while staying lightweight and server-friendly.
Unlike earlier version, JoinScreen now works entirely at runtime: no server restarts for content changes, and instant updates for connected players..
Essential mod for displaying rules, announcements, any custom image, text, and (optionally) a link to your website/Discord/store, approval cooldown and more. It’s designed to be lightweight and super-easy to set up.
Works amazing if connected with my
1. Image-based welcome / rules popup on join
2. Fully customizable title, texts, buttons, and image
3. Supports local images and remote URLs + Compressing + Caching and local saving
4. Up to 3 action buttons with custom behavior per button:
- Run server commands as console (permission-less)
- Run server commands as player (based on their permission)
- Open URLs (website / Discord / store / wiki)
Automatically adjusting layout based on 0-3 buttons count.
5. Optional “Don’t show again” checkbox (with custom expiry support)
6. Join cooldown system to prevent spam on reconnects
7. Lock timer to force players to read before closing (great for rules)
8. Instance / world filtering (show popup only in specific instances)
9. Smooth UI layout with automatic sizing, spacing and custom rounded corners.
10. Updating in real-time with no restart: '/joinscreen refresh' '/joinscreen image <url>' commands,
11. Custom optional command to re-open the popup window.
12. Seamless integration with my Okey and ComMenu mods.
13. Set custom delay before showing the popup [1.21+]
🛠️ Quick Setup (Server Owners)
Before starting, remove any older versions of the mod.
1. Put the mod inside your server's mods folder, then start / restart it.
2. After the server has started:/mods/jox.works_JoinScreenModify the JoinScreen.json based on its detailed information in-file.
You can either set your image as a URL or instead, place it in the /mods/jox.works_JoinScreen/data folder, and simply write the file name (without the folder) instead of an entire URL.
Recommended:
900×500 or higher
Aspect ratio ~1.8:1 (not too short or too thin, unless turning off auto-adjustment)
3. On the server, run '/joinscreen reload' - wait a few seconds - and done!
4. Run '/showagain' (or your custom command) to test right after!
To just replace the image and reload in real time, run: /joinscreen image <url> OR <filename.png>
Example Configuration File
// JoinScreen configuration
// Supports //, # and /* */ comments.
// Runtime image source can be either:
// 1) local filename inside mods/jox.works_JoinScreen/data/ (e.g. "poster.png")
// 2) remote URL (e.g. "https://example.com/poster.png")
// Max 3 action buttons in the popup row.
{
"enabled": true, // Master enable/disable for the whole popup.
"showEveryJoin": true, // true = show each login, false = show once per player.
"cooldownSeconds": 0, // Extra anti-spam cooldown between displays (persisted per user across relogs).
"lockSeconds": 0, // Close button lock duration after opening.
"allowedInstances": ["default"], // Instance/world names allowed to show popup (default: ["default"]).
"allowDontShowAgain": true, // Allow players to opt-out from future auto-popup.
"showDontShowAgainCheckbox": true, // Show the opt-out checkbox in the UI.
"dontShowAgainText": "Do not show again", // Label text near the opt-out checkbox.
"dontShowAgainExpiry": "30d", // Expiry for opt-out: 5m, 12h, 30d, or "never".
"showAgainCommand": "showagain", // Optional alias command, set "" to disable.
"title": "Welcome", // Window title text.
"textAbove": "", // Optional line above the image.
"textBelow": "", // Optional line below the image.
"closeButtonText": "Close", // Close button text when unlocked.
"lockedCloseButtonText": "Please wait...", // Close text while lock timer is active.
"autoSizeWindow": true, // Fit window size dynamically to current image.
"maxWindowWidth": 1280, // Upper limit for auto-sized width.
"maxWindowHeight": 900, // Upper limit for auto-sized height.
"compressImage": true, // Enable light downscale for huge images.
"roundedCorners": true, // Enable rounded corners processing.
"imageCornerRadius": 24, // Rounded corner radius in pixels.
"image": "https://files.jox.works/jox.works/JoinScreen/placeholder.jpg", // Image filename or full URL. png or jpg.
// Buttons row (max 3):
// - command can be a URL or server command.
// - runAs: "PLAYER" or "CONSOLE".
// - permission empty means everyone can click.
// - closeAfterClick controls whether popup closes first.
// - You can remove or add buttons between each { to },
// - for no buttons (only close button) leave just "buttons": []
"buttons": [
{
"label": "Test Teleport",
"command": "/tp {name} 1000 100 1000",
"runAs": "CONSOLE",
"permission": "",
"closeAfterClick": true
},
{
"label": "Test Player Command",
"command": "/say testing player command",
"runAs": "PLAYER",
"permission": "",
"closeAfterClick": true
},
{
"label": "Website Button",
"command": "https://jox.works",
"runAs": "PLAYER",
"permission": "",
"closeAfterClick": true
}
]
}




