ClassesCore
ClassesCore
Classes sub mod for the LevelingCore mod.
56
0
LibraryGame MechanicsAdventure

Developer API

Updated Apr 23, 2026

This page explains how to include ClassesCore as a dependency in your Hytale plugin using Gradle and the AzureDoom Maven repository.

Adding the Maven Repository

ClassesCore is hosted on the AzureDoom Maven. Add the following repositories block to your build.gradle file:

repositories {
    maven {
        name = "azuredoomMods"
        url = uri("https://maven.azuredoom.com/mods")
    }
}

Adding ClassesCore as a Dependency

Once the repository is added, include ClassesCore as a dependency:

dependencies {
    implementation("com.azuredoom.classescore:Classescore:0.+")
}

Now in your mods/plugins manifest.json add "com.azuredoom:classescore": "*" to either Dependencies to set as hard or OptionalDependencies if you are adding integration like so:

{
    // rest of manifest.json
    "Dependencies": {
        "com.azuredoom:classescore": "*"
    },
    "OptionalDependencies": {
        "com.azuredoom:classescore": "*"
    },
    // rest of manifest.json
}

Using the API

Sometimes you may want to directly access the underlying services.

Getting the Class Service

ClassesCoreAPI.getClassServiceIfPresent().ifPresent(service -> {
    // interact with ClassServiceImpl
});

Getting the Class Registry

ClassesCoreAPI.getClassRegistryIfPresent().ifPresent(registry -> {
    registry.all().forEach(classDef -> {
        System.out.println(classDef.id());
    });
});

Getting All Registered Classes

Collection<ClassDefinition> classes = ClassesCoreAPI.getClasses();

for (ClassDefinition classDef : classes) {
    System.out.println(classDef.id());
}

Getting a Specific Class Definition

ClassesCoreAPI.getClassDefinition("mage").ifPresent(classDef -> {
    System.out.println("Class name: " + classDef.id());
});

Checking If a Class Exists

boolean exists = ClassesCoreAPI.hasClass("warrior");

if (exists) {
    System.out.println("Class exists!");
}

Check if a Player Has a Class

UUID playerId = player.getUuid();

if (ClassesCoreAPI.playerHasClass(playerId)) {
    System.out.println("Player has a class selected.");
}

Get Player Class State

ClassesCoreAPI.getPlayerState(playerId).ifPresent(state -> {
    System.out.println("Selected class ID: " + state.classId());
});

Get Selected Class ID

ClassesCoreAPI.getSelectedClassId(playerId).ifPresent(classId -> {
    System.out.println("Player class ID: " + classId);
});

Get the Selected Class Definition

ClassesCoreAPI.getSelectedClass(playerId).ifPresent(classDef -> {
    System.out.println("Player class: " + classDef.id());
});

Selecting a Class

UUID playerId = player.getUuid();

boolean success = ClassesCoreAPI.selectClass(playerId, "mage");

if (success) {
    System.out.println("Class selected successfully!");
} else {
    System.out.println("Failed to select class.");
}

This method will fail if:

  • The class ID is null or blank
  • The class does not exist
  • The service is unavailable

Clearing a Player Class

UUID playerId = player.getUuid();

boolean success = ClassesCoreAPI.clearClass(playerId, "mage");

if (success) {
    System.out.println("Class cleared.");
}

Checking Weapon Usage

boolean canUse = ClassesCoreAPI.canUseWeapon(playerId, "diamond_sword");

if (!canUse) {
    System.out.println("Your class cannot use this weapon.");
}

Checking Armor Usage

boolean canUse = ClassesCoreAPI.canUseArmor(playerId, "diamond_chestplate");

if (!canUse) {
    // Deny armor usage
}

Display Player Class

ClassesCoreAPI.getSelectedClass(player.getUuid()).ifPresentOrElse(
    classDef -> {
        System.out.println("Your class: " + classDef.id());
    },
    () -> {
        System.out.println("You do not have a class selected.");
    }
);

Best Practices

Prefer Optional Handling

Avoid calling .get() on Optionals.

Use:

ifPresent()
ifPresentOrElse()
map()
orElse()

Validate Class IDs

Always ensure the class exists before using it.

if (ClassesCoreAPI.hasClass(classId)) {
    ClassesCoreAPI.selectClass(playerId, classId);
}

Use API Instead of Internal Services

External plugins should always use ClassesCoreAPI instead of directly referencing services.

This ensures:

  • Stability
  • Compatibility
  • Safe initialization handling
Powered byHytaleModding