SDM商店2

SDM商店2

一个多功能商店,用于在整合包或服务器上创建经济体系

SDM 商店 2

SDM 商店 2 是原版 SDM 商店模组的现代化重写:一个为 Minecraft 服务器和整合包设计的灵活、可配置且服务器权威的商店系统。

SDM 商店 2 没有将每个交易硬编码成一种固定格式,而是使用实体组件系统(ECS)。商店和交易由可复用的组件组合而成,例如价格、奖励、条件、限制、分类和促销。

当前状态: 1.0.0-beta

核心商店流程可用于测试和早期服务器搭建,但此版本仍应视为测试版,因为专用服务器以及 Fabric/Forge 的测试仍在继续。


主要特性

基于组件的商店

混合搭配组件,从简单的方块商店到脚本化的经济系统,构建任何内容:

  • 花费:金钱/货币花费和分组支付选项。
  • 奖励:物品、金钱、命令和脚本奖励。
  • 条件:冷却时间、基于限制器的检查和脚本条件。
  • 促销:基于时间、每周、基于冷却时间和外部触发的促销。
  • 分类:组织化的商店标签页,并附带始终可用的全部分类。

服务器端购买逻辑

客户端可以预览交易并请求价格数据,但最终交易在服务器端处理。

在购买过程中,服务器会:

  1. 检查条件和限制;
  2. 计算最终价格,包括生效中的促销;
  3. 验证所有支付来源;
  4. 向玩家收费;
  5. 如果奖励发放失败则退回支付;
  6. 发放奖励并同步更新后的限制器/货币数据回客户端。

现代 LDLib UI

商店 UI 基于 LDLib 构建,包含:

  • 分类标签页;
  • 搜索和排序;
  • 高级货币过滤;
  • 收藏的交易固定在常规交易之前;
  • 带有数量输入、最小/最大控制和总价预览的购买弹窗;
  • 吐司通知;
  • 客户端成功/失败音效。

游戏内编辑器基础

SDM 商店 2 包含一个用于在游戏中创建和调整商店的编辑器基础:

  • 草稿商店和货币会话;
  • 组件搜索和分类排序;
  • 收藏组件;
  • 生成的组件配置小部件;
  • 存储在客户端缓存中的编辑器历史记录;
  • 更改的保存/重置流程。

默认商店

全新安装可以生成一个默认的 sdm:default 商店,这样你可以无需先编写配置即可测试模组。

默认商店包含入门物品货币设置和诸如以下分类:

  • 资源;
  • 建筑方块;
  • 农业和食物;
  • 实用;
  • 红石;
  • 稀有物品;
  • 兑换。

灵活的存储

支持的存储模式:

  • JSON — 默认的本地文件存储;
  • MongoDB — 可选的基于数据库的存储,适用于较大型设置;
  • 自定义 — 用于自定义存储库实现的挂钩。

命令

/sdm_shop create_shop <shop_id>
/sdm_shop open_shop <targets> <shop_id>
/sdm_shop reload shops
/sdm_shop limiter sync
/sdm_shop limiter reset world <shop_id> <offer_id>
/sdm_shop limiter reset player <target> <shop_id> <offer_id>
/sdm_shop limiter reset offer <shop_id> <offer_id>

脚本和事件

SDM 商店 2 提供了以下方面的挂钩:

  • 商店加载;
  • 价格计算;
  • 购买前;
  • 购买后;
  • 购买失败;
  • 脚本条件;
  • 脚本奖励;
  • 外部触发的促销。

代码库中存在 KubeJS 和 CraftTweaker 的集成类。


需求

  • Minecraft: 1.20.1
  • 加载器: Fabric / Forge
  • 必需依赖: Architectury API, LDLib

测试版注意事项

这是一个测试版重写。主要的商店流程是可用的,但在 API、编辑器和集成点最终确定时,仍可能发生破坏性更改和错误修复。

在正式服务器上使用前,建议测试的区域:

  • 专用服务器启动;
  • 通过按键绑定和命令打开商店;
  • 物品货币支付;
  • 存储/虚拟货币支付;
  • 限制器同步;
  • 促销激活和过期;
  • 编辑器保存/重置流程;
  • Fabric 和 Forge 的一致性。