Skip to content

Commands and Permissions

Main command: /emakilevel; aliases: /elv, /elevel. Examples below use /elv.

Every subcommand first checks emakilevel.use. Administrative commands therefore require both emakilevel.use and their specific admin permission.

Player commands

CommandPermissionDescription
/elvemakilevel.useView all loaded level types for yourself. Player-only.
/elv info [type]emakilevel.useView one level type. Without type, behaves like /elv.
/elv gui [type]emakilevel.useOpen the level GUI. Without type, uses config.yml > primary_type. Alias: /elv open [type].
/elv levelup [type]emakilevel.levelupManually level up one type. Without type, uses config.yml > primary_type, default main. Alias: /elv up [type].
/elv top [type]emakilevel.topView top 10 cached leaderboard entries for one type. Without type, uses the primary type.
/elv topgui [type]emakilevel.topOpen the leaderboard GUI. Without type, uses the primary type. Alias: /elv topopen [type]. Player-only.

Examples:

text
/elv
/elv info combat
/elv gui main
/elv levelup mining
/elv up main
/elv top combat
/elv topgui combat

Manual level-up is controlled by types/<type>.yml:

yaml
upgrade:
  enabled: true
  manual_upgrade: true
  cost:
    enabled: false

If a type should only level up automatically from exp gain, keep auto_upgrade: true and set manual_upgrade: false.

Admin commands

These commands require emakilevel.admin. Command targets must be online because the command implementation resolves exact online player names.

CommandPermissionDescription
/elv giveexp <player> <type> <amount>emakilevel.adminAdd exp to an online player. Alias: addexp. Auto-upgrade follows the type config.
/elv takeexp <player> <type> <amount>emakilevel.adminRemove current-level exp down to 0. Does not downgrade. Alias: removeexp.
/elv setexp <player> <type> <amount>emakilevel.adminSet current-level exp. Does not directly change level.
/elv addlevel <player> <type> <amount>emakilevel.adminAdd levels, clamped between start_level and max_level. Alias: givelevel.
/elv takelevel <player> <type> <amount>emakilevel.adminRemove levels, not below start_level. Alias: removelevel.
/elv setlevel <player> <type> <level>emakilevel.adminSet level, clamped to the type range.
/elv reset <player> <type>emakilevel.adminReset the type: level back to start_level, exp and total_exp to zero.

Examples:

text
/elv giveexp Steve combat 250
/elv takeexp Steve mining 30
/elv setexp Steve main 0
/elv addlevel Steve main 5
/elv takelevel Steve combat 1
/elv setlevel Steve fishing 20
/elv reset Steve mining

Operation differences:

OperationChanges levelChanges current expChanges total expNotes
giveexppossiblyincreases, then consumes requirement exp on level-upincreasesAuto-upgrade depends on type config.
takeexpnodecreases to minimum 0unchangedDoes not downgrade.
setexpnosets to valueunchangedUseful for correcting current-level exp.
addlevelyesresets to 0unchangedDirect admin edit, no level-up rewards.
takelevelyesresets to 0unchangedDirect admin edit, no reward rollback.
setlevelyesresets to 0unchangedDirect admin edit.
resetyesresets to 0resets to 0Returns to the type's initial state.

Reload and debug commands

CommandPermissionDescription
/elv reloademakilevel.reload or emakilevel.adminSave cached data, reload config, types, requirements, sources, language, PDC, and the attribute bridge, then sync online players.
/elv debug requirement <type> <level>emakilevel.debug or emakilevel.adminShow required exp and the source used for a target level.
/elv debug pdc <player>emakilevel.debug or emakilevel.adminResync online player PDC. The implementation resyncs every online player.
/elv debugemakilevel.debug or emakilevel.adminPrint the CoreLib debug status overview.
/elv debug status / on / offemakilevel.debug or emakilevel.adminShared CoreLib debug switches: show status, enable all, disable all.
/elv debug player <player>emakilevel.debug or emakilevel.adminToggle debug output for one online player.
/elv debug module <module>emakilevel.debug or emakilevel.adminToggle a debug submodule. EmakiLevel contributes script; the shared CoreLib submodules action, item_operation, variables, placeholder, and gui are also available.

Examples:

text
/elv reload
/elv debug requirement main 10
/elv debug requirement combat 35
/elv debug pdc Steve
/elv debug module script

debug requirement source values:

SourceMeaning
type.valuesExact target-level value in types/<type>.yml > requirement.values.
type.formulaType-specific formula in types/<type>.yml > requirement.formula.
groups.<group>.valuesExact value in requirements.yml > groups.<group>.values.
groups.<group>.formulaFormula in requirements.yml > groups.<group>.formula.
global.valuesExact value in requirements.yml > global.values.
global.formulaFormula in requirements.yml > global.formula.

Permissions

PermissionDefaultScope
emakilevel.usetrueMain command and basic queries; also the registration permission of the root command. Checked before every subcommand.
emakilevel.leveluptrue/elv levelup / /elv up.
emakilevel.toptrue/elv top and /elv topgui / /elv topopen.
emakilevel.reloadop/elv reload.
emakilevel.debugop/elv debug requirement and /elv debug pdc.
emakilevel.adminopExp/level management commands; also accepted for reload/debug.

LuckPerms examples:

text
/lp group default permission set emakilevel.use true
/lp group default permission set emakilevel.levelup true
/lp group default permission set emakilevel.top true
/lp group admin permission set emakilevel.admin true
/lp group admin permission set emakilevel.reload true
/lp group admin permission set emakilevel.debug true

Common failure reasons

Reason IDCommon case
player_not_foundTarget player is offline/not found, or an API call lacks a valid UUID.
player_data_unavailablePlayer level data is not loaded yet, or was already unloaded.
type_not_foundThe type does not exist.
type_disabledThe type exists but enabled: false.
invalid_amountAmount is invalid.
daily_cap_reachedThe type's daily exp budget is exhausted; see config.yml > daily_caps.
upgrade_disabledupgrade.enabled: false.
manual_upgrade_disabledPlayer tried /elv levelup, but manual upgrade is disabled.
max_levelAlready at max_level.
not_enough_expCurrent-level exp is insufficient.
not_enough_moneyEconomy cost is not affordable.
not_enough_materialMaterial cost is not available.
cost_compensation_failedAn upgrade cost was consumed, a later step failed, and refunding the cost also failed.
invalid_requirementRequirement formula/config resolves to 0 or less.

Asynchronous public-API writes may additionally return api_unavailable, not_entity_owner, player_offline, owner_schedule_retired, and owner_schedule_rejected. These come from thread-ownership scheduling, not from configuration.