Description
๐ EcoTale Quests
Daily & Weekly quest system for Hytale servers
Give players daily and weekly quests โ kill mobs, mine ores, chop trees, harvest crops, earn currency, gain XP โ with automatic generation from 46+ quest candidates, wildcard targets, level-scaled rewards, a native GUI panel, an admin settings panel, fully localized quest names, and real-time chat progress notifications.
โจ Features
| Feature | Description |
|---|---|
| ๐ Daily Quests | Up to 10 fresh quests every day from a generated pool (4 active at once) |
| ๐ Weekly Quests | Up to 5 weekly quests with bigger rewards (2 active at once) |
| โ๏ธ Kill Mobs | 11 mob types โ zombie, skeleton, spider, trork, kweebec, scarrak, feran, outlander, raptor, magma golem + any mob wildcard |
| โ๏ธ Mine Ores | 8 ore types โ copper, iron, silver, gold, cobalt, emerald, mythril + any ore wildcard |
| ๐ช Chop Wood | 7 tree types โ oak, birch, pine, willow, redwood, jungle + any wood wildcard |
| ๐พ Harvest Crops | 10 crop types โ wheat, potato, carrot, berry, tomato, onion, pumpkin, corn, melon + any crop wildcard |
| ๐ฐ Earn Currency | Meta-quests โ earn a total amount of currency from any source |
| โจ Gain XP | Meta-quests โ gain RPG experience from any source |
| ๐ฏ Wildcard Targets | any_mob, any_ore, any_wood, any_crop โ match any action of that type |
| ๐ฅ๏ธ GUI Panel | Native quest panel with Daily/Weekly tabs, accept/abandon/info buttons |
| ๐ ๏ธ Admin Panel | Admin settings GUI โ toggle modules, reload config, save settings |
| ๐ Localized Progress | Fully translated quest names in chat (e.g. [Q] ะะพะฑััั: ะะตะปะตะทะพ: 3/22) |
| ๐ฒ Auto-Generation | 46+ quest candidates, pools generated automatically each day/week |
| ๐ Level Scaling | Quest difficulty and rewards scale with player RPG level |
| ๐ Milestone Alerts | Additional notifications at 25%, 50%, 75% progress |
| ๐ก๏ธ Abuse Protection | Accept cooldowns, world filtering, duplicate prevention, expiry enforcement |
| ๐พ JSON Storage | Per-player quest data saved as JSON files |
| ๐ Localization | RU / EN / PT-BR / FR / DE / ES โ all quest names, targets, and UI elements fully translated |
| ๐ง Hot Reload | /quests reload โ no restart needed |
| ๐ Adventurer Ranks | EโS rank progression, rank badges on quests, rank-locked quests |
| โฐ Quest Timers | Configurable time limits for quests with countdown display |
| ๐ Quest Board | Physical wall-mounted quest board block โ interact with [F] to open quests |
๐ฆ Requirements
| Dependency | Required | Description |
|---|---|---|
| Ecotale โฅ 1.0.0 | โ | Economy & currency system |
| RPG Leveling โฅ 0.2.0 | โ | Level-scaling for mob rewards |
| EconomyAPI โฅ 1.4.5 | โ | Economy & currency system |
| MMO Skill Tree โฅ 0.11.2 | โ | Level-scaling for mob rewards |
| Endless Leveling โฅ 5.13 | โ | Level-scaling for mob rewards |
๐ Getting Started
# 1. Copy JAR files to the server's mods/ folder
cp EcoTaleQuests-1.3.1.jar /server/mods/
# 2. Make sure Ecotale-1.0.7.jar is also in mods/
# 3. Start the server โ config & lang files are created automatically
# 4. Customize quest templates if needed
nano mods/com.crystalrealm_EcoTaleQuests/EcoTaleQuests.json
That's it. Quest pools are generated on first startup. Players can immediately browse and accept quests.
๐ฎ Commands
| Command | Description | Permission |
|---|---|---|
/quests tracker |
for on/off HUD for player | |
/quests |
Show active quests with progress | ecotalequests.command.quests |
/quests available |
Browse available quests to accept | ecotalequests.command.quests |
/quests accept |
Accept a quest from the pool | ecotalequests.command.quests |
/quests abandon |
Abandon an active quest | ecotalequests.command.quests |
/quests info |
Detailed quest information | ecotalequests.command.quests |
/quests gui |
Open the quest GUI panel | ecotalequests.use |
/quests admin |
Open the admin settings panel | ecotalequests.admin.settings |
/quests stats |
Your quest completion statistics | ecotalequests.use |
/quests rank |
Your adventurer rank and progress | ecotalequests.use |
/quests reload |
Reload config & lang files | ecotalequests.admin.reload |
/quests lang |
Switch language (en/ru/pt_br/fr/de/es) | โ |
/quests help |
Command reference | โ |
[!NOTE] Quest IDs use short 8-character identifiers (e.g.,
a3f7b2c1).
๐ฅ๏ธ GUI Panels
Player Quest Panel (/quests gui)
Native GUI built on Hytale's InteractiveCustomUIPage API with .ui layouts:
- Daily tab โ available daily quests with Accept / Abandon / Info buttons
- Weekly tab โ available weekly quests with Accept / Abandon / Info buttons
- Progress bar and status displayed for each active quest
The panel auto-refreshes after accepting or abandoning a quest.
Admin Settings Panel (/quests admin)
Admin-only panel for server configuration:
- Toggle modules on/off (mob kills, mining, woodcutting, farming, currency, XP)
- Reload โ reload config & lang files
- Refresh โ regenerate quest pools
- Save โ persist current settings to disk
๐ Permissions
Base Permissions โ all players:
ecotalequests.use # /quests, available, accept, abandon, info, gui, stats
VIP Tiers (configurable in VipTiers):
ecotalequests.multiplier.vip # ร1.25 quest reward multiplier (VIP)
ecotalequests.multiplier.mvp # ร1.50 quest reward multiplier (MVP)
ecotalequests.multiplier.mvp_plus # ร2.00 quest reward multiplier (MVP+)
Admin:
ecotalequests.admin.reload # /quests reload
ecotalequests.admin.settings # /quests admin (settings panel)
ecotalequests.* # All permissions
โ๏ธ Configuration
Config file: mods/com.crystalrealm_EcoTaleQuests/EcoTaleQuests.json
๐ General & Limits
{
"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"
}
}
| Key | Default | Description |
|---|---|---|
MaxDailyActive |
4 | Max daily quests a player can have active at once |
MaxWeeklyActive |
2 | Max weekly quests active at once |
DailyPoolSize |
10 | How many daily quests are generated each day |
WeeklyPoolSize |
5 | How many weekly quests are generated each week |
MaxAbandonPerDay |
3 | Max quest abandonments per day |
DailyResetTime |
00:00 | Time when daily pool refreshes |
WeeklyResetDay |
MONDAY | Day of week for weekly pool refresh |
๐ฒ Quest Generation Templates
Each template defines a quest that can appear in the generated pool:
{
"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 }
]
}
}
The generator picks from these templates randomly, applies level scaling to amounts, and creates quest objectives.
๐ฐ Rewards
{
"Rewards": {
"dailyBaseCoins": 15.0,
"weeklyBaseCoins": 75.0,
"bonusXpPerQuest": 50,
"levelScalingFactor": 0.08,
"vipMultiplier": 1.25,
"premiumMultiplier": 1.5
}
}
| Key | Default | Description |
|---|---|---|
dailyBaseCoins |
15.0 | Base currency reward for daily quests |
weeklyBaseCoins |
75.0 | Base currency reward for weekly quests |
bonusXpPerQuest |
50 | Bonus RPG XP per completed quest |
levelScalingFactor |
0.08 | Reward multiplier per player level (level ร factor) |
Reward formula: Final Reward = Base ร (1 + level ร factor)
๐ก๏ธ Protection
{
"Protection": {
"acceptCooldownSeconds": 30,
"allowedWorlds": [],
"blockAbuseInCreative": true
}
}
| Key | Default | Description |
|---|---|---|
acceptCooldownSeconds |
30 | Cooldown between accepting quests |
allowedWorlds |
[] (all) |
Restrict quest progress to specific worlds |
blockAbuseInCreative |
true | Prevent quest progress in creative mode |
๐ Quest Lifecycle
โโโโโโโโโโโโโโโ accept โโโโโโโโโโโโโโ progress โโโโโโโโโโโโโโโโโ
โ AVAILABLE โโโโโโโโโโโโโโถโ ACTIVE โโโโโโโโโโโโโโโถโ COMPLETED โ
โ (in pool) โ โ (tracking) โ (100%) โ (rewarded!) โ
โโโโโโโโโโโโโโโ โโโโโโโโฌโโโโโโโ โโโโโโโโโโโโโโโโโ
โ
abandon โ expire
โผ
โโโโโโโโโโโโโโโโ
โ ABANDONED / โ
โ EXPIRED โ
โโโโโโโโโโโโโโโโ
- Pool Generation โ Server generates daily/weekly quest pools from config templates
- Browse & Accept โ Players view available quests (GUI or chat) and accept
- Progress Tracking โ Actions automatically tracked via ECS events and balance polling
- Notifications โ Players receive chat messages on every action + milestones at 25/50/75%
- Completion & Reward โ At 100%, currency is deposited via Ecotale API + bonus XP granted
- Expiry โ Unfinished quests expire at the next daily/weekly reset
Key Design Decisions
- ECS Event Pattern โ Block listeners use Hytale's
EntityEventSystem<EntityStore, Event>withArchetypeChunkfor player resolution - Reflection-first โ All Store, PlayerRef, Message calls use reflection for stub compatibility
- Ecotale API (static) โ Rewards and currency tracking via
com.ecotale.api.EcotaleAPI(static API from Ecotale-1.0.7) - Balance Polling โ
CoinQuestListenerchecks balances every 2 seconds โ if increased, the difference counts as earnings - RPG API Auto-detect โ Tries
get(),getInstance(),getAPI()methods for cross-version compatibility - JSON Storage โ File-based persistence (
quests/for pools,players/<uuid>.jsonfor progress) โ no database required - Immutable Quests โ
Questobjects are immutable; onlyPlayerQuestDatatracks mutable progress state - HyUI GUI โ Tabbed quest panel with accept/abandon buttons, progress bars, auto-refresh
๐ EcoTale Ecosystem
EcoTaleQuests is part of the CrystalRealm EcoTale plugin family:
| Plugin | Description |
|---|---|
| EcoTaleIncome | Earn currency through mob kills, mining, woodcutting, farming |
| EcoTaleBanking | Banking system โ deposits, loans, credit score, interest |
| EcoTaleQuests | Daily & weekly quest system โ you are here |
๐ Localization
Built-in support for 6 languages: English, Russian, Brazilian Portuguese, French, German, Spanish. Language files are auto-generated on first start.
Per-player switching:
/quests lang en
/quests lang ru
/quests lang pt_br
/quests lang fr
/quests lang de
/quests lang es
Shortcut aliases also work: /quests langen, /quests langru, /quests langpt, /quests langfr, /quests langde, /quests langes
All quest names are fully localized. Players see translated quest descriptions (ะะพะฑััั: ะะตะปะตะทะพ ร24, ะฃะฑะธัั: ะัะฑัะต ะผะพะฑั ร22) in both GUI and chat โ never raw internal IDs.
100+ localization keys, including:
quest.completed/quest.action_progressโ progress and completion messagesquest.desc.*โ descriptions for all 6 quest typesquest.type.*โ category names (ะะพะฑั, ะ ัะดะฐ, ะะตัะตะฒะพ, ะฃัะพะถะฐะน, ะะฐะปััะฐ, ะะฟัั)target.*โ 40+ targets (mobs, ores, trees, crops) including wildcards (ะัะฑัะต ะผะพะฑั, ะัะฑะฐั ััะดะฐโฆ)cmd.*โ command feedbackgui.*โ GUI panel elements
Custom translations: Edit the generated JSON files in mods/com.crystalrealm_EcoTaleQuests/lang/
โ ๏ธ Issues & Feature Requests
Please report any bugs, issues, or feature suggestions via GitHub Issues.
This helps keep feedback organized and allows faster tracking and fixes.
๐ License
This project is licensed under the MIT License โ see the LICENSE file.
Made with โค๏ธ by CrystalRealm for the Hytale community
