• 欢迎加入MineBBS QQ讨论群:点击查看所有的官方讨论群
  • 我们将于近期对服务器进行迁移,服务可能中断至多2日。请各位安排好自己的访问计划,造成不便敬请谅解!
  • MineBBS入站考试已经上线!想要成为【正式会员】解锁更多功能吗?快来参与吧!【点我去看】
MarketRegulator —— 动态经济市场 [1.20+]

服务端插件 MarketRegulator —— 动态经济市场 [1.20+] 1.2.0

完成注册/登录后下载
建议删除配置文件后重新安装插件并配置

[MD] # MarketRegulator 使用教程 ## 一、安装插件 1. 确保服务器已安装 **Vault** 和任意一个经济插件(如 EssentialsX、CMI 等) 2. 将 `MarketRegulator-1.1.0.jar` 放入服务器的 `plugins` 文件夹 3. 重启服务器 4. 插件会在 `plugins/MarketRegulator/` 下生成配置文件 ## 二、基本配置 编辑 `plugins/MarketRegulator/config.yml`: ```yaml # 语言设置,zh = 中文,en = 英文 language: zh # 存储方式,yaml 适合小型服务器,sqlite 适合大型服务器 storage: type: yaml ``` 修改配置后,在游戏内执行 `/mr admin reload` 即可热重载。 ## 三、添加商品到市场 ### 方法一:GUI 添加(推荐新手) 1. 手持你要上架的物品 2. 输入 `/mr admin` 3. 在打开的界面中: - 点击背包中的物品设置样板(不会消耗物品) - 左键/右键点击「基础价格」调整价格(左键 +1,右键 -1,Shift 加速) - 左键/右键点击「目标库存」调整目标库存 - 左键/右键点击「当前库存」调整初始库存 - 左键/右键点击「波动率」调整价格波动幅度 4. 点击绿色「保存商品」按钮完成上架 ### 方法二:命令快速添加 手持物品后执行: ``` /mr admin hand <基础价格> ``` 例如:手持钻石,输入 `/mr admin hand 100`,钻石就以 100 的基础价上架了。 完整格式: ``` /mr admin hand <基础价格> [目标库存] [当前库存] [波动率] ``` ### 方法三:从 EssentialsX 导入 如果你之前用 EssentialsX 的 `worth.yml` 设置过物品价格: ``` /mr admin import ``` 这会自动读取 worth.yml 并批量导入到市场。 ## 四、管理已有商品 ### 一键修改价格 ``` /mr admin setprice <物品ID> <新价格> ``` 例如:`/mr admin setprice diamond 200` ### 一键修改波动率 ``` /mr admin setvolatility <物品ID> <波动率> ``` 例如:`/mr admin setvolatility diamond 1.5` 波动率含义: - `1.0` = 价格随库存线性变化 - `1.2` = 默认值,轻微加速变化 - `2.0` = 价格变化很剧烈 - `0.5` = 价格变化很平缓 ### 一键修改库存 ``` /mr admin setstock <物品ID> <库存数> ``` ### 在 GUI 中下架商品 ``` /mr admin open ``` 打开管理视图,左键点击商品即可下架。 ### 清空所有商品 ``` /mr admin clear ``` ### 移除单个商品 ``` /mr admin remove <物品ID> ``` ## 五、价格波动系统 价格公式:`价格 = 基础价格 x (目标库存 / 当前库存) ^ 波动率` - 玩家买入物品 -> 库存减少 -> 价格上升 - 玩家卖出物品 -> 库存增加 -> 价格下降 - 买入价 = 卖出价 x 溢价系数(默认 1.15) ### 开启价格波动全服公告 编辑 `config.yml`: ```yaml price-alert: enabled: true # 改为 true 开启 threshold-percent: 20.0 # 波动超过 20% 时广播 check-interval-minutes: 10 ``` 然后 `/mr admin reload`。 ### 开启库存自然恢复 让库存自动慢慢回到目标值,防止价格长期偏离: ```yaml stock-recovery: enabled: true interval-minutes: 30 # 每 30 分钟恢复一次 step: 1 # 每次恢复 1 点库存 ``` ## 六、税收系统 ```yaml tax: buy-tax-rate: 0.05 # 买入加收 5% 税 sell-tax-rate: 0.02 # 卖出扣除 2% 税 ``` 税金会在交易消息中显示。 ## 七、交易冷却 防止玩家刷单: ```yaml cooldown: enabled: true seconds: 3 # 每次交易后冷却 3 秒 ``` ## 八、Web 面板 在浏览器中查看市场数据: ```yaml web: enabled: true port: 8234 bind: "0.0.0.0" ``` 重载后访问 `http://你的服务器IP:8234` 即可看到暗色主题的市场网页。 API 端点: - `http://IP:8234/api/market` — 获取所有商品 JSON 数据 - `http://IP:8234/api/history?id=diamond` — 获取钻石的价格历史 ## 九、玩家使用 玩家只需要输入 `/mr` 打开市场界面: - **左键** — 买 1 个 - **Shift + 左键** — 买 64 个 - **右键** — 卖 1 个 - **Q 键** — 卖一组(64 个) - **Shift + 右键** — 卖背包里所有同类物品 底部栏可以切换分类(全部/方块/装备/食物/其他),还可以点击搜索按钮按关键词查找。 玩家也可以用 `/mr search <关键词>` 搜索商品。 ## 十、常见问题 **Q: 重启后市场为空?** A: 检查 `config.yml` 中 `storage.type` 是 yaml 还是 sqlite,确保 `market.yml` 或 `market.db` 存在于 `plugins/MarketRegulator/` 下。 **Q: 改了价格但没生效?** A: 确保使用 `/mr admin setprice` 命令或在 Admin GUI 中修改后点击「保存」按钮。直接编辑 market.yml 后需要 `/mr admin reload`。 **Q: 物品名显示英文?** A: 确保 `config.yml` 中 `language: zh`。如果是自定义命名的物品,插件会优先显示自定义名称。 **Q: 想关闭 /sell 拦截?** A: 在 `config.yml` 中设置: ```yaml sell-hook: enabled: false ``` **Q: 如何查看某个物品的价格历史?** A: 输入 `/mr history <物品ID>`,例如 `/mr history diamond`。会打开一本书展示 ASCII 价格曲线图。 [/MD]
能不能一键修改波动率,/mr admin setvolatility all 波动率
这是最后一个请求
 
能不能一键修改波动率,/mr admin setvolatility all 波动率
这是最后一个请求
---
v1.2.0 更新内容

新功能:
- /mr admin setvolatility all <值> — 一键设置所有商品波动率
- /mr admin setprice all <值> — 一键设置所有商品基础价格
- /mr admin setstock all <值> — 一键设置所有商品库存
- Tab 补全已支持 all 参数

代码审查修复(4 项):
1. PriceHistoryRepository 线程安全 — YAML 价格历史文件读写添加 synchronized,防止异步并发导致文件损坏
2. SQLiteStorage 连接线程安全 — getConnection() 添加 synchronized,防止多线程同时重建连接
3. 搜索状态内存泄漏 — 玩家退出时自动清理 awaitingSearch 中的 UUID
4. WebServer JSON 转义 — 补充 \n、\r、\t 转义,防止 JSON 格式错误

构建结果: target/MarketRegulator-1.2.0.jar (148KB),15/15 测试通过
 

附件

---
v1.2.0 更新内容

新功能:
- /mr admin setvolatility all <值> — 一键设置所有商品波动率
- /mr admin setprice all <值> — 一键设置所有商品基础价格
- /mr admin setstock all <值> — 一键设置所有商品库存
- Tab 补全已支持 all 参数

代码审查修复(4 项):
1. PriceHistoryRepository 线程安全 — YAML 价格历史文件读写添加 synchronized,防止异步并发导致文件损坏
2. SQLiteStorage 连接线程安全 — getConnection() 添加 synchronized,防止多线程同时重建连接
3. 搜索状态内存泄漏 — 玩家退出时自动清理 awaitingSearch 中的 UUID
4. WebServer JSON 转义 — 补充 \n、\r、\t 转义,防止 JSON 格式错误

构建结果: target/MarketRegulator-1.2.0.jar (148KB),15/15 测试通过
能不能一键修改库存
 

在线会员

  • jeffera
  • DrSounds606948
  • 洛风澜_Sea
  • baimochen
  • 健纲 黄
  • Tawer
  • bast_l
  • 烨楠
  • 耀日星辰
  • 黎明吖
  • jiajiahu
  • Regotly
  • in7
  • hhhr
  • Kongxize12
  • 你家的羊L
  • Abdon
  • Calum
  • CuteKitten
  • 1351734626
...和 4 更多。
后退
顶部 底部