PaperMC Plugin
- Date
- Author
NINikki Sophie 🌸- Stack
- Java, PaperMC, PostgreSQL, Maven
- Tags
- Back-EndMinecraft
Pictures
Overview
Instead of running a Minecraft server on a dozen separate plugins, I wrote one core plugin for my survival server. NisoPlugin covers the everyday commands players and moderators need, gives the server a consistent look from the server list to the chat, and keeps itself up to date.
Features
- Homes and warps stored in PostgreSQL, with commands to set, list, delete and teleport to them.
- Teleport asks:
/tpaand/tphere, which the other player accepts or denies. - Utility commands: fly, vanish, repair, trash, a portable ender chest and workbench, feed, heal and god mode.
- Invsee to view and edit another player's inventory, armor and offhand included.
- Autocomplete for homes, warps and more.
- The server's look: a custom server list message, join and leave messages, chat format and tablist, all written in MiniMessage with PlaceholderAPI placeholders and LuckPerms prefixes.
- A resource pack server built into the plugin, so the server can hand out its own resource pack without a separate web host.
Keeping itself healthy
Automatic updates. The plugin looks for new releases off the main thread and downloads them into the server's update folder, so the next restart applies them. Operators are told when an update is waiting.
A config health check. After an update, settings that are missing get added, invalid values are replaced with their defaults and a warning, and the comments in the config are kept in line with the bundled one.
Releases from a tag. Pushing a version tag builds the plugin and publishes the release that servers then download.
Edge cases
A plugin like this is mostly about edge cases. A vanished player has to stay hidden from everyone already online and everyone who joins later, get no join or leave message, and still be vanished after a restart, which is why vanish lives in the database now instead of the config.
Stack
Java, Maven, the PaperMC API, PostgreSQL, PlaceholderAPI, LuckPerms and MiniMessage.

