Compatibility
Minecraft: Java Edition
Platforms
Supported environments
Links
Tags
Creators
Details
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
/invitecommand - 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
- Download the
tree-invite.jarmod file - Place it in your server's
modsfolder - Start your server
- (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
- Initialization: Only the console is whitelisted initially
- Invitations: Any whitelisted player can invite others using
/invite - Access Control: A player can join if they have at least one valid path back to console through the invitation chain
- Revocation: When an invite is revoked, affected players lose access unless they have another path to console
- 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/invitecommandtree-invite.revoke- Allow/revokeinvitecommandtree-invite.info- Allow/inviteinfocommandtree-invite.admin.setmaxinvites- Allow/setmaxinvitescommandtree-invite.admin.setglobalmaxinvites- Allow/setglobalmaxinvitescommand
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
- Issues: Report bugs on the GitHub repository
- Questions: Check the documentation or ask in the repository discussions
- Author: AwesomestOwl
License
GNU General Public License v3.0 - See LICENSE file for details


