Search in sources :

Example 6 with Guild

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

the class AllyCommand method execute.

@FunnyCommand(name = "${user.ally.name}", description = "${user.ally.description}", aliases = "${user.ally.aliases}", permission = "funnyguilds.ally", completer = "guilds:3", acceptsExceeded = true, playerOnly = true)
public void execute(Player player, @IsOwner User user, Guild guild, String[] args) {
    List<InvitationList.Invitation> invitations = InvitationList.getInvitationsFor(guild);
    if (args.length < 1) {
        when(invitations.size() == 0, messages.allyHasNotInvitation);
        String guildNames = ChatUtils.toString(InvitationList.getInvitationGuildNames(guild), false);
        for (String msg : messages.allyInvitationList) {
            user.sendMessage(msg.replace("{GUILDS}", guildNames));
        }
        return;
    }
    Guild invitedGuild = GuildValidation.requireGuildByTag(args[0]);
    User invitedOwner = invitedGuild.getOwner();
    when(guild.equals(invitedGuild), messages.allySame);
    when(guild.getAllies().contains(invitedGuild), messages.allyAlly);
    if (guild.getEnemies().contains(invitedGuild)) {
        guild.removeEnemy(invitedGuild);
        String allyDoneMessage = messages.enemyEnd;
        allyDoneMessage = StringUtils.replace(allyDoneMessage, "{GUILD}", invitedGuild.getName());
        allyDoneMessage = StringUtils.replace(allyDoneMessage, "{TAG}", invitedGuild.getTag());
        user.sendMessage(allyDoneMessage);
        String allyIDoneMessage = messages.enemyIEnd;
        allyIDoneMessage = StringUtils.replace(allyIDoneMessage, "{GUILD}", guild.getName());
        allyIDoneMessage = StringUtils.replace(allyIDoneMessage, "{TAG}", guild.getTag());
        invitedOwner.sendMessage(allyIDoneMessage);
    }
    when(guild.getAllies().size() >= config.maxAlliesBetweenGuilds, () -> messages.inviteAllyAmount.replace("{AMOUNT}", Integer.toString(config.maxAlliesBetweenGuilds)));
    if (invitedGuild.getAllies().size() >= config.maxAlliesBetweenGuilds) {
        Formatter formatter = new Formatter().register("{GUILD}", invitedGuild.getName()).register("{TAG}", invitedGuild.getTag()).register("{AMOUNT}", config.maxAlliesBetweenGuilds);
        user.sendMessage(formatter.format(messages.inviteAllyTargetAmount));
        return;
    }
    if (InvitationList.hasInvitationFrom(guild, invitedGuild)) {
        if (!SimpleEventHandler.handle(new GuildAcceptAllyInvitationEvent(EventCause.USER, user, guild, invitedGuild))) {
            return;
        }
        InvitationList.expireInvitation(invitedGuild, guild);
        guild.addAlly(invitedGuild);
        invitedGuild.addAlly(guild);
        String allyDoneMessage = messages.allyDone;
        allyDoneMessage = StringUtils.replace(allyDoneMessage, "{GUILD}", invitedGuild.getName());
        allyDoneMessage = StringUtils.replace(allyDoneMessage, "{TAG}", invitedGuild.getTag());
        user.sendMessage(allyDoneMessage);
        String allyIDoneMessage = messages.allyIDone;
        allyIDoneMessage = StringUtils.replace(allyIDoneMessage, "{GUILD}", guild.getName());
        allyIDoneMessage = StringUtils.replace(allyIDoneMessage, "{TAG}", guild.getTag());
        invitedOwner.sendMessage(allyIDoneMessage);
        ConcurrencyTaskBuilder taskBuilder = ConcurrencyTask.builder();
        for (User member : guild.getMembers()) {
            taskBuilder.delegate(new PrefixUpdateGuildRequest(member, invitedGuild));
        }
        for (User member : invitedGuild.getMembers()) {
            taskBuilder.delegate(new PrefixUpdateGuildRequest(member, guild));
        }
        this.concurrencyManager.postTask(taskBuilder.build());
        return;
    }
    if (InvitationList.hasInvitationFrom(invitedGuild, guild)) {
        if (!SimpleEventHandler.handle(new GuildRevokeAllyInvitationEvent(EventCause.USER, user, guild, invitedGuild))) {
            return;
        }
        InvitationList.expireInvitation(guild, invitedGuild);
        String allyReturnMessage = messages.allyReturn;
        allyReturnMessage = StringUtils.replace(allyReturnMessage, "{GUILD}", invitedGuild.getName());
        allyReturnMessage = StringUtils.replace(allyReturnMessage, "{TAG}", invitedGuild.getTag());
        user.sendMessage(allyReturnMessage);
        String allyIReturnMessage = messages.allyIReturn;
        allyIReturnMessage = StringUtils.replace(allyIReturnMessage, "{GUILD}", guild.getName());
        allyIReturnMessage = StringUtils.replace(allyIReturnMessage, "{TAG}", guild.getTag());
        invitedOwner.sendMessage(allyIReturnMessage);
        return;
    }
    if (!SimpleEventHandler.handle(new GuildSendAllyInvitationEvent(EventCause.USER, user, guild, invitedGuild))) {
        return;
    }
    InvitationList.createInvitation(guild, invitedGuild);
    String allyInviteDoneMessage = messages.allyInviteDone;
    allyInviteDoneMessage = StringUtils.replace(allyInviteDoneMessage, "{GUILD}", invitedGuild.getName());
    allyInviteDoneMessage = StringUtils.replace(allyInviteDoneMessage, "{TAG}", invitedGuild.getTag());
    user.sendMessage(allyInviteDoneMessage);
    String allyToInvitedMessage = messages.allyToInvited;
    allyToInvitedMessage = StringUtils.replace(allyToInvitedMessage, "{GUILD}", guild.getName());
    allyToInvitedMessage = StringUtils.replace(allyToInvitedMessage, "{TAG}", guild.getTag());
    invitedOwner.sendMessage(allyToInvitedMessage);
}
Also used : User(net.dzikoysk.funnyguilds.user.User) Formatter(panda.utilities.text.Formatter) GuildRevokeAllyInvitationEvent(net.dzikoysk.funnyguilds.event.guild.ally.GuildRevokeAllyInvitationEvent) PrefixUpdateGuildRequest(net.dzikoysk.funnyguilds.concurrency.requests.prefix.PrefixUpdateGuildRequest) GuildSendAllyInvitationEvent(net.dzikoysk.funnyguilds.event.guild.ally.GuildSendAllyInvitationEvent) Guild(net.dzikoysk.funnyguilds.guild.Guild) GuildAcceptAllyInvitationEvent(net.dzikoysk.funnyguilds.event.guild.ally.GuildAcceptAllyInvitationEvent) ConcurrencyTaskBuilder(net.dzikoysk.funnyguilds.concurrency.ConcurrencyTaskBuilder) AbstractFunnyCommand(net.dzikoysk.funnyguilds.feature.command.AbstractFunnyCommand) FunnyCommand(net.dzikoysk.funnycommands.stereotypes.FunnyCommand)

Example 7 with Guild

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

the class CreateCommand method execute.

@FunnyCommand(name = "${user.create.name}", description = "${user.create.description}", aliases = "${user.create.aliases}", permission = "funnyguilds.create", acceptsExceeded = true, playerOnly = true)
public void execute(Player player, User user, String[] args) {
    when(!config.guildsEnabled, messages.adminGuildsDisabled);
    when(LocationUtils.checkWorld(player), messages.blockedWorld);
    when(user.hasGuild(), messages.generalHasGuild);
    if (args.length != 2) {
        when(args.length == 0, messages.generalNoTagGiven);
        when(args.length == 1, messages.generalNoNameGiven);
        throw new ValidationException(messages.createMore);
    }
    String tag = args[0];
    if (!config.guildTagKeepCase) {
        tag = config.guildTagUppercase ? tag.toUpperCase() : tag.toLowerCase();
    }
    String name = args[1];
    Location guildLocation = player.getLocation().getBlock().getLocation();
    World world = player.getWorld();
    when(tag.length() > config.createTagLength, messages.createTagLength.replace("{LENGTH}", Integer.toString(config.createTagLength)));
    when(tag.length() < config.createTagMinLength, messages.createTagMinLength.replace("{LENGTH}", Integer.toString(config.createTagMinLength)));
    when(name.length() > config.createNameLength, messages.createNameLength.replace("{LENGTH}", Integer.toString(config.createNameLength)));
    when(name.length() < config.createNameMinLength, messages.createNameMinLength.replace("{LENGTH}", Integer.toString(config.createNameMinLength)));
    when(!tag.matches(config.tagRegex.getPattern()), messages.createOLTag);
    when(!name.matches(config.nameRegex.getPattern()), messages.createOLName);
    when(guildManager.nameExists(name), messages.createNameExists);
    when(guildManager.tagExists(tag), messages.createTagExists);
    when(config.regionsEnabled && this.regionManager.isInRegion(guildLocation), messages.createIsNear);
    when(config.regionsEnabled && this.regionManager.isNearRegion(guildLocation), messages.createIsNear);
    if (config.checkForRestrictedGuildNames) {
        when(!GuildUtils.validateName(config, name), messages.restrictedGuildName);
        when(!GuildUtils.validateTag(config, tag), messages.restrictedGuildTag);
    }
    HeartConfiguration heart = config.heart;
    if (config.regionsEnabled) {
        if (!heart.usePlayerPositionForCenterY) {
            guildLocation.setY(heart.createCenterY);
        }
        if (heart.createEntityType != null && guildLocation.getBlockY() < (world.getMaxHeight() - 2)) {
            guildLocation.setY(guildLocation.getBlockY() + 2);
        }
        int distance = config.regionSize + config.createDistance;
        if (config.enlargeItems != null) {
            distance += config.enlargeItems.size() * config.enlargeSize;
        }
        when(distance > LocationUtils.flatDistance(player.getWorld().getSpawnLocation(), guildLocation), messages.createSpawn.replace("{DISTANCE}", Integer.toString(distance)));
    }
    if (config.rankCreateEnable) {
        int requiredRank = player.hasPermission("funnyguilds.vip.rank") ? config.rankCreateVip : config.rankCreate;
        int points = user.getRank().getPoints();
        if (points < requiredRank) {
            String msg = messages.createRank;
            msg = StringUtils.replace(msg, "{REQUIRED-FORMAT}", NumberRange.inRangeToString(requiredRank, config.pointsFormat).replace("{POINTS}", "{REQUIRED}"));
            msg = StringUtils.replace(msg, "{REQUIRED}", String.valueOf(requiredRank));
            msg = StringUtils.replace(msg, "{POINTS-FORMAT}", NumberRange.inRangeToString(points, config.pointsFormat));
            msg = StringUtils.replace(msg, "{POINTS}", String.valueOf(points));
            user.sendMessage(msg);
            return;
        }
    }
    List<ItemStack> requiredItems = player.hasPermission("funnyguilds.vip.items") ? config.createItemsVip : config.createItems;
    int requiredExperience = player.hasPermission("funnyguilds.vip.items") ? config.requiredExperienceVip : config.requiredExperience;
    double requiredMoney = player.hasPermission("funnyguilds.vip.items") ? config.requiredMoneyVip : config.requiredMoney;
    if (player.getTotalExperience() < requiredExperience) {
        String msg = messages.createExperience;
        msg = StringUtils.replace(msg, "{EXP}", String.valueOf(requiredExperience));
        user.sendMessage(msg);
        return;
    }
    if (VaultHook.isEconomyHooked() && !VaultHook.canAfford(player, requiredMoney)) {
        String notEnoughMoneyMessage = messages.createMoney;
        notEnoughMoneyMessage = StringUtils.replace(notEnoughMoneyMessage, "{MONEY}", Double.toString(requiredMoney));
        user.sendMessage(notEnoughMoneyMessage);
        return;
    }
    if (!ItemUtils.playerHasEnoughItems(player, requiredItems)) {
        return;
    }
    Guild guild = new Guild(name, tag);
    guild.setOwner(user);
    guild.setLives(config.warLives);
    guild.setBorn(System.currentTimeMillis());
    guild.setValidity(Instant.now().plus(config.validityStart).toEpochMilli());
    guild.setProtection(Instant.now().plus(config.warProtection).toEpochMilli());
    guild.setPvP(config.damageGuild);
    guild.setHome(guildLocation);
    if (config.regionsEnabled) {
        Region region = new Region(guild, guildLocation, config.regionSize);
        guild.setRegion(region);
        WorldBorder border = world.getWorldBorder();
        double radius = border.getSize() / 2;
        FunnyBox bbox = FunnyBox.of(border.getCenter().toVector(), radius - config.createMinDistanceFromBorder, world.getMaxHeight(), radius - config.createMinDistanceFromBorder);
        FunnyBox gbox = FunnyBox.of(region.getFirstCorner(), region.getSecondCorner());
        // border box does not contain guild box
        if (!bbox.contains(gbox)) {
            String notEnoughDistanceMessage = messages.createNotEnoughDistanceFromBorder;
            notEnoughDistanceMessage = StringUtils.replace(notEnoughDistanceMessage, "{BORDER-MIN-DISTANCE}", Double.toString(config.createMinDistanceFromBorder));
            user.sendMessage(notEnoughDistanceMessage);
            return;
        }
        HookManager.HOLOGRAPHIC_DISPLAYS.peek(hologramManager -> hologramManager.getCorrectedLocation(guild).peek(location -> hologramManager.getOrCreateHologram(guild).peek(hologram -> hologram.setLocation(location))));
    }
    if (!SimpleEventHandler.handle(new GuildPreCreateEvent(EventCause.USER, user, guild))) {
        return;
    }
    player.getInventory().removeItem(ItemUtils.toArray(requiredItems));
    player.setTotalExperience(player.getTotalExperience() - requiredExperience);
    if (VaultHook.isEconomyHooked()) {
        VaultHook.withdrawFromPlayerBank(player, requiredMoney);
    }
    if (config.regionsEnabled) {
        if (heart.pasteSchematicOnCreation) {
            HookManager.WORLD_EDIT.peek(worldEdit -> {
                if (worldEdit.pasteSchematic(heart.guildSchematicFile, guildLocation, heart.pasteSchematicWithAir)) {
                    user.sendMessage(messages.createGuildCouldNotPasteSchematic);
                }
            });
        } else if (heart.createCenterSphere) {
            for (Location locationInSphere : SpaceUtils.sphere(guildLocation, 4, 4, false, true, 0)) {
                if (locationInSphere.getBlock().getType() != Material.BEDROCK) {
                    locationInSphere.getBlock().setType(Material.AIR);
                }
            }
            for (Location locationInSphere : SpaceUtils.sphere(guildLocation, 4, 4, true, true, 0)) {
                if (locationInSphere.getBlock().getType() != Material.BEDROCK) {
                    locationInSphere.getBlock().setType(Material.OBSIDIAN);
                }
            }
            if (config.eventPhysics) {
                guildLocation.clone().subtract(0.0D, 2.0D, 0.0D).getBlock().setType(Material.OBSIDIAN);
            }
        }
        this.guildManager.spawnHeart(guild);
        player.teleport(guildLocation);
    }
    this.guildManager.addGuild(guild);
    user.setGuild(guild);
    guild.getRegion().peek(region -> this.regionManager.addRegion(region));
    this.concurrencyManager.postRequests(new PrefixGlobalAddGuildRequest(guild), new PrefixGlobalAddPlayerRequest(user.getName()), new DatabaseUpdateGuildRequest(this.config, this.plugin.getDataModel(), guild));
    SimpleEventHandler.handle(new GuildCreateEvent(EventCause.USER, user, guild));
    Formatter formatter = new Formatter().register("{GUILD}", name).register("{TAG}", tag).register("{PLAYER}", player.getName());
    user.sendMessage(formatter.format(messages.createGuild));
    broadcastMessage(formatter.format(messages.broadcastCreate));
    if (!config.giveRewardsForFirstGuild) {
        return;
    }
    for (ItemStack item : config.firstGuildRewards) {
        if (player.getInventory().firstEmpty() == -1) {
            player.getWorld().dropItemNaturally(player.getLocation(), item);
            continue;
        }
        player.getInventory().addItem(item);
    }
}
Also used : VaultHook(net.dzikoysk.funnyguilds.feature.hooks.vault.VaultHook) FunnyComponent(net.dzikoysk.funnycommands.stereotypes.FunnyComponent) AbstractFunnyCommand(net.dzikoysk.funnyguilds.feature.command.AbstractFunnyCommand) Player(org.bukkit.entity.Player) LocationUtils(net.dzikoysk.funnyguilds.shared.bukkit.LocationUtils) StringUtils(org.apache.commons.lang3.StringUtils) WorldBorder(org.bukkit.WorldBorder) DefaultValidation.when(net.dzikoysk.funnyguilds.feature.command.DefaultValidation.when) PrefixGlobalAddGuildRequest(net.dzikoysk.funnyguilds.concurrency.requests.prefix.PrefixGlobalAddGuildRequest) Location(org.bukkit.Location) FunnyBox(net.dzikoysk.funnyguilds.shared.bukkit.FunnyBox) World(org.bukkit.World) ValidationException(net.dzikoysk.funnycommands.resources.ValidationException) Region(net.dzikoysk.funnyguilds.guild.Region) User(net.dzikoysk.funnyguilds.user.User) Formatter(panda.utilities.text.Formatter) FunnyCommand(net.dzikoysk.funnycommands.stereotypes.FunnyCommand) GuildUtils(net.dzikoysk.funnyguilds.guild.GuildUtils) Material(org.bukkit.Material) GuildCreateEvent(net.dzikoysk.funnyguilds.event.guild.GuildCreateEvent) PrefixGlobalAddPlayerRequest(net.dzikoysk.funnyguilds.concurrency.requests.prefix.PrefixGlobalAddPlayerRequest) SimpleEventHandler(net.dzikoysk.funnyguilds.event.SimpleEventHandler) Instant(java.time.Instant) ItemStack(org.bukkit.inventory.ItemStack) DatabaseUpdateGuildRequest(net.dzikoysk.funnyguilds.concurrency.requests.database.DatabaseUpdateGuildRequest) List(java.util.List) EventCause(net.dzikoysk.funnyguilds.event.FunnyEvent.EventCause) NumberRange(net.dzikoysk.funnyguilds.config.NumberRange) HeartConfiguration(net.dzikoysk.funnyguilds.config.sections.HeartConfiguration) Guild(net.dzikoysk.funnyguilds.guild.Guild) ItemUtils(net.dzikoysk.funnyguilds.shared.bukkit.ItemUtils) GuildPreCreateEvent(net.dzikoysk.funnyguilds.event.guild.GuildPreCreateEvent) HookManager(net.dzikoysk.funnyguilds.feature.hooks.HookManager) SpaceUtils(net.dzikoysk.funnyguilds.shared.bukkit.SpaceUtils) ValidationException(net.dzikoysk.funnycommands.resources.ValidationException) GuildCreateEvent(net.dzikoysk.funnyguilds.event.guild.GuildCreateEvent) Formatter(panda.utilities.text.Formatter) FunnyBox(net.dzikoysk.funnyguilds.shared.bukkit.FunnyBox) HeartConfiguration(net.dzikoysk.funnyguilds.config.sections.HeartConfiguration) GuildPreCreateEvent(net.dzikoysk.funnyguilds.event.guild.GuildPreCreateEvent) World(org.bukkit.World) Guild(net.dzikoysk.funnyguilds.guild.Guild) DatabaseUpdateGuildRequest(net.dzikoysk.funnyguilds.concurrency.requests.database.DatabaseUpdateGuildRequest) PrefixGlobalAddPlayerRequest(net.dzikoysk.funnyguilds.concurrency.requests.prefix.PrefixGlobalAddPlayerRequest) WorldBorder(org.bukkit.WorldBorder) PrefixGlobalAddGuildRequest(net.dzikoysk.funnyguilds.concurrency.requests.prefix.PrefixGlobalAddGuildRequest) Region(net.dzikoysk.funnyguilds.guild.Region) ItemStack(org.bukkit.inventory.ItemStack) Location(org.bukkit.Location) AbstractFunnyCommand(net.dzikoysk.funnyguilds.feature.command.AbstractFunnyCommand) FunnyCommand(net.dzikoysk.funnycommands.stereotypes.FunnyCommand)

Example 8 with Guild

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

the class EscapeCommand method execute.

@FunnyCommand(name = "${user.escape.name}", description = "${user.escape.description}", aliases = "${user.escape.aliases}", permission = "funnyguilds.escape", acceptsExceeded = true, playerOnly = true)
public void execute(Player player, User user) {
    when(!config.regionsEnabled, messages.regionsDisabled);
    when(!config.escapeEnable || !config.baseEnable, messages.escapeDisabled);
    when(user.getCache().getTeleportation() != null, messages.escapeInProgress);
    Location playerLocation = player.getLocation();
    Option<Region> regionOption = this.regionManager.findRegionAtLocation(playerLocation);
    when(regionOption.isEmpty(), messages.escapeNoNeedToRun);
    Region region = regionOption.get();
    int time = config.escapeDelay;
    if (!user.hasGuild()) {
        when(!config.escapeSpawn, messages.escapeNoUserGuild);
        scheduleTeleportation(player, user, player.getWorld().getSpawnLocation(), time, () -> {
        });
        return;
    }
    Guild guild = user.getGuild().get();
    when(guild.equals(region.getGuild()), messages.escapeOnYourRegion);
    if (time >= 1) {
        user.sendMessage(messages.escapeStartedUser.replace("{TIME}", Integer.toString(time)));
        String msg = messages.escapeStartedOpponents.replace("{TIME}", Integer.toString(time)).replace("{PLAYER}", player.getName()).replace("{X}", Integer.toString(playerLocation.getBlockX())).replace("{Y}", Integer.toString(playerLocation.getBlockY())).replace("{Z}", Integer.toString(playerLocation.getBlockZ()));
        region.getGuild().broadcast(msg);
    }
    guild.getHome().peek(home -> scheduleTeleportation(player, user, home, time, () -> region.getGuild().getMembers().forEach(member -> member.sendMessage(messages.escapeSuccessfulOpponents.replace("{PLAYER}", player.getName())))));
}
Also used : 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)

Example 9 with Guild

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

the class WarCommand method execute.

@FunnyCommand(name = "${user.war.name}", description = "${user.war.description}", aliases = "${user.war.aliases}", permission = "funnyguilds.war", completer = "guilds:3", acceptsExceeded = true, playerOnly = true)
public void execute(Player player, @IsOwner User user, Guild guild, String[] args) {
    when(args.length < 1, messages.enemyCorrectUse);
    Guild enemyGuild = GuildValidation.requireGuildByTag(args[0]);
    when(guild.equals(enemyGuild), messages.enemySame);
    when(guild.getAllies().contains(enemyGuild), messages.enemyAlly);
    when(guild.getEnemies().contains(enemyGuild), messages.enemyAlready);
    when(guild.getEnemies().size() >= config.maxEnemiesBetweenGuilds, () -> messages.enemyMaxAmount.replace("{AMOUNT}", Integer.toString(config.maxEnemiesBetweenGuilds)));
    if (enemyGuild.getEnemies().size() >= config.maxEnemiesBetweenGuilds) {
        Formatter formatter = new Formatter().register("{GUILD}", enemyGuild.getName()).register("{TAG}", enemyGuild.getTag()).register("{AMOUNT}", config.maxEnemiesBetweenGuilds);
        user.sendMessage(formatter.format(messages.enemyMaxTargetAmount));
        return;
    }
    guild.addEnemy(enemyGuild);
    String allyDoneMessage = messages.enemyDone;
    allyDoneMessage = StringUtils.replace(allyDoneMessage, "{GUILD}", enemyGuild.getName());
    allyDoneMessage = StringUtils.replace(allyDoneMessage, "{TAG}", enemyGuild.getTag());
    user.sendMessage(allyDoneMessage);
    String allyIDoneMessage = messages.enemyIDone;
    allyIDoneMessage = StringUtils.replace(allyIDoneMessage, "{GUILD}", guild.getName());
    allyIDoneMessage = StringUtils.replace(allyIDoneMessage, "{TAG}", guild.getTag());
    enemyGuild.getOwner().sendMessage(allyIDoneMessage);
    ConcurrencyTaskBuilder taskBuilder = ConcurrencyTask.builder();
    for (User member : guild.getMembers()) {
        taskBuilder.delegate(new PrefixUpdateGuildRequest(member, enemyGuild));
    }
    for (User member : enemyGuild.getMembers()) {
        taskBuilder.delegate(new PrefixUpdateGuildRequest(member, guild));
    }
    this.concurrencyManager.postTask(taskBuilder.build());
}
Also used : User(net.dzikoysk.funnyguilds.user.User) Formatter(panda.utilities.text.Formatter) PrefixUpdateGuildRequest(net.dzikoysk.funnyguilds.concurrency.requests.prefix.PrefixUpdateGuildRequest) Guild(net.dzikoysk.funnyguilds.guild.Guild) ConcurrencyTaskBuilder(net.dzikoysk.funnyguilds.concurrency.ConcurrencyTaskBuilder) AbstractFunnyCommand(net.dzikoysk.funnyguilds.feature.command.AbstractFunnyCommand) FunnyCommand(net.dzikoysk.funnycommands.stereotypes.FunnyCommand)

Example 10 with Guild

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

the class HologramUpdateHandler method run.

@Override
public void run() {
    HologramConfiguration hologramConfig = config.heart.hologram;
    if (!hologramConfig.enabled) {
        return;
    }
    ItemStack item = new ItemStack(hologramConfig.item);
    HookManager.HOLOGRAPHIC_DISPLAYS.peek(hologramManager -> {
        for (Guild guild : plugin.getGuildManager().getGuilds()) {
            Formatter formatter = Placeholders.GUILD_ALL.toFormatter(guild);
            List<String> lines = PandaStream.of(hologramConfig.displayedLines).map(formatter::format).map(ChatUtils::colored).map(line -> Placeholders.GUILD_MEMBERS_COLOR_CONTEXT.format(line, Pair.of(ChatUtils.getLastColorBefore(line, "{MEMBERS}"), guild))).toList();
            Bukkit.getScheduler().runTask(plugin, () -> hologramManager.getOrCreateHologram(guild).peek(hologram -> {
                hologram.clearHologram();
                if (hologramConfig.item != Material.AIR) {
                    hologram.addIconItem(item);
                }
                hologram.addLines(lines);
            }));
        }
    });
}
Also used : HologramConfiguration(net.dzikoysk.funnyguilds.config.sections.HologramConfiguration) PandaStream(panda.std.stream.PandaStream) HologramConfiguration(net.dzikoysk.funnyguilds.config.sections.HologramConfiguration) Placeholders(net.dzikoysk.funnyguilds.feature.placeholders.Placeholders) ItemStack(org.bukkit.inventory.ItemStack) List(java.util.List) FunnyGuilds(net.dzikoysk.funnyguilds.FunnyGuilds) Guild(net.dzikoysk.funnyguilds.guild.Guild) PluginConfiguration(net.dzikoysk.funnyguilds.config.PluginConfiguration) Pair(panda.std.Pair) Formatter(panda.utilities.text.Formatter) HookManager(net.dzikoysk.funnyguilds.feature.hooks.HookManager) ChatUtils(net.dzikoysk.funnyguilds.shared.bukkit.ChatUtils) Material(org.bukkit.Material) Bukkit(org.bukkit.Bukkit) Formatter(panda.utilities.text.Formatter) ItemStack(org.bukkit.inventory.ItemStack) Guild(net.dzikoysk.funnyguilds.guild.Guild) ChatUtils(net.dzikoysk.funnyguilds.shared.bukkit.ChatUtils)

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