Skip to content

API Server

MKI edited this page Oct 17, 2026 · 1 revision

Server API – PartyLinkApi

com.mki.partylink.api.PartyLinkApi – all methods are static. See API overview for setup, threading and PartyActionResult.

Queries (online players)

Method Returns
isInParty(ServerPlayer) boolean
getParty(ServerPlayer) Optional<PartyView>
getPartyMembers(ServerPlayer) List<UUID> – all members incl. offline and the player
getOnlinePartyMembers(ServerPlayer) List<ServerPlayer> – online members incl. the player
areInSameParty(ServerPlayer, ServerPlayer) boolean
isOwner(ServerPlayer) / isManager(ServerPlayer) boolean
canInvite(ServerPlayer) boolean – also true when not in a party
getRole(ServerPlayer) PartyRole (OWNER, MANAGER, MEMBER, NONE)
getPartySize(ServerPlayer) int (0 when not in a party)
getMaxPartySize() int – server config
isSharedXpEnabled(ServerPlayer) boolean – server allows it and the party has it on
getSharedXpMode(ServerPlayer) PartyShareMode (RADIUS, SAME_WORLD, ALL_WORLDS)
getSharedXpRadius(ServerPlayer) int
getSharedXpTargets(ServerPlayer) List<ServerPlayer> – who would receive XP collected by this player now
canPartyMembersDamage(ServerPlayer attacker, ServerPlayer victim) boolean – includes PARTY_DAMAGE listeners
isPartyPvpProtectionEnabled(ServerPlayer) boolean
isPartyChatToggled(ServerPlayer) (since 2) boolean – /pc mode is on
getTeleportCooldownSeconds(ServerPlayer) (since 2) long – 0 when ready

Queries by id (since 2, also for offline players)

Method Returns
getPartyOf(MinecraftServer, UUID playerId) Optional<PartyView>
getPartyById(MinecraftServer, UUID partyId) Optional<PartyView>
getAllParties(MinecraftServer) List<PartyView>
getOnlineMembers(MinecraftServer, UUID partyId) List<ServerPlayer>
areInSameParty(MinecraftServer, UUID, UUID) boolean

PartyView

Method Description
id() Party UUID, stable across restarts
ownerId(), memberIds(), managerIds() Member UUIDs (online and offline)
size(), maxSize() Current and maximum size
name() (2) Party name or ""
isPublic() (2) Public party
data(), getData(key) (2) Custom data (see below)
contains(uuid), isOwner(uuid), isManager(uuid), roleOf(uuid) Helpers

Party control (since 2)

Method Description
createParty(ServerPlayer owner, String name) Create a party with only owner. name may be ""
invite(ServerPlayer inviter, ServerPlayer target) Normal invite with chat buttons
addMember(MinecraftServer, UUID partyId, ServerPlayer) Add without invite; the player leaves their old party
removeMember(MinecraftServer, UUID partyId, UUID playerId) Kick (also offline players); ALLOW_KICK gets actorId = null
leave(ServerPlayer) Like /party leave
setRole(MinecraftServer, UUID partyId, UUID playerId, PartyRole) MANAGER/MEMBER promote/demote, OWNER transfers ownership
disband(MinecraftServer, UUID partyId) Disband
rename(MinecraftServer, UUID partyId, String name) Max. 24 chars, color codes removed, must be unique; "" clears
setPublic(MinecraftServer, UUID partyId, boolean) DISABLED if the server forbids public parties
sendPartyMessage(MinecraftServer, UUID partyId, Component) System message to all online members
sendPartyChat(ServerPlayer sender, String message) Like /pc <message>
ping(ServerPlayer sender, PartyPingType, double x, double y, double z) Ping a position in the sender's dimension; no cooldown
shareExperience(ServerPlayer source, int amount) Split amount XP between the source's share targets
// Put two players into a new named party
PartyLinkApi.createParty(leader, "Raid Group");
PartyView party = PartyLinkApi.getParty(leader).orElseThrow();
PartyActionResult result = PartyLinkApi.addMember(server, party.id(), helper);
if (result == PartyActionResult.PARTY_FULL) {
    helper.sendSystemMessage(Component.literal("That party is full."));
}

Custom party data (since 2)

Mods can store their own values on a party. The data is saved with the party, visible in PartyView.data(), removed when the party is disbanded, and triggers DATA_CHANGED.

Method Description
getPartyData(MinecraftServer, UUID partyId, String key) Optional<String>
setPartyData(MinecraftServer, UUID partyId, String key, String value) value = null removes the key
removePartyData(MinecraftServer, UUID partyId, String key) Remove a key

Rules:

  • Keys must look like namespace:path – lowercase a-z 0-9 _ . -, the path may also contain /. Use your mod id as namespace.
  • Values are strings, max. 8192 characters. Store numbers or JSON as text.
  • Max. 64 keys per party. Breaking a rule returns INVALID.
UUID partyId = PartyLinkApi.getParty(player).orElseThrow().id();
int kills = PartyLinkApi.getPartyData(server, partyId, "mymod:boss_kills").map(Integer::parseInt).orElse(0);
PartyLinkApi.setPartyData(server, partyId, "mymod:boss_kills", Integer.toString(kills + 1));

Clone this wiki locally