硬币与市场

硬币与市场

物理硬币经济系统,配有存储袋以及玩家/管理员供应商/商店/商铺。

游戏玩法

查看[物理经济系列]的更多内容:

图片


硬币与市场

Hytale 的实体硬币经济: 铜币/银币/金币/铂金币,一个硬币袋用来整齐存放,以及用于真实服务器市场的玩家/管理员商店

  • 在城镇中建造真实商店(支持 SMP/RP)
  • 通过固定价格列表即时买卖
  • 使用硬币袋保持硬币紧凑(可选自动拾取)

✨ 功能

🪙 实体货币

  • 4 种面额: 铜币/银币/金币/铂金币
  • 默认兑换比例: 1 银币 = 100 铜币1 金币 = 100 银币1 铂金币 = 100 金币 (可配置)

图片

🎒 硬币袋

  • 在专用 UI 中存放硬币
  • 可选自动拾取 → 自动存入袋中 (默认启用)
  • 可选优先用于支付 → 支付时先从袋中取出硬币

图片

🧱 商店方块

  • 易于使用的方块,可出售任何你想要的物品

图片

玩家商店:

  • 每个商店16 个列表 (默认)
  • 仅所有者管理,买家只能看到商店页面
  • 销售收入进入安全的收益库(以"铜币价值"存储)

图片 图片 图片

图片

管理员商店:

  • 可选无限库存 (默认启用)
  • 适用于服务器商店 / NPC 市场 / 出生点枢纽

图片

图片

指令报价

当玩家购买特定管理员商店报价时,服务器可以自动运行一条或多条指令作为奖励/行动。

实用示例(每行写一条指令):

  • console: broadcast {player} purchased VIP!
  • console: give {player} Coin_Gold 3
  • console: lp user {player} parent add vip 30d
  • player: give {player} Coin_Silver

规则/提示:

  • 每行一条指令(添加多行可以链式奖励)。
  • 没有危险指令(除非你确实有意,否则避免 OP/权限提升)。
  • 先测试,在测试商店上使用安全报价,然后再用于真实奖励。
  • 实际指令前不要加 /

图片


🚀 快速入门(针对玩家)

  1. 获取一个硬币袋,将硬币放在里面。
  2. 在你的商店中放置一个商店方块
  3. 作为所有者:打开商店管理 → 创建列表 → 补货物品。
  4. 买家点击购买,你从中收取收益。

提示:硬币是实体物品——你的服务器决定如何分发它们(战利品、任务、奖励、交易、管理员工具等)。


🛡️ 保护与服务器安全

硬币与市场通过一个分层系统(所有者 → 服务器规则 → 权限)保护商店方块管理员商店,旨在防止破坏和滥用,即使在公共服务器上也是如此。

✅ 默认行为(简单设置 / 无 LuckPerms)

- **仅所有者管理:** 默认情况下**只有所有者**可以: - 编辑报价(`edit`) - 补货列表(`stock`) - 从库/收益中提取(`withdraw`) - 破坏商店方块(`break`) - **不需要权限插件:** 该模组无需 LuckPerms(或任何外部提供商)即可正常工作。 - **工作人员清理:** 默认情况下 **OP** 可以**破坏任何玩家商店**(用于移除废弃商店/破坏)。 - **创造模式"可破坏任何方块":** 默认禁用(如需可在配置中启用)。 - **更严格的管理员商店:** 默认情况下,**创建**和**管理**仅限于 **OP**,且 OP/创造模式"可破坏任何方块"规则**不**适用于管理员商店(除非在配置中启用)。

🧠 权限评估方式(检查顺序)

当玩家尝试一个动作时,模组大致按此顺序评估: 1. **管理员商店的硬性限制(如果在配置中启用)** 如果一个动作被标记为**仅限 OP** 且 `OpOnlyOverridesPermissions=true`,那么:**非 OP = 拒绝**,即使他们有 LuckPerms 权限。 2. **绕过规则(仅在启用时)** 某些管理员商店动作可以通过以下方式绕过: - **创造模式**(如果 `AllowCreative...=true`) - **LuckPerms 绕过节点**(如果 `AllowPermissionBypass=true` 且 LuckPerms 已启用) 3. **回退的"所有者规则"(简单模式)** 在 LuckPerms **未激活**或你选择不失败关闭时使用。 - 所有者始终被允许。 - 其他人取决于 `OtherPlayersCan...` / `AnyoneCanCreate...`。 4. **LuckPerms 模式(细粒度权限)** 当 LuckPerms 启用时,动作通过**权限节点**(own/any/admin/etc.)进行管理。

🧩 LuckPerms 集成(失败开放 vs 失败封闭)

要实际使用 LuckPerms: - 在你的服务器上安装 **LuckPerms** 模组/插件 - 在 `coins_and_markets.json` 中设置:`Access.Provider.UseLuckPerms: true`

当 LuckPerms 不可用时会发生什么:

  • 失败开放(默认): DefaultDenyWhenUnavailable=false → 模组不会阻止所有内容,并继续使用简单规则(所有者/配置)。
  • 失败封闭(推荐用于最大安全性): DefaultDenyWhenUnavailable=true → 如果 LuckPerms 缺失/未加载,模组拒绝受保护的动作(更安全,但可能会"锁定"商店/袋子的动作,直到 LP 恢复)。

开发/管理指令失败封闭(默认 = 开启): FailClosedCommands=true 如果 DevCommands 已启用且 LuckPerms 已配置,但 LuckPerms 不可用,则指令出于安全原因被阻止

⚠️ 管理员商店:指令报价安全说明

**管理员商店**可以(如果启用)创建执行**服务器指令**的报价(指令报价)。 - 保持**仅限 OP**(默认)或通过 LuckPerms 限制。 - 避免"危险"指令或没有保护措施就授予永久权限的指令。

⚙️ 配置(权限 / 保护 / LuckPerms)

📁 配置文件在哪里?

- 首次运行时,模组自动生成:**`coins_and_markets.json`** - 该文件存储在模组的**数据目录**中(模组/插件的服务器端数据文件夹)。 - 如果 JSON 无效,模组可能使用**默认值**(始终检查控制台/日志)。

🔌 Access.Provider — 启用权限 + LuckPerms

`路径: Access.Provider` - `Enabled` *(默认: true)* 启用权限检查。 如果为 `false`:权限检查被绕过(模组在适用时依赖基本规则/所有者/配置)。 - `UseLuckPerms` *(默认: false)* 如果为 `true`,模组使用 LuckPerms 作为权限后端(当可用时)。 如果安装了 LuckPerms 但 `UseLuckPerms=false`,它将被忽略。 - `DefaultDenyWhenUnavailable` *(默认: false)* 当 `UseLuckPerms=true` 但 LuckPerms 不可用时: - `false` → **失败开放**(简单回退,不会阻止所有内容) - `true` → **失败封闭**(拒绝受保护的动作,直到 LuckPerms 恢复) - `FailClosedCommands` *(默认: true)* 如果你使用 DevCommands 并希望它们"安全": `true` → 如果 LuckPerms 不可用,指令被阻止。

📝 Access.Logging — 权限检查日志

`路径: Access.Logging` - `LogChecks` *(默认: false)* 记录权限检查(用于调试;在大型服务器上可能会很嘈杂)。 - `LogDeniesOnly` *(默认: false)* 如果为 `true`,仅记录**拒绝**(适合无垃圾信息的审计)。

🧾 Access.Vendor.Use — 使用商店方块(客户/购买/出售)

`路径: Access.Vendor.Use` - `RequirePermissionToUseVendor` *(默认: false)* - `false` → 任何人都可以打开商店 UI(作为客户) - `true` → 需要: `coinsandmarkets.vendor.use`

🏗️ Access.Vendor.Create — 创建商店方块

`路径: Access.Vendor.Create` *注意:* 这些选项主要在"简单模式"下起作用(无 LuckPerms)。启用 LuckPerms 后,创建通过节点处理。 - `AnyoneCanCreatePlayerVendors` *(默认: true)* 允许玩家放置/创建**玩家商店**。 - `AnyoneCanCreateAdminVendors` *(默认: false)* 允许玩家放置/创建**管理员商店**(不推荐在公共服务器上)。

🛠️ Access.Vendor.Manage — 其他玩家管理商店

`路径: Access.Vendor.Manage` 这些选项控制在简单模式下**其他玩家**(非所有者)是否可以管理商店。 - `OtherPlayersCanEditVendors` *(默认: false)* - `OtherPlayersCanStockVendors` *(默认: false)* - `OtherPlayersCanWithdrawVendors` *(默认: false)* - `OtherPlayersCanBreakVendors` *(默认: false)* **提示:** 在公共服务器上保持所有为 `false`,并通过 LuckPerms 委派例外。

⛏️ Access.Vendor.Break — 工作人员可破坏任何方块

`路径: Access.Vendor.Break` - `AllowOpBreakAny` *(默认: true)* **OP** 可以破坏任何**玩家商店**,即使他们不是所有者。 - `AllowCreativeBreakAny` *(默认: false)* 如果为 `true`,处于**创造模式**的玩家可以破坏任何**玩家商店**。

👑 Access.Vendor.Admin — 管理员商店规则 + 指令报价

`路径: Access.Vendor.Admin` **硬性规则(仅限 OP)** - `OpOnlyCreate` *(默认: true)* — 管理员商店创建仅限 OP。 - `OpOnlyManage` *(默认: true)* — 管理员商店管理仅限 OP。 - `OpOnlyOverridesPermissions` *(默认: true)* 如果为 `true`:仅限 OP 是**绝对的**(不能由 LuckPerms 绕过)。 如果为 `false`:你可以通过 LuckPerms(或绕过规则)进行委派。

通过权限/创造模式绕过

  • AllowPermissionBypass (默认: true) 启用绕过节点 ...admin.<action>.bypass(仅在 LuckPerms 启用时)。
  • AllowCreativeCreate (默认: false)
  • AllowCreativeManage (默认: false)
  • AllowCreativeEdit (默认: false)
  • AllowCreativeStock (默认: false)
  • AllowCreativeWithdraw (默认: false)
  • AllowCreativeBreak (默认: false)

管理员商店的破坏绕过规则

  • AllowBreakBypassRules (默认: false) 如果为 true,"可破坏任何方块"规则(OP/创造模式)也可以应用于管理员商店。

指令报价(管理员商店) 路径: Access.Vendor.Admin.CommandOffers

  • Enabled (默认: true) — 启用指令报价。
  • OpOnly (默认: true) — 只有 OP 可以使用/管理指令报价。
  • OpOnlyOverridesPermissions (默认: true) — 仅限 OP 不能被权限绕过。
  • AllowPermission (默认: true) 如果为 true 且 LuckPerms 已启用,你可以通过以下方式委派:coinsandmarkets.vendor.admin.commands
  • AllowCreative (默认: false) — 如果为 true,创造模式可以在没有 OP 的情况下访问。

🔑 LuckPerms 权限节点 — 完整列表 (v0.2.5)

*提示:* 你也可以使用通配符(例如 `coinsandmarkets.*`),但这里是所有单独的节点。

👜 硬币袋

  • coinsandmarkets.pouch.use — 打开硬币袋 UI
  • coinsandmarkets.pouch.withdraw — 从袋中提取硬币(转换为实体物品)

🧾 商店方块(客户使用)

  • coinsandmarkets.vendor.use — 打开/使用商店 UI(仅在 RequirePermissionToUseVendor=true 时)

🏗️ 商店方块(创建)

  • coinsandmarkets.vendor.create.player — 创建/获取玩家商店(权限模式)
  • coinsandmarkets.vendor.create.admin — 创建/获取管理员商店(权限模式)

🧰 玩家商店(所有者权限)

  • coinsandmarkets.vendor.player.manage — "伞式"所有者权限(涵盖典型的所有者管理)
  • coinsandmarkets.vendor.edit.own
  • coinsandmarkets.vendor.stock.own
  • coinsandmarkets.vendor.withdraw.own
  • coinsandmarkets.vendor.break.own

🧰 商店方块(管理他人 / 工作人员)

  • coinsandmarkets.vendor.edit.any
  • coinsandmarkets.vendor.stock.any
  • coinsandmarkets.vendor.withdraw.any
  • coinsandmarkets.vendor.break.any

👑 管理员商店(管理)

  • coinsandmarkets.vendor.admin.manage — "伞式"管理员商店权限(编辑/补货/提取/破坏)
  • coinsandmarkets.vendor.admin.edit
  • coinsandmarkets.vendor.admin.stock
  • coinsandmarkets.vendor.admin.withdraw
  • coinsandmarkets.vendor.admin.break

🧨 管理员商店(指令报价)

  • coinsandmarkets.vendor.admin.commands — 管理/创建指令报价(如果在配置中启用且 LuckPerms 活跃)

🧷 管理员商店(绕过节点) 仅在以下情况适用: AllowPermissionBypass=true LuckPerms 已启用。

  • coinsandmarkets.vendor.admin.create.bypass
  • coinsandmarkets.vendor.admin.manage.bypass
  • coinsandmarkets.vendor.admin.edit.bypass
  • coinsandmarkets.vendor.admin.stock.bypass
  • coinsandmarkets.vendor.admin.withdraw.bypass
  • coinsandmarkets.vendor.admin.break.bypass

🧪 开发/管理指令(仅在 Debug.DevCommandsEnabled=true 时)

  • coinsandmarkets.command.givecoins
  • coinsandmarkets.command.givepouch
  • coinsandmarkets.command.spawnvendor.player
  • coinsandmarkets.command.spawnvendor.admin
  • coinsandmarkets.command.setvendorowner

🧷 快速 LuckPerms 示例(角色模板)

*注意:* LuckPerms 指令语法可能因平台而异;将这些视为权限"包"。

默认玩家(完整经济 + 仅管理自己的商店)

  • coinsandmarkets.pouch.use
  • coinsandmarkets.pouch.withdraw
  • coinsandmarkets.vendor.player.manage
  • (可选)如果启用了 RequirePermissionToUseVendor=true,则添加 coinsandmarkets.vendor.use

版主(管理其他玩家的商店 / 清理)

  • coinsandmarkets.vendor.edit.any
  • coinsandmarkets.vendor.stock.any
  • coinsandmarkets.vendor.withdraw.any
  • coinsandmarkets.vendor.break.any

商店工作人员(管理员商店)

  • coinsandmarkets.vendor.admin.manage
  • (可选)如果希望他们管理指令报价,则添加 coinsandmarkets.vendor.admin.commands

📌 提示

  • 早期版本可能会快速演变:请在评论区报告错误和反馈。
  • 该模组不添加获取硬币的默认方式,如何创建你的世界经济取决于你。