区块指令

基本信息

属性 值
根指令 /chunks
根类 serverutils.command.chunks.CmdChunks(extends CmdTreeBase)
根指令源码 src/main/java/serverutils/command/chunks/CmdChunks.java:7-21
子命令数 10 + 1 个自动生成的 help
注册 ServerUtilitiesCommands.java:82,受 commands.chunks 控制(默认开)
额外前置 世界配置 world.chunk_claiming(ServerUtilitiesConfig.java:520-523)

[!IMPORTANT] 10 个子命令中有 9 个(除 claim_as 外的全部)第一行都是 if (!ClaimedChunks.isActive()) throw feature_disabled_server。ClaimedChunks.isActive() 反映 world.chunk_claiming 是否启用 —— 关闭领地功能时整组 /chunks 指令都不可用。

子命令表

子命令 类 权限 目标 作用
/chunks claim CmdClaim ALL 所在区块 领取当前所在区块
/chunks claim_as CmdClaimAs OP 所在区块 以服务器队伍名义领取
/chunks unclaim CmdUnclaim ALL 所在区块 取消领取
/chunks unclaim_all CmdUnclaimAll ALL 本队全部 取消本队所有已领区块
/chunks unclaim_everything CmdUnclaimEverything OP_OR_SP 全体 取消所有队伍的领取
/chunks load CmdLoad ALL 所在区块 强制加载所在区块
/chunks unload CmdUnload ALL 所在区块 取消强制加载
/chunks unload_all CmdUnloadAll ALL 本队全部 取消本队全部强制加载
/chunks unload_everything CmdUnloadEverything OP_OR_SP 全体 取消所有队伍的强制加载
/chunks info CmdInfo ALL 所在区块 查看所在区块归属
/chunks help CmdTreeHelp — — 自动生成(new CmdTreeHelp(this))

CmdChunks 构造函数的 addSubcommand 顺序为 claim, unclaim, load, unload, unclaim_all, unload_all, unclaim_everything, unload_everything, info, claim_as, help(CmdChunks.java:11-21)。

领取结果枚举

/chunks claim 的核心分支来自 serverutils.data.ClaimResult(src/main/java/serverutils/data/ClaimResult.java:3-10),共 6 种结果:

结果 含义 /chunks claim 的反馈
SUCCESS 成功 发 CHUNK_MODIFIED 通知 + updateChunkMessage
NO_TEAM 玩家无队伍 落入 default 分支,报 cant_modify_chunk
DIMENSION_BLOCKED 该维度禁止领取 报 claiming_not_enabled_dim
NO_POWER 超出 claims.max_chunks 上限 静默,不发送任何通知
ALREADY_CLAIMED 已被领取 落入 default 分支,报 cant_modify_chunk
BLOCKED 被阻止 落入 default 分支,报 cant_modify_chunk

[!NOTE] NO_POWER 分支在 chunks/CmdClaim.java:45-46 是空实现(只有 break,不发通知)。这是刻意为之:达上限属于「已通过权限检查但额度用尽」,不暴露其他队伍信息。

跨玩家操作

/chunks claim 用 CommandUtils.getSelfOrOther(player, args, 0, ServerUtilitiesPermissions.CLAIMS_OTHER_CLAIM)(chunks/CmdClaim.java:33)—— 第 1 个参数可指定其他玩家,缺省为自己。指定他人时额外要求 ClaimedChunks.instance.canPlayerModify(p, pos, CLAIMS_OTHER_CLAIM) 通过(CmdClaim.java:35-41)。

这对应权限节点 serverutilities.other_player.claims.claim(ServerUtilitiesPermissions.java:69)。

/chunks claim_as <队伍> 只能作用于 team.type.isServer == true 的队伍,否则报 commands.chunks.claim_as.team_not_server(chunks/CmdClaimAs.java:56-58)。其 Tab 补全也只列出 type.isServer 的队伍(CmdClaimAs.java:33-43)。

维度参数

/chunks unclaim_all 与 /chunks unload_all 的 isUsernameIndex 都返回 index == 1(chunks/CmdUnloadAll.java:37-39),第 1 个参数是维度名,Tab 补全走 CommandUtils.getDimensionNames()(CmdUnloadAll.java:29-31)。

禁止领取的维度由 world.blocked_claiming_dimensions(int[],默认空数组,ServerUtilitiesConfig.java:537-539)控制,判定逻辑在 WorldConfig.blockDimension(int)(ServerUtilitiesConfig.java:665-677)。

相关条目