Skip to content

Complete Configuration Reference

Every option in config.yml explained with examples and defaults.

plugins/InviteMe/config.yml

After editing, reload with: /im reload


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 remote
  • postgresql - PostgreSQL remote
storage:
type: sqlite

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: 3306

Key: storage.remote.database | Type: string | Default: inviteme

Database name.

storage:
remote:
database: "inviteme"

Key: storage.remote.username | Type: string | Default: root

Database user.

storage:
remote:
username: "inviteme_user"

Key: storage.remote.password | Type: string | Default: password

Database password. Keep secret!

storage:
remote:
password: "SecurePassword123"

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: 15

Type: string | Default: en

Plugin message language.

Options: en (English), es (Spanish), de (German)

language: "en"

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: true

Key: version-checker.enabled | Type: boolean | Default: false

Check for updates on Modrinth.

version-checker:
enabled: false

Key: version-checker.interval-hours | Type: integer | Default: 24

How often to check (0 = startup only).

version-checker:
interval-hours: 24

Key: version-checker.notify-admins | Type: boolean | Default: true

Notify OPs and invite.admin in-game about new versions.

version-checker:
notify-admins: true

Key: version-checker.notify-for | Type: list | Default: [release]

Version types to notify about: release, beta, alpha.

version-checker:
notify-for:
- release

Type: integer | Default: 5

Default invitations per player. Overrideable by:

  • LuckPerms permission invite.number.X
  • LuckPerms group limits
  • plugin-xp-slots progression (if enabled)

Note: Console and admins have no limit.

max-invites: 5

Type: integer | Default: 30

Seconds between /invite uses per player. 0 = disabled.

Note: Players with invite.admin bypass this.

invite-cooldown: 30

Key: luckperms.enabled | Type: boolean | Default: false

Enable LuckPerms group-based invite limits.

luckperms:
enabled: false

Key: luckperms.default-group | Type: string | Default: default

Group assigned to new invited players (must exist in LuckPerms).

luckperms:
default-group: "member"

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: 20

Key: whitelist-sync.enabled | Type: boolean | Default: true

Keep vanilla whitelist in sync with InviteMe data.

whitelist-sync:
enabled: true

Key: whitelist-sync.auto-register-console | Type: boolean | Default: true

Auto-register players added via console to InviteMe.

whitelist-sync:
auto-register-console: true

Key: whitelist-sync.sync-interval-minutes | Type: integer | Default: 60

How often to run background sync (in minutes).

whitelist-sync:
sync-interval-minutes: 60

Key: whitelist-sync.cleanup-removed | Type: boolean | Default: false

Remove all players from whitelist when syncing. WARNING: Dangerous!

whitelist-sync:
cleanup-removed: false

Key: whitelist-sync.notify-on-sync | Type: boolean | Default: false

Notify admins on each sync completion.

whitelist-sync:
notify-on-sync: false

Type: string | Default: native

How players are checked for access on join.

Options:

  • native - Vanilla whitelist controls access (recommended)
  • plugin - InviteMe controls access. Requires white-list=false in server.properties. Bypass: OP or invite.admin
access-control-mode: native

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: 60

Key: action-log.max-entries | Type: integer | Default: 0

Max action log entries to keep. 0 = unlimited.

action-log:
max-entries: 0

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: 5

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: true

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: true

XP boost for players directly linked by an invite (inviter ↔ invitee). Activates when both online, same world, within radius.

Key: mutual-invite-boost.enabled | Type: boolean | Default: true

Enable the boost system.

mutual-invite-boost:
enabled: true

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: 60

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.5

Key: mutual-invite-boost.check-interval | Type: integer | Default: 5

Proximity check interval (seconds). Recommended: 5-10.

mutual-invite-boost:
check-interval: 5

Key: mutual-invite-boost.show-actionbar | Type: boolean | Default: true

Show actionbar message when boost starts/stops.

mutual-invite-boost:
show-actionbar: true

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: true

Key: mutual-invite-boost.cooldown-seconds | Type: integer | Default: 30

Cooldown after boost ends (shown in actionbar).

mutual-invite-boost:
cooldown-seconds: 30

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: 3

Key: mutual-invite-boost.max-multiplier | Type: decimal | Default: 2.5

Cap on total multiplier (prevents stacking abuse).

mutual-invite-boost:
max-multiplier: 2.5

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: 1

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: 1000

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: 10

Key: mutual-invite-boost.xp-sharing.enabled | Type: boolean | Default: true

Share XP with boost partners.

mutual-invite-boost:
xp-sharing:
enabled: true

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.25

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: 30

Unlock extra invite slots via Plugin XP from boost gameplay.

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: false

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: 1

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: 3000

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_LEVELUP

Auto-revoke invites to players who never join.

Key: inactivity-slot-return.enabled | Type: boolean | Default: false

Enable auto-revoke.

inactivity-slot-return:
enabled: false

Key: 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: 30

Prevent rapid re-invites of removed players.

Key: re-invite-restrictions.enabled | Type: boolean | Default: false

Enable restrictions.

re-invite-restrictions:
enabled: false

Key: re-invite-restrictions.max-removals | Type: integer | Default: 3

Removals before blocking (0 = disabled).

re-invite-restrictions:
max-removals: 3

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: 7

Send HTTP POST requests to external URLs on invite events.

Key: webhooks.enabled | Type: boolean | Default: false

Enable webhooks.

webhooks:
enabled: false

Key: webhooks.timeout-ms | Type: integer | Default: 3000

Request timeout in milliseconds.

webhooks:
timeout-ms: 3000

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: ""

storage:
type: sqlite
language: "en"
access-control-mode: native
max-invites: 5
invite-cooldown: 30
mutual-invite-boost:
enabled: true
xp-multiplier: 1.5
version-checker:
enabled: false
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: native
max-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: true
storage:
type: sqlite
language: "en"
access-control-mode: plugin
max-invites: 5
# Required: set white-list=false in server.properties
mutual-invite-boost:
enabled: true
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.25
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: true

After editing config.yml:

/im reload

Check changes applied:

/im debug

What 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


“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