Skip to content

lazydevl0per/HyRPGMod

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

6 Commits
 
 
 
 
 
 
 
 

Repository files navigation

HyRPG

A comprehensive RPG extension mod for Hytale servers that adds player leveling, mob scaling, and experience systems.

Features

Player Progression

  • Level System: Players can level up from 1 to 50
  • Experience Points: Gain experience by defeating mobs
  • Dynamic Experience Requirements: Experience needed per level scales with progression (100 + (level - 1) × 50)
  • Experience Bar UI: Visual experience bar displayed in the HUD

Mob Scaling

  • Dynamic Mob Levels: Mobs spawn with randomized levels based on their type
  • Configurable Level Ranges: Customize level ranges for each mob type via JSON configuration
  • Level-Based Experience: Higher level mobs grant more experience when defeated
  • Level Display: Mob levels are automatically displayed in nameplates above entities in the format [level], appearing near health bars

Systems

  • Mob Level System: Automatically assigns levels to mobs on spawn
  • Experience System: Calculates and awards experience based on mob level
  • Mob Level Nameplate System: Automatically updates entity nameplates to display mob levels
  • Component-Based Architecture: Built on Hytale's Entity Component System (ECS)

Requirements

  • Hytale Server: Compatible with Hytale server versions
  • Java: Java 25 or higher
  • Maven: For building the project

Installation

  1. Clone this repository:

    git clone <repository-url>
    cd HyRPGMod
  2. Build the project:

    maven package
  3. The compiled JAR will be automatically copied to your Hytale mods directory (configured in pom.xml)

  4. Start your Hytale server - the mod will load automatically

Configuration

Mob Level Ranges

Edit src/main/resources/mob_levels.json to configure level ranges for different mob types:

{
  "Frog": { "minLevel": 1, "maxLevel": 5 },
  "Bear_Grizzly": { "minLevel": 10, "maxLevel": 25 },
  "Dragon_Fire": { "minLevel": 30, "maxLevel": 50 }
}

Each mob type can have a custom minLevel and maxLevel. When a mob spawns, it will be assigned a random level within this range.

Experience Formula

The experience awarded for killing a mob is calculated as:

Experience = 20 + (Mob Level × 5)

Project Structure

HyRPGMod/
├── src/main/java/dev/crazzymods/
│   ├── components/
│   │   ├── LevelComponent.java          # Player level and experience tracking
│   │   └── MobLevelComponent.java       # Mob level component
│   ├── config/
│   │   ├── MobLevelRange.java           # Level range data class
│   │   └── MobTypeConfig.java           # Mob level configuration loader
│   ├── events/
│   │   ├── EnsurePlayerDataEvent.java   # Player data initialization
│   │   └── InitGUIEvent.java            # UI initialization
│   ├── systems/
│   │   ├── MobLevelSystem.java          # Assigns levels to mobs on spawn
│   │   ├── MobKillExperienceSystem.java # Awards experience on mob kills
│   │   └── MobLevelNameplateSystem.java  # Updates nameplates to display mob levels
│   ├── ui/
│   │   ├── ExperienceBar.java           # Experience bar UI component
│   │   └── ExperienceHudService.java    # HUD service for experience display
│   └── HyRPG.java                       # Main plugin class
├── src/main/resources/
│   ├── Common/UI/Custom/                # UI assets
│   ├── manifest.json                    # Mod manifest
│   └── mob_levels.json                  # Mob level configuration
└── pom.xml                              # Maven configuration

Development

Building from Source

  1. Ensure you have Maven installed
  2. Run mvn clean package to build the project
  3. The JAR file will be generated in target/ directory

Modifying Experience Formula

Edit the constants in MobKillExperienceSystem.java:

  • BASE_EXPERIENCE: Base experience awarded (default: 20)
  • EXPERIENCE_PER_LEVEL: Additional experience per mob level (default: 5)

Modifying Level Cap

Edit MAX_LEVEL in:

  • LevelComponent.java (player level cap)
  • MobLevelComponent.java (mob level cap)

API Usage

Accessing Player Level

LevelComponent levelComponent = commandBuffer.getComponent(
    playerRef, 
    LevelComponent.getComponentType()
);

int level = levelComponent.getLevel();
int currentExp = levelComponent.getCurrentExperience();
int neededExp = levelComponent.getNeededExperience();

Adding Experience

levelComponent.addExperience(amount);

Getting Mob Level

MobLevelComponent mobLevel = commandBuffer.getComponent(
    mobRef, 
    MobLevelComponent.getComponentType()
);

int mobLevelValue = mobLevel.getLevel();

Mob Level Display

Mob levels are automatically displayed in nameplates above entities. The level appears in the format [level] and is appended to any existing nameplate text. For example:

  • A mob with no existing nameplate will show: [5]
  • A mob named "Bear" with level 15 will show: Bear [15]

The nameplate system automatically:

  • Updates when mobs spawn with levels
  • Preserves existing nameplate text
  • Removes level information if the level component is removed

Version

Current version: 0.1-alpha

Contributing

Contributions are welcome! Please feel free to submit a Pull Request.

Author

CraZzyShaDoW

Support

For issues, questions, or feature requests, please open an issue on the repository.

About

No description or website provided.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages