GrayCore
GrayCore is the core of a Minecraft network: a Velocity proxy in front of several Paper game servers. It gives every server the same players, the same permissions and the same view of the network, and it hosts the network's features as modules that can be switched on and off.
What it does
| Area | In short |
|---|---|
| Player profiles | One profile per player in PostgreSQL, owned by one server at a time, saved off the game thread and carried across server switches. |
| Servers and routing | Game servers register themselves; the proxy sends players to the right type of server, the least loaded one, and moves them elsewhere when a server goes down. |
| Permissions | Groups with priority, prefix and suffix, temporary group assignments, per-player permissions, the same on every server and on the proxy. |
| Chat | Private messages across the whole network, and who is online where. |
| Administration | Modules, restarts with a countdown, item editing, a personal debug mode. |
| Placeholders | Rank, server and player counts for PlaceholderAPI and TAB. |
| Modules | Kits, warps, and the features built by other plugins on top of GrayCore. |
The parts of the project
| Part | Runs on | What it is |
|---|---|---|
graycore-paper.jar | Each Paper game server | The plugin, with the modules shipped with GrayCore (kits, warps). |
graycore-velocity.jar | The Velocity proxy | Routing, fallback, the tab list and the permissions on the proxy. |
server-service | A container next to them | The registry of live game servers, reached over gRPC. |
| PostgreSQL and Redis | Shared by everything | Profiles, groups and counters in PostgreSQL; presence in Redis. |
See Architecture for how they fit together.
Where to go next
- You run a server: Installation, then the commands and permissions.
- You write code for GrayCore or a plugin on top of it: the developer guide.