EcoTale 任务

EcoTale 任务

每日与每周任务系统 — 击杀怪物、挖掘矿石、砍伐树木、收获作物,配备自动生成的奖励池、等级适配的奖励,以及里程碑通知。

游戏玩法

📜 EcoTale Quests

Hytale 服务器的每日与每周任务系统

为玩家提供每日每周任务——击杀怪物、开采矿石、砍伐树木、收获作物、赚取货币、获得经验——基于 46 个以上任务候选自动生成,包含通配目标、等级缩放奖励、一个原生 GUI 面板、一个管理员设置面板,任务名称完全本地化,并支持实时聊天进度通知。

Version Java License Ecotale Discord


EcotaleQuests 统计数据

✨ 功能特性

功能 描述
📋 每日任务 每天从生成的池中提供最多 10 个新任务(同时激活 4 个)
📅 每周任务 每周最多 5 个任务,奖励更丰厚(同时激活 2 个)
⚔️ 击杀怪物 11 种怪物类型——僵尸、骷髅、蜘蛛、碎颅、奎比克、斯卡拉克、费兰、流浪者、迅猛龙、熔岩傀儡 + 任意怪物通配符
⛏️ 开采矿石 8 种矿石类型——铜、铁、银、金、钴、翡翠、秘银 + 任意矿石通配符
🪓 砍伐树木 7 种树木类型——橡木、桦木、松木、柳木、红木、丛林木 + 任意木材通配符
🌾 收获作物 10 种作物类型——小麦、马铃薯、胡萝卜、浆果、番茄、洋葱、南瓜、玉米、西瓜 + 任意作物通配符
💰 赚取货币 元任务——从任何来源赚取一定总量的货币
获得经验 元任务——从任何来源获得 RPG 经验值
🎯 通配符目标 any_mobany_oreany_woodany_crop — 匹配该类型的任意操作
🖥️ GUI 面板 原生任务面板,带有每日/每周标签页、接受/放弃/信息按钮
🛠️ 管理员面板 管理员设置 GUI — 切换模块、重载配置、保存设置
📊 本地化进度 聊天中显示完全翻译的任务名称(例如 [Q] 任务:开采铁矿:3/22
🎲 自动生成 46 个以上任务候选,池子每天/每周自动生成
📈 等级缩放 任务难度和奖励随玩家的 RPG 等级缩放
🏅 里程碑提醒 在进度达到 25%、50%、75% 时发送额外通知
🛡️ 滥用防护 接受冷却、世界过滤、重复任务预防、强制过期
💾 JSON 存储 每个玩家的任务数据保存为 JSON 文件
🌍 本地化 支持俄语、英语、巴西葡萄牙语、法语、德语、西班牙语——所有任务名称、目标和 UI 元素均完全翻译
🔧 热重载 /quests reload — 无需重启服务器
🏅 冒险家等级 E→S 等级进阶、任务上的等级徽章、等级锁定任务
任务计时器 可配置的任务时间限制,带有倒计时显示
📌 任务板 可放置于墙上的物理任务板方块 — 按下 [F] 键与之交互以打开任务界面

📦 前置依赖

依赖项 必需 描述
Ecotale ≥ 1.0.0 经济与货币系统
RPG Leveling ≥ 0.2.0 怪物奖励的等级缩放
EconomyAPI ≥ 1.4.5 经济与货币系统
MMO Skill Tree ≥ 0.11.2 怪物奖励的等级缩放
Endless Leveling ≥ 5.13 怪物奖励的等级缩放

🚀 快速开始

# 1. 将 JAR 文件复制到服务器的 mods/ 文件夹
cp EcoTaleQuests-1.3.1.jar /server/mods/

# 2. 确保 Ecotale-1.0.7.jar 也在 mods/ 中
# 3. 启动服务器 — 配置文件与语言文件会自动创建
# 4. 根据需要自定义任务模板
nano mods/com.crystalrealm_EcoTaleQuests/EcoTaleQuests.json

就这么简单。 任务池会在首次启动时生成。玩家可以立即浏览并接受任务。

🎮 命令

命令 描述 权限
/quests tracker 切换玩家的 HUD 显示 (开/关)
/quests 显示当前活跃任务及其进度 ecotalequests.command.quests
/quests available 浏览可接受的任务 ecotalequests.command.quests
/quests accept 从池中接受一个任务 ecotalequests.command.quests
/quests abandon 放弃一个活跃任务 ecotalequests.command.quests
/quests info 查看任务的详细信息 ecotalequests.command.quests
/quests gui 打开任务 GUI 面板 ecotalequests.use
/quests admin 打开管理员设置面板 ecotalequests.admin.settings
/quests stats 查看你的任务完成统计信息 ecotalequests.use
/quests rank 查看你的冒险家等级及进度 ecotalequests.use
/quests reload 重载配置与语言文件 ecotalequests.admin.reload
/quests lang 切换语言 (en/ru/pt_br/fr/de/es)
/quests help 命令参考帮助

[!NOTE] 任务 ID 使用 8 字符的短标识符(例如 a3f7b2c1)。

🖥️ GUI 面板

玩家任务面板 (/quests gui)

基于 Hytale 的 InteractiveCustomUIPage API 和 .ui 布局构建的原生 GUI:

  • 每日 标签页 — 显示可用的每日任务,带有接受/放弃/信息按钮
  • 每周 标签页 — 显示可用的每周任务,带有接受/放弃/信息按钮
  • 每个活跃任务都会显示进度条和状态

面板在接受或放弃任务后会自动刷新。

管理员设置面板 (/quests admin)

仅限管理员使用的服务器配置面板:

  • 开关模块(怪物击杀、采矿、伐木、农耕、货币、经验)
  • 重载 — 重载配置与语言文件
  • 刷新 — 重新生成任务池
  • 保存 — 将当前设置持久化到磁盘

🔐 权限

基础权限 — 所有玩家:

ecotalequests.use              # /quests, available, accept, abandon, info, gui, stats

VIP 等级 (可在 VipTiers 中配置):

ecotalequests.multiplier.vip        # ×1.25 任务奖励倍率 (VIP)
ecotalequests.multiplier.mvp        # ×1.50 任务奖励倍率 (MVP)
ecotalequests.multiplier.mvp_plus   # ×2.00 任务奖励倍率 (MVP+)

管理员权限:

ecotalequests.admin.reload     # /quests reload
ecotalequests.admin.settings   # /quests admin (settings panel)
ecotalequests.*                # 所有权限

⚙️ 配置

配置文件路径:mods/com.crystalrealm_EcoTaleQuests/EcoTaleQuests.json

📋 通用与限制设置

{
  "General": {
    "DebugMode": false,
    "Language": "ru",
    "NotifyOnProgress": true,
    "NotifyOnComplete": true,
    "AutoSaveIntervalMinutes": 5
  },
  "QuestLimits": {
    "MaxDailyActive": 4,
    "MaxWeeklyActive": 2,
    "DailyPoolSize": 10,
    "WeeklyPoolSize": 5,
    "MaxAbandonPerDay": 3,
    "DailyResetTime": "00:00",
    "WeeklyResetDay": "MONDAY"
  }
}
默认值 描述
MaxDailyActive 4 玩家可同时拥有的最大每日任务数量
MaxWeeklyActive 2 玩家可同时拥有的最大每周任务数量
DailyPoolSize 10 每天生成多少个每日任务
WeeklyPoolSize 5 每周生成多少个每周任务
MaxAbandonPerDay 3 每天最多可以放弃多少个任务
DailyResetTime 00:00 每日任务池刷新的时间
WeeklyResetDay MONDAY 每周任务池刷新的星期几

🎲 任务生成模板

每个模板定义一个可能出现在任务池中的任务:

{
  "Generation": {
    "mobTemplates": [
      { "target": "Kweebec",     "minAmount": 5,  "maxAmount": 15 },
      { "target": "Trork",       "minAmount": 3,  "maxAmount": 10 },
      { "target": "Scarak",      "minAmount": 5,  "maxAmount": 20 },
      { "target": "Feran",       "minAmount": 3,  "maxAmount": 12 },
      { "target": "Fen_Stalker", "minAmount": 2,  "maxAmount": 8  },
      { "target": "Void_Dragon", "minAmount": 1,  "maxAmount": 3  }
    ],
    "oreTemplates": [
      { "target": "copper", "minAmount": 10, "maxAmount": 30 },
      { "target": "iron",   "minAmount": 8,  "maxAmount": 25 },
      { "target": "gold",   "minAmount": 5,  "maxAmount": 15 },
      { "target": "cobalt", "minAmount": 3,  "maxAmount": 10 }
    ],
    "woodTemplates": [
      { "target": "oak",    "minAmount": 15, "maxAmount": 40 },
      { "target": "birch",  "minAmount": 15, "maxAmount": 40 },
      { "target": "pine",   "minAmount": 10, "maxAmount": 30 },
      { "target": "ebony",  "minAmount": 5,  "maxAmount": 15 }
    ],
    "cropTemplates": [
      { "target": "wheat",   "minAmount": 20, "maxAmount": 50 },
      { "target": "pumpkin", "minAmount": 10, "maxAmount": 30 },
      { "target": "berry",   "minAmount": 15, "maxAmount": 40 }
    ]
  }
}

生成器会从这些模板中随机选取,应用等级缩放调整数量,并创建任务目标。

💰 奖励配置

{
  "Rewards": {
    "dailyBaseCoins": 15.0,
    "weeklyBaseCoins": 75.0,
    "bonusXpPerQuest": 50,
    "levelScalingFactor": 0.08,
    "vipMultiplier": 1.25,
    "premiumMultiplier": 1.5
  }
}
默认值 描述
dailyBaseCoins 15.0 每日任务的基础货币奖励
weeklyBaseCoins 75.0 每周任务的基础货币奖励
bonusXpPerQuest 50 每个完成的任务奖励的额外 RPG 经验值
levelScalingFactor 0.08 每级玩家等级的奖励倍率 (等级 × 系数)

奖励计算公式: 最终奖励 = 基础奖励 × (1 + 等级 × 系数)

🛡️ 防护设置

{
  "Protection": {
    "acceptCooldownSeconds": 30,
    "allowedWorlds": [],
    "blockAbuseInCreative": true
  }
}
默认值 描述
acceptCooldownSeconds 30 接受任务之间的冷却时间(秒)
allowedWorlds [] (所有) 将任务进度限制在特定世界中
blockAbuseInCreative true 阻止在创造模式下推进任务进度

📝 任务生命周期

┌─────────────┐    accept    ┌────────────┐   progress   ┌───────────────┐
│  AVAILABLE   │────────────▶│   ACTIVE    │─────────────▶│   COMPLETED   │
│  (in pool)   │             │ (tracking)  │   (100%)     │  (rewarded!)  │
└─────────────┘             └──────┬──────┘              └───────────────┘
                                   │
                          abandon  │  expire
                                   ▼
                            ┌──────────────┐
                            │  ABANDONED /  │
                            │   EXPIRED     │
                            └──────────────┘
  1. 池子生成 — 服务器根据配置模板生成每日/每周任务池
  2. 浏览与接受 — 玩家查看可用任务(GUI 或聊天)并接受
  3. 进度追踪 — 通过 ECS 事件和余额轮询自动追踪操作
  4. 通知 — 玩家在每次操作时收到聊天消息,并在 25/50/75% 进度时收到里程碑通知
  5. 完成与奖励 — 进度达到 100% 时,通过 Ecotale API 发放货币奖励,并给予额外经验值
  6. 过期 — 未完成的任务在下次每日/每周重置时过期

关键设计决策

  • ECS 事件模式 — 方块监听器使用 Hytale 的 EntityEventSystem<EntityStore, Event>,结合 ArchetypeChunk 来解析玩家实体
  • 反射优先 — 所有对 Store、PlayerRef、Message 的调用都使用反射以保证桩兼容性
  • Ecotale API (静态) — 通过 com.ecotale.api.EcotaleAPI(来自 Ecotale-1.0.7 的静态 API)进行奖励发放和货币追踪
  • 余额轮询CoinQuestListener 每 2 秒检查一次余额——如果增加,差额计入收入
  • RPG API 自动检测 — 尝试调用 get()getInstance()getAPI() 方法以实现跨版本兼容
  • JSON 存储 — 基于文件的持久化(quests/ 存储池子,players/<uuid>.json 存储进度)——无需数据库
  • 不可变任务Quest 对象不可变;仅 PlayerQuestData 追踪可变进度状态
  • HyUI GUI — 带有接受/放弃按钮、进度条、自动刷新的标签化任务面板

🔌 EcoTale 生态系统

EcoTaleQuests 是 CrystalRealm EcoTale 插件家族的一员:

插件 描述
EcoTaleIncome 通过击杀怪物、采矿、伐木、农耕赚取货币
EcoTaleBanking 银行系统——存款、贷款、信用评分、利息
EcoTaleQuests 每日与每周任务系统 ← 当前页面

🌍 本地化

内置支持 6 种语言:英语、俄语、巴西葡萄牙语、法语、德语、西班牙语。语言文件在首次启动时自动生成。

每个玩家可单独切换语言:

/quests lang en
/quests lang ru
/quests lang pt_br
/quests lang fr
/quests lang de
/quests lang es

快捷别名同样有效:/quests langen/quests langru/quests langpt/quests langfr/quests langde/quests langes

所有任务名称均已完全本地化。 玩家在 GUI 和聊天中看到的都是翻译后的任务描述(任务:开采铁矿 ×24任务:击杀任意怪物 ×22),而非原始的内部 ID。

包含 100 多个本地化键,例如:

  • quest.completed / quest.action_progress — 进度和完成消息
  • quest.desc.* — 所有 6 种任务类型的描述
  • quest.type.* — 类别名称(怪物、矿石、木材、作物、货币、经验)
  • target.* — 40 多个目标(怪物、矿石、树木、作物),包括通配符(任意怪物、任意矿石……)
  • cmd.* — 命令反馈
  • gui.* — GUI 面板元素

自定义翻译: 编辑 mods/com.crystalrealm_EcoTaleQuests/lang/ 下生成的 JSON 文件即可。

⚠️ 问题反馈与功能请求

请通过 GitHub Issues 报告任何 Bug、问题或功能建议。 这有助于保持反馈的条理性,并使我们能够更快地追踪和修复问题。

📄 许可证

本项目使用 MIT 许可证授权——详情请参阅 LICENSE 文件。


CrystalRealm 为 Hytale 社区 ❤️ 制作