Skip to main content

API Reference

KS Dungeons provides a public API for other mods to integrate with.

Access

DungeonsAPI api = DungeonsAPI.getInstance();
if (DungeonsAPI.isAvailable()) {
// KS Dungeons is loaded and ready
}

KS Dungeons requires Core — if Core is present, the API is always available:

try {
Class<?> apiClass = Class.forName("com.kyuubisoft.dungeons.api.DungeonsAPI");
Method getInstance = apiClass.getMethod("getInstance");
Object api = getInstance.invoke(null);
// Use reflection to call methods
} catch (ClassNotFoundException e) {
// KS Dungeons not installed
}

Dungeon Instances

MethodReturnsDescription
createInstance(biome, difficulty)DungeonInstanceCreate a new dungeon instance
getInstance(instanceId)DungeonInstanceGet instance by ID
getActiveInstances()List<DungeonInstance>All running instances
stopInstance(instanceId)booleanForce-stop an instance
getPlayerInstance(playerUuid)DungeonInstanceGet the instance a player is currently in
isInDungeon(playerUuid)booleanCheck if player is in a dungeon

Party Management

MethodReturnsDescription
createParty(leaderUuid)DungeonPartyCreate a new party
getParty(partyId)DungeonPartyGet party by ID
getPlayerParty(playerUuid)DungeonPartyGet a player's current party
disbandParty(partyId)booleanDisband a party
inviteToParty(partyId, playerUuid)booleanSend a party invite
joinParty(partyId, playerUuid)booleanAdd player to party
leaveParty(playerUuid)booleanRemove player from party
isInParty(playerUuid)booleanCheck if player is in a party

Scoring & Stats

MethodReturnsDescription
getPlayerStats(playerUuid)DungeonStatsGet player's dungeon statistics
getLeaderboard(biome, difficulty, limit)List<LeaderboardEntry>Get top scores
getPersonalBest(playerUuid, biome, difficulty)intGet personal best score
getTotalClears(playerUuid)intTotal dungeon completions
getTotalClears(playerUuid, biome)intCompletions for a specific biome

Token Economy

MethodReturnsDescription
getTokens(playerUuid)intGet player's token balance
addTokens(playerUuid, amount)booleanAdd tokens to player
removeTokens(playerUuid, amount)booleanRemove tokens from player
hasTokens(playerUuid, amount)booleanCheck if player has enough tokens

Biome & Configuration

MethodReturnsDescription
getBiomes()List<DungeonBiome>All registered biomes
getBiome(biomeId)DungeonBiomeGet biome by ID
getDifficulties()List<Difficulty>All difficulty tiers
getModifiers()List<Modifier>All registered modifiers

Events

DungeonsAPI.getInstance().registerDungeonStartListener(event -> {
String biome = event.biomeId();
String difficulty = event.difficulty();
List<UUID> players = event.players();
// Dungeon run started
});

DungeonsAPI.getInstance().registerDungeonCompleteListener(event -> {
int score = event.score();
int tokensEarned = event.tokensEarned();
// Dungeon run completed successfully
});

DungeonsAPI.getInstance().registerDungeonFailListener(event -> {
// Dungeon run failed (out of lives or timeout)
});

DungeonsAPI.getInstance().registerBossKillListener(event -> {
String bossId = event.bossId();
String biome = event.biomeId();
// Boss was defeated
});

Example: Season Pass Integration

// Award bonus tokens when a season pass challenge is completed
DungeonsAPI.getInstance().registerDungeonCompleteListener(event -> {
for (UUID player : event.players()) {
if (event.difficulty().equals("MYTHIC")) {
// Bonus tokens for mythic clears
DungeonsAPI.getInstance().addTokens(player, 100);
}
}
});

Example: VoiceHub Integration

// Automatically create a voice channel for dungeon parties
DungeonsAPI.getInstance().registerDungeonStartListener(event -> {
if (VoiceHubAPI.isAvailable() && event.players().size() > 1) {
UUID leader = event.partyLeader();
VoiceChannel ch = VoiceHubAPI.getInstance()
.createChannel("Dungeon: " + event.biomeId(), ChannelType.GROUP, leader);
for (UUID member : event.players()) {
VoiceHubAPI.getInstance().joinChannel(member, ch.getId(), null);
}
}
});