Treevite
A server-side Minecraft Fabric mod that implements a tree-based whitelist system for managing player access through an invitation chain.
Quick challenge
How far can you run before the mobs catch you?
Minecraft check
Confirm your run
Complete the quick check to get your code.
Treevite
Treevite
A server-side Minecraft Fabric mod that implements a tree-based whitelist system for managing player access through an invitation chain.
Overview
Treevite allows you to control who can join your server through a hierarchical invitation system. Starting with just the console as the root administrator, whitelisted players can invite others, creating a "tree" of authorized players. This provides a flexible, organic way to manage server access without manually adding each player to a whitelist.
Key Features: - Tree-based whitelist system starting from console as root - Player-to-player invitation system with `/invite` command - Invite revocation with automatic privilege adjustment - Daily invitation rate limits per player (configurable) - Support for both Java and Bedrock Edition players - Invite history tracking - Permission-based commands (via Fabric Permissions API)
Requirements
- Minecraft Server 26.1.2 (or compatible) - Fabric Loader 0.19.2 or later - Java 25 or later - Fabric API
Installation
1. Download the `tree-invite.jar` mod file 2. Place it in your server's `mods` folder 3. Start your server 4. (Optional) Install Fabric Permissions API for permission-based command access
Commands
Player Commands
`/invite <player> [java|bedrock]` - Invite a player to join the server - If platform not specified, Java Edition is assumed - Usernames are looked up via Mojang API (Java) or converted to XUID format (Bedrock) - Limited by daily rate limit (default: 4 invites per day, resets at 02:00 AM server time)
`/revokeinvite <player> [java|bedrock]` - Revoke an invitation you sent to a player - Only the original inviter can revoke - Platform optional; if not specified, both platforms are checked - Players lose access if they have no alternate path back to console - Invite data is preserved for automatic reinstatement if re-invited
`/inviteinfo [player]` - View invitation information - Lists who invited the player and who they've invited - Defaults to the command executor if no player specified
Admin Commands
`/setmaxinvites <player> <count>` - Set a custom daily invitation limit for a player - Overrides the global default rate limit - Set to 0 to disable invites for a player
`/setglobalmaxinvites <count>` - Set the default daily invitation limit for all players - Only accessible to console or high-permission admins
How It Works
1. Reinstatement: Only the console is whitelisted initially 2. Reinstatement: Any whitelisted player can invite others using `/invite` 3. Reinstatement: A player can join if they have at least one valid path back to console through the invitation chain 4. Reinstatement: When an invite is revoked, affected players lose access unless they have another path to console 5. Reinstatement: If a revoked player is invited again (directly or indirectly), they automatically regain access
Example Scenario
``` Console (root) ├── Alice (invited by Console) │ ├── Bob (invited by Alice) │ └── Carol (invited by Alice) └── Dave (invited by Console) └── Eve (invited by Dave) ```
- All players can join - If Console revokes Dave's invite, Eve loses access (no alternate path) - If Console revokes Alice's invite, Bob and Carol lose access - If Console invites Dave back, Eve automatically regains access
Configuration
Configuration is stored in `config/tree-invite-messages.json` and persists across restarts. The mod manages whitelist data automatically—you don't need to modify the vanilla whitelist.
Permissions
When Fabric Permissions API is available, the following permissions are recognized:
- `tree-invite.invite` - Allow `/invite` command - `tree-invite.revoke` - Allow `/revokeinvite` command - `tree-invite.info` - Allow `/inviteinfo` command - `tree-invite.admin.setmaxinvites` - Allow `/setmaxinvites` command - `tree-invite.admin.setglobalmaxinvites` - Allow `/setglobalmaxinvites` command
Database
Treevite uses SQLite for persistent storage by default, but can also use PostgreSQL. All invite relationships and rate limit data are stored automatically.
Support
- Author: Report bugs on the GitHub repository - Author: Check the documentation or ask in the repository discussions - Author: AwesomestOwl
License
GNU General Public License v3.0 - See LICENSE file for details