Skip to content

命令与权限

EmakiLevel 的主命令是 /emakilevel,别名为 /elv/elevel。文档示例统一使用最短别名 /elv

所有子命令都会先检查 emakilevel.use。也就是说,即使是管理员命令,执行者也必须同时拥有 emakilevel.use 和对应的管理权限。

玩家命令

命令权限说明
/elvemakilevel.use查看自己所有已加载等级类型的当前等级、经验、需求经验和进度。只能由玩家执行。
/elv info [type]emakilevel.use查看自己指定等级类型;不填 type 时等同 /elv
/elv gui [type]emakilevel.use打开等级 GUI;不填 type 时使用 config.yml > primary_type。别名:/elv open [type]
/elv levelup [type]emakilevel.levelup手动升级指定等级类型;不填 type 时使用 config.yml > primary_type,默认 main。别名:/elv up [type]
/elv top [type]emakilevel.top查看指定等级类型的当前缓存排行榜前 10;不填 type 时使用主等级类型。
/elv topgui [type]emakilevel.top打开排行榜 GUI;不填 type 时使用主等级类型。别名:/elv topopen [type]。只能由玩家执行。

示例:

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

手动升级会受到 types/<type>.yml 中以下字段影响:

yaml
upgrade:
  enabled: true          # false 时完全禁止升级
  manual_upgrade: true   # false 时禁止 /elv levelup
  cost:
    enabled: false       # true 时需要满足经济/材料消耗

如果某个类型只想通过获得经验自动升级,可以保留 auto_upgrade: true,并把 manual_upgrade: false

管理命令

这些命令要求 emakilevel.admin,并且目标玩家必须在线,因为命令实现使用在线玩家名精确匹配。

命令权限说明
/elv giveexp <player> <type> <amount>emakilevel.admin给在线玩家增加经验。别名:addexp。会按该类型配置触发自动升级。
/elv takeexp <player> <type> <amount>emakilevel.admin扣除在线玩家当前等级内经验,最低为 0,不会自动降级。别名:removeexp
/elv setexp <player> <type> <amount>emakilevel.admin设置在线玩家当前等级内经验,不直接改变等级。
/elv addlevel <player> <type> <amount>emakilevel.admin增加等级,结果会被限制在该类型 start_levelmax_level 之间。别名:givelevel
/elv takelevel <player> <type> <amount>emakilevel.admin扣除等级,结果不会低于 start_level。别名:removelevel
/elv setlevel <player> <type> <level>emakilevel.admin设置等级,结果会被限制在该类型等级范围内。
/elv reset <player> <type>emakilevel.admin重置指定类型:等级回到 start_levelexptotal_exp 清零。

示例:

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

经验与等级操作的差异:

操作改变等级改变当前经验改变总经验备注
giveexp可能自动升级增加并在升级时扣除需求经验增加自动升级取决于类型配置。
takeexp扣除到最低 0不变不会降级。
setexp设置为指定值不变适合修正当前等级内经验。
addlevel清零不变直接改等级,不发放升级奖励。
takelevel清零不变直接改等级,不回退奖励。
setlevel清零不变用于管理员修正。
reset清零清零回到该类型起始状态。

重载与调试命令

命令权限说明
/elv reloademakilevel.reloademakilevel.admin保存当前缓存数据,重载主配置、等级类型、需求、来源规则、语言、PDC 和属性桥接,并同步在线玩家。
/elv debug requirement <type> <level>emakilevel.debugemakilevel.admin查看某个类型升到目标等级时的需求经验,以及命中的需求来源。
/elv debug pdc <player>emakilevel.debugemakilevel.admin触发在线玩家 PDC 重新同步。实现上会同步所有在线玩家。
/elv debugemakilevel.debugemakilevel.admin输出 CoreLib 调试状态概览。
/elv debug status / on / offemakilevel.debugemakilevel.adminCoreLib 通用调试开关:查看状态、全部开启、全部关闭。
/elv debug player <player>emakilevel.debugemakilevel.admin切换某个在线玩家的调试输出。
/elv debug module <module>emakilevel.debugemakilevel.admin切换调试子模块。EmakiLevel 自身提供 script,另外可用 CoreLib 共享子模块 actionitem_operationvariablesplaceholdergui

示例:

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

debug requirement 的来源可能是:

输出来源含义
type.valuestypes/<type>.yml > requirement.values 中写了目标等级的精确值。
type.formulatypes/<type>.yml > requirement.formula 覆盖了分组/全局公式。
groups.<group>.valuesrequirements.yml > groups.<group>.values 中写了目标等级的精确值。
groups.<group>.formula使用了 requirements.yml > groups.<group>.formula
global.values使用了 requirements.yml > global.values
global.formula使用了 requirements.yml > global.formula

权限节点

权限默认覆盖范围
emakilevel.usetrue使用主命令和基础查询命令,也是主命令自身的注册权限。所有子命令都会先检查此权限。
emakilevel.leveluptrue使用 /elv levelup / /elv up
emakilevel.toptrue使用 /elv top/elv topgui / /elv topopen
emakilevel.reloadop使用 /elv reload
emakilevel.debugop使用 /elv debug requirement/elv debug pdc
emakilevel.adminop使用经验/等级管理命令,并可代替 reload/debug 的专用权限。

常见 LuckPerms 示例:

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

常见失败原因

命令和 API 返回的失败原因是固定英文 ID,语言文件会把常用原因翻译成玩家可读文本。

原因 ID常见场景
player_not_found目标玩家不存在、离线,或 API 调用没有有效 UUID。
player_data_unavailable玩家等级数据尚未加载或已卸载。
type_not_foundtype 不存在,或者 sources/*.yml / Action 中写错类型 ID。
type_disabled等级类型存在但 enabled: false
invalid_amount经验或等级数量小于等于 0,或设置经验时传入负数。
daily_cap_reached该类型当日经验额度已用尽,见 config.yml > daily_caps
upgrade_disabledupgrade.enabled: false
manual_upgrade_disabled玩家手动执行 /elv levelup,但类型禁用了手动升级。
max_level已达到该类型 max_level
not_enough_exp当前等级内经验不足以升到下一级。
not_enough_money升级经济消耗不足。
not_enough_material升级材料消耗不足。
cost_compensation_failed升级消耗已扣除但后续步骤失败,且退还消耗时出错。
invalid_requirement需求经验公式或配置结果小于等于 0,无法升级。

通过公开 API 异步写入时还可能返回以下原因:api_unavailablenot_entity_ownerplayer_offlineowner_schedule_retiredowner_schedule_rejected。这些原因与线程归属调度有关,不由配置引起。