ALEMCExchange —— 为服务器打造的EMC经济生态|物品兑换|自动出售|多条件解锁|Folia支持

原创 经济 ALEMCExchange —— 为服务器打造的EMC经济生态|物品兑换|自动出售|多条件解锁|Folia支持 2.0.2-重构

请登录后获取

修复​

  • 修复兑换菜单点击后只有声音、不发放物品的问题:动态物品 ID 现在会正确传入 exchange_buy_1/64。
  • 修复普通点击、右键及 Shift 左/右键动作路由。
  • 浏览物品界面不再支持购买,已移除购买 lore 和购买触发器
  • 浏览物品 lore 移除重复的物品名称和物品 ID。

修复​

  • 修复全新安装服务器因缺少 lang.yml 启动崩溃的问题
  • 修复数据目录无 menus.yml 时启动崩溃的问题
  • 修复从旧版菜单格式(v2 menus.yml)升级时启动崩溃的问题

菜单系统全面重做​

  • 全新菜单引擎:采用 shape 布局体系,每个菜单独立 yml 文件,改布局只需挪动字符串里的字符,改按钮只需编辑对应配置块
  • 按钮完全自定义:任意位置摆按钮,支持左键 / 右键 / Shift 组合键绑定不同动作
  • 强大的动作系统(triggers):一个按钮可以按顺序执行一串动作——播放音效、延迟、打开菜单、执行命令(玩家 / 控制台)、发送消息,自由组合
  • 点击音效:全部按钮配备操作反馈音(导航、购买、出售音效各不相同,可逐按钮修改)
  • 中英双语:菜单与消息全套双语(config.yml 一行切换语言),新语言丢一个翻译文件即可扩展

物品搜索​

  • 浏览 / 兑换菜单新增搜索按钮:左键搜索、右键清除
  • 支持匹配物品中文名 / 物品ID / CraftEngine 物品ID,聊天栏输入即可

CraftEngine 物品支持​

  • items.yml 直接使用 ce:命名空间:物品ID 作为键即可接入 CE 自定义物品
  • 图标展示、兑换购买、出售识别、解锁进度、搜索匹配全链路支持(反射调用,未安装 CraftEngine 不报错)

跨服实时同步(群组服适用)​

  • 所有服务器共用一个 MySQL 数据库时,余额 / 解锁 / 进度的变动实时同步到其他服
  • 其他服的玩家如果正开着菜单,会自动刷新显示
  • 双通道可选:MySQL 轮询(零依赖)或 Redis 发布订阅(内置零依赖 Redis 客户端,毫秒级)
  • 高频事件自动合并(疯狂挖矿不会刷爆消息),断线自动重连

玩法体验优化​

  • 浏览界面直接购买:看中就买,不用再切到兑换菜单(左键 1 个 / 右键 64 个,未解锁物品自动拦截)
  • 智能购买:背包放不下 64 个时自动改为购买放得下的数量,不再整笔拒绝
  • 背包溢出保护:异常情况下物品未能放入背包会自动退还 EMC,杜绝"扣了钱东西没了"
  • 自动出售增强:不足一批(64 个)的零头,停止拾取 5 秒后自动结算,不用非凑满一批
  • 进度封顶显示:解锁进度永远显示 64/64,不会出现 65/64 的越界数字

防作弊 & 性能​

  • 全局防连点:同一玩家按钮 0.15 秒冷却(可配置),连点器无效,真人无感
  • 数据库大幅减负:挖掘进度写入量减半,菜单全链路预构建缓存,开菜单零卡顿
  • 修复多个内部问题:连接池泄漏、点击事件边界、语言文件死键等

修复​

  • MySQL 下防重复计数唯一索引无法创建的问题,跨服邀请防重恢复正常
  • 启动横幅数据库类型显示错误,现正确显示 MYSQL / SQLITE

升级须知(最好重新生成配置)​

  • 替换 jar 重启即可,所有旧配置自动迁移:
    • 数据库配置 → 自动拆分生成 database.yml
    • 旧菜单 → 自动转换为新格式并保留你的自定义文案(原文件备份)
    • 旧语言文件 → 自动迁移到 lang/ 目录
  • 玩家数据(余额 / 解锁 / 进度)完全保留,数据库结构无变化
  • 不想用跨服同步?什么都不用改,默认关闭

环境要求​

  • Paper / Folia 1.21+(Java 21)
  • 可选:CraftEngine(CE 物品支持)、PlaceholderAPI(变量)、MySQL / Redis(跨服)
- 修复菜单物品位子混乱问题
- 新增满背包时,兑换可掉落在地上的设置,在配置文件选择开启
- 修复 alemcexchange.daily.vip、alemcexchange.daily.premium、alemcexchange.daily.unlimited 权限可能不生效的问题。
- 每日 EMC 限额改为“权限前缀 + 权限组”配置方式。
- 新增权限组权重机制。玩家同时拥有多个限额权限时,自动采用 weight 最高的组。
- 支持自由新增更多限额权限组,无需修改插件代码。
- 支持使用 limit: -1 设置无限制额度。
- base 组作为所有玩家的默认限额组,无需额外授予权限。
- 管理员权限 alemcexchange.admin 默认继承每日 EMC 无限制权限。
- 兼容旧版每日限额配置,并在升级时迁移原有 VIP、Premium 和 Unlimited 额度。

### 新版配置示例

daily_limit:
enabled: true
reset_time: "00:00"
permission_prefix: "alemcexchange.daily"

limit_groups:
base:
limit: 10000
weight: 0
vip:
limit: 50000
weight: 10
premium:
limit: 100000
weight: 20
unlimited:
limit: -1
weight: 100

### 自定义权限组

管理员可以直接在 limit_groups 下新增权限组。例如:

svip:
limit: 200000
weight: 30

对应权限节点为:

alemcexchange.daily.svip

玩家拥有多个权限组时,只采用权重最高的组,额度不会叠加
### 主要更新:
1. 修复 EMC 出售达到每日上限后,物品可能重复返还导致复制的问题
2. 修复自动出售异常时可能吞物品的问题
3. 优化自动出售性能,减少拾取物品时的数据库查询
4. 优化每日 EMC 上限计算,降低并发出售突破上限的风险
5. 优化兑换购买与玩家转账逻辑,防止连点或并发导致余额异常
6. 修复出售菜单关闭时背包满可能丢失物品的问题
7. 优化物品配置缓存,提升菜单、挖掘、出售相关性能
8. 修复 SQLite 自定义数据库文件名在重连时失效的问题
本次更新修复了每日 EMC 获取额度与出售功能的相关问题:

1. 修复手动出售在每日剩余额度不足时,需要玩家自行计算物品数量的问题。
现在放入超过剩余额度的物品时,系统会自动按剩余额度尽量出售,未出售的物品会退回。

2. 修复自动出售在每日额度用完后仍保持开启的问题。
现在每日额度耗尽后,自动出售会自动关闭。

3. 优化自动出售开启判断。
如果今日 EMC 获取额度已经用完,再次开启自动出售时会提示无法启用。
新增:每日EMC获取限制

功能说明
- 可设置玩家每日通过出售获取的EMC上限
- 达到限额后自动停售,多余物品退还背包
- 支持按权限设置不同限额,-1 为无限

配置文件新增项
# config.yml
daily_limit:
enabled: false # 开关
reset_time: "00:00" # 每日重置时间(服务器时间)
default_limit: 10000 # 默认每日限额
permissions: # 权限限额(可自定义任意数量)
alemcexchange.daily.vip: 50000
alemcexchange.daily.premium: 100000
alemcexchange.daily.unlimited: -1

新增权限
alemcexchange.daily.vip:VIP每日限额
alemcexchange.daily.premium:Premium每日限额
alemcexchange.daily.unlimite:无限额度

新增 PlaceholderAPI 变量
%alemc_daily_earned%:今日已获取
%alemc_daily_limit%:每日限额
%alemc_daily_remaining%:今日剩余

其他
- 主菜单出售按钮新增每日剩余额度显示
- 旧配置文件自动补全新增项,不影响已有自定义内容
### 主要更新:
1. 修复了Folia支持问题(感谢CHL_chun的支持 )
2. 新增26.1+版本支持
### 主要更新:
1. 修复了离线插件查询空白的问题
2. 新增 %alemc_autosell% 状态文本可自定义(语言文本)
3. 升级时自动补全缺失配置项
4. 优化了部分代码架构
后退
顶部 底部