The PartyAPI plugin provides a simple and easy-to-use API for creating and managing parties in PocketMine-MP. By using the PartyAPI methods, you can easily create and manage parties in your PocketMine-MP server.
- Example Plugin: PartyAPI Example
The PartyAPI plugin provides a simple API for creating and managing parties. You can use the following methods:
$partyAPI = PartyAPI::getInstance();$partyAPI->createParty(Player $leader): Party$partyAPI->removeParty(Party $party): void$partyAPI->getPartyByLeader(Player $leader): ?Party$partyAPI->invitePlayer(Party $party, Player $sender, Player $player): void$partyAPI->acceptInvite(Player $player, Player $sender): void$partyAPI->removePlayer(Party $party, Player $player): void- Returns the party that the specified player is a member of, or null if the player is not in a party.
$partyAPI->getPlayerParty(Player $player): ?PartyTo create a party, simply call the createParty() method with the player you want to be the leader of the party:
$partyAPI = PartyAPI::getInstance();
$leader = $player; // Replace this with the player you want to be the leader of the party
$party = $partyAPI->createParty($leader);This will create a new party with the specified player as the leader, and return the party object.
To invite a player to a party, call the invitePlayer() method with the party, the player sending the invitation, and the player being invited:
$partyAPI = PartyAPI::getInstance();
$party = $partyAPI->getPartyByLeader($leader); // Replace $leader with the leader of the party
$sender = $playerSendingInvite; // Replace $playerSendingInvite with the player sending the invitation
$invitee = $playerBeingInvited; // Replace $playerBeingInvited with the player being invited
$partyAPI->invitePlayer($party, $sender, $invitee);This will send an invitation to the specified player on behalf of the sender to join the specified party.
To accept an invitation to join a party, call the acceptInvite() method with the player accepting the invitation and the player who sent the invitation:
$partyAPI = PartyAPI::getInstance();
$player = $playerAcceptingInvite; // Replace $playerAcceptingInvite with the player accepting the invitation
$sender = $playerWhoSentInvite; // Replace $playerWhoSentInvite with the player who sent the invitation
$partyAPI->acceptInvite($player, $sender);This will add the specified player to the party led by the sender if an invitation from the sender exists.
To remove a player from a party, call the removePlayer() method with the party and the player to be removed:
$partyAPI = PartyAPI::getInstance();
$party = $partyAPI->getPlayerParty($player); // Replace $player with the player to be removed
$playerToRemove = $player; // Replace $player with the player to be removed
$partyAPI->removePlayer($party, $playerToRemove);This will remove the specified player from the specified party.
To get an array of all parties, call the getParties() method:
$partyAPI = PartyAPI::getInstance();
$parties = $partyAPI->getParties();This will return an array of all parties.
To get the party that a player is a member of, call the getPlayerParty() method with the player:
$partyAPI = PartyAPI::getInstance();
$player = $playerToCheck; // Replace $playerToCheck with the player to check the party membership for
$party = $partyAPI->getPlayerParty($player);This will return the party that the specified player is a member of, or null if the player is not in a party.
This is an example from my practice-core
public function sendToNodebuffFFA(Player $player) {
$party = PartyAPI::getInstance()->getPlayerParty($player);
if ($party !== null) {
if ($party->getLeader() === $player) {
$worldManager = Server::getInstance()->getWorldManager();
$world = $worldManager->getWorldByName("nodebuff"); //nodebuff world example
if ($world === null) {
$player->sendMessage(TextFormat::RED . "The world 'nodebuff' does not exist.");
return;
}
$members = $party->getMembers();
$sentPlayers = [];
foreach ($members as $member) {
if ($member->getWorld()->getFolderName() !== "nodebuff") { // nodebuff world example
$member->teleport($world->getSpawnLocation());
$this->giveNodebuffKit($member);
$sentPlayers[] = $member->getName();
}
}
if (!empty($sentPlayers)) {
$player->sendMessage(TextFormat::GREEN . "Sent the following party members to nodebuff: " . TextFormat::RED . implode(", ", $sentPlayers));
} else {
$player->sendMessage(TextFormat::RED . "All party members are already in nodebuff.");
}
} else {
$player->sendMessage(TextFormat::RED . "You can't join Nodebuff while in a party.");
}
} else {
$worldManager = Server::getInstance()->getWorldManager();
$world = $worldManager->getWorldByName("nodebuff");
if ($world === null) {
$player->sendMessage(TextFormat::RED . "The world 'nodebuff' does not exist.");
return;
}
$player->teleport($world->getSpawnLocation());
}
}