Repository navigation
API Server
MKI edited this page Oct 17, 2026
·
1 revision
com.mki.partylink.api.PartyLinkApi – all methods are static. See API overview for setup, threading and PartyActionResult.
| 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 |
| 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 |
| 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 |
| 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."));
}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– lowercasea-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));PartyLink by MKI · Documentation for version 2.0.0 · Changelog
Players
Server owners
Developers