Update Sources
Eranio
Update Sources
On Admin, Update Checker, Update Sources you set, for every egg, where the latest version comes from and how the installed version is read on the server. Both settings are independent of each other, a Steam source could in theory read its installed version from a server variable instead, if that fits a particular egg better.
Source types
| Type | Needs | Notes |
|---|---|---|
| Steam | Steam AppID, or the SRCDS_APPID variable |
Build comparison and patch notes from Steam news, respects the configured beta branch |
| Purpur | nothing further | Reads .paper/version_history.json, compares against the newest Purpur build of the same Minecraft version |
| Paper | nothing further | Same as Purpur, against the PaperMC API |
| Leaf | nothing further | Same as Purpur, against the Leaf API |
| Forge | nothing further | Installed version from libraries/net/minecraftforge/forge, latest from promotions_slim.json |
| Hytale | nothing further | Reads version.txt, the reference is the highest version reported by any Hytale server on the same patchline, plus the official updates page |
| GitHub release | Repository in the form owner/name |
Compared against the newest published release |
| RSS/Atom feed | Feed URL | Reads <item> or <entry> |
| Generic JSON API | URL and JSON paths in dot notation, for example data.latest.version |
Paths for version, patch notes, URL and publish date, each configurable, patch notes optional |
| Text file with pattern | URL and a regular expression with exactly one capture group | First or last match can be chosen |
| Update only | nothing further | No version comparison, always offers "Apply update", for example for eggs without a reliable version number |
Without a configured way to read the installed version, the status for that source honestly stays unknown.
Installed version readers
| Reader | Used for |
|---|---|
| Steam manifest | Steam sources, searches steamapps/appmanifest_<appid>.acf, then the server root, optionally a fixed path override |
| File and regular expression | any file, one capture group in the pattern |
| File and JSON path | any JSON file |
| Server variable | an egg variable, empty or "latest" counts as not comparable |
| Purpur/Paper version file | automatic for the Purpur, Paper and Leaf source types |
| Hytale version.txt | automatic for the Hytale source type |
All file reads go through the Wings daemon API, never SFTP.
Automatic setup
When "Detect sources automatically" is on in the settings, which is the default, every new or changed egg gets a source without anything being entered in the egg itself. Detected are the Steam AppID from the variable named next to +app_update in the install script, such as SRCDS_APPID or STEAMCMD_APPID, the GitHub repository from release URLs in the script, and fixed detection for Purpur, Paper, Leaf, Forge and Hytale, plus templates for Sponge, BungeeCord, Vanilla and TeamSpeak 3/6. A fixed Steam app wins over a GitHub download in the same script.
Every source remembers whether it was created automatically or by hand. A source created automatically follows further changes to the egg. A source you create or edit yourself is never changed automatically afterwards.
For eggs without a detected source the page shows a note with the count, a source can still be added by hand at any time with "Add source".
Testing
The action menu of a source has a "Test" action, pick a server of that egg and see installed version, latest version, status and reason immediately, without saving anything.
Egg images
Eggs without an image get one automatically, always stored as PNG through Pelicans own image function, in this order:
- The Steam game icon, when it is at least 128 pixels
- otherwise the Steam logo on a square background
- otherwise the small Steam icon
- the GitHub logo of the organization for Purpur, Paper, Leaf, Forge, Sponge, BungeeCord, Vanilla, TeamSpeak and GitHub sources, organizations only, never a personal avatar
- as a last resort the IGDB cover, exact name match only
An image you set yourself is never replaced automatically, even an SVG file counts as your own image. The action menu lets you fetch an image again, lock it so it is never changed automatically again, unlock it, replace it with an image chosen from a specific Steam app, or deliberately replace your own image with the automatically found one after a confirmation. The "Fetch missing images" button fetches all missing images in the background, the scheduled check does the same.