购买区块 — FTB 区块扩展

购买区块 — FTB 区块扩展

一个FTB Chunks的附加组件,为你的服务器添加了一个功能完整的区块商店系统。管理员可以将已认领的区块上架出售,玩家可以直接在FTB Chunks地图界面中浏览并购买这些区块。

Buying Chunks Logo

🏪 Buying Chunks — FTB Chunks 附属模组

Discord Crowdin

一个用于 FTB Chunks 的 NeoForge 1.21.1 附属模组,为你的服务器添加了一个功能完备的区块商店与交易市场。管理员可以设置全服范围的领地价格和商店区域,玩家可以买卖自己拥有的区块,所有操作都通过游戏内 GUI 完成——无需再记忆命令。


✨ 功能特性

  • FTB 商店 GUI — 一个完整的游戏内面板(/ftbshop gui),包含交易市场、出售区块界面、我的上架列表和快速购买开关
  • 管理员面板 — 在一个界面中管理基础费用、玩家出售、队伍价格、购买限制、玩家收入、自动回收以及完整的服务器队伍管理(/ftbshop admin)
  • 玩家交易市场 — 玩家可以以自定义价格上架自己拥有的区块(若管理员开启),浏览所有上架信息,按队伍名称搜索,按价格或距离排序,并标记收藏
  • 世界内购买浮层 — 当你靠近待售区块时,HUD 面板会自动弹出,显示价格、卖家队伍以及实时的背包物品对比,并带有可点击的购买按钮
  • 购买快捷键 — 按下按键(默认为 B)即可立即购买你当前所在的区块
  • 视觉地图图标 — 待售区块仍会以图标形式显示在 FTB Chunks 地图上,现在会根据卖家队伍进行颜色编码,并带有更丰富的悬停提示
  • 粒子区块边界 — 附近的待售区块会用粒子勾勒出轮廓(可配置半径/密度)
  • 队伍商店系统 — 创建具有固定单价(按区块计)的服务器队伍;该队伍声明的任何区块都会自动上架出售
  • 基础费用 — 可选择性地要求对服务器上任何区块声明支付通用物品费用,与交易市场/队伍商店相独立
  • 多维度支持 — 交易市场、基础费用和上架信息现在可在所有维度中工作,而不仅限于主世界
  • 快速购买 — 可选择完全跳过购买确认界面
  • 购买特效与提示 — 购买时提供视觉/声音反馈,以及购买和上架的弹出通知
  • 欢迎消息 — 可配置玩家首次加入时显示的消息
  • Discord Webhook 集成 — 可选择将购买/出售/移除事件以嵌入消息的形式发布到 Discord 频道(或任何 webhook URL)
  • 自动同步 — 当区块被上架、购买或移除时,所有客户端都会实时更新
  • 失效上架清理 — 对于不再被实际声明的区块,其上架信息会被自动移除
  • 多语言支持 — 可通过 https://crowdin.com/project/buying-chunks 进行完整翻译(可添加更多语言)

📦 依赖项

模组 版本
NeoForge 21.1.224
FTB Chunks (NeoForge) 2101.1.14+
FTB Teams (NeoForge) 2101.1.9+
FTB Library (NeoForge) 2101.1.30+
Architectury (NeoForge) 13.0.8+

所有依赖项必须同时安装在服务器和每个客户端上。


🚀 安装方法

  1. 下载 buyingchunks-1.2.0.jar
  2. 将其放入服务器和所有客户端的 mods/ 文件夹中
  3. 确保上述所有依赖项也已安装
  4. 启动服务器——无需额外配置(配置文件会自动生成;请参阅下方的 配置)

🔔 Discord Webhook 集成

当交易市场上有区块交易发生时,Buying Chunks 可以自动向 Discord 频道(或任何自定义端点)发布消息——这对于公开的 #shop-log 频道非常有用,玩家无需在线也能看到交易动态。

触发消息的事件

事件 触发时机… 嵌入颜色 嵌入标题
购买 玩家购买了一个上架区块(通过地图、浮层或交易市场界面——任意途径) 绿色 ✅ 区块已购买
上架 玩家通过 /ftbshop gui → 出售区块来上架自己拥有的区块 蓝绿色 🧾 区块已上架出售
移除 玩家通过“我的上架” → 移除来取消自己的上架 橙色 🗑️ 区块已从出售中移除

注意:此功能仅在玩家于交易市场进行明确操作(购买/出售/移除)时触发。它不会在服务器队伍声明区块时自动上架(即队伍商店系统)时触发——仅报告手动玩家上架和购买操作。

数据格式

每条消息都是一个包含以下字段的 Discord 嵌入消息:

  • 区块 — [x, z]
  • 维度 — 例如 minecraft:overworld
  • 买家(购买事件)或 卖家(上架/移除事件) — 触发操作的玩家名称
  • 队伍 — 与上架信息关联的商店队伍名称
  • 价格 — <数量>x <物品>
  • 时间戳(ISO-8601 格式,Discord 会按用户本地时间显示)

JSON 负载为简单的 {"embeds":[{...}]} — 标准 Discord webhook 格式。由于它只是向您配置的任何 URL 发送 HTTP POST 请求,因此实际上并不局限于 Discord:您可以将 apiUrl 指向自己的机器人/API 端点,并自行解析相同的 JSON,以便进行自定义处理。

设置方法

这是模组中唯一不通过 /ftbshop admin 配置的部分——它位于服务器配置文件中,而非游戏内 GUI:

  1. 在 Discord 中:服务器设置 → 集成 → Webhook → 新建 Webhook,选择一个频道,然后复制 Webhook URL。
  2. 在服务器上,打开 config/buyingchunks-server.toml 并设置:
   [Webhook API]
       apiEnabled = true
       apiUrl = "https://discord.com/api/webhooks/XXXXXXXXXX/XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
  1. 重启服务器(或重新加载配置,如果您的环境支持)。

这两个值默认都为关闭 / 空——除非管理员主动启用,否则不会向任何地方发送任何内容。

行为说明

  • 请求是异步发送的,并且是发送后即忘模式:失败的或缓慢的 webhook 永远不会阻塞或延迟购买/出售操作本身。
  • 失败仅在服务器端记录日志(WebhookSender: Failed to send to ...)——没有重试机制,如果投递失败也没有游戏内提示,因此如果消息不再出现,请检查您的服务器日志。

🛠️ 管理员设置指南

管理员所需的一切操作——创建商店队伍、设置价格、声明区块、配置领地保护等——都可以通过一条命令完成:

/ftbshop admin

(需要 OP 等级 2 或更高)。此后,日常商店管理不再需要 /ftbteams ... 或 /ftbchunks admin ... 命令——管理员面板已完全取代它们。

设置商店区域(推荐)— 100% 通过 GUI 完成

  1. /ftbshop admin → 服务器队伍管理 → 在“创建新服务器队伍”字段中输入名称(例如 Shopping-District)→ 点击 创建。
  2. 返回 /ftbshop admin → 队伍价格 → 在搜索字段中输入队伍名称(自动补全下拉菜单会显示匹配的队伍)→ 选择它 → 使用 🔍 选择器选择物品(或输入其 ID)→ 设置数量 → 添加。
  3. 返回服务器队伍管理列表,找到您的新队伍并点击 ⌂(或 管理 → 打开区块地图)——这会以该队伍的身份打开 FTB Chunks 的声明地图,与旧版 /ftbchunks admin open_claim_gui_as 命令完全相似,现在只需点击一下即可。在此处声明您想要出售的区块。
  4. 在 服务器队伍管理 → 管理 界面中,您还可以设置队伍颜色并锁定其领地保护设置(PvP、爆炸、怪物破坏、假玩家等)——请参阅下文。

就这样——无需其他命令。任何由 Shopping-District 声明的区块现在都会自动上架出售,价格为已配置的价格。

允许玩家出售自己的区块

默认情况下,只有管理员管理的队伍商店才会被上架。要让普通玩家上架自己声明的区块:

  1. /ftbshop admin → 玩家出售 → 点击 启用(启用后按钮会变为 禁用)。
  2. 然后,玩家可以站在自己拥有的区块中,使用 /ftbshop gui → 出售区块 来上架该区块。
  3. 使用 玩家收入(按队伍设置,位于管理员面板中)来决定卖家是否实际收到付款,或者付款是否去向未知(例如用于“回收”商店队伍)。操作流程与队伍价格相同:搜索队伍,点击 切换。

三种定价系统

Buying Chunks 支持三种独立、可叠加的定价机制,均可通过 /ftbshop admin 进行配置:

系统 设置位置 适用范围
基础费用 管理员面板 → 基础费用 服务器上的每次区块声明,无论队伍如何
队伍商店 管理员面板 → 队伍价格 特定(通常为服务器拥有)队伍声明的所有区块——自动上架
玩家交易市场 区块所有者,通过 /ftbshop gui 启用玩家出售功能后,玩家选择上架的任何已声明区块

购买限制与自动回收

  • 购买限制:限制某个队伍从特定商店队伍购买的区块数量上限(搜索队伍 → 选择物品 → 设置数量 → 添加,流程与队伍价格相同)。
  • 自动回收:为服务器队伍启用后(搜索队伍 → 切换),被取消声明的商店区块会自动被该队伍重新声明,以保持其可出售状态。

服务器队伍管理 — 完整的领地设置,无需其他模组的 GUI

/ftbshop admin → 服务器队伍管理 会列出所有服务器队伍(颜色样本 + 名称),每行包含:

  • 管理 — 打开队伍详情界面(见下文)
  • ⌂ — 直接以该队伍身份打开 FTB Chunks 区块地图(以该队伍身份声明/取消声明区块)
  • ✕ — 删除该队伍

底部:用于创建新服务器队伍的名称字段 + 创建按钮。

点击 管理 会打开队伍详情界面——这是 FTB Teams 自己的领地设置面板在 Buying Chunks 中的完整重新实现,因此您无需再单独打开 FTB Teams 或 FTB Chunks 来配置商店队伍:

  • 十六进制颜色(带 保存 按钮)
  • 五个开/关保护开关:允许爆炸、允许怪物破坏、允许 PvP、允许所有假玩家、按 ID 允许假玩家
  • 七个可循环的模式属性(点击可在私有 / 盟友 / 公共之间循环,具体取决于属性):方块编辑模式、方块交互模式、实体交互模式、非生物实体攻击模式、领地可见性、位置模式、方块编辑与交互模式
  • 删除此队伍和打开区块地图按钮

🖥️ 完整 GUI 参考

逐个界面的可点击项快速说明。

/ftbshop gui → 主面板(4 行)

行 显示内容 功能
交易市场 当前所在维度待售区块的数量 打开交易市场
出售区块 如果所在区块已上架则显示价格,否则显示提示 打开出售区块界面
我的上架 您的活跃上架数量 + 待处理收入的预览(如有) 打开我的上架界面
快速购买 已启用 / 已禁用 立即切换快速购买(不切换界面)

交易市场界面

  • 搜索框 — 输入时按商店/队伍名称筛选
  • ★ 星标(右上角)— 仅显示收藏;每行 ★ — 切换该上架信息为收藏
  • 三个排序按钮 — 价格 ↑、价格 ↓、距离(最近优先)
  • 可滚动列表(鼠标滚轮)可同时浏览所有维度,每行显示位置、带队伍颜色的队伍名称、价格、距离以及一个 购买 按钮
  • 购买会遵循快速购买设置:开启时即时购买并播放音效,否则打开确认界面

出售区块界面

  • 显示您所在的区块是否已上架(带价格和队伍颜色)
  • 物品字段(输入 ID)或使用 🔍 按钮打开可视物品选择器
  • 数量字段(1–64)
  • 出售按钮 — 上架/更新该区块

我的上架界面

  • 统计行:活跃上架数量(“已售”/“已赚取”计数器存在于 UI 中,但尚未启用——目前始终显示 0)
  • 待处理收入预览(物品图标 + 数量)— 仅供参考;收入会自动支付(发放到您的背包,若已满则掉落),当您在线时立即支付,若出售时离线则在您下次登录时支付,并附有聊天确认
  • 每行的移除按钮用于取消上架

购买确认界面(除非快速购买已开启)

  • 区块位置和价格
  • 您背包中价格物品的当前数量,以绿色/红色编码显示
  • 购买限制进度(例如“已从 TeamX 购买 3/5”)(如果商店队伍设置了购买限制)
  • ✔ 购买 / ✖ 取消

世界内购买浮层(可通过按键绑定切换,或在靠近上架区块时自动出现)

  • 显示区块位置、卖家队伍、价格以及带有当前购买键位绑定的提示
  • 购买按钮 — 如果物品不足,则会变为禁用的无法购买状态
  • ✕ 关闭按钮
  • 有短暂的点击冷却时间,以防止意外重复购买

/ftbshop admin → 管理员面板(7 行,每行右侧都有实时摘要)

行 显示的实时摘要
基础费用 当前费用,或“未设置”
玩家出售 已启用/已禁用
队伍价格 已配置的队伍数量
购买限制 设置了限制的队伍数量
玩家收入 已禁用收入的队伍数量
自动回收 已启用的队伍数量
服务器队伍管理 —

管理员 → 基础费用:物品字段 + 🔍 选择器、数量字段、设置和移除按钮,并显示当前生效的费用。

管理员 → 玩家出售:描述文本 + 一个启用/禁用切换按钮。

管理员 → 队伍价格 / 购买限制 / 玩家收入 / 自动回收:共享一个界面布局——当前已配置队伍的滚动列表(每个队伍都有 ⌂ “打开该队伍的声明地图”按钮和 ✕ 移除按钮)、一个带实时自动补全下拉菜单的队伍搜索字段(由 FTB Teams 提供支持)、一个物品选择器 + 数量字段(仅队伍价格/购买限制),以及一个 添加/更新(队伍价格/购买限制)或 切换(玩家收入/自动回收)按钮。

管理员 → 服务器队伍管理 / 队伍详情:请参阅上文的“服务器队伍管理”部分。


🛒 玩家购买指南

现在有三种方式可以购买区块:

  1. 世界内浮层 — 走近待售区块;面板会自动出现,显示价格和 购买 按钮。或者,只需站在区块内按下 购买 快捷键(默认为 B)。
  2. FTB Chunks 地图 — 打开大地图(默认为 M),找到商店颜色的区块图标,悬停查看价格/工具提示,然后左键点击购买。
  3. 交易市场 GUI — 打开 /ftbshop gui → 交易市场,可随时随地搜索、排序(按价格或距离)、收藏和购买上架区块。

确保您的背包中有所需的物品!如果快速购买已启用(可在 /ftbshop gui 中切换),购买时将完全跳过确认界面。

您不能购买自己或自己队伍的区块,当您的角色属于服务器队伍时也无法购买。区块在购买后会立即转移到您的队伍名下,附近的玩家会看到购买特效。


💰 出售您自己的区块

如果管理员已启用玩家出售功能:

  1. 站在您队伍拥有的区块中。
  2. 打开 /ftbshop gui → 出售区块。
  3. 选择物品和数量作为要价(输入 ID 或使用 🔍 选择器),然后点击 出售。
  4. 在我的上架中跟踪您的活跃上架,并可随时使用其 移除 按钮取消上架。区块售出后,付款会自动交给您(在线时立即收到,否则在下次登录时收到)——无需手动“领取”步骤。

💬 命令参考

命令 描述 权限
/ftbshop gui 打开商店面板(交易市场、出售、我的上架、快速购买) 所有玩家
/ftbshop admin 打开管理员面板——所有管理员操作都在这里进行(基础费用、队伍价格、玩家出售、购买限制、玩家收入、自动回收、服务器队伍管理(包括队伍创建/删除)、领地保护,以及跳转到队伍的区块地图) OP 2+

以前需要输入 /claimshop ... 命令(set、remove、info、teamprice、playersell、playerincome、basecost、autoreclaim、setting)的所有配置——甚至以前需要 /ftbteams server create 或 /ftbchunks admin open_claim_gui_as 的队伍管理任务——都已移入 /ftbshop admin GUI。实际上,/ftbshop admin 将是您唯一需要输入的命令。


⚙️ 配置

在 config/ 下会生成两个配置文件:

  • 客户端配置 — 粒子浮层设置:半径(区块数)、粒子间距和生成间隔。
  • 服务器配置:
    • welcomeEnabled / welcomeMessage — 首次加入的欢迎消息(支持 § 颜色代码)。
    • apiEnabled / apiUrl — 启用并设置一个 Discord 风格的 webhook URL,以便接收区块购买/上架/移除事件(以嵌入消息形式)。

🌍 翻译

该模组支持完整翻译。 您可以在以下地址进行更多翻译:https://crowdin.com/project/buying-chunks


⚙️ 工作原理

  • 商店数据按维度保存在服务器端,使用 Minecraft 的 SavedData 系统——可在服务器重启后持久保存。
  • 当玩家加入(或数据变更)时,所有当前的商店上架、基础费用、购买限制和已购买计数都会为每个维度同步到客户端。
  • 购买区块时,旧声明会被移除,区块会在买家队伍名下重新声明;商店购买会跳过基础费用(如有),以避免重复收费。
  • 物品直接从买家的背包中扣除。
  • 在同步期间,已不再被实际声明的区块上架信息会被自动清理。

🐛 已知限制

  • 玩家必须属于非服务器队伍才能购买区块。
  • 我的上架界面上的“已售”和“已赚取”计数器尚未启用,目前始终显示为 0——只有活跃上架数量是准确的。
  • 大规模批量声明(一次 100+ 区块)可能会导致同步期间出现短暂卡顿。
  • Discord webhook 集成是发送后即忘模式(失败后不重试);如果事件停止到达,请检查您的服务器日志。

📄 许可证

MIT 许可证 ©snoopypupser