package dev.plex; import dev.plex.command.GuildCommand; import dev.plex.config.ModuleConfig; import dev.plex.data.SQLGuildManager; import dev.plex.data.SQLManager; import dev.plex.guild.Guild; import dev.plex.guild.GuildHolder; import dev.plex.module.PlexModule; import dev.plex.storage.StorageType; import dev.plex.util.PlexLog; import lombok.Getter; //TODO: Implement mongodb @Getter public class Guilds extends PlexModule { private static Guilds module; private final GuildHolder guildHolder = new GuildHolder(); private SQLGuildManager sqlGuildManager; private ModuleConfig config; @Override public void load() { module = this; config = new ModuleConfig(this, "data/config.yml", "config.yml"); config.load(); } @Override public void enable() { if (Plex.get().getStorageType() == StorageType.MONGODB) { Plex.get().getMongoConnection().getDatastore().getMapper().map(Guild.class); Plex.get().getMongoConnection().getDatastore().ensureIndexes(); } else { SQLManager.makeTables(); sqlGuildManager = new SQLGuildManager(); sqlGuildManager.getGuilds().whenComplete((guilds, throwable) -> { PlexLog.debug("Finished loading {0} guilds", guilds.size()); guilds.forEach(guildHolder::addGuild); this.registerCommand(new GuildCommand()); }); } //Plex.get().setChat(new ChatHandlerImpl()); addDefaultMessage("guildsHelpCommand", "======Guild Menu======{0}", "0 - The commands list"); addDefaultMessage("guildsCommandDisplay", "{0} {1}", "0 - The command name", "1 - The command description"); addDefaultMessage("guildCommandNotFound", "'{0}' is not a valid sub command!", "0 - The sub command"); addDefaultMessage("guildNotFound", "You're currently not a part of a guild!"); addDefaultMessage("guildInThis", "You're currently a part of this guild!"); addDefaultMessage("alreadyInGuild", "You're currently in a guild. Please do /guild leave if you're a member, or if you're an owner with members, /guild promote then /guild leave, or just an owner, /guild disband."); addDefaultMessage("guildNotOwner", "You're not the owner of this guild!"); addDefaultMessage("guildMemberNotFound", "This guild member could not be found!"); addDefaultMessage("guildOwnerSet", "You have successfully promoted {0} to be the new guild owner. You have been set to a default guild member."); addDefaultMessage("guildPrefixSet", "You have changed the guild prefix to '{0}'", "0 - The new prefix"); addDefaultMessage("guildPrefixCleared", "Your guild's prefix has been cleared."); addDefaultMessage("guildWarpAlphanumeric", "Warp names may only contain alphabetical and/or numerical characters."); addDefaultMessage("guildWarpExists", "'{0}' is already an existing warp!", "0 - The warp name"); addDefaultMessage("guildWarpNotFound", "'{0}' is not a valid warp!", "0 - The warp name"); addDefaultMessage("guildWarpCreated", "You have created a warp called '{0}'", "0 - The warp name"); addDefaultMessage("guildHomeRemoved", "You have removed the guild's home!"); addDefaultMessage("guildHomeSet", "You have changed the guild's home!"); addDefaultMessage("guildHomeNotFound", "This guild currently has no home set."); addDefaultMessage("guildChatMessage", "[GUILD] {0} {1}", "0 - The player name", "1 - The message"); addDefaultMessage("guildChatToggled", "Your chat has been toggled {0}", "0 - On / Off"); addDefaultMessage("guildChatConsoleLog", "[GUILD - {0}:{1}] {2} {3}", "0 - The guild name", "1 - The guild unique identifier", "2 - The player name", "3 - The message"); addDefaultMessage("guildNoInvite", "You don't have any pending invitations!"); addDefaultMessage("guildNotValidInvite", "You don't have an invite from this guild!"); addDefaultMessage("guildInviteExists", "You've already sent an invite to this person!"); addDefaultMessage("guildInviteSent", "You have sent an invite to {0}", "0 - The invitee"); addDefaultMessage("guildInviteReceived", "You have received an invite from {0} for the guild {1}[ACCEPT]You may also run /guild invite accept {1} to accept this invite. It will expire in 5 minutes", "0 - The inviter", "1 - The guild name"); addDefaultMessage("guildMemberJoined", "{0} has joined the guild!", "0 - The player who joined"); addDefaultMessage("guildMemberLeft", "{0} has left the guild!", "0 - The player who left"); addDefaultMessage("guildDisbandNeeded", "You need to disband your guild using /guild disband or promote a new owner using /guild owner "); addDefaultMessage("guildAutoDisbanded", "Auto-disbanding your guild since there were no members"); } @Override public void disable() { // Unregistering listeners / commands is handled by Plex this.getGuildHolder().getGuilds().forEach(sqlGuildManager::updateGuild); //this.getPlex().setChat(new ChatListener.PlexChatRenderer()); } public static Guilds get() { return module; } }