File Details
MMOSkillTree-0.2.1.jar
- R
- Jan 18, 2026
- 146.30 KB
- 1.1K
- Early Access
File Name
MMOSkillTree-0.2.1.jar
Supported Versions
- Early Access
Changelog
v0.2.1
Bugfixes
- Fixed duplicate component error - Resolved
IllegalArgumentException: Entity contains component typecrash when multiple XP events fired in the same tick (e.g., breaking multiple blocks rapidly or combat with multiple hits)- Added pending component cache to prevent duplicate
addComponentcalls before CommandBuffer consumption
- Added pending component cache to prevent duplicate
v0.2.0
New Features
Reward Effect Framework - Pluggable system for reward effects with handler registry
RewardEffectHandlerinterface for all effect typesRewardEffectRegistrysingleton maps RewardType to handlersRewardEffectContextprovides store, ref, playerRef, skills to handlers
9 Implemented Reward Types - Beyond XP bonuses:
- STAT_HEALTH - Increases max health via Hytale's EntityStatMap
- STAT_STAMINA - Increases max stamina via EntityStatMap
- STAT_DAMAGE - Multiplies outgoing damage
- STAT_DEFENSE - Reduces incoming damage (capped at 90%)
- CRITICAL_CHANCE - Chance for 1.5x damage on attacks
- LIFESTEAL - Heals attacker for percentage of damage dealt
- DOUBLE_DROP - Chance for bonus resources when gathering
- FALL_DAMAGE_REDUCTION - Reduces fall damage (capped at 90%)
- BONUS_XP - Multiplies XP gain (existing)
Combat Effect Notifications - New settings toggle for lifesteal/crit feedback
- Toggle via Settings > Combat Effect Notifications
- Lifesteal shows green "+X.X" heal notification
- Saved per-player in SkillComponent
Hytale EntityStatMap Integration - Direct stat modification
StatModifierUtilhelper class for health/stamina modifiers- Uses
DefaultEntityStatTypes.getHealth()andgetStamina() StaticModifierwithModifier.ModifierTarget.MAXfor permanent bonuseshealEntity()for lifesteal healing
Expanded Skill Tree Defaults - 10 tiers with varied reward types
- Gathering skills: BONUS_XP, DOUBLE_DROP, STAT_STAMINA, STAT_DEFENSE, STAT_HEALTH
- Combat skills: BONUS_XP, STAT_DAMAGE, CRITICAL_CHANCE, LIFESTEAL, STAT_HEALTH
- Defense: STAT_DEFENSE, STAT_HEALTH, FALL_DAMAGE_REDUCTION
- Acrobatics: FALL_DAMAGE_REDUCTION (10%→40%), STAT_STAMINA, STAT_DEFENSE
Debug Starting Level - Config option for testing high-level gameplay
- Set
debugStartingLevelin config.json to initialize new players at that level - Set to 0 (default) for production
- Set
Technical
New
reward/package:RewardEffectHandler.java- Interface for effect handlersRewardEffectRegistry.java- Singleton registryRewardEffectContext.java- Context holderStatModifierUtil.java- Hytale stat integrationeffects/PassiveEffect.java- Base for passive effectseffects/StatHealthEffect.java- STAT_HEALTH handlereffects/StatStaminaEffect.java- STAT_STAMINA handlereffects/NoOpEffect.java- Placeholder for deferred types
CombatDamageEventSystem enhancements:
- Uses
DamageModule.get().getFilterDamageGroup()to modify damage before health loss applyAttackerEffects()- Damage bonus + critical chanceapplyDefenseReduction()- Defense damage reductionapplyFallDamageReduction()- Fall damage reductionapplyLifesteal()- Heal on damage with optional notification
- Uses
BreakBlockEventSystem enhancements:
checkDoubleDrops()- Random check for double drops- Notification when double drop triggers
SkillComponent additions:
showCombatEffectsboolean for combat notification preference- Codec entry for persistence
SkillTreeService additions:
getTotalLifesteal(),getTotalHealthBonus(),getTotalStaminaBonus()- Effect application on claim/reset
Upgrade Notes
Run /mmoconfig reloaddefaults after upgrading to load the new 10-tier skill trees with varied reward types.
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
/skilltreecommand 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
/skilltreeto claim
New Commands
/skilltree [skill]- Open the skill tree UI- Aliases:
/st,/rewards - Optional skill argument to jump to specific skill
- Aliases:
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 nameSkillTreeNode.java- Milestone with level threshold and reward choices
New config classes:
SkillTreeConfig.java- Singleton config for skill trees with JSON persistenceSkillTreeDefaults.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 actionsSkillTreePage.ui- Layout with 6 tiers, 2 choices each, navigation and reset buttons
Extended SkillComponent:
claimedRewards- Map of skill → claimed reward IDs per tierpendingRewards- Map of skill → pending milestone notificationsresetRewards(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(replacedDEAL_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
CraftRecipeEventSystemawards XP when crafting items - Building XP - New
PlaceBlockEventSystemawards 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- HandlesCraftRecipeEventfor crafting XP - New
event/PlaceBlockEventSystem.java- HandlesPlaceBlockEventfor 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 fromSkillDefaults.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 pluginscommand/- Command handlersconfig/- Configuration and defaultsdata/- Data models (SkillComponent, SkillType)event/- Event system handlersservice/- Business logicutil/- 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 datagetSkillComponent(PlayerRef)- Get full skill datagetXp(PlayerRef, SkillType)/getLevel(PlayerRef, SkillType)- Get specific skill datagetTotalXp(PlayerRef)/getTotalLevel(PlayerRef)- Get combined statsgetAllXp(PlayerRef)/getAllLevels(PlayerRef)- Get all skills as mapsaddXp(PlayerRef, SkillType, long)- Add XP (silent)removeXp(PlayerRef, SkillType, long)/setXp(PlayerRef, SkillType, long)- Modify XPgetLevelProgress(PlayerRef, SkillType)- Get progress to next level (0.0-1.0)calculateLevelFromXp(long)/getXpRequiredForLevel(int)- Utility methodshasSkillData(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
/mmoxpnow only shows skills with XP > 0 (cleaner display)- Plugin instance now accessed via
MMOSkillTreePlugin.getInstance()(singleton pattern) - Commands now extend
AbstractPlayerCommandwithPlayerRefparameter - 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
/xpdisplaycommand
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 settingson/off- Toggle XP gain messagesthreshold --value=<n>- Only show gains >= n XPstatus- View current settings
/mmoconfig(OP only) - Server configurationlist --args=<skill|all>- View XP configurations<skill> --args=<pattern|xp>- Set XP for block patternbasexp --args=<value>- Set base XP per levelscale --args=<multiplier>- Set leveling speedremove --args=<skill|pattern>- Remove block patternreload- 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

