promotional bannermobile promotional banner

MMO Skill Tree & Abilities

(Multiple Languages) MMO Skill Tree adds an RPG-style progression system where every action you take helps you grow stronger.

File Details

MMOSkillTree-0.1.1.jar

  • R
  • Jan 18, 2026
  • 129.68 KB
  • 1.5K
  • Early Access

File Name

MMOSkillTree-0.1.1.jar

Supported Versions

  • Early Access

Changelog

v0.1.1

New Features

  • Settings Page - New in-game settings UI accessible via the Settings tab on ViewXpPage

    • Toggle XP notifications on/off with a single click
    • Choose XP gain threshold from preset values (1, 5, 10, 25, 50, 100)
    • Visual feedback for current settings state
    • Back button to return to skill overview
  • Expanded Skill Tree Defaults - All 12 implemented skills now have 6 tiers of rewards

    • Previously some skills had only 2-4 tiers
    • Consistent progression across Mining, Woodcutting, Excavation, Harvesting, Swords, Axes, Archery, Unarmed, Defense, Acrobatics, Crafting, and Building
    • Updated skill pairings for meaningful choices (Harvesting now pairs with Excavation/Crafting instead of unimplemented Cooking/Alchemy)
  • Dynamic Skill Tree UI - Skill tree page now uses template-based dynamic rendering

    • Automatically scales to display any number of tiers
    • Improved visual styling with larger fonts and clearer status indicators

Upgrade Notes

Important: After upgrading to v0.1.1, run /mmoconfig reloaddefaults to load the new 6-tier defaults for all skills. This will reset your skill tree configuration to the new defaults.


v0.1.0

New Features

  • Skill Tree System - Unlock XP bonus rewards at level milestones

    • 6 tiers per skill, unlocked at levels 5, 10, 15, 20, 30, 40
    • Each tier offers a choice between XP bonus for the main skill OR a related skill
    • Example: Mining tier lets you choose +5% Mining XP OR +5% Excavation XP
    • Rewards persist across sessions via ECS component
  • Meaningful Reward Choices - Each skill pairs with thematically related skills: (TEMPORARY UNTIL MORE COMPLEX IMPLEMENTATION)

    • Mining ↔ Excavation, Smithing
    • Woodcutting ↔ Building, Crafting
    • Excavation ↔ Mining, Harvesting
    • Harvesting ↔ Cooking, Alchemy
    • Swords ↔ Defense, Axes
    • Axes ↔ Swords, Woodcutting
    • Archery ↔ Crafting, Acrobatics
    • Unarmed ↔ Acrobatics, Defense
    • Defense ↔ Acrobatics, Swords
    • Acrobatics ↔ Defense, Unarmed
    • Crafting ↔ Mining, Smithing
    • Building ↔ Woodcutting, Crafting
  • Skill Tree UI (SkillTreePage)

    • Navigate between skills with arrow buttons
    • Shows tier status: LOCKED (gray), AVAILABLE (white), or CLAIMED (green)
    • Color-coded buttons show selection state
    • Reset button to clear all selections for current skill
    • Opens via /skilltree command or Tree button on ViewXpPage
  • ViewXpPage Enhancement - Added "Tree" button next to each skill to jump directly to its skill tree

  • Bonus XP System - Claimed BONUS_XP rewards apply multiplicatively to XP gains

    • Stack bonuses from multiple tiers for compounding effect
  • Milestone Notifications - Players notified when new tiers unlock

    • Automatic detection when leveling up
    • Prompts players to use /skilltree to claim

New Commands

  • /skilltree [skill] - Open the skill tree UI
    • Aliases: /st, /rewards
    • Optional skill argument to jump to specific skill

Configuration

  • New config file: config/mmoskilltree/skilltree.json
    • Configurable level thresholds per tier
    • Per-skill reward choices with custom values
    • Currently supports BONUS_XP reward type (other types defined but not yet implemented)

Technical

  • New data classes:

    • RewardType.java - Enum of reward types (BONUS_XP implemented, others placeholder)
    • SkillReward.java - Configurable reward with id, type, value, display name
    • SkillTreeNode.java - Milestone with level threshold and reward choices
  • New config classes:

    • SkillTreeConfig.java - Singleton config for skill trees with JSON persistence
    • SkillTreeDefaults.java - Default rewards with meaningful skill pairings
  • New service:

    • SkillTreeService.java - Milestone checking, reward claiming, XP multiplier calculations
  • New UI:

    • SkillTreePage.java - Interactive page with claim/reset/navigate actions
    • SkillTreePage.ui - Layout with 6 tiers, 2 choices each, navigation and reset buttons
  • Extended SkillComponent:

    • claimedRewards - Map of skill → claimed reward IDs per tier
    • pendingRewards - Map of skill → pending milestone notifications
    • resetRewards(skill) / resetAllRewards() - Clear claimed rewards
    • String serialization for codec compatibility
  • Extended MMOSkillTreeAPI:

    • updateSkillComponent(PlayerRef, SkillComponent) - Explicit update hook
  • Modified SkillService:

    • Integrated milestone checks on XP gain
    • Applies bonus XP multiplier from claimed rewards

v0.0.11

New Features

  • Combat XP System - Full implementation of combat skills via CombatDamageEventSystem

    • SWORDS - XP for melee damage with longswords, daggers, spears, claws, staves
    • AXES - XP for melee damage with axes, clubs, maces, battleaxes
    • ARCHERY - XP for ranged damage with bows, crossbows, wands, spellbooks, guns, bombs
    • UNARMED - XP for dealing damage without weapons
    • DEFENSE - XP for taking damage from any source
    • ACROBATICS - XP for surviving fall damage
  • Material-Tiered XP Values - Rare weapons give more XP than common ones

    • Common (Crude, Copper, Tribal): 5-6 XP
    • Uncommon (Iron, Bronze, Scrap): 7-9 XP
    • Rare (Cobalt, Adamantite, Thorium): 20-32 XP
    • Epic (Mithril, Onyxium): 45-55 XP
    • Legendary (Flame, Void, Spectral): 55-70 XP
  • New Skills (in SkillType enum, not yet implemented)

    • FISHING, TAMING, REPAIR, ALCHEMY, ENCHANTING, COOKING, SMITHING

Technical

  • Separate defaults files for maintainability:
    • SwordsDefaults.java - Longswords, daggers, spears, staves (melee)
    • AxesDefaults.java - Axes, clubs, maces (blunt weapons)
    • ArcheryDefaults.java - Bows, crossbows, wands, spellbooks, guns, bombs
  • SkillDefaults.java now delegates to per-skill defaults files
  • New TriggerTypes: DEAL_DAMAGE_PHYSICAL, DEAL_DAMAGE_PROJECTILE (replaced DEAL_DAMAGE)
  • Weapon detection uses inventory.getActiveHotbarItem().getItemId() for pattern matching
  • Patterns match actual item IDs (e.g., Weapon_Longsword_Mithril, Weapon_Axe_Iron)

v0.0.10

New Features

  • Crafting XP - New CraftRecipeEventSystem awards XP when crafting items
  • Building XP - New PlaceBlockEventSystem awards XP when placing blocks
  • CRAFTING skill - New general crafting skill type (15 XP per craft by default)
  • BUILDING skill defaults - Placing blocks now awards XP at 50% of the breaking value (e.g., placing stone = 2 XP vs mining stone = 3 XP)

Technical

  • New event/CraftRecipeEventSystem.java - Handles CraftRecipeEvent for crafting XP
  • New event/PlaceBlockEventSystem.java - Handles PlaceBlockEvent for building XP
  • SkillDefaults.getBuildingDefaults() dynamically computes values from mining/woodcutting/excavation at 50%

v0.0.9

New Features

  • Quick threshold commands - Set XP display threshold with /xpd 10, /xpd 20, /xpd 0, etc.

Bugfixes

  • Progress bar display - Fixed progress bar rendering in skill UI

v0.0.8

Bugfixes

  • /mmoconfig reloaddefaults - Now properly saves config after reloading defaults (previously only applied in-memory)

Changes

  • Enhanced notifications - XP gain and level up messages now use the notification system instead of chat messages for better visibility

v0.0.7

New Features

  • ViewXpPage - New custom UI page for viewing skill stats
    • Shows total level, total XP, and number of active skills
    • Displays individual skill progress for all configured skills
    • Only shows skills with XP configuration data (unconfigured skills hidden)
    • Open via player.getPageManager().setPage(ref, store, new ViewXpPage(playerRef))

Technical

  • New pages/ package for custom UI pages
  • UI files in src/main/resources/Common/UI/Custom/Pages/
  • Updated CLAUDE.md with UI page documentation and naming conventions

v0.0.6

New Features

  • /mmoconfig reloaddefaults - New admin command to reset all XP values to built-in defaults from SkillDefaults.java

v0.0.5

New Features

  • Comprehensive default XP values for all Hytale blocks based on official item database
    • Mining: 10+ rock types, 9 ore tiers (Copper→Onyxium), 7 gem types
    • Woodcutting: 30+ tree types across 5 tiers (Common→Special)
    • Excavation: All soil types including grass, sand, mud, snow, ash
    • Harvesting: Grass, ferns, bushes, flowers, crops, fruits, coral, vines
  • PickupItemEventSystem - Awards XP when picking up items

Changes

  • Professional package structure - Reorganized codebase:
    • api/ - Public API for other plugins
    • command/ - Command handlers
    • config/ - Configuration and defaults
    • data/ - Data models (SkillComponent, SkillType)
    • event/ - Event system handlers
    • service/ - Business logic
    • util/ - Utility classes
  • SkillDefaults.java - Centralized default XP values (separated from config)
  • Updated import paths: com.ziggfreed.mmoskilltree.api.MMOSkillTreeAPI, com.ziggfreed.mmoskilltree.data.SkillType

v0.0.4

Bugfixes

  • Fixed issue with "harvesting" blocks not rewarding xp

v0.0.3

New Skills

New skills added for developers to access via API

New Features

  • Public API (MMOSkillTreeAPI) for other plugins to access player skill data
    • getSkillComponent(PlayerRef) - Get full skill data
    • getXp(PlayerRef, SkillType) / getLevel(PlayerRef, SkillType) - Get specific skill data
    • getTotalXp(PlayerRef) / getTotalLevel(PlayerRef) - Get combined stats
    • getAllXp(PlayerRef) / getAllLevels(PlayerRef) - Get all skills as maps
    • addXp(PlayerRef, SkillType, long) - Add XP (silent)
    • removeXp(PlayerRef, SkillType, long) / setXp(PlayerRef, SkillType, long) - Modify XP
    • getLevelProgress(PlayerRef, SkillType) - Get progress to next level (0.0-1.0)
    • calculateLevelFromXp(long) / getXpRequiredForLevel(int) - Utility methods
    • hasSkillData(PlayerRef) / getSkillTypes() - Helper methods
  • New skill category: Misc (for Building and future utility skills)
  • New trigger types: PLACE_BLOCK, FALL_DAMAGE, TAME_ENTITY, CATCH_FISH

Changes

  • /mmoxp now only shows skills with XP > 0 (cleaner display)
  • Plugin instance now accessed via MMOSkillTreePlugin.getInstance() (singleton pattern)
  • Commands now extend AbstractPlayerCommand with PlayerRef parameter
  • Internal services use API for cache access (DRY principle)
  • Consistent cache keying via PlayerRef.hashCode()

v0.0.2

Changes

  • Changed default XP gain threshold for message display from 0 to 10
  • Fixed permission issue with /xpdisplay command

v0.0.1 - Initial Release

Skills

  • Mining - Gain XP from breaking stone and ores
  • Woodcutting - Gain XP from chopping trees and logs
  • Excavation - Gain XP from digging soil and dirt
  • Harvesting - Gain XP from harvesting plants and crops

Features

  • Quadratic XP scaling formula for balanced progression
  • Per-player XP display preferences (toggle on/off, set minimum threshold)
  • Persistent player data via ECS component codec
  • JSON config file with hot-reload support
  • Pattern-based block matching for flexible XP configuration

Commands

  • /mmoxp - View your skill levels and XP progress
  • /xpdisplay - Configure personal XP notification settings
    • on / off - Toggle XP gain messages
    • threshold --value=<n> - Only show gains >= n XP
    • status - View current settings
  • /mmoconfig (OP only) - Server configuration
    • list --args=<skill|all> - View XP configurations
    • <skill> --args=<pattern|xp> - Set XP for block pattern
    • basexp --args=<value> - Set base XP per level
    • scale --args=<multiplier> - Set leveling speed
    • remove --args=<skill|pattern> - Remove block pattern
    • reload - Reload config from file

Technical

  • Dynamic skill system - adding new skills only requires enum entry + defaults
  • TriggerType system for future event handlers (combat, crafting, etc.)
  • Thread-safe skill caching for command access
  • Auto-generates config on first launch