/seraph config under Plugins, and it runs. Nothing here needs a build step or an install.
Lobby greeter
Watches the tab list and welcomes people as they arrive, with the greeting and a quiet mode exposed as settings.config is live, so a change made in game takes effect on the next join without a reload.
Health overlay
Draws a small readout in the corner of the screen, toggled with a key.renderOverlay runs every frame and only while no screen is open, so the readout hides itself
whenever you open your inventory. Keep the body cheap: work out anything expensive in tick and
draw the result here.
Webhook relay
Forwards matching chat lines to a Discord webhook, with the URL hidden in the menu.webhook in secrets draws it as dots with a reveal button, so it is not read off the
screen during a share. See Manifest and permissions.
A custom anti-cheat check
Flags a player whose view snaps further in a tick than a person could turn. Seraph’s own flag message and report pipeline takes over from there.A stats command
Registers/whois, resolves a name through Seraph’s own API layer and tags the player in the
world.
stats.getPlayer shares the mod’s caching and proxy handling, so repeated lookups of the same
player in a lobby cost nothing extra. nametags only ever clears decorations your own plugin
added.
A module with a schedule
Modules are compiled, stay loaded for the session and getenable and disable hooks, which is
what anything with a cron schedule wants. Save this as standup.mod.js.
.mod.js file does not hot reload it. Seraph tells you in chat that a restart is needed
instead, and ordinary scripts carry on reloading around it. See
Scripts and modules.
Sharing code between plugins
Put the shared half in its own plugin, name it independsOn and require it:
require("./lib/helpers") keeps shared code in a subfolder even though only top level
.js files are discovered.
Next
Events
Every event, what it hands you and when it runs.
Troubleshooting
Why a plugin is not loading, running or drawing.