Configuration
Global settings live in config.yml in the plugin data folder; per-module settings live
in modules/<module>.yml. /zn reload applies language and dialog changes immediately;
module toggles need a full server restart. Where a key is parsed but not yet consumed by
its module, the table marks it as not applied yet.
config.yml
| Key |
Default |
Notes |
config-version |
2 |
Config schema version; upgraded automatically |
language |
en |
Active translation: en or es |
dialogs |
true |
Native Paper dialogs; false falls back to the chat interface |
commands.register-root-aliases |
true |
Register the optional root shortcuts (/spawn, /home, /login, and more) |
commands.disabled-root-aliases |
[kill, kick, time, weather, msg, gamemode] |
Root command names that are never registered |
updater.check-on-boot |
true |
Run the update check on boot |
Module toggles
| Key |
Default |
modules.auth.enabled |
true |
modules.antibot.enabled |
true |
modules.toolkit.enabled |
true |
modules.chat.enabled |
true |
modules.inventory.enabled |
true |
modules.clans.enabled |
true |
modules.itemedit.enabled |
true |
modules.tab.enabled |
true |
modules.integrations.enabled |
true |
modules.updater.enabled |
true |
modules.debug.enabled |
false |
Toggles take effect only after a full server restart. Unknown module names default to
enabled, and debug defaults to disabled.
modules/auth.yml
| Key |
Default |
Notes |
session-hours |
12 |
Session memory duration |
max-accounts-per-ip |
3 |
Account limit per address |
min-password-length |
4 |
Minimum password length |
max-password-length |
64 |
Maximum password length |
max-failed-attempts |
5 |
Failed attempts before lockout |
lockout-seconds |
60 |
Lockout duration |
otp-expiry-seconds |
300 |
One-time password validity |
form-delay-ticks |
20 |
Delay before the auth form opens |
auto-login-bedrock |
true |
Not applied yet |
auto-login-premium |
false |
Not applied yet |
login-timeout-seconds |
60 |
Not applied yet |
security-effects.blindness |
true |
Not applied yet |
security-effects.slowness |
true |
Not applied yet |
security-effects.invulnerability |
true |
Not applied yet |
security-effects.mute-chat |
true |
Not applied yet |
allowed-commands |
[/login, /register, /l, /reg] |
Not applied yet |
mojang.timeout-seconds |
4 |
Premium verification timeout |
mojang.cache-seconds |
3600 |
Premium verification cache |
modules/antibot.yml
| Key |
Default |
Notes |
window-seconds |
10 |
Rate-limit window per address |
max-joins-per-window |
4 |
Connections allowed per window |
attack-mode.auto-enable |
true |
Not applied yet |
attack-mode.threshold |
8 |
Not applied yet |
attack-mode.duration-seconds |
60 |
Not applied yet |
checks.require-ping |
false |
Not applied yet |
checks.alert-staff |
true |
Not applied yet |
| Key |
Default |
Notes |
near-radius |
100 |
Radius of the "near" player list |
burn-ticks |
100 |
Burn duration applied by the burn action |
tpa-timeout-seconds |
120 |
Teleport request timeout |
teleport.warmup-seconds |
3 |
Not applied yet |
teleport.cancel-on-move |
true |
Not applied yet |
teleport.cancel-on-damage |
true |
Not applied yet |
homes.default-max-homes |
3 |
Not applied yet |
homes.bed-sets-home |
false |
Not applied yet |
spawn.on-first-join |
true |
Not applied yet |
spawn.on-death |
false |
Not applied yet |
back.save-on-death |
true |
Not applied yet |
back.cooldown-seconds |
10 |
Not applied yet |
rtp.rtp-min |
-1000 |
Not applied yet; the range is changed at runtime with /settpr |
rtp.rtp-max |
1000 |
Not applied yet; the range is changed at runtime with /settpr |
rtp.cooldown-seconds |
60 |
Not applied yet |
rtp.avoid-water |
true |
Not applied yet |
rtp.avoid-lava |
true |
Not applied yet |
pranks.enabled |
true |
Not applied yet |
pranks.level-1 to pranks.level-5 |
policy text |
Not applied yet |
pranks.level-6 |
placeholder text |
Not applied yet |
modules/chat.yml
Channels
| Key |
Default |
Notes |
enabled |
true |
Not applied yet; use modules.chat.enabled |
channels.default-channel |
local |
Default channel for players |
channels.local-radius |
100 |
Radius of local chat |
channels.shout-prefix |
! |
Prefix that sends a message to the whole server |
channels.shout-permission |
zn.chat.shout |
Not applied yet; the permission is fixed at zn.chat.shout |
| Key |
Default |
Notes |
formatting.local-format |
gray [L] prefix/name/suffix: message |
MiniMessage format for local chat |
formatting.global-format |
gold [G] prefix/name/suffix: message |
MiniMessage format for global chat |
formatting.player-hover |
6 lines (name, rank, ping, world, blank, hint) |
Tooltip on player names |
formatting.player-click.action |
SUGGEST_COMMAND |
Click action on player names |
formatting.player-click.value |
/msg <player> |
Click action value |
formatting.groups.admin.priority |
100 |
Group priority |
formatting.groups.admin.permission |
zn.chat.group.admin |
Group permission |
formatting.groups.admin.local-format / global-format |
admin formats |
Group chat formats |
formatting.groups.admin.player-hover |
6 lines |
Group tooltip |
formatting.groups.admin.player-click.action / value |
SUGGEST_COMMAND / /msg <player> |
Group click action |
formatting.groups.mod.priority / permission |
80 / zn.chat.group.mod |
Mod group |
formatting.groups.mod.local-format / global-format |
mod formats |
Mod group formats |
formatting.groups.vip.priority / permission |
50 / zn.chat.group.vip |
VIP group |
formatting.groups.vip.local-format / global-format |
vip formats |
VIP group formats |
Placeholders
| Key |
Default |
Notes |
placeholders.item.enabled |
true |
[item] and [i] |
placeholders.item.format |
aqua [item_name x amount] |
Item placeholder format |
placeholders.inventory.enabled |
true |
[inv] |
placeholders.inventory.format |
gold [Inventory] |
Inventory placeholder format |
placeholders.inventory.hover |
Click to inspect inventory |
Hover text |
placeholders.inventory.command |
/zn inv see <player> |
Click command |
placeholders.enderchest.enabled |
true |
[ender] |
placeholders.enderchest.format |
light purple [EnderChest] |
Ender chest placeholder format |
placeholders.enderchest.hover |
Click to inspect ender chest |
Hover text |
placeholders.enderchest.command |
/zn inv endersee <player> |
Click command |
Mentions
| Key |
Default |
Notes |
mentions.enabled |
true |
Player mentions |
mentions.format |
yellow bold @target |
Mention format |
mentions.sound.enabled |
true |
Sound on mention |
mentions.sound.type |
block.note_block.bell |
Sound type |
mentions.sound.volume |
1.0 |
Sound volume |
mentions.sound.pitch |
1.5 |
Sound pitch |
mentions.actionbar.enabled |
true |
Action bar notification |
mentions.actionbar.message |
mentioned-you message |
Notification text |
Moderation
| Key |
Default |
Notes |
moderation.cooldown-seconds |
1.5 |
Chat cooldown |
moderation.cooldown-bypass-permission |
zn.chat.bypass.cooldown |
Bypass permission |
moderation.anti-duplicate.enabled |
true |
Block repeated messages |
moderation.anti-caps.enabled |
true |
Block excessive caps |
moderation.anti-caps.min-message-length |
6 |
Minimum length for the caps check |
moderation.anti-caps.max-caps-percent |
60 |
Maximum share of capital letters |
moderation.swear-filter.enabled |
false |
Swear filter |
moderation.swear-filter.block-message |
false |
Block instead of censoring |
moderation.swear-filter.censor-replacement |
**** |
Censoring replacement |
moderation.swear-filter.blocked-words |
[] |
Blocked word list |
Announcements
| Key |
Default |
Notes |
announcements.enabled |
false |
Scheduled announcements |
announcements.interval-seconds |
180 |
Interval between announcements |
announcements.prefix |
Nexus prefix |
Announcement prefix |
announcements.messages |
3 lines |
Rotating messages |
modules/clans.yml
| Key |
Default |
Notes |
invite-seconds |
120 |
Invitation validity |
naming.min-name-length |
3 |
Not applied yet |
naming.max-name-length |
32 |
Maximum clan name length |
naming.max-tag-length |
6 |
Not applied yet |
membership.max-members |
10 |
Not applied yet |
membership.creation-cost |
0 |
Not applied yet |
gameplay.friendly-fire-default |
false |
Default friendly fire state |
gameplay.home-warmup-seconds |
3 |
Not applied yet |
gameplay.max-allies |
3 |
Not applied yet |
gameplay.max-rivals |
5 |
Not applied yet |
modules/inventory.yml
The inventory module has no settings file in the data folder; it runs on these built-in
defaults, and none of them are applied yet.
| Key |
Default |
Notes |
rollback.save-on-death |
true |
Not applied yet |
rollback.save-on-disconnect |
true |
Not applied yet |
rollback.max-snapshots-per-player |
20 |
Not applied yet |
rollback.retention-days |
7 |
Not applied yet |
inspector.allow-modification |
true |
Not applied yet |
modules/itemedit.yml
| Key |
Default |
Notes |
lore-lines |
8 |
Maximum lore lines |
limits.max-name-length |
64 |
Not applied yet |
limits.max-lore-line-length |
128 |
Not applied yet |
formatting.allow-color-codes |
true |
Not applied yet |
formatting.allow-minimessage |
true |
Not applied yet |
economy.repair-cost |
0 |
Not applied yet |
modules/tab.yml
| Key |
Default |
Notes |
tablist.enabled |
true |
Not applied yet; use modules.tab.enabled |
tablist.update-interval-ticks |
20 |
Not applied yet |
tablist.colorize-ping |
true |
Not applied yet |
tablist.header |
2 lines |
Not applied yet; the header comes from translation keys |
tablist.footer |
2 lines |
Not applied yet; the footer comes from translation keys |
bossbar.duration-ticks |
200 |
Join boss bar duration |
bossbar.color |
BLUE |
Join boss bar color |
bossbar.overlay |
PROGRESS |
Join boss bar overlay |
Data layout
Everything lives under the plugin data folder plugins/ZellysNexus/:
config.yml: global settings, copied from the jar on first run.
modules/: per-module settings; the templates for auth, antibot, toolkit,
chat, clans, itemedit, and tab are copied on first start when missing.
- Module data files:
auth.yml, antibot.yml, clans.yml, spawn.yml, homes.yml,
warps.yml, jails.yml, kits.yml, mail.yml, jailed.yml, lastseen.yml,
nicknames.yml, and items.yml.
debug/: dated diagnostic reports written by the debug module.
- No database is used: every store is a UTF-8 YAML file.
Language files
Translations ship inside the jar and are not data-folder files. language selects en
or es; a key missing in the active language falls back to English, and a language that
fails to load falls back to English entirely. /zn reload applies language changes
immediately.