π₯οΈFor Developers
API
// Obtain the UltimateGuilds instance
UltimateGuilds ultimateGuilds = UltimateGuildsProvider.get();
public interface UltimateGuilds {
@NonNull
UserManager getUserManager();
@NonNull
GuildManager getGuildManager();
@NonNull
PluginMetadata getPluginMetadata();
@NonNull
EventBus getEventBus();
}
UserManager
/**
* Represents the object responsible for managing {@link User} instances.
*
* <p>Note that User instances are automatically loaded for online players.
* It's likely that offline players will not have an instance pre-loaded.</p>
*
* <p>All blocking methods return {@link CompletableFuture}s, which will be
* populated with the result once the data has been loaded/saved asynchronously.
* Care should be taken when using such methods to ensure that the main server
* thread is not blocked.</p>
*
* <p>Methods such as {@link CompletableFuture#get()} and equivalent should
* <strong>not</strong> be called on the main server thread. If you need to use
* the result of these operations on the main server thread, register a
* callback using {@link CompletableFuture#thenAcceptAsync(Consumer, Executor)}.</p>
*/
public interface UserManager {
/**
* Loads a user from the plugin's storage provider into memory.
*
* @param uniqueId the uuid of the user
* @param username the username, if known
* @return the resultant user
* @throws NullPointerException if the uuid is null
*/
CompletableFuture<User> loadUser(UUID uniqueId, String username);
/**
* Loads a user from the plugin's storage provider into memory.
*
* @param uniqueId the uuid of the user
* @return the resultant user
* @throws NullPointerException if the uuid is null
*/
default CompletableFuture<User> loadUser(UUID uniqueId) {
return loadUser(uniqueId, null);
}
/**
* Uses the UltimateGuilds cache to find a uuid for the given username.
*
* <p>This lookup is case insensitive.</p>
*
* @param username the username
* @return a uuid, could be null
* @throws NullPointerException if either parameters are null
* @throws IllegalArgumentException if the username is invalid
*/
CompletableFuture<UUID> lookupUniqueId(String username);
/**
* Uses the UltimateGuilds cache to find a username for the given uuid.
*
* @param uniqueId the uuid
* @return a username, could be null
* @throws NullPointerException if either parameters are null
* @throws IllegalArgumentException if the username is invalid
*/
CompletableFuture<String> lookupUsername(UUID uniqueId);
/**
* Gets a set all unique user UUIDs.
*
* @return a set of uuids
*/
CompletableFuture<Set<UUID>> getUniqueUsers();
/**
* Gets a loaded user.
*
* @param uniqueId the uuid of the user to get
* @return a {@link User} object, if one matching the uuid is loaded, or null if not
* @throws NullPointerException if the uuid is null
*/
User getUser(UUID uniqueId);
/**
* Gets a loaded user.
*
* @param username the username of the user to get
* @return a {@link User} object, if one matching the uuid is loaded, or null if not
* @throws NullPointerException if the name is null
*/
User getUser(String username);
/**
* Gets a set of all loaded users.
*
* @return a {@link Set} of {@link User} objects
*/
Set<User> getLoadedUsers();
/**
* Check if a user is loaded in memory
*
* @param uniqueId the uuid to check for
* @return true if the user is loaded
* @throws NullPointerException if the uuid is null
*/
boolean isLoaded(UUID uniqueId);
}
/**
* Represents a user on the platform.
*/
public interface User {
/**
* Gets the user's ID
*
* @return the user's ID
*/
int getId();
/**
* Gets the users unique ID
*
* @return the users Mojang assigned unique id
*/
UUID getUniqueId();
/**
* Gets the users username
*
* <p>Returns null if no username is known for the user.</p>
*
* @return the users username
*/
String getUsername();
}
GuildManager
/**
* The GuildManager interface provides methods to manage guilds.
*/
public interface GuildManager {
/**
* Loads a guild with the given guildId asynchronously.
*
* @param guildId The id of the guild to be loaded.
* @return A CompletableFuture that completes with the loaded Guild.
*/
@NonNull CompletableFuture<Guild> loadGuild(int guildId);
/**
* Returns the Guild associated with the given guildId.
*
* @param guildId the ID of the Guild
* @return the Guild object corresponding to the guildId
*/
Guild getGuild(int guildId);
/**
* Retrieves the Guild object based on the specified guild ID.
*
* @param user The user to get the guild for.
* @return The Guild object associated with the specified guild ID, or null if the guild ID is not found.
*/
Guild getGuild(@NonNull User user);
/**
* Retrieves the set of loaded guilds.
*
* @return A set of Guild objects representing the loaded guilds.
*/
Set<Guild> getLoadedGuilds();
/**
* Checks if a specific guild with the given ID is loaded.
*
* @param guildId The ID of the guild to check.
* @return {@code true} if the guild is loaded, {@code false} otherwise.
*/
boolean isLoaded(int guildId);
}
/**
* The Guild interface represents a guild.
* It provides methods to manage members, invites, bans, and experience points.
*/
public interface Guild {
/**
* Adds a new member to the system.
*
* @param user the User object representing the member to be added
*/
void addMember(User user);
/**
* Removes an existing member from the system.
*
* @param user the User object representing the member to be removed
*/
void removeMember(User user);
/**
* Updates an existing member in the system.
*/
void updateMember(User user, Rank rank);
/**
* Adds a new invite to the system.
*
* @param user the User object representing the invite to be added
*/
void addInvite(User user, Source source);
/**
* Removes an invite from the system.
*
* @param user the User object representing the invite to be removed
*/
void removeInvite(User user);
/**
* Removes the invite for a specific user.
*
* @param userId the ID of the user whose invite is to be removed
*/
void removeInvite(int userId);
/**
* Adds a ban for a user in the system.
*
* @param user the User object representing the user to be banned
*/
void addBan(User user, Source source);
/**
* Removes the ban for a specific user.
*
* @param user the User object representing the user whose ban is to be removed
*/
void removeBan(User user);
/**
* Removes the ban of a user with the given user ID.
*
* @param userId the ID of the user whose ban is to be removed
*/
void removeBan(int userId);
/**
* Checks if a user with the given user ID is banned.
*
* @param userId the ID of the user to be checked for banning
* @return true if the user is banned, false otherwise
*/
boolean isBanned(int userId);
/**
* Checks if a user is invited.
*
* @param userId the ID of the user to check
* @return true if the user is invited, false otherwise
*/
boolean isInvited(int userId);
/**
* Gets the member with the specified userId.
*
* @param userId the unique identifier of the member
* @return an Optional<User> object representing the member with the specified userId,
* or an empty Optional if no member is found
*/
Optional<User> getMember(int userId);
/**
* Checks if the given user is a member in the system.
*
* @param user the User object to check for membership
* @return {@code true} if the user is a member, {@code false} otherwise
*/
boolean containsMember(User user);
/**
* Checks if a member with the specified userId exists in the system.
*
* @param userId the userId of the member to check
* @return true if a member with the specified userId exists, false otherwise
*/
boolean containsMember(int userId);
/**
* Increases the experience points (xp) of the user by the specified amount.
*
* @param amount the amount of xp to be added
*/
void addXp(int amount);
/**
* Applies the specified multiplier to the value.
*
* @param multiplier the value to multiply with
*/
void multiplier(double multiplier);
}
PluginMetadata
public interface PluginMetadata {
/**
* Gets the plugin version
*
* @return the version of the plugin running on the platform
*/
@NonNull
String getVersion();
/**
* Gets the API version
*
* @return the version of the API running on the platform
*/
@NonNull
String getApiVersion();
}
EventBus
/**
* The UltimateGuilds event bus.
*
* <p>Used to subscribe (or "listen") to UltimateGuilds events.</p>
*/
public interface EventBus {
/**
* Registers a new subscription to the given event.
*
* @param eventClass the event class
* @param handler the event handler
* @param <T> the event class
* @return an event handler instance representing this subscription
*/
<T extends UltimateGuildsEvent> EventSubscription<T> subscribe(Class<T> eventClass, Consumer<? super T> handler);
/**
* Registers a new subscription to the given event.
*
* @param <T> the event class
* @param plugin a plugin instance to bind the subscription to.
* @param eventClass the event class
* @param handler the event handler
* @return an event handler instance representing this subscription
*/
<T extends UltimateGuildsEvent> EventSubscription<T> subscribe(Object plugin, Class<T> eventClass, Consumer<? super T> handler);
}
Events
it.ohalee.ultimateguilds.api.event.user.UserLoadEvent
it.ohalee.ultimateguilds.api.event.user.UserCacheLoadEvent
it.ohalee.ultimateguilds.api.event.guild.GuildLoadEvent
it.ohalee.ultimateguilds.api.event.guild.GuildBanEvent
it.ohalee.ultimateguilds.api.event.guild.GuildKickEvent
it.ohalee.ultimateguilds.api.event.guild.GuildCreateEvent
Last updated