Search in sources :

Example 31 with Guild

use of net.dzikoysk.funnyguilds.guild.Guild in project FunnyGuilds by FunnyGuilds.

the class JoinCommand method execute.

@FunnyCommand(name = "${user.join.name}", description = "${user.join.description}", aliases = "${user.join.aliases}", permission = "funnyguilds.join", completer = "guilds:3", acceptsExceeded = true, playerOnly = true)
public void execute(Player player, User user, String[] args) {
    when(user.hasGuild(), messages.joinHasGuild);
    List<InvitationList.Invitation> invitations = InvitationList.getInvitationsFor(player);
    when(invitations.size() == 0, messages.joinHasNotInvitation);
    if (args.length < 1) {
        String guildNames = ChatUtils.toString(InvitationList.getInvitationGuildNames(player), false);
        for (String msg : messages.joinInvitationList) {
            user.sendMessage(msg.replace("{GUILDS}", guildNames));
        }
        return;
    }
    Guild guild = GuildValidation.requireGuildByTag(args[0]);
    when(!InvitationList.hasInvitationFrom(player, this.guildManager.findByTag(guild.getTag()).getOrNull()), messages.joinHasNotInvitationTo);
    List<ItemStack> requiredItems = config.joinItems;
    if (!ItemUtils.playerHasEnoughItems(player, requiredItems)) {
        return;
    }
    when(guild.getMembers().size() >= config.maxMembersInGuild, messages.inviteAmountJoin.replace("{AMOUNT}", Integer.toString(config.maxMembersInGuild)));
    if (!SimpleEventHandler.handle(new GuildMemberAcceptInviteEvent(EventCause.USER, user, guild, user))) {
        return;
    }
    InvitationList.expireInvitation(guild, player);
    if (!SimpleEventHandler.handle(new GuildMemberJoinEvent(EventCause.USER, user, guild, user))) {
        return;
    }
    guild.addMember(user);
    user.setGuild(guild);
    player.getInventory().removeItem(ItemUtils.toArray(requiredItems));
    this.concurrencyManager.postRequests(new PrefixGlobalAddPlayerRequest(user.getName()));
    Formatter formatter = new Formatter().register("{GUILD}", guild.getName()).register("{TAG}", guild.getTag()).register("{PLAYER}", player.getName());
    user.sendMessage(formatter.format(messages.joinToMember));
    broadcastMessage(formatter.format(messages.broadcastJoin));
    guild.getOwner().sendMessage(formatter.format(messages.joinToOwner));
}
Also used : PrefixGlobalAddPlayerRequest(net.dzikoysk.funnyguilds.concurrency.requests.prefix.PrefixGlobalAddPlayerRequest) GuildMemberAcceptInviteEvent(net.dzikoysk.funnyguilds.event.guild.member.GuildMemberAcceptInviteEvent) GuildMemberJoinEvent(net.dzikoysk.funnyguilds.event.guild.member.GuildMemberJoinEvent) Formatter(panda.utilities.text.Formatter) Guild(net.dzikoysk.funnyguilds.guild.Guild) ItemStack(org.bukkit.inventory.ItemStack) AbstractFunnyCommand(net.dzikoysk.funnyguilds.feature.command.AbstractFunnyCommand) FunnyCommand(net.dzikoysk.funnycommands.stereotypes.FunnyCommand)

Example 32 with Guild

use of net.dzikoysk.funnyguilds.guild.Guild in project FunnyGuilds by FunnyGuilds.

the class PlayerInfoCommand method sendInfoMessage.

public void sendInfoMessage(List<String> baseMessage, User infoUser, CommandSender messageTarget) {
    UserRank rank = infoUser.getRank();
    for (String messageLine : baseMessage) {
        if (infoUser.hasGuild()) {
            Guild guild = infoUser.getGuild().get();
            messageLine = StringUtils.replace(messageLine, "{GUILD}", guild.getName());
            messageLine = StringUtils.replace(messageLine, "{TAG}", guild.getTag());
        } else {
            messageLine = StringUtils.replace(messageLine, "{GUILD}", messages.gNameNoValue);
            messageLine = StringUtils.replace(messageLine, "{TAG}", messages.gTagNoValue);
        }
        messageLine = StringUtils.replace(messageLine, "{PLAYER}", infoUser.getName());
        messageLine = StringUtils.replace(messageLine, "{POINTS-FORMAT}", NumberRange.inRangeToString(rank.getPoints(), config.pointsFormat));
        messageLine = StringUtils.replace(messageLine, "{POINTS}", Integer.toString(rank.getPoints()));
        messageLine = StringUtils.replace(messageLine, "{KILLS}", Integer.toString(rank.getKills()));
        messageLine = StringUtils.replace(messageLine, "{DEATHS}", Integer.toString(rank.getDeaths()));
        messageLine = StringUtils.replace(messageLine, "{ASSISTS}", Integer.toString(rank.getAssists()));
        messageLine = StringUtils.replace(messageLine, "{LOGOUTS}", Integer.toString(rank.getLogouts()));
        messageLine = StringUtils.replace(messageLine, "{KDR}", String.format(Locale.US, "%.2f", rank.getKDR()));
        messageLine = StringUtils.replace(messageLine, "{RANK}", Integer.toString(rank.getPosition(DefaultTops.USER_POINTS_TOP)));
        sendMessage(messageTarget, messageLine);
    }
}
Also used : UserRank(net.dzikoysk.funnyguilds.user.UserRank) Guild(net.dzikoysk.funnyguilds.guild.Guild)

Example 33 with Guild

use of net.dzikoysk.funnyguilds.guild.Guild in project FunnyGuilds by FunnyGuilds.

the class DeputyAdminCommand method execute.

@FunnyCommand(name = "${admin.deputy.name}", permission = "funnyguilds.admin", acceptsExceeded = true)
public void execute(CommandSender sender, String[] args) {
    when(args.length < 1, messages.generalNoTagGiven);
    Guild guild = GuildValidation.requireGuildByTag(args[0]);
    when(args.length < 2, messages.generalNoNickGiven);
    User userToMove = UserValidation.requireUserByName(args[1]);
    when(!guild.getMembers().contains(userToMove), messages.adminUserNotMemberOf);
    User admin = AdminUtils.getAdminUser(sender);
    if (!SimpleEventHandler.handle(new GuildMemberDeputyEvent(AdminUtils.getCause(admin), admin, guild, userToMove))) {
        return;
    }
    Formatter formatter = new Formatter().register("{PLAYER}", userToMove.getName());
    if (userToMove.isDeputy()) {
        guild.removeDeputy(userToMove);
        sendMessage(sender, (messages.deputyRemove));
        userToMove.sendMessage(messages.deputyMember);
        String message = formatter.format(messages.deputyNoLongerMembers);
        for (User member : guild.getOnlineMembers()) {
            member.sendMessage(message);
        }
        return;
    }
    guild.addDeputy(userToMove);
    sendMessage(sender, (messages.deputySet));
    userToMove.sendMessage(messages.deputyOwner);
    String message = formatter.format(messages.deputyMembers);
    for (User member : guild.getOnlineMembers()) {
        member.sendMessage(message);
    }
}
Also used : User(net.dzikoysk.funnyguilds.user.User) GuildMemberDeputyEvent(net.dzikoysk.funnyguilds.event.guild.member.GuildMemberDeputyEvent) Formatter(panda.utilities.text.Formatter) Guild(net.dzikoysk.funnyguilds.guild.Guild) AbstractFunnyCommand(net.dzikoysk.funnyguilds.feature.command.AbstractFunnyCommand) FunnyCommand(net.dzikoysk.funnycommands.stereotypes.FunnyCommand)

Example 34 with Guild

use of net.dzikoysk.funnyguilds.guild.Guild in project FunnyGuilds by FunnyGuilds.

the class LivesCommand method execute.

@FunnyCommand(name = "${admin.lives.name}", permission = "funnyguilds.admin", acceptsExceeded = true)
public void execute(CommandSender sender, String[] args) {
    when(args.length < 1, messages.generalNoTagGiven);
    when(args.length < 2, messages.adminNoLivesGiven);
    Guild guild = GuildValidation.requireGuildByTag(args[0]);
    int lives;
    try {
        lives = Integer.parseInt(args[1]);
    } catch (NumberFormatException e) {
        sendMessage(sender, (messages.adminErrorInNumber.replace("{ERROR}", args[1])));
        return;
    }
    User admin = AdminUtils.getAdminUser(sender);
    if (!SimpleEventHandler.handle(new GuildLivesChangeEvent(AdminUtils.getCause(admin), admin, guild, lives))) {
        return;
    }
    guild.setLives(lives);
    sendMessage(sender, (messages.adminLivesChanged.replace("{GUILD}", guild.getTag()).replace("{LIVES}", Integer.toString(lives))));
}
Also used : User(net.dzikoysk.funnyguilds.user.User) GuildLivesChangeEvent(net.dzikoysk.funnyguilds.event.guild.GuildLivesChangeEvent) Guild(net.dzikoysk.funnyguilds.guild.Guild) AbstractFunnyCommand(net.dzikoysk.funnyguilds.feature.command.AbstractFunnyCommand) FunnyCommand(net.dzikoysk.funnycommands.stereotypes.FunnyCommand)

Example 35 with Guild

use of net.dzikoysk.funnyguilds.guild.Guild in project FunnyGuilds by FunnyGuilds.

the class MoveCommand method execute.

@FunnyCommand(name = "${admin.move.name}", permission = "funnyguilds.admin", acceptsExceeded = true, playerOnly = true)
public void execute(Player player, User admin, String[] args) {
    when(!config.regionsEnabled, messages.regionsDisabled);
    when(args.length < 1, messages.generalNoTagGiven);
    HeartConfiguration heartConfig = config.heart;
    Guild guild = GuildValidation.requireGuildByTag(args[0]);
    Location location = player.getLocation();
    if (!heartConfig.usePlayerPositionForCenterY) {
        location.setY(heartConfig.createCenterY);
    }
    int distance = config.regionSize + config.createDistance;
    if (config.enlargeItems != null) {
        distance = config.enlargeItems.size() * config.enlargeSize + distance;
    }
    when(distance > LocationUtils.flatDistance(player.getWorld().getSpawnLocation(), location), messages.createSpawn.replace("{DISTANCE}", Integer.toString(distance)));
    when(this.regionManager.isNearRegion(location), messages.createIsNear);
    if (!SimpleEventHandler.handle(new GuildMoveEvent(AdminUtils.getCause(admin), admin, guild, location))) {
        return;
    }
    Region region = guild.getRegion().peek(peekRegion -> {
        if (heartConfig.createEntityType != null) {
            GuildEntityHelper.despawnGuildHeart(guild);
        } else if (heartConfig.createMaterial != null && heartConfig.createMaterial.getLeft() != Material.AIR) {
            peekRegion.getHeartBlock().filter(heart -> heart.getLocation().getBlockY() > 1).peek(heart -> Bukkit.getScheduler().runTask(this.plugin, () -> heart.setType(Material.AIR)));
        }
        peekRegion.setCenter(location);
    }).orElseGet(() -> new Region(guild, location, config.regionSize));
    if (heartConfig.createCenterSphere) {
        List<Location> sphere = SpaceUtils.sphere(location, 3, 3, false, true, 0);
        for (Location locationInSphere : sphere) {
            if (locationInSphere.getBlock().getType() != Material.BEDROCK) {
                locationInSphere.getBlock().setType(Material.AIR);
            }
        }
    }
    this.guildManager.spawnHeart(guild);
    admin.sendMessage(messages.adminGuildRelocated.replace("{GUILD}", guild.getName()).replace("{REGION}", region.getName()));
}
Also used : AbstractFunnyCommand(net.dzikoysk.funnyguilds.feature.command.AbstractFunnyCommand) GuildEntityHelper(net.dzikoysk.funnyguilds.nms.GuildEntityHelper) SimpleEventHandler(net.dzikoysk.funnyguilds.event.SimpleEventHandler) Player(org.bukkit.entity.Player) LocationUtils(net.dzikoysk.funnyguilds.shared.bukkit.LocationUtils) DefaultValidation.when(net.dzikoysk.funnyguilds.feature.command.DefaultValidation.when) List(java.util.List) Location(org.bukkit.Location) HeartConfiguration(net.dzikoysk.funnyguilds.config.sections.HeartConfiguration) Guild(net.dzikoysk.funnyguilds.guild.Guild) GuildValidation(net.dzikoysk.funnyguilds.feature.command.GuildValidation) GuildMoveEvent(net.dzikoysk.funnyguilds.event.guild.GuildMoveEvent) Region(net.dzikoysk.funnyguilds.guild.Region) User(net.dzikoysk.funnyguilds.user.User) FunnyCommand(net.dzikoysk.funnycommands.stereotypes.FunnyCommand) SpaceUtils(net.dzikoysk.funnyguilds.shared.bukkit.SpaceUtils) Material(org.bukkit.Material) Bukkit(org.bukkit.Bukkit) GuildMoveEvent(net.dzikoysk.funnyguilds.event.guild.GuildMoveEvent) HeartConfiguration(net.dzikoysk.funnyguilds.config.sections.HeartConfiguration) Region(net.dzikoysk.funnyguilds.guild.Region) Guild(net.dzikoysk.funnyguilds.guild.Guild) Location(org.bukkit.Location) AbstractFunnyCommand(net.dzikoysk.funnyguilds.feature.command.AbstractFunnyCommand) FunnyCommand(net.dzikoysk.funnycommands.stereotypes.FunnyCommand)

Aggregations

Guild (net.dzikoysk.funnyguilds.guild.Guild)58 User (net.dzikoysk.funnyguilds.user.User)34 FunnyCommand (net.dzikoysk.funnycommands.stereotypes.FunnyCommand)23 AbstractFunnyCommand (net.dzikoysk.funnyguilds.feature.command.AbstractFunnyCommand)23 Formatter (panda.utilities.text.Formatter)16 Region (net.dzikoysk.funnyguilds.guild.Region)12 Player (org.bukkit.entity.Player)11 PluginConfiguration (net.dzikoysk.funnyguilds.config.PluginConfiguration)9 FunnyGuilds (net.dzikoysk.funnyguilds.FunnyGuilds)8 Option (panda.std.Option)8 Location (org.bukkit.Location)7 Material (org.bukkit.Material)6 EventHandler (org.bukkit.event.EventHandler)6 List (java.util.List)5 ValidationException (net.dzikoysk.funnycommands.resources.ValidationException)5 Team (org.bukkit.scoreboard.Team)5 TimeUnit (java.util.concurrent.TimeUnit)4 HookManager (net.dzikoysk.funnyguilds.feature.hooks.HookManager)4 GuildManager (net.dzikoysk.funnyguilds.guild.GuildManager)4 ChatUtils (net.dzikoysk.funnyguilds.shared.bukkit.ChatUtils)4