diff --git a/src/main/java/dev/plex/Guilds.java b/src/main/java/dev/plex/Guilds.java index a4a667f..cbeebad 100644 --- a/src/main/java/dev/plex/Guilds.java +++ b/src/main/java/dev/plex/Guilds.java @@ -60,6 +60,7 @@ public class Guilds extends PlexModule this.addDefaultMessage("guildsCommandDisplay", "{0} {1}", "0 - The command name", "1 - The command description"); this.addDefaultMessage("guildCommandNotFound", "'{0}' is not a valid sub command!", "0 - The sub command"); this.addDefaultMessage("guildNotFound", "You're currently not a part of a guild!"); + this.addDefaultMessage("guildInThis", "You're currently a part of this guild!"); this.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."); this.addDefaultMessage("guildNotOwner", "You're not the owner of this guild!"); this.addDefaultMessage("guildMemberNotFound", "This guild member could not be found!"); @@ -85,7 +86,7 @@ public class Guilds extends PlexModule this.addDefaultMessage("guildNotValidInvite", "You don't have an invite from this guild!"); this.addDefaultMessage("guildInviteExists", "You've already sent an invite to this person!"); this.addDefaultMessage("guildInviteSent", "You have sent an invite to {0}", "0 - The invitee"); - this.addDefaultMessage("guildInviteReceived", "You have received an invite from {0} for the guild {1}", "0 - The inviter", "1 - The guild name"); + this.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"); this.addDefaultMessage("guildMemberJoined", "{0} has joined the guild!", "0 - The player who joined"); this.addDefaultMessage("guildMemberLeft", "{0} has left the guild!", "0 - The player who left"); this.addDefaultMessage("guildDisbandNeeded", "You need to disband your guild using /guild disband or promote a new owner using /guild owner "); diff --git a/src/main/java/dev/plex/command/sub/InfoSubCommand.java b/src/main/java/dev/plex/command/sub/InfoSubCommand.java index dea2166..bddbf3f 100644 --- a/src/main/java/dev/plex/command/sub/InfoSubCommand.java +++ b/src/main/java/dev/plex/command/sub/InfoSubCommand.java @@ -15,7 +15,9 @@ import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import java.time.format.DateTimeFormatter; +import java.util.List; import java.util.concurrent.CompletableFuture; +import java.util.stream.Collectors; @CommandParameters(name = "info", aliases = "information", usage = "/guild ", description = "Shows the guild's information") @CommandPermissions(level = Rank.OP, source = RequiredCommandSource.IN_GAME, permission = "plex.guilds.info") @@ -45,7 +47,8 @@ public class InfoSubCommand extends PlexCommand { send(player, mmString("Owner: Unable to load cache...")); } - send(player, mmString("Members (" + guild.getMembers().size() + "): " + StringUtils.join(guild.getMembers().stream().map(member -> DataUtils.getPlayer(member.getUuid(), false).getName()).toList(), ", "))); + List members = guild.getMembers().stream().filter(member -> !member.getUuid().equals(guild.getOwner().getUuid())).map(member -> DataUtils.getPlayer(member.getUuid(), false).getName()).toList(); + send(player, mmString("Members (" + members.size() + "): " + StringUtils.join(members, ", "))); send(player, mmString("Moderators (" + guild.getModerators().size() + "): " + StringUtils.join(guild.getModerators().stream().map(uuid -> DataUtils.getPlayer(uuid, false).getName()).toList(), ", "))); send(player, mmString("Prefix: " + (guild.getPrefix() == null ? "N/A" : guild.getPrefix()))); send(player, mmString("Created At: " + formatter.format(guild.getCreatedAt()))); diff --git a/src/main/java/dev/plex/command/sub/InviteSubCommand.java b/src/main/java/dev/plex/command/sub/InviteSubCommand.java index 3d6c984..9463f4e 100644 --- a/src/main/java/dev/plex/command/sub/InviteSubCommand.java +++ b/src/main/java/dev/plex/command/sub/InviteSubCommand.java @@ -20,7 +20,11 @@ import org.jetbrains.annotations.Nullable; import java.util.List; import java.util.Objects; +import java.util.concurrent.atomic.AtomicBoolean; import java.util.stream.Collectors; +// TODO: 5/9/2022 5 minute timeout for invites +// TODO: 5/9/2022 deny command maybe? +// TODO: 5/9/2022 deny members from inviting themselves or existing members in the current guild @CommandParameters(name = "invite", aliases = "inv", usage = "/guild ", description = "Invites a player to the guild") @CommandPermissions(level = Rank.OP, source = RequiredCommandSource.IN_GAME, permission = "plex.guilds.invite") @@ -48,13 +52,21 @@ public class InviteSubCommand extends PlexCommand String guildName = StringUtils.join(args, " ", 1, args.length); GuildHolder.PENDING_INVITES.get(player.getUniqueId()).stream().filter(guild -> guild.getName().equalsIgnoreCase(guildName)).findFirst().ifPresentOrElse(guild -> { + AtomicBoolean continueCheck = new AtomicBoolean(true); Guilds.get().getGuildHolder().getGuild(player.getUniqueId()).ifPresent(guild1 -> { + if (guild1.getGuildUuid().equals(guild.getGuildUuid())) + { + send(player, messageComponent("guildInThis")); + continueCheck.set(false); + return; + } if (guild1.getOwner().getUuid().equals(player.getUniqueId())) { if (guild1.getMembers().size() - 1 > 0) { send(player, messageComponent("guildDisbandNeeded")); + continueCheck.set(false); return; } else { @@ -70,6 +82,10 @@ public class InviteSubCommand extends PlexCommand }); guild1.getMembers().removeIf(member -> member.getUuid().equals(player.getUniqueId())); }); + if (!continueCheck.get()) + { + return; + } GuildHolder.PENDING_INVITES.remove(player.getUniqueId()); guild.addMember(player.getUniqueId()); guild.getMembers().stream().map(Member::getPlayer).filter(Objects::nonNull).forEach(player1 ->