适用源码:
9da0beb8e8fdad85f50d7039408c3d98494e91c7。本文记录源码行为,默认配置不等于实服配置。
设计状态:按现状编写,具体业务批准记录未逐项核定;开发状态:下述能力有实现证据,限制单列;验证状态:完成定向源码核对,未执行自动测试或实服验收。
判定约定
以下是现行代码事实,不是新增授权设计。管理员指持有对应插件权限者,并不自动等于 OP;plugin.yml 的默认 op 也可被权限插件覆盖。Towny 国王、助手、居民头衔不能互相替代。按钮隐藏、页面打开和最终执行分别核验。
通用设施矩阵
所有 FacilityAccessService 分支要求系统启用、Player/Facility 非空、使用权限或设施管理员,以及核心地块仍属原城镇。
| 操作/角色 | 本镇镇长 | 普通居民/仅助手 | 设施管理员 | 控制台 |
|---|---|---|---|---|
| 非公共设施 canOpen,TOWN 模式 | 可(仍需基础条件) | 本镇可 | 可(仍需有效城镇) | 无 Player,不适用 |
| 非公共设施 canOpen,MAYOR 模式 | 可 | 不因头衔放行 | 可 | 不适用 |
| publicInteraction=true 打开 | 基础条件通过可 | 可,不要求本镇成员 | 可 | 不适用 |
| canManage | 可 | 不可,仅助手不够 | 可 | 不适用 |
publicInteraction 不绕过原城镇有效性。管理员不意味着可以在标准创建中省略本镇身份:创建服务另检查 townOf。
按执行动作区分
| 动作 | 执行检查 |
|---|---|
| 通用 UPGRADE/RESUME/DISMANTLE、账户 WITHDRAW | canManage,加类型/状态/资产检查 |
| DEPOSIT/TOWN_SUMMARY、翻页/刷新/质押入口 | canOpen |
| 物资图标左右键 | FacilityMenuListener→canUse→canOpen,不是账户 WITHDRAW |
| 银行真实槽位存取 | BankMenuListener 重查 bank.canUse→canOpen |
| 银行质押存入/取出 | BankPledgeItemDialog 每次重查 bank.canUse |
| 铁匠铺普通使用 | 在线、存活、非旁观、facility.use、同区块核心8格内、原城镇及模式 |
| 铁匠铺升级/研究 | 上述检查再加当前城镇 canManage |
| 驿站手动寄货/领取 | StationPostService.inspect:本人原站区块、facility.use、存活非旁观、核心、归属;操作要求 ACTIVE/PEACEFUL |
| 驿站价目管理 | PortTravelAccess 当前 manager 是镇长或设施管理员,不含单独助手放行 |
具体驿站其他操作仍要走专属资格,不可将包裹 inspect 当全部旅行权限规则。
命令与测试
/market 需要 flrv.market.admin,控制台被命令实现拒绝;/sellgui 需要 flrv.market.use。交易所设施入口不是 /market 管理命令授权。
/equipment 领取默认测试权限,allow-all 可放开领取但不能放开 finish 加速;/equipmentskin 用 flrv.equipment.skin;查看他人皮肤另需 admin 权限。
/war 由 flrv.war.admin 控制,允许控制台,仍只是测试功能。不能据此给控制台设施背包操作资格。
待确认冲突
旧玩家指南对“通用库存取出需管理权限”和“助手可调驿站价”描述与上述源码不同。源代码行为可记录,是否符合产品预期待主技术裁决。本文不声称已完成全插件授权或漏洞审计。
来源
folia_plugin/src/main/resources/plugin.yml;代码根 folia_plugin/src/main/java/com/flrv/:logic/facility/service/FacilityAccessService.java、infrastructure/integration/towny/TownyService.java#canManage/canAccess、PortTravelAccess.java#member/management(同 towny)、event/inventory/FacilityMenuListener.java、BankMenuListener.java(同 inventory)、ui/facility/BankPledgeItemDialog.java、logic/blacksmith/BlacksmithService.java、logic/port/service/StationPostService.java、event/command/FacilityCommand.java。
相关:设施执行链、银行指南。