BankZZ

BankZZ

Hytale的持久性分页银行,拥有自己的仪表板、基于等级的权限支持和直接物品编辑功能。

游戏玩法

重要 Beta 依赖通知

BankZZ 的这一新 Beta 分支现在需要 CoreZZ。

CurseForge 上旧的公开发布版 BankZZ 文件不要求 CoreZZ。但对于此 Beta 分支,情况不再如此。

如果您上传或安装此 Beta 文件,您必须先安装 ZZCore.jar。没有 CoreZZ,此 BankZZ Beta 分支将无法正常运行。

ZZBank 的功能

  • 为每位玩家提供一个持久的、基于页面的银行系统。
  • 为每个兼容的氏族或公会添加一个可选的共享银行。
  • 使用专用的自定义 UI,而非纯聊天输出。
  • 允许管理员在游戏内管理玩家银行和共享银行。
  • 支持可选的、基于经济的个人银行页面购买,并在有组织支持时,也支持共享银行页面购买。
  • 存储敏感操作和物品移动的审计历史。

个人银行如何运作

玩家使用 /bank 打开自己的存储空间,或使用 /bank <page> 直接跳转到某一页。

每一页都是一个真正的 9x9 银行页面,拥有 81 个物品槽,每个账户都按玩家持久化存储。如果其他查看者正在编辑某页面,ZZBank 会锁定该页面以防止冲突和数据丢失。

管理员可以通过命令或管理目录打开其他玩家的银行。玩家面板专为常规存储使用而构建,而管理员访问权限则旨在用于审核和工作流支持。

页面购买如何运作

ZZBank 可以使用基于经济的购买来扩展页面数量,但流程取决于银行类型。

个人银行购买

如果启用了经济支持,玩家可以通过以下方式购买更多页面:

  • /bank buy
  • /bank buy <pages>
  • 个人银行面板内的 购买 +1 按钮

共享银行购买

如果共享银行可用且活跃组织允许,玩家也可以使用以下方式为该共享银行购买页面:

  • /guildbank buy
  • /guildbank buy <pages>

在发起任何扣费之前,模组会检查权限、当前限制、配置的上限、经济系统可用性,并且对于共享银行,还会检查是否存在有效的组织账户用于购买流程。

共享氏族和公会银行如何运作

共享银行是可选的。

ZZBank 首先尝试通过 ZZClan 来解决此功能,使用带有 zzclan 提供者的 ZZCore OrganizationService

如果该提供者不可用,ZZBank 会保留与 HyGuild / GuildPlugin 的旧版兼容性。

当氏族或公会支持可用时:

  • /guildbank 打开一个专用的共享银行 UI
  • /guildbank <page> 打开一个特定的共享银行页面
  • /guildbank npc <player> [page] 在 NPC 或服务器流程中打开该玩家的共享银行

每个氏族或公会都拥有自己独立的账户,通过内部组织标识符存储,在当前存储模型中暴露为 guildId,从而确保共享存储与个人存储以及其他组织的存储保持隔离。

共享银行的权限可以通过两种方式解析:

  • 使用 ZZClan,访问权限可直接来自内部氏族权限,例如 bank_depositbank_withdrawmanage_bank
  • 如果没有明确的组织权限覆盖,ZZBank 会回退到 guildDepositMinRankguildWithdrawMinRank 中配置的最低等级
  • 使用 HyGuild / GuildPlugin,访问权限遵循检测到的公会层级结构和相同的配置最低等级值

如果 ZZClanHyGuild / GuildPlugin 都不可用,则 /guildbank 保持禁用状态并会明确报告。

审计如何运作

ZZBank 为玩家银行和共享的氏族/公会银行都提供了轻量级的审计历史记录。

审计系统记录以下操作:

  • 存款
  • 取款
  • 管理员打开
  • NPC 打开
  • 管理员删除

审计历史在专用 UI 中显示:

  • /bank audit [player] [limit]
  • /guildbank audit [player] [limit]

审计文件存储在以下位置:

  • audit/players/
  • audit/guilds/

保留策略由以下配置控制:

  • auditEnabled
  • auditMaxEntries

管理 UI 如何运作

/bank admin 打开游戏内管理面板。

从这里,管理员可以:

  • 浏览已知的玩家银行账户
  • 打开一个玩家银行
  • 审计一个玩家银行
  • 打开实时配置编辑器
  • 切换到共享银行列表
  • 打开一个共享银行
  • 审计一个共享银行

共享银行部分使用与玩家部分相同的管理工作流风格:每一行都暴露相同的 打开审计 操作。

NPC 与服务器使用

如果您使用 HyCitizens,银行命令可以从服务器或控制台式触发器执行。

例如:

  • bank {PlayerName}
  • bank npc {PlayerName} 2
  • guildbank npc {PlayerName} 1

bankAccessSourceMode 配置控制允许从哪里访问个人银行:

  • PLAYER_ONLY(仅限玩家)
  • NPC_ONLY(仅限 NPC)
  • BOTH(两者均可)

命令

个人银行

  • /bank
  • /bank <page>
  • /bank buy [pages]
  • /bank menu [player]
  • /bank admin
  • /bank open <player> [page]
  • /bank audit [player] [limit]
  • /bank info [player]
  • /bank reload
  • /bankpages <player> <pages>

共享氏族 / 公会银行

  • /guildbank
  • /guildbank <page>
  • /guildbank buy [pages]
  • /guildbank npc <player> [page]
  • /guildbank audit [player] [limit]

配置文件

  • config.json:模组使用的真实运行时配置文件。
  • config.example.json:作为可读模板包含的示例文档文件。
  • messages.json:可编辑的消息目录(如果您的运行时设置导出了它)。

存储路径

ZZBank 将其运行时数据存储在共享的 ZonaZero 银行数据路径下。

主要路径:

  • accounts/:个人银行账户
  • guild-accounts/:共享的氏族或公会银行账户
  • audit/players/:玩家银行审计历史
  • audit/guilds/:共享银行审计历史

可见配置示例

{
  "version": 17,
  "prefix": "&6[&eZZBank&6] &r",
  "defaultMaxPages": 1,
  "hardMaxPages": 8,
  "guildBankEnabled": true,
  "guildDefaultMaxPages": 1,
  "guildHardMaxPages": 8,
  "guildDepositMinRank": "recruit",
  "guildWithdrawMinRank": "leader",
  "pageSize": 81,
  "saveOnEveryChange": true,
  "notifyTargetOnAdminAccess": true,
  "allowConsoleCommands": true,
  "auditEnabled": true,
  "auditMaxEntries": 200,
  "itemTransferMode": "ONE_CLICK",
  "bankAccessSourceMode": "BOTH",
  "economyProviderMode": "ZZ_ECONOMY",
  "pagePurchaseEnabled": false,
  "pagePurchaseCurrencyMode": "AUTO",
  "pagePurchaseBaseCost": 1000.0,
  "pagePurchaseCostMultiplier": 1.0,
  "pagePermissionScanLimit": 128,
  "purchasePermissionScanLimit": 128,
  "updateCheckEnabled": true,
  "updateCheckMode": "AUTO",
  "updateCheckUrl": "",
  "updateCheckInfoUrl": "",
  "updateCheckIntervalMinutes": 360,
  "updateCheckNotifyAdmins": true,
  "updateCheckLogToConsole": true,
  "grantSingleplayerOwnerAdmin": true,
  "usePermissionNodes": ["bank.use", "bank.admin"],
  "adminPermissionNodes": ["bank.admin"],
  "purchasePermissionNodes": ["bank.buy", "bank.admin"],
  "blockedStorageItemIds": [],
  "purchaseLimitPermissionTemplates": ["bank.buy.max.{pages}"],
  "pagePermissionTemplates": ["bank.pages.{pages}"],
  "adminPlayers": [],
  "adminRanks": [],
  "rankPermissionTemplates": ["rank.{rank}", "group.{rank}"]
}

这显示了此模块使用的当前默认配置结构。

完整配置参考

核心设置

  • version (数字):内部配置文件架构版本。除非您有意迁移,否则请勿改动。
  • prefix (文本):ZZBank 消息使用的聊天前缀。
  • defaultMaxPages (数字):默认的个人银行页面数。0 表示无页面。-1 表示无限制。
  • hardMaxPages (数字):个人页面的硬性上限。-1 移除上限。
  • pageSize (数字):每页的物品槽数。ZZBank 会将其规范化为 981 之间且是 9 的倍数的有效值。
  • saveOnEveryChange (是/否):如果为 true,ZZBank 会在每次物品栏编辑后写入更改。
  • notifyTargetOnAdminAccess (是/否):如果为 true,当管理员打开某玩家的银行时,会通知该玩家。
  • allowConsoleCommands (是/否):如果为 true,允许控制台和服务器触发的命令流。
  • itemTransferMode (文本):UI 中的物品处理行为。常见值有 ONE_CLICK(单击)和 PICKUP_DROP(拾取-放置)。
  • bankAccessSourceMode (文本):控制允许从哪里访问个人银行。支持的值有 PLAYER_ONLY(仅玩家)、NPC_ONLY(仅 NPC)和 BOTH(两者均可)。
  • grantSingleplayerOwnerAdmin (是/否):为单人游戏式所有权设置提供的便捷管理员行为。

共享银行设置

  • guildBankEnabled (是/否):启用或禁用共享氏族或公会银行功能。
  • guildDefaultMaxPages (数字):每个共享银行的起始页数。0 表示无页面。-1 表示无限制。
  • guildHardMaxPages (数字):共享银行页面的硬性上限。-1 移除上限。
  • guildDepositMinRank (文本):当没有明确组织权限覆盖时,允许存款的最低等级。常见值:recruit(新兵)、member(成员)、officer(官员)、leader(领袖)。
  • guildWithdrawMinRank (文本):当没有明确组织权限覆盖时,允许取款的最低等级。

审计设置

  • auditEnabled (是/否):启用或禁用审计日志记录。
  • auditMaxEntries (数字):每个历史文件中保留的最大审计条目数。

经济与页面购买设置

  • economyProviderMode (文本):选择经济桥接方式。运行时值由模组根据当前分支规范化。
  • pagePurchaseEnabled (是/否):启用页面购买。
  • pagePurchaseCurrencyMode (文本):选择用于购买的货币来源。
  • pagePurchaseBaseCost (数字):第一个购买页面的基础价格。
  • pagePurchaseCostMultiplier (数字):后续购买页面的缩放倍率。1.0 表示固定价格。
  • pagePermissionScanLimit (数字):ZZBank 扫描如 bank.pages.<n> 这类权限节点的距离。
  • purchasePermissionScanLimit (数字):ZZBank 扫描如 bank.buy.max.<n> 这类购买限制节点的距离。

更新检查器设置

  • updateCheckEnabled (是/否):启用定期更新检查。
  • updateCheckMode (文本):告知 ZZBank 如何解释更新响应。
  • updateCheckUrl (文本):用于获取最新版本的 URL。
  • updateCheckInfoUrl (文本):向管理员显示的信息或下载页面 URL。
  • updateCheckIntervalMinutes (数字):更新检查之间的间隔分钟数。ZZBank 会将其规范化为至少 15
  • updateCheckNotifyAdmins (是/否):如果为 true,在线的管理员会收到更新通知。
  • updateCheckLogToConsole (是/否):如果为 true,更新通知也会写入服务器日志。

权限与管理列表

  • usePermissionNodes (列表):匹配任何节点即允许常规银行使用。
  • adminPermissionNodes (列表):匹配任何节点即授予管理员访问权限。
  • purchasePermissionNodes (列表):匹配任何节点即允许页面购买。
  • purchaseLimitPermissionTemplates (列表):用于读取购买上限的模板。{pages} 会被替换为数字。
  • pagePermissionTemplates (列表):用于读取个人页面数的模板。{pages} 会被替换为数字。
  • blockedStorageItemIds (列表):不应存储在 ZZBank 中的物品 ID。
  • adminPlayers (列表):应始终被视为管理员的玩家准确名称。
  • adminRanks (列表):应被视为管理员的等级名称。
  • rankPermissionTemplates (列表):用于测试基于等级的权限的模板,其中 {rank} 会被替换。

安装

  1. 首先将 ZZCore.jar 复制到服务器的 mods 文件夹中。
  2. 然后将 ZZBank.jar 复制到同一个服务器 mods 文件夹中。
  3. 如果您想要基于氏族的共享银行,也请添加 ZZClan.jar
  4. 如果您不使用 ZZClan,您可以保留与 HyGuild / GuildPlugin 的旧版兼容性。
  5. 启动 Hytale。
  6. 配置权限、经济以及可选的氏族或公会支持。

许可协议

保留所有权利。

未经作者书面许可,不允许重新分发、转载、转售修改版或上传分支版本。

image