EcoTale 随机奖励

EcoTale 随机奖励

每日随机奖励板 — 玩家每天可挑选一个神秘方块,赢取随机奖品。完全由管理员配置。

游戏玩法

🎲EcoTale RandomReward

版本 Java 许可协议 Discord

每日神秘面板 · 权重战利品 · 管理员GUI

为Hytale服务器提供引人入胜的每日奖励小游戏。


概述

EcoTale RandomReward 为你的服务器添加了一个每日神秘面板 —— 一个包含隐藏方格的网格,玩家每天可以选择一个格子来获得随机奖励。奖励从具有5个稀有度等级的权重战利品池中抽取。所有内容均可通过JSON或游戏内管理员GUI完全配置,无需重启服务器。


功能

神秘瓷砖面板

  • 可配置的网格大小(最大6×6)
  • 每天一次选择 —— 玩家选择一个神秘瓷砖
  • 带有稀有度颜色反馈的动画揭示效果
  • 每日首次登录时自动打开GUI
  • 最低在线时间要求(防滥用)

权重战利品系统

  • 4种奖励类型:硬币经验物品混合
  • 每个条目的概率权重(越高越常见)
  • 5个稀有度等级:普通、罕见、稀有、史诗、传说
  • UI中按稀有度颜色编码
  • 混合奖励组合了硬币 + 经验 + 物品

游戏内管理员GUI

  • 完整的奖励池编辑器 —— 添加、编辑、删除条目
  • 直接文本输入名称、概率、硬币、经验值
  • 类型和稀有度循环按钮
  • 通过可搜索下拉菜单选择物品(所有服务器物品)
  • 网格大小、语言、调试模式设置
  • 无需离开游戏即可保存并重新加载配置

软依赖

  • EcotaleAPI —— 硬币存入(可选)
  • RPG Leveling —— 经验集成(可选)
  • Endless Leveling —— 经验集成(可选)
  • LuckPerms —— 权限解析(可选)
  • 缺少任何依赖时都会优雅降级

其他

  • 多语言 —— 内置英语、俄语、德语、西班牙语、法语、葡萄牙语
  • 玩家数据 —— 总领取次数、上次奖励、今日已领取状态
  • JSON存储 —— 每个玩家独立文件,自动保存
  • 权限系统 —— 三层解析:LuckPerms → HyperPerms → permissions.json 后备

项目结构

EcoTaleRandomReward/
├── src/main/java/com/crystalrealm/ecotalerandomreward/
│   ├── EcoTaleRandomRewardPlugin.java          — 插件生命周期与事件注册
│   ├── commands/
│   │   └── RandomRewardCommandCollection.java  — /randomreward 命令树
│   ├── config/
│   │   ├── ConfigManager.java                  — JSON配置加载/保存
│   │   └── RandomRewardConfig.java             — 配置POJO
│   ├── gui/
│   │   ├── AdminRewardGui.java                 — 管理员面板(奖励编辑器 + 设置)
│   │   ├── DailyRewardGui.java                 — 面向玩家的神秘面板
│   │   ├── PageOpenHelper.java                 — ECS页面打开工具
│   │   └── ReflectiveCodecBuilder.java         — 通过反射构建UI编解码器
│   ├── lang/
│   │   └── LangManager.java                    — 支持每个玩家语言设置的国际化
│   ├── model/
│   │   └── PlayerRewardData.java               — 每个玩家的持久数据
│   ├── provider/
│   │   ├── EconomyBridge.java                  — 基于反射的经济适配器
│   │   └── leveling/
│   │       ├── LevelProvider.java              — 等级提供者接口
│   │       ├── LevelBridge.java                — 自动检测提供者路由
│   │       ├── RPGLevelingProvider.java        — Zuxaw RPG Leveling 适配器
│   │       └── EndlessLevelingProvider.java    — Airijko EndlessLeveling 适配器
│   ├── reward/
│   │   └── RewardService.java                  — 随机选择与奖励发放
│   ├── storage/
│   │   ├── JsonRewardStorage.java              — 每个玩家的JSON持久化
│   │   └── RewardStorage.java                  — 存储接口
│   └── util/
│       ├── MessageUtil.java                    — 聊天消息工具类
│       ├── MiniMessageParser.java              — MiniMessage格式化
│       ├── PermissionHelper.java               — 三层权限解析
│       └── PluginLogger.java                   — 结构化日志
├── src/main/resources/
│   ├── default-config.json                     — 默认配置(13个奖励)
│   ├── manifest.json                           — Hytale插件清单
│   └── lang/
│       ├── en.json        — 英语
│       ├── ru.json        — 俄语
│       ├── de.json        — 德语
│       ├── es.json        — 西班牙语
│       ├── fr.json        — 法语
│       └── pt_br.json     — 葡萄牙语(巴西)
└── src/stubs/java/                            — Hytale API 编译时存根

命令

命令 权限 描述
/randomreward ecotalerandomreward.use 打开神秘面板GUI
/randomreward open ecotalerandomreward.use 打开神秘面板GUI
/randomreward pick ecotalerandomreward.use 选择一个随机瓷砖(命令行)
/randomreward info ecotalerandomreward.use 查看你的奖励统计
/randomreward admin ecotalerandomreward.admin 打开管理员GUI
/randomreward reload ecotalerandomreward.admin 重新加载配置
/randomreward langen ecotalerandomreward.use 切换到英语
/randomreward langru ecotalerandomreward.use 切换到俄语
/randomreward help ecotalerandomreward.use 命令参考

权限

权限 描述 默认
ecotalerandomreward.use 面板访问、选择、信息、语言 所有玩家
ecotalerandomreward.admin 管理员GUI、重载 OP

依赖

插件 类型 用途
Ecotale ≥1.0.0 必需 核心服务器插件
EcotaleAPI 可选 经济集成(硬币奖励)
RPG Leveling 可选 经验奖励集成
Endless Leveling 可选 经验奖励集成
LuckPerms 可选 基于组的权限解析

所有可选的API均通过反射访问 —— 插件没有它们也能运行。


安装

  1. EcoTaleRandomReward-1.0.0.jar 复制到服务器的 Mods/ 文件夹。
  2. 启动服务器 —— 默认配置会自动生成并包含13个示例奖励。
  3. 使用 /randomreward admin 在游戏中管理奖励,或直接编辑JSON文件。
  4. 使用 /randomreward reload 应用配置更改。

配置

配置文件在首次运行时自动生成。

常规设置

{
  "General": {
    "DebugMode": false,
    "Language": "en",
    "MessagePrefix": "<gold>[DailyReward]</gold> ",
    "AutoSaveIntervalMinutes": 5,
    "EconomyProvider": "ecotale",
    "LevelProvider": "",
    "AutoOpenGuiOnJoin": true,
    "GridRows": 5,
    "GridColumns": 5,
    "MinOnlineMinutes": 0,
    "GuiTitle": "DAILY REWARD"
  }
}
字段 描述
Language 默认语言 (en, ru, de, es, fr, pt_br)
EconomyProvider 使用的经济API (ecotale 或留空自动检测)
LevelProvider 经验提供者 (rpgleveling, endlessleveling, 或留空自动检测)
AutoOpenGuiOnJoin 每日首次登录时自动打开面板
GridRows / GridColumns 面板大小 (每个1-6)
MinOnlineMinutes 领取前的最低在线时间

奖励条目格式

{
  "Id": "coins_jackpot",
  "DisplayName": "Jackpot!",
  "Type": "coins",
  "Coins": 2000.0,
  "Xp": 0,
  "Item": "",
  "Weight": 2,
  "Rarity": "legendary",
  "IconColor": "#ffaa00"
}
字段 描述
Type 奖励类型:coins, xp, item, mixed
Coins 硬币数量(用于 coinsmixed 类型)
Xp 经验值(用于 xpmixed 类型)
Item 物品ID,格式为 namespace:item:count(用于 itemmixed 类型)
Weight 概率权重 —— 越高越容易被选中
Rarity common, uncommon, rare, epic, legendary
IconColor 瓷砖显示的十六进制颜色

物品格式

物品使用Hytale的内部标识符:

hytale:weapon_sword_wood:1
hytale:tool_pickaxe_iron:1
hytale:armor_bronze_head:1

LuckPerms 集成

插件按以下顺序检查权限:LuckPerms API → HyperPerms → permissions.json 后备

示例设置:

/lp group default permission set ecotalerandomreward.use true
/lp group admin permission set ecotalerandomreward.admin true