
Quick answer: A cross-server teams plugin needs one authoritative data model plus a reliable way to tell every backend when data changes. MySQL stores durable state; Redis commonly distributes events and invalidates caches. Installing the same jar on several servers is not enough.
Map the network first
List the Velocity or BungeeCord proxy, backend servers, database location, Redis location and failure boundaries. Decide whether team chat, homes, friendly fire, invitations and GUI changes must update instantly or may be eventually consistent.
Database versus messaging
MySQL is suitable for membership, roles, homes and other durable records. Polling it on every event is slow and still leaves stale caches. Redis Pub/Sub or streams can notify nodes, but Redis should not silently become the only permanent store. Ask what happens when a message is missed, Redis restarts or two servers edit the same team.
| Capability | Evidence to request |
|---|---|
| Proxy support | Exact Velocity/Bungee version and forwarding mode |
| Consistency | Source of truth, invalidation and conflict behavior |
| Permissions | Role checks on every backend and GUI action |
| Homes | Safe teleport behavior across server boundaries |
| Recovery | Reconnect, database outage and missed-event handling |
Security and operations
Keep MySQL and Redis private, use dedicated credentials and allow only known hosts. Back up the database independently. Monitor connection pools and timeouts. A reconnect loop should use bounded backoff rather than flooding logs or blocking gameplay threads.
Paper and Folia
Folia support affects world and entity scheduling, especially team homes and teleports. The official Folia notes explain that there is no single main thread. Verify every plugin in the teleport and placeholder path, not only the teams jar.
Product comparison
S Teams is the Shyam Studio network-focused option with Paper/Folia, Velocity/BungeeCord, MySQL and Redis support. Clans targets deeper progression, banks, alliances and shared assets. Read Clans vs Teams to decide which social model fits before comparing implementation details.
Staging acceptance tests
- Create on server A and immediately inspect on server B.
- Change a role while the member is switching servers.
- Send team chat during a Redis interruption.
- Teleport home while the target backend is unavailable.
- Restart one backend with cached team data.
- Run two simultaneous invitation or disband actions.
- Restore a database backup into an isolated environment.
Choose the plugin whose failure behavior you understand, not the one with the most checkmarks.
Primary sources
- Official Velocity documentation
- Official Redis Pub/Sub documentation
- Official Folia threading overview
Storage decision, requirements and failure tests
Who this is for
This checklist is for owners choosing a teams system for one Paper server or a network where membership must remain consistent across backends.Who should not use cross-server mode
Do not add Redis or network synchronization merely because it appears more scalable. A single-server community should prefer the simplest supported storage path. Cross-server mode is appropriate only when multiple processes need the same team state.Baseline requirements
- Paper or Spigot 1.21+ and Java 21 for DonutTeams
- A valid license and documented permissions
- SQLite or MySQL selected deliberately for the deployment
- For network features, the exact Redis and Folia support stated by the current release
Test methodology
Create a team on backend A, join from backend B, change a role, set a home, toggle PvP and restart each backend separately. Introduce a short database or Redis interruption and confirm that the plugin fails safely without overwriting newer state. Compare member counts and roles after recovery.Common errors
Changes appear on one server only: verify every backend uses the same storage and channel configuration.Old data overwrites new data: investigate cache invalidation and event ordering before reducing refresh intervals.
Folia startup fails: confirm the installed build explicitly supports your Folia version; do not assume Paper compatibility proves region-thread safety.
For the product-specific commands and API, use the DonutTeams documentation hub.
Attachments
Last edited: