Events
GroupManager fires events when group state changes. External plugins can listen for these events by implementing the GroupEventListener interface.
Registering a Listener
import com.groupmanager.api.GroupEventListener;
import com.groupmanager.api.GroupManagerProvider;
import com.groupmanager.api.GroupService;
GroupService api = GroupManagerProvider.get();
api.registerEventListener(new GroupEventListener() {
@Override
public void onGroupCreated(UUID groupId, UUID leaderUuid) {
// Handle group creation
}
});
Unregistering
api.unregisterEventListener(myListener);
Always unregister your listeners in your plugin's shutdown() method to avoid memory leaks.
Event Types
All methods in GroupEventListener have default (no-op) implementations, so you only need to override the events you care about.
onGroupCreated(UUID groupId, UUID leaderUuid)
Fired when a new group is created (permanent or temporary).
| Parameter | Type | Description |
|---|---|---|
groupId | UUID | The new group's ID |
leaderUuid | UUID | UUID of the group leader |
@Override
public void onGroupCreated(UUID groupId, UUID leaderUuid) {
log("Group " + groupId + " created by " + leaderUuid);
}
onGroupDissolved(UUID groupId)
Fired when a group is dissolved (disbanded or all members left).
| Parameter | Type | Description |
|---|---|---|
groupId | UUID | The dissolved group's ID |
onMemberJoined(UUID groupId, UUID playerUuid)
Fired when a player joins a group (via accepting an invitation or API call).
| Parameter | Type | Description |
|---|---|---|
groupId | UUID | The group's ID |
playerUuid | UUID | UUID of the player who joined |
onMemberLeft(UUID groupId, UUID playerUuid)
Fired when a player voluntarily leaves a group.
| Parameter | Type | Description |
|---|---|---|
groupId | UUID | The group's ID |
playerUuid | UUID | UUID of the player who left |
onMemberKicked(UUID groupId, UUID playerUuid, UUID kickedBy)
Fired when a member is kicked from a group by the leader.
| Parameter | Type | Description |
|---|---|---|
groupId | UUID | The group's ID |
playerUuid | UUID | UUID of the kicked player |
kickedBy | UUID | UUID of the leader who kicked them |
onLeadershipTransferred(UUID groupId, UUID oldLeaderUuid, UUID newLeaderUuid)
Fired when group leadership is transferred to a different member.
| Parameter | Type | Description |
|---|---|---|
groupId | UUID | The group's ID |
oldLeaderUuid | UUID | UUID of the previous leader |
newLeaderUuid | UUID | UUID of the new leader |
onGroupMembersChanged(UUID groupId)
Generic event fired whenever the group's member list changes (join, leave, kick). This is a convenience event — it fires in addition to the more specific events above.
| Parameter | Type | Description |
|---|---|---|
groupId | UUID | The group's ID |
Complete Example
public class MyGamePlugin extends JavaPlugin {
private GroupEventListener groupListener;
@Override
public void start() {
GroupService api = GroupManagerProvider.get();
if (api == null) return;
groupListener = new GroupEventListener() {
@Override
public void onGroupCreated(UUID groupId, UUID leaderUuid) {
getLogger().at(Level.INFO).log("Group created: " + groupId);
}
@Override
public void onMemberJoined(UUID groupId, UUID playerUuid) {
// Update team assignments
updateTeamForGroup(groupId);
}
@Override
public void onMemberLeft(UUID groupId, UUID playerUuid) {
// Remove from team
removeFromTeam(playerUuid);
}
@Override
public void onGroupDissolved(UUID groupId) {
// Clean up team data
cleanupTeam(groupId);
}
};
api.registerEventListener(groupListener);
}
@Override
public void shutdown() {
GroupService api = GroupManagerProvider.get();
if (api != null && groupListener != null) {
api.unregisterEventListener(groupListener);
}
}
}