premium banner
Daily random reward board β€” players pick a mystery tile once per day to win a random prize. Fully configurable by admin.

Description

🎲EcoTale RandomReward

Version Java License Discord

Daily Mystery Board Β· Weighted Loot Β· Admin GUI

Engaging daily reward mini-game for Hytale servers.


Overview

EcoTale RandomReward adds a daily mystery board to your server β€” a grid of hidden tiles that players can pick once per day for a random prize. Rewards are drawn from a weighted loot pool with 5 rarity tiers. Everything is fully configurable through JSON or the in-game Admin GUI β€” no server restarts required.


Features

Mystery Tile Board

  • Configurable grid size (up to 6Γ—6)
  • One pick per day β€” players choose a mystery tile
  • Animated reveal with rarity-colored feedback
  • Auto-opens GUI on first daily login
  • Minimum online time requirement (anti-abuse)

Weighted Loot System

  • 4 reward types: Coins, XP, Items, Mixed
  • Probability weights per entry (higher = more frequent)
  • 5 rarity tiers: Common, Uncommon, Rare, Epic, Legendary
  • Per-rarity color coding in the UI
  • Mixed rewards combine coins + XP + items

In-Game Admin GUI

  • Full reward pool editor β€” add, edit, delete entries
  • Direct text input for name, chance, coins, XP values
  • Type & rarity cycling buttons
  • Item selection via searchable dropdown (all server items)
  • Grid size, language, debug mode settings
  • Save & reload config without leaving the game

Soft Dependencies

  • EcotaleAPI β€” coin deposits (optional)
  • RPG Leveling β€” XP integration (optional)
  • Endless Leveling β€” XP integration (optional)
  • LuckPerms β€” permission resolution (optional)
  • Falls back gracefully when any dependency is missing

Other

  • Multi-language β€” English, Russian, German, Spanish, French, Portuguese built-in
  • Player stats β€” total claims, last reward, claimed-today status
  • JSON storage β€” per-player files with auto-save
  • Permission system β€” 3-tier resolution: LuckPerms β†’ HyperPerms β†’ permissions.json fallback

Project Structure

EcoTaleRandomReward/
β”œβ”€β”€ src/main/java/com/crystalrealm/ecotalerandomreward/
β”‚   β”œβ”€β”€ EcoTaleRandomRewardPlugin.java        β€” Plugin lifecycle & event registration
β”‚   β”œβ”€β”€ commands/
β”‚   β”‚   └── RandomRewardCommandCollection.java  β€” /randomreward command tree
β”‚   β”œβ”€β”€ config/
β”‚   β”‚   β”œβ”€β”€ ConfigManager.java                β€” JSON config loading/saving
β”‚   β”‚   └── RandomRewardConfig.java           β€” Configuration POJO
β”‚   β”œβ”€β”€ gui/
β”‚   β”‚   β”œβ”€β”€ AdminRewardGui.java               β€” Admin panel (reward editor + settings)
β”‚   β”‚   β”œβ”€β”€ DailyRewardGui.java               β€” Player-facing mystery board
β”‚   β”‚   β”œβ”€β”€ PageOpenHelper.java               β€” ECS page opener utility
β”‚   β”‚   └── ReflectiveCodecBuilder.java       β€” UI codec builder via reflection
β”‚   β”œβ”€β”€ lang/
β”‚   β”‚   └── LangManager.java                  β€” i18n with per-player locale
β”‚   β”œβ”€β”€ model/
β”‚   β”‚   └── PlayerRewardData.java             β€” Per-player persistent data
β”‚   β”œβ”€β”€ provider/
β”‚   β”‚   β”œβ”€β”€ EconomyBridge.java                β€” Reflection-based economy adapter
β”‚   β”‚   └── leveling/
β”‚   β”‚       β”œβ”€β”€ LevelProvider.java            β€” Leveling provider interface
β”‚   β”‚       β”œβ”€β”€ LevelBridge.java              β€” Auto-detecting provider router
β”‚   β”‚       β”œβ”€β”€ RPGLevelingProvider.java      β€” Zuxaw RPG Leveling adapter
β”‚   β”‚       └── EndlessLevelingProvider.java  β€” Airijko EndlessLeveling adapter
β”‚   β”œβ”€β”€ reward/
β”‚   β”‚   └── RewardService.java                β€” Random selection & reward issuance
β”‚   β”œβ”€β”€ storage/
β”‚   β”‚   β”œβ”€β”€ JsonRewardStorage.java            β€” Per-player JSON persistence
β”‚   β”‚   └── RewardStorage.java               β€” Storage interface
β”‚   └── util/
β”‚       β”œβ”€β”€ MessageUtil.java                  β€” Chat message utilities
β”‚       β”œβ”€β”€ MiniMessageParser.java            β€” MiniMessage formatting
β”‚       β”œβ”€β”€ PermissionHelper.java             β€” 3-tier permission resolution
β”‚       └── PluginLogger.java                 β€” Structured logging
β”œβ”€β”€ src/main/resources/
β”‚   β”œβ”€β”€ default-config.json                   β€” Default configuration (13 rewards)
β”‚   β”œβ”€β”€ manifest.json                         β€” Hytale plugin manifest
β”‚   └── lang/
β”‚       β”œβ”€β”€ en.json       β€” English
β”‚       β”œβ”€β”€ ru.json       β€” Russian
β”‚       β”œβ”€β”€ de.json       β€” German
β”‚       β”œβ”€β”€ es.json       β€” Spanish
β”‚       β”œβ”€β”€ fr.json       β€” French
β”‚       └── pt_br.json    β€” Portuguese (Brazil)
└── src/stubs/java/                           β€” Hytale API compile-time stubs

Commands

Command Permission Description
/randomreward ecotalerandomreward.use Open the mystery board GUI
/randomreward open ecotalerandomreward.use Open the mystery board GUI
/randomreward pick ecotalerandomreward.use Pick a random tile (CLI)
/randomreward info ecotalerandomreward.use View your reward stats
/randomreward admin ecotalerandomreward.admin Open the admin GUI
/randomreward reload ecotalerandomreward.admin Reload configuration
/randomreward langen ecotalerandomreward.use Switch to English
/randomreward langru ecotalerandomreward.use Switch to Russian
/randomreward help ecotalerandomreward.use Command reference

Permissions

Permission Description Default
ecotalerandomreward.use Board access, pick, info, language All players
ecotalerandomreward.admin Admin GUI, reload OP

Dependencies

Plugin Type Purpose
Ecotale β‰₯1.0.0 Required Core server plugin
EcotaleAPI Optional Economy integration (coin rewards)
RPG Leveling Optional XP reward integration
Endless Leveling Optional XP reward integration
LuckPerms Optional Group-based permission resolution

All optional APIs are accessed via reflection β€” the plugin runs without them.


Installation

  1. Copy EcoTaleRandomReward-1.0.0.jar to your server's Mods/ folder.
  2. Start the server β€” the default config auto-generates with 13 sample rewards.
  3. Use /randomreward admin to manage rewards in-game, or edit the JSON directly.
  4. /randomreward reload to apply config changes.

Configuration

The config file is generated automatically on first run.

General Settings

{
  "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"
  }
}
Field Description
Language Default language (en, ru, de, es, fr, pt_br)
EconomyProvider Economy API to use (ecotale or blank for auto-detect)
LevelProvider XP provider (rpgleveling, endlessleveling, or blank for auto-detect)
AutoOpenGuiOnJoin Open the board automatically on first daily login
GridRows / GridColumns Board size (1–6 each)
MinOnlineMinutes Minimum time online before claiming

Reward Entry Format

{
  "Id": "coins_jackpot",
  "DisplayName": "Jackpot!",
  "Type": "coins",
  "Coins": 2000.0,
  "Xp": 0,
  "Item": "",
  "Weight": 2,
  "Rarity": "legendary",
  "IconColor": "#ffaa00"
}
Field Description
Type Reward type: coins, xp, item, mixed
Coins Coin amount (for coins and mixed types)
Xp XP amount (for xp and mixed types)
Item Item ID in namespace:item:count format (for item and mixed types)
Weight Probability weight β€” higher = more likely to be picked
Rarity common, uncommon, rare, epic, legendary
IconColor Hex color for the tile display

Item Format

Items use Hytale's internal identifiers:

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

LuckPerms Integration

The plugin checks permissions in order: LuckPerms API β†’ HyperPerms β†’ permissions.json fallback.

Example setup:

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