Leveling API

Overview

The leveling system supports multiple independent progression tracks, each with configurable rewards, costs, and progression mechanics. Players can advance through various skill trees, unlock abilities, and receive rewards at specific milestones.


Level Management

Player Level Operations

void setLevel(UUID uuid, String levelId, double level)

  • Description: Sets a player's level in a specific leveling track

  • Parameters:

    • uuid - Player's unique identifier

    • levelId - Leveling track identifier

    • level - Level to set (can be fractional)

  • Usage: Administrative level setting, progression resets, initialization

double getLevel(UUID uuid, String levelId)

  • Description: Gets a player's current level in a leveling track

  • Parameters:

    • uuid - Player's unique identifier

    • levelId - Leveling track identifier

  • Returns: Current level (with decimal precision)

  • Usage: Display progression, requirement checking, calculation inputs

void addLevel(UUID uuid, String levelId, double level)

  • Description: Increases a player's level in a leveling track

  • Parameters:

    • uuid - Player's unique identifier

    • levelId - Leveling track identifier

    • level - Levels to add (can be fractional)

  • Usage: Reward progression, experience gains, level advancement

void removeLevel(UUID uuid, String levelId, double level)

  • Description: Decreases a player's level in a leveling track

  • Parameters:

    • uuid - Player's unique identifier

    • levelId - Leveling track identifier

    • level - Levels to remove (can be fractional)

  • Usage: Penalties, level loss mechanics, rebalancing


Level Configuration

Validation and Properties

boolean isLevel(String level)

  • Description: Checks if a leveling track exists in the system

  • Parameters: level - Leveling track identifier to validate

  • Returns: True if the leveling track is configured

  • Usage: Input validation, configuration checking

double getStartingLevel(String level)

  • Description: Gets the starting level for new players in this track

  • Parameters: level - Leveling track identifier

  • Returns: Initial level value

  • Usage: New player initialization, reset operations

boolean isAutomaticLeveling(String level)

  • Description: Checks if this leveling track auto-levels when requirements are met

  • Parameters: level - Leveling track identifier

  • Returns: True if automatic leveling is enabled

  • Usage: Determine if manual leveling is required, UI decisions

String getLevelName(String level)

  • Description: Gets the display name for a leveling track

  • Parameters: level - Leveling track identifier

  • Returns: Human-readable name for the leveling track

  • Usage: User interfaces, progression displays, notifications


Reward System

Reward Types

List<String> getForEachRewards(String level)

  • Description: Gets rewards given for every level gained in this track

  • Parameters: level - Leveling track identifier

  • Returns: List of reward commands/actions

  • Usage: Consistent progression rewards, per-level bonuses

Map<Double, List<String>> getIntervalRewards(String level)

  • Description: Gets rewards given at specific level intervals

  • Parameters: level - Leveling track identifier

  • Returns: Map of interval levels to reward lists

  • Usage: Milestone rewards, periodic bonuses (every 5 levels, etc.)

Map<Double, List<String>> getSpecificRewards(String level)

  • Description: Gets rewards given at specific exact levels

  • Parameters: level - Leveling track identifier

  • Returns: Map of specific levels to reward lists

  • Usage: Special milestone rewards, unlock achievements


Usage Examples

Basic Level Management

EdDungeonsLevelingAPI levelingAPI = EdDungeonsAPI.getInstance().getLevelingAPI();
UUID playerUUID = player.getUniqueId();

// Check player's current level
double swordLevel = levelingAPI.getLevel(playerUUID, "sword_mastery");
player.sendMessage("§6Sword Mastery Level: §f" + swordLevel);

// Add levels as rewards
levelingAPI.addLevel(playerUUID, "sword_mastery", 1.5);
player.sendMessage("§a+1.5 Sword Mastery levels!");

// Check if it's an automatic leveling system
boolean isAuto = levelingAPI.isAutomaticLeveling("sword_mastery");
if (!isAuto) {
    player.sendMessage("§eUse /swordmastery to level up!");
}

Last updated

Was this helpful?