Server Tools will start downloading in 5 seconds...
Description
🌐 About
Tools for your dedicated server. Highlights include SteamID whitelisting, auto-shutdown timer (with chat reminders to players), chat logging, and more - see Current Features below.
Note that this mod has no function on the normal game client and supports Windows servers only (because UE4SS has not been ported to Linux yet).
💡 This is the initial version and has many more features planned, please comment with any issues or requests 😊
🔓 Open-Source (GPLv3): See CosmicDan's Palworld Mods on GitHub
❇️ Current Features
- Whitelist by SteamID64;
- Broadcast player join/leave to chat;
- MOTD / Welcome Message to players on login;
- Chat logging to the server console (for PalServer-Cmd) and to the UE4SS.log file;
- Automatic shutdown after X minutes, with configurable time-remaining warnings and welcome message (see Config Docs section for details);
- Logging the server startup process, *reliably* - when ServerTools says your server is up, it's actually up (the world has started ticking);
🔮 Planned Features
- Idle-Kick;
- Dumping various information to the disk (for e.g. a bot/web service/etc. to consume);
- Hopefully some world-building/editing capability (e.g. custom ore node placement);
- Custom zone protection for admin/community spaces;
- Player and Admin-made "shops" (trade stations) (might need a client mod if I can't do it "magic chests" style);
- ... share your ideas/requests!
🧰 Installation
Since this mod is for dedicated servers only, some intermediate knowledge is assumed. Note - do NOT use a server injector, it is not required with UE4SS v3.
- If updating ServerTools: delete your old Win64\Mods\ServerToolsLoader folder first;
- If installing for the first time: Install UE4SS 3.0 or later: Download the release, extract to PalServer\Pal\Binaries\Win64\and start the server once to generate the mod folders;
- Download the Server Tools mod from CurseForge and extract. Move the contents of each folder to the correct location:
LogicMods -> PalServer\Pal\Content\Paks\LogicMods\ Mods -> PalServer\Pal\Binaries\Win64\Mods\
You should end up with the files:
PalServer\Pal\Content\Paks\LogicMods\ServerTools.pak PalServer\Pal\Binaries\Win64\Mods\ServerToolsLoader\Enabled.txt PalServer\Pal\Binaries\Win64\Mods\ServerToolsLoader\Scripts\main.lua [with more lua files/folders]
...start the server once to verify it worked and to generate default configuration files. - The console/log should show some info along with the paths of the newly-generated config files; see the screenshot above for example.
- You can now edit the configs, see the "Config Docs" below for additional details. Note that the server will need to be restarted for config to apply, *except* the whitelist config - it is read fresh from disk every time a player joins.
📜 Config Docs
Note that JSON is not ideal for human-editing, you must be careful to preserve commas and brackets and such. I will move to a better config format soon.
ServerTools.config.json:
"whitelistEnabled":true,- Whitelist is enabled. Be sure to add SteamID64's to the whitelist json.
"broadcastPlayerJoinLeave":true- If true, the server will broadcast when a player joins or leaves, in the format "Playername joined" or "Playername left".
"welcomeMsgEnabled":true,- Enable the welcome message below. Sent to players a few seconds after spawning.
"welcomeMsg":"Welcome to my Palworld server!",- Self-explainatory.
"chatLogEnabled":true- If true, all chat messages including slash commands will be logged to the server console / UE4SS log. Includes channel and player name.
ServerTools.whitelist.json
{"whitelistSteamIds":["0","1"]}- SteamID64's to allow. Note that the defaults of 0 and 1 are invalid and will simply be skipped; they're just for example to show the array structure (remember those darn commas).
Note that you can edit this file while the server is running; it will be reloaded whenever a player logs in.
Also note that you can reformat the config to make it easier to see or generate/edit via automation; ServerTools will not wreck the formatting. E.g.:
{"whitelistSteamIds":[ "0", "1", "12345678" ]}
ServerTools.autoshutdown.json
"autoShutdownEnabled":false,- If auto shutdown is enabled. It's up to your launch script/panel/whatever to restart the server.
"shutdownAfterMinutes":60,- How many minutes after server launch before the shutdown will occur.
"warnAtMinutesDesc":[30,10,5,1],- Will broadcast a message (see below) when the server time remaining reaches these thresholds. Be sure to make sure the values are descending and there are no duplicates.
"warnMessage":"Server will restart in {1} minutes",- The warn message to use. {1} will be replaced with the minutes value.
"addRemainingTimeToWelcomeMsg":true,- If true, newly joining players will be notified of the next restart time in minutes. Requires welcome message to be enabled.
"addRemainingTimeMsg":"Next server restart in {1} minutes"- The message to add to welcome message, if enabled. {1} will be replaced with the calculated minutes remaining (rounded down so could potentially say 0 if less than 1 minute remains).
✔️ Compatibility and Known Issues
You tell me! Please report any and all compatibility results and issues and I will create this list :)
🛎️ Support
Hopefully, the mod is simple enough to use, but you are more than welcome to:
- Report any bugs you find;
- Report any incompatibilities with other mods (e.g. custom beds);
- Request any features you want to see
...and ask pretty much any question related to the mod, I'll reply when I can 😊
💙 Credits and Thanks
- CosmicDan: Server Tools author;
- localcc: Author of the Palworld Modding Kit, awesome contibutions to UE4SS;
- Yangff: Help with byteswap stuff (UE GUID parsing);
- ᒪyrthras: Assistance with Lua <> BP interop;
- Peep: Play testing and kindly providing a Windows server to dev with;
- ...and all the others who share their modding wisdom on the Discord
⁉️ Troubleshooting / FAQ
I will fill this in with more specific Q/A as I get feedback, thank you!
Q. Can you make X feature?
A. Maybe! Please comment or contact me on Discord and I'll let you know, this is a first release so I will work on whatever features are most desired.
Q. It doesn't work / I can't figure it out
A. Please comment and I will do my best to assist, this is an initial release so I don't know what else to put in this FAQ list yet 😁