Complete Configuration Reference
Every option in config.yml explained with examples and defaults.
File Location
Section titled “File Location”plugins/InviteMe/config.ymlAfter editing, reload with: /im reload
Storage Configuration
Section titled “Storage Configuration”Key: storage.type | Type: string | Default: sqlite
Storage backend for invite data.
Options:
json- Text files (legacy, small servers only)sqlite- Local database file (recommended)mysql- MySQL/MariaDB remotepostgresql- PostgreSQL remote
storage: type: sqliteRemote Database Settings
Section titled “Remote Database Settings”Use only if storage.type is mysql or postgresql.
Key: storage.remote.host | Type: string | Default: localhost
Database server hostname.
storage: remote: host: "db.example.com"Key: storage.remote.port | Type: integer | Default: 3306 (MySQL) or 5432 (PostgreSQL)
Database server port.
storage: remote: port: 3306database
Section titled “database”Key: storage.remote.database | Type: string | Default: inviteme
Database name.
storage: remote: database: "inviteme"username
Section titled “username”Key: storage.remote.username | Type: string | Default: root
Database user.
storage: remote: username: "inviteme_user"password
Section titled “password”Key: storage.remote.password | Type: string | Default: password
Database password. Keep secret!
storage: remote: password: "SecurePassword123"pool-size
Section titled “pool-size”Key: storage.remote.pool-size | Type: integer | Default: 10
Max simultaneous connections. Recommendation:
- Small servers (1-5 players): 5-10
- Medium (5-50 players): 10-20
- Large (50+ players): 20-50
storage: remote: pool-size: 15Language Settings
Section titled “Language Settings”language
Section titled “language”Type: string | Default: en
Plugin message language.
Options: en (English), es (Spanish), de (German)
language: "en"Console Output
Section titled “Console Output”ansi-colors
Section titled “ansi-colors”Key: console.ansi-colors | Type: boolean | Default: true
Enable ANSI colors in console (✓, ✗, ⚠). Set false on Windows or log collectors without ANSI support.
console: ansi-colors: trueVersion Checker
Section titled “Version Checker”enabled
Section titled “enabled”Key: version-checker.enabled | Type: boolean | Default: false
Check for updates on Modrinth.
version-checker: enabled: falseinterval-hours
Section titled “interval-hours”Key: version-checker.interval-hours | Type: integer | Default: 24
How often to check (0 = startup only).
version-checker: interval-hours: 24notify-admins
Section titled “notify-admins”Key: version-checker.notify-admins | Type: boolean | Default: true
Notify OPs and invite.admin in-game about new versions.
version-checker: notify-admins: truenotify-for
Section titled “notify-for”Key: version-checker.notify-for | Type: list | Default: [release]
Version types to notify about: release, beta, alpha.
version-checker: notify-for: - releaseInvite Limits
Section titled “Invite Limits”max-invites
Section titled “max-invites”Type: integer | Default: 5
Default invitations per player. Overrideable by:
- LuckPerms permission
invite.number.X - LuckPerms group limits
plugin-xp-slotsprogression (if enabled)
Note: Console and admins have no limit.
max-invites: 5Invite Cooldown
Section titled “Invite Cooldown”invite-cooldown
Section titled “invite-cooldown”Type: integer | Default: 30
Seconds between /invite uses per player. 0 = disabled.
Note: Players with invite.admin bypass this.
invite-cooldown: 30LuckPerms Integration
Section titled “LuckPerms Integration”enabled
Section titled “enabled”Key: luckperms.enabled | Type: boolean | Default: false
Enable LuckPerms group-based invite limits.
luckperms: enabled: falsedefault-group
Section titled “default-group”Key: luckperms.default-group | Type: string | Default: default
Group assigned to new invited players (must exist in LuckPerms).
luckperms: default-group: "member"group-limits
Section titled “group-limits”Key: luckperms.group-limits | Type: map<string, integer> | Default: {}
Per-group invite limits. Priority: invite.number.X permission > group-limits > max-invites.
luckperms: enabled: true group-limits: member: 3 vip: 10 moderator: 20Whitelist Synchronization
Section titled “Whitelist Synchronization”enabled
Section titled “enabled”Key: whitelist-sync.enabled | Type: boolean | Default: true
Keep vanilla whitelist in sync with InviteMe data.
whitelist-sync: enabled: trueauto-register-console
Section titled “auto-register-console”Key: whitelist-sync.auto-register-console | Type: boolean | Default: true
Auto-register players added via console to InviteMe.
whitelist-sync: auto-register-console: truesync-interval-minutes
Section titled “sync-interval-minutes”Key: whitelist-sync.sync-interval-minutes | Type: integer | Default: 60
How often to run background sync (in minutes).
whitelist-sync: sync-interval-minutes: 60cleanup-removed
Section titled “cleanup-removed”Key: whitelist-sync.cleanup-removed | Type: boolean | Default: false
Remove all players from whitelist when syncing. WARNING: Dangerous!
whitelist-sync: cleanup-removed: falsenotify-on-sync
Section titled “notify-on-sync”Key: whitelist-sync.notify-on-sync | Type: boolean | Default: false
Notify admins on each sync completion.
whitelist-sync: notify-on-sync: falseAccess Control Mode
Section titled “Access Control Mode”access-control-mode
Section titled “access-control-mode”Type: string | Default: native
How players are checked for access on join.
Options:
native- Vanilla whitelist controls access (recommended)plugin- InviteMe controls access. Requireswhite-list=falseinserver.properties. Bypass: OP orinvite.admin
access-control-mode: nativeTemporary Invitations
Section titled “Temporary Invitations”check-interval-minutes
Section titled “check-interval-minutes”Key: temp-invites.check-interval-minutes | Type: integer | Default: 60
How often to check for and revoke expired temporary invites (in minutes).
temp-invites: check-interval-minutes: 60Action Logging
Section titled “Action Logging”max-entries
Section titled “max-entries”Key: action-log.max-entries | Type: integer | Default: 0
Max action log entries to keep. 0 = unlimited.
action-log: max-entries: 0profile-history-limit
Section titled “profile-history-limit”Key: action-log.profile-history-limit | Type: integer | Default: 5
Recent action entries shown per player in /im log list.
action-log: profile-history-limit: 5Join Notifications
Section titled “Join Notifications”welcome-message
Section titled “welcome-message”Key: join-notifications.welcome-message.enabled | Type: boolean | Default: true
Send welcome message to new players on first join (shows inviter).
join-notifications: welcome-message: enabled: trueinviter-notification
Section titled “inviter-notification”Key: join-notifications.inviter-notification.enabled | Type: boolean | Default: true
Notify inviter when their invitee joins for the first time.
join-notifications: inviter-notification: enabled: trueMutual Invite Boost
Section titled “Mutual Invite Boost”XP boost for players directly linked by an invite (inviter ↔ invitee). Activates when both online, same world, within radius.
enabled
Section titled “enabled”Key: mutual-invite-boost.enabled | Type: boolean | Default: true
Enable the boost system.
mutual-invite-boost: enabled: trueradius
Section titled “radius”Key: mutual-invite-boost.radius | Type: map<string, integer> | Default: {overworld: 50, nether: 75, end: 100}
Activation radius (blocks) per world.
mutual-invite-boost: radius: overworld: 50 nether: 75 end: 100 # Custom worlds (optional): # mining_world: 60xp-multiplier
Section titled “xp-multiplier”Key: mutual-invite-boost.xp-multiplier | Type: decimal | Default: 1.5
XP gain multiplier. 1.0 = normal, 1.5 = +50%, 2.0 = +100%.
mutual-invite-boost: xp-multiplier: 1.5check-interval
Section titled “check-interval”Key: mutual-invite-boost.check-interval | Type: integer | Default: 5
Proximity check interval (seconds). Recommended: 5-10.
mutual-invite-boost: check-interval: 5show-actionbar
Section titled “show-actionbar”Key: mutual-invite-boost.show-actionbar | Type: boolean | Default: true
Show actionbar message when boost starts/stops.
mutual-invite-boost: show-actionbar: trueparticle-effects
Section titled “particle-effects”Key: mutual-invite-boost.particle-effects | Type: boolean | Default: true
Particle effects on boost transitions (happy villager = start, red dust = end).
mutual-invite-boost: particle-effects: truecooldown-seconds
Section titled “cooldown-seconds”Key: mutual-invite-boost.cooldown-seconds | Type: integer | Default: 30
Cooldown after boost ends (shown in actionbar).
mutual-invite-boost: cooldown-seconds: 30max-boost-partners
Section titled “max-boost-partners”Key: mutual-invite-boost.max-boost-partners | Type: integer | Default: 3 (Range: 1-10)
Max simultaneous boost partners per player.
mutual-invite-boost: max-boost-partners: 3max-multiplier
Section titled “max-multiplier”Key: mutual-invite-boost.max-multiplier | Type: decimal | Default: 2.5
Cap on total multiplier (prevents stacking abuse).
mutual-invite-boost: max-multiplier: 2.5min-xp-for-boost
Section titled “min-xp-for-boost”Key: mutual-invite-boost.min-xp-for-boost | Type: integer | Default: 1
Minimum XP gain to trigger boost.
mutual-invite-boost: min-xp-for-boost: 1max-xp-per-event
Section titled “max-xp-per-event”Key: mutual-invite-boost.max-xp-per-event | Type: integer | Default: 1000
Max XP per single event (prevents exploit).
mutual-invite-boost: max-xp-per-event: 1000streak-window-seconds
Section titled “streak-window-seconds”Key: mutual-invite-boost.streak-window-seconds | Type: integer | Default: 10 (Range: 2-60)
Seconds without XP before streak resets (“Combo broken!“).
mutual-invite-boost: streak-window-seconds: 10xp-sharing.enabled
Section titled “xp-sharing.enabled”Key: mutual-invite-boost.xp-sharing.enabled | Type: boolean | Default: true
Share XP with boost partners.
mutual-invite-boost: xp-sharing: enabled: truexp-sharing.share-percentage
Section titled “xp-sharing.share-percentage”Key: mutual-invite-boost.xp-sharing.share-percentage | Type: decimal | Default: 0.25
Percentage of earned XP given to each partner. 0.25 = 25%.
mutual-invite-boost: xp-sharing: share-percentage: 0.25stats-flush-interval
Section titled “stats-flush-interval”Key: mutual-invite-boost.stats-flush-interval | Type: integer | Default: 30
Seconds between database flushes. 0 = write immediately (not recommended).
mutual-invite-boost: stats-flush-interval: 30Plugin XP Progression
Section titled “Plugin XP Progression”Unlock extra invite slots via Plugin XP from boost gameplay.
enabled
Section titled “enabled”Key: plugin-xp-slots.enabled | Type: boolean | Default: false
Enable Plugin XP progression. Set false to use classic limits (max-invites / perms / groups).
plugin-xp-slots: enabled: falseinvites-per-level
Section titled “invites-per-level”Key: plugin-xp-slots.invites-per-level | Type: integer | Default: 1
Extra invite slots unlocked per Plugin XP level.
plugin-xp-slots: invites-per-level: 1levels
Section titled “levels”Key: plugin-xp-slots.levels | Type: map<integer, integer> | Default: {1: 100, 2: 300, 3: 700, 4: 1500, 5: 3000}
XP thresholds per level. Level 0 = base limit (no XP required).
plugin-xp-slots: levels: 1: 100 2: 300 3: 700 4: 1500 5: 3000levelup-sound
Section titled “levelup-sound”Key: plugin-xp-slots.levelup-sound | Type: string | Default: ENTITY_PLAYER_LEVELUP
Bukkit Sound enum name played on level-up.
plugin-xp-slots: levelup-sound: ENTITY_PLAYER_LEVELUPInactivity Slot Return
Section titled “Inactivity Slot Return”Auto-revoke invites to players who never join.
enabled
Section titled “enabled”Key: inactivity-slot-return.enabled | Type: boolean | Default: false
Enable auto-revoke.
inactivity-slot-return: enabled: falseKey: inactivity-slot-return.days | Type: integer | Default: 30
Days before revoking if never joined. Once a player joins even once, check stops permanently.
inactivity-slot-return: days: 30Re-Invite Restrictions
Section titled “Re-Invite Restrictions”Prevent rapid re-invites of removed players.
enabled
Section titled “enabled”Key: re-invite-restrictions.enabled | Type: boolean | Default: false
Enable restrictions.
re-invite-restrictions: enabled: falsemax-removals
Section titled “max-removals”Key: re-invite-restrictions.max-removals | Type: integer | Default: 3
Removals before blocking (0 = disabled).
re-invite-restrictions: max-removals: 3cooldown-days
Section titled “cooldown-days”Key: re-invite-restrictions.cooldown-days | Type: integer | Default: 7
Days before they can be re-invited after removal (0 = disabled).
re-invite-restrictions: cooldown-days: 7Webhooks
Section titled “Webhooks”Send HTTP POST requests to external URLs on invite events.
enabled
Section titled “enabled”Key: webhooks.enabled | Type: boolean | Default: false
Enable webhooks.
webhooks: enabled: falsetimeout-ms
Section titled “timeout-ms”Key: webhooks.timeout-ms | Type: integer | Default: 3000
Request timeout in milliseconds.
webhooks: timeout-ms: 3000events
Section titled “events”Key: webhooks.events | Type: map<string, string> | Default: all empty
Event URLs (empty = disabled for that event). Available events: invite, uninvite, expired, inactive_removed.
webhooks: events: invite: "https://example.com/webhook/invite" uninvite: "https://example.com/webhook/uninvite" expired: "" inactive_removed: ""Example Configurations
Section titled “Example Configurations”Simple Setup (SQLite - Single Server)
Section titled “Simple Setup (SQLite - Single Server)”storage: type: sqlite
language: "en"access-control-mode: nativemax-invites: 5invite-cooldown: 30
mutual-invite-boost: enabled: true xp-multiplier: 1.5
version-checker: enabled: falseProduction Setup (MySQL + LuckPerms)
Section titled “Production Setup (MySQL + LuckPerms)”storage: type: mysql remote: host: "db.production.com" port: 3306 database: "inviteme" username: "inviteme_user" password: "SecurePassword123" pool-size: 20
language: "en"access-control-mode: nativemax-invites: 3
luckperms: enabled: true default-group: "member" group-limits: member: 3 vip: 10 moderator: 20 admin: 99
mutual-invite-boost: enabled: true xp-multiplier: 1.5
version-checker: enabled: true notify-admins: truePlugin Mode (Full Access Control)
Section titled “Plugin Mode (Full Access Control)”storage: type: sqlite
language: "en"access-control-mode: pluginmax-invites: 5
# Required: set white-list=false in server.properties
mutual-invite-boost: enabled: trueBoost-Enabled Setup
Section titled “Boost-Enabled Setup”storage: type: sqlite
max-invites: 1 # Start small
mutual-invite-boost: enabled: true radius: overworld: 50 nether: 75 end: 100 xp-multiplier: 2.0 show-actionbar: true particle-effects: true xp-sharing: enabled: true share-percentage: 0.25Plugin XP Setup
Section titled “Plugin XP Setup”storage: type: sqlite
max-invites: 1 # Base limit
plugin-xp-slots: enabled: true invites-per-level: 1 levels: 1: 100 2: 300 3: 700 4: 1500 5: 3000
mutual-invite-boost: enabled: trueReloading Configuration
Section titled “Reloading Configuration”After editing config.yml:
/im reloadCheck changes applied:
/im debugWhat reloads: config.yml, language files, LuckPerms group limits, access control mode
What does NOT reload: Active database connections (requires restart), cached player heads in GUI
Troubleshooting
Section titled “Troubleshooting”“Database connection failed”
- Check host/port/credentials in config.yml
- Ensure database exists
- Check firewall rules
“Changes not applied”
- Run
/im reload - Check for YAML syntax errors
- Verify file permissions
“LuckPerms limits not working”
- Ensure LuckPerms installed
- Set
luckperms.enabled: true - Run
/im reload - Check group exists:
/lp listgroups