区块指令
基本信息
| 属性 | 值 |
|---|---|
| 根指令 | /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)。