Data Models
Detailed breakdowns of the core entities and data classes retrieved through the API.
Duel
Class: com.shyamstudio.shyamduels.duel.Duel
Represents an active matchmaking or challenged combat instance between players or teams:
getDuelId(): Returns the uniqueUUIDof the duel match.getMode(): Returns the activeQueueModeteam-size mode (e.g.ONE_V_ONE,TWO_V_TWO).getFightType(): ReturnsDuelFightType(e.g.,ONE_V_ONE,PARTY_SPLIT,PARTY_FFA).getArena(): Returns the Arena assigned to the match.getKit(): Returns the Kit layout applied to match players.getTeam1()/getTeam2(): Returns a list of playerUUIDs representing Team 1 and Team 2.getAliveTeam1()/getAliveTeam2(): Returns playerUUIDs still alive in the active round.getCurrentRound()/getMaxRounds(): Returns current round index and maximum round capacity.
Arena
Class: com.shyamstudio.shyamduels.arena.Arena
Represents a configured match environment:
getName(): Returns the case-insensitive name ID of the arena.getType(): Returns theArenaType:DUELorFFA.getStatus(): Returns the currentArenaStatus(e.g.AVAILABLE,IN_USE,REGENERATING).getOriginalName()/getTemplateName(): The original arena name / schematic template name (used for copied arenas).isCopy(): Returns true when the arena is a schematic copy of another arena.isBuildEnabled(): Returns true if the arena allows block placing/breaking.getSpawn1()/getSpawn2(): Spawn locations for players.getCorner1()/getCorner2(): The two boundary corner locations of the arena.getCenter(): Returns the center coordinate location of the arena boundaries.getFfaSpawns()/addFfaSpawn(Location): FFA spawn locations and registration.contains(Location)/clampInside(Location): Containment check and clamped-position helper.
Kit
Class: com.shyamstudio.shyamduels.kit.Kit
Represents a saved loadout template:
getName(): Returns the case-sensitive name ID of the kit.getDisplayName(): Returns the GUI display name of the kit.getInventory(): Returns theItemStack[]contents mapping inventory slots.getArmor(): Returns theItemStack[]array mapping armor layouts.getOffhand(): Returns the off-handItemStackof the kit.getEffects(): Returns the list ofPotionEffects applied when the kit is loaded.getBuildWhitelist(): Returns the list of materials whitelisted for block placing/breaking.isBuildEnabled()/isMatchStartPotionsEnabled()/isCraftingEnabled(): Kit-level toggles.getSaturation(): Saturation amount applied to players on start (0 to 20 scale).getQueueRounds(): The number of rounds used when the kit is played in the queue.
PlayerKit
Class: com.shyamstudio.shyamduels.kit.PlayerKit
Represents a player's edited (customized) version of a base kit, with its share metadata:
getPlayerUuid(): Owner'sUUID.getKitName(): Name of the base kit this edit belongs to.getInventory()/getArmor()/getOffhand(): The saved layout.getShareCode(): The unique share code for this edited kit, or null.getImportCount(): How many times other players have imported this kit.getCreatedAt()/getLastEdited(): Creation and last-edit timestamps (epoch millis).
PlayerStats
Class: com.shyamstudio.shyamduels.stats.PlayerStats
Represents cached player statistics:
getUuid(): Returns the player'sUUID.getElo(): Returns current ELO ranking values.getKills()/getDeaths(): Kills and deaths counts.getWins()/getLosses(): Wins and losses counts.getKillstreak()/getBestKillstreak(): Current streak and highest historical record.getWinstreak()/getBestWinstreak(): Current consecutive matchmaking victories and highest record.getKD(): Returns the kill/death ratio (returns kills when deaths is zero).getWL(): Returns the win/loss ratio (returns wins when losses is zero).getPlaytime(): Returns total tracked playtime in seconds.getPlaytimeHours(): Returns total tracked playtime rounded down to whole hours.getFormattedPlaytime(): Returns a human-readable playtime string (e.g.3h 24m).
KitStats
Class: com.shyamstudio.shyamduels.stats.KitStats
Represents cached per-player statistics for a specific kit loadout:
getElo(): Current ELO matchmaking rating for this kit (default 1000).getWins()/getLosses(): Match victories and defeats with this kit.getKills()/getDeaths(): Kills and deaths recorded using this kit.getKillstreak()/getBestKillstreak(): Current and all-time highest kill streaks with this kit.getWinstreak()/getBestWinstreak(): Current and all-time highest win streaks with this kit.getKD()/getWL(): Kill/Death and Win/Loss ratios formatted as decimals.getWinRate(): Win percentage with this kit.getGames(): Total matches played with this kit.
KitLeaderboardEntry
Class: com.shyamstudio.shyamduels.stats.KitLeaderboardEntry
Represents a ranked entry in a per-kit leaderboard query:
getPlayerUuid(): The player's uniqueUUID.getKitName(): The kit identifier for this leaderboard entry.getStats(): Returns the underlying KitStats data object.getElo()/getWins()/getLosses(): Direct getters for rating and match records.getKills()/getDeaths(): Direct getters for combat kills and deaths.getKillstreak()/getBestKillstreak()/getWinstreak()/getBestWinstreak(): Streak milestones.getKD()/getWL()/getWinRate()/getGames(): Computed ratio and match count metrics.
PlayerSettings
Class: com.shyamstudio.shyamduels.settings.PlayerSettings
Represents personal preference configuration options:
isScoreboard()/isTabList()/isNametags(): Visibility preference settings (returns boolean).isFriendRequests()/isDuelRequests(): Toggles indicating if the player is open to requests.isShareKits(): Whether the player has enabled "Share Edited Kits" (kit sharing).getWeatherPreference(): Personal weather overrides (Clear, Rain, Storm).getTimePreference(): Personal client-view time overrides (Day, Night).
Rank
Record: com.shyamstudio.shyamduels.stats.Rank
Represents an ELO-based competitive rank tier (defined under elo.ranks in the config):
id(): The rank identifier key.displayName(): Returns the display name of the rank.coloredName(): Returns the colored display name of the rank.minElo()/maxElo(): The inclusive ELO boundaries of the rank tier.lossMultiplier(): ELO loss multiplier applied to players in this tier.order(): Returns the sort order index (lower is a lower tier).
Static helpers: getRankForElo(int), getNextRank(Rank), getEloProgress(int), getEloNeeded(int), getProgressBar(int), getEloPercent(int), and getRanks().
QueueMode
Class: com.shyamstudio.shyamduels.queue.QueueMode
Represents a matchmaking team-size mode (e.g. 1v1, 2v2):
getTeamSize(): Returns the number of players per team.getTotalPlayers(): Returns the total players in a match (team size × 2).getDisplay(): Returns the display label (e.g.1v1,2v2).
QueueKey
Class: com.shyamstudio.shyamduels.queue.QueueKey
A composite key identifying a single matchmaking queue (kit + mode):
getKitName(): Returns the kit name for this queue.getMode(): Returns the associated QueueMode.
Party
Class: com.shyamstudio.shyamduels.party.Party
Represents a group of players queued and playing together:
getPartyId(): Returns the uniqueUUIDof the party.getOwner(): Returns the party leader'sUUID.getMembers(): Returns an unmodifiableSet<UUID>of all party members.getSize(): Returns the current member count.getState(): Returns the currentPartyState(e.g.IDLE,IN_DUEL).isInDuel(): Returns true when the party is currently in a duel.
CustomKit
Class: com.shyamstudio.shyamduels.customkits.data.CustomKit
Represents a player-built custom kit profile (available via customKits()):
getId(): Returns the kit's slot ID.getName(): Returns the player-assigned kit name.getHelmet(): Returns the helmetItemStackused as the kit icon.getSettings(): Returns theKitSettingsapplied to the kit.
KitShareManager.ShareRef
Record: com.shyamstudio.shyamduels.kit.KitShareManager.ShareRef
A resolved reference to a shared kit, returned by KitShareService.resolve(code):
ownerId(): The owning player'sUUID.type(): TheKitShareManager.KitType:EDITED(base-kit edit) orCUSTOM(player-built kit).kitName(): Kit name (used forEDITEDkits).kitId(): Kit slot ID (used forCUSTOMkits;-1for edited kits).