Skip to main content

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);
tip

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).

ParameterTypeDescription
groupIdUUIDThe new group's ID
leaderUuidUUIDUUID 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).

ParameterTypeDescription
groupIdUUIDThe dissolved group's ID

onMemberJoined(UUID groupId, UUID playerUuid)

Fired when a player joins a group (via accepting an invitation or API call).

ParameterTypeDescription
groupIdUUIDThe group's ID
playerUuidUUIDUUID of the player who joined

onMemberLeft(UUID groupId, UUID playerUuid)

Fired when a player voluntarily leaves a group.

ParameterTypeDescription
groupIdUUIDThe group's ID
playerUuidUUIDUUID of the player who left

onMemberKicked(UUID groupId, UUID playerUuid, UUID kickedBy)

Fired when a member is kicked from a group by the leader.

ParameterTypeDescription
groupIdUUIDThe group's ID
playerUuidUUIDUUID of the kicked player
kickedByUUIDUUID of the leader who kicked them

onLeadershipTransferred(UUID groupId, UUID oldLeaderUuid, UUID newLeaderUuid)

Fired when group leadership is transferred to a different member.

ParameterTypeDescription
groupIdUUIDThe group's ID
oldLeaderUuidUUIDUUID of the previous leader
newLeaderUuidUUIDUUID 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.

ParameterTypeDescription
groupIdUUIDThe 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);
}
}
}