Search in sources :

Example 1 with Option

use of panda.std.Option in project FunnyGuilds by FunnyGuilds.

the class PlayerDeath method onDeath.

@EventHandler
public void onDeath(PlayerDeathEvent event) {
    Player playerVictim = event.getEntity();
    Player playerAttacker = event.getEntity().getKiller();
    Option<User> victimOption = this.userManager.findByPlayer(playerVictim);
    if (victimOption.isEmpty()) {
        return;
    }
    User victim = victimOption.get();
    UserCache victimCache = victim.getCache();
    DeathsChangeEvent deathsChangeEvent = new DeathsChangeEvent(EventCause.USER, victim, victim, 1);
    if (SimpleEventHandler.handle(deathsChangeEvent)) {
        victim.getRank().updateDeaths(currentValue -> currentValue + deathsChangeEvent.getDeathsChange());
    }
    if (playerAttacker == null) {
        if (!config.considerLastAttackerAsKiller) {
            victimCache.clearDamage();
            return;
        }
        User lastAttacker = victimCache.getLastKiller();
        if (lastAttacker == null || !lastAttacker.isOnline()) {
            victimCache.clearDamage();
            return;
        }
        Long attackTime = victimCache.wasVictimOf(lastAttacker);
        if (attackTime == null || attackTime + config.lastAttackerAsKillerConsiderationTimeout_ < System.currentTimeMillis()) {
            victimCache.clearDamage();
            return;
        }
        playerAttacker = lastAttacker.getPlayer().get();
    }
    Option<User> attackerOption = this.userManager.findByPlayer(playerAttacker);
    if (attackerOption.isEmpty()) {
        return;
    }
    User attacker = attackerOption.get();
    UserCache attackerCache = attacker.getCache();
    if (victim.equals(attacker)) {
        victimCache.clearDamage();
        return;
    }
    if (HookManager.WORLD_GUARD.isPresent()) {
        WorldGuardHook worldGuard = HookManager.WORLD_GUARD.get();
        if (worldGuard.isInNonPointsRegion(playerVictim.getLocation()) || worldGuard.isInNonPointsRegion(playerAttacker.getLocation())) {
            victimCache.clearDamage();
            return;
        }
    }
    if (config.rankFarmingProtect) {
        Long attackTimestamp = attackerCache.wasAttackerOf(victim);
        Long victimTimestamp = attackerCache.wasVictimOf(attacker);
        if (attackTimestamp != null) {
            if (attackTimestamp + (config.rankFarmingCooldown * 1000L) >= System.currentTimeMillis()) {
                ChatUtils.sendMessage(playerVictim, messages.rankLastVictimV);
                ChatUtils.sendMessage(playerAttacker, messages.rankLastVictimA);
                victimCache.clearDamage();
                event.setDeathMessage(null);
                return;
            }
        } else if (victimTimestamp != null) {
            if (victimTimestamp + (config.rankFarmingCooldown * 1000L) >= System.currentTimeMillis()) {
                ChatUtils.sendMessage(playerVictim, messages.rankLastAttackerV);
                ChatUtils.sendMessage(playerAttacker, messages.rankLastAttackerA);
                victimCache.clearDamage();
                event.setDeathMessage(null);
                return;
            }
        }
    }
    if (config.rankIPProtect) {
        String attackerIP = playerAttacker.getAddress().getHostString();
        if (attackerIP != null && attackerIP.equalsIgnoreCase(playerVictim.getAddress().getHostString())) {
            ChatUtils.sendMessage(playerVictim, messages.rankIPVictim);
            ChatUtils.sendMessage(playerAttacker, messages.rankIPAttacker);
            victimCache.clearDamage();
            event.setDeathMessage(null);
            return;
        }
    }
    int[] rankChanges = new int[2];
    int victimPoints = victim.getRank().getPoints();
    int attackerPoints = attacker.getRank().getPoints();
    RankSystem.RankResult result = rankSystem.calculate(config.rankSystem, attackerPoints, victimPoints);
    PointsChangeEvent attackerPointsChangeEvent = new PointsChangeEvent(EventCause.USER, attacker, attacker, result.getAttackerPoints());
    PointsChangeEvent victimPointsChangeEvent = new PointsChangeEvent(EventCause.USER, attacker, victim, -result.getVictimPoints());
    List<String> assistEntries = new ArrayList<>();
    List<User> messageReceivers = new ArrayList<>();
    int victimPointsBeforeChange = victim.getRank().getPoints();
    if (SimpleEventHandler.handle(attackerPointsChangeEvent) && SimpleEventHandler.handle(victimPointsChangeEvent)) {
        double attackerDamage = victimCache.killedBy(attacker);
        if (config.assistEnable && victimCache.isAssisted()) {
            double toShare = attackerPointsChangeEvent.getPointsChange() * (1 - config.assistKillerShare);
            double totalDamage = victimCache.getTotalDamage() + attackerDamage;
            int givenPoints = 0;
            Map<User, Double> damage = MapUtil.sortByValue(victimCache.getDamage());
            int assists = 0;
            for (Entry<User, Double> assist : damage.entrySet()) {
                User assistUser = assist.getKey();
                double assistFraction = assist.getValue() / totalDamage;
                int addedPoints = (int) Math.round(assistFraction * toShare);
                if (addedPoints <= 0) {
                    continue;
                }
                if (config.assistsLimit > 0) {
                    if (assists >= config.assistsLimit) {
                        break;
                    }
                    assists++;
                }
                PointsChangeEvent assistPointsChangeEvent = new PointsChangeEvent(EventCause.USER, assistUser, assistUser, addedPoints);
                if (!SimpleEventHandler.handle(assistPointsChangeEvent)) {
                    continue;
                }
                addedPoints = assistPointsChangeEvent.getPointsChange();
                if (!config.broadcastDeathMessage) {
                    messageReceivers.add(assistUser);
                }
                givenPoints += addedPoints;
                String assistEntry = StringUtils.replace(messages.rankAssistEntry, "{PLAYER}", assistUser.getName());
                assistEntry = StringUtils.replace(assistEntry, "{+}", Integer.toString(addedPoints));
                assistEntry = StringUtils.replace(assistEntry, "{SHARE}", ChatUtils.getPercent(assistFraction));
                assistEntries.add(assistEntry);
                int finalAddedPoints = addedPoints;
                assistUser.getRank().updatePoints(currentValue -> currentValue + finalAddedPoints);
                AssistsChangeEvent assistsChangeEvent = new AssistsChangeEvent(EventCause.USER, victim, assistUser, 1);
                if (SimpleEventHandler.handle(assistsChangeEvent)) {
                    assistUser.getRank().updateAssists(currentValue -> currentValue + assistsChangeEvent.getAssistsChange());
                }
            }
            double updatedAttackerPoints = attackerPointsChangeEvent.getPointsChange() - toShare + (givenPoints < toShare ? toShare - givenPoints : 0);
            attackerPointsChangeEvent.setPointsChange((int) Math.round(updatedAttackerPoints));
        }
        attacker.getRank().updatePoints(currentValue -> currentValue + attackerPointsChangeEvent.getPointsChange());
        KillsChangeEvent killsChangeEvent = new KillsChangeEvent(EventCause.USER, attacker, victim, 1);
        if (SimpleEventHandler.handle(killsChangeEvent)) {
            attacker.getRank().updateKills(currentValue -> currentValue + killsChangeEvent.getKillsChange());
        }
        attackerCache.registerVictim(victim);
        victimPointsBeforeChange = victim.getRank().getPoints();
        victim.getRank().updatePoints(currentValue -> currentValue + victimPointsChangeEvent.getPointsChange());
        victimCache.registerKiller(attacker);
        victimCache.clearDamage();
        if (!config.broadcastDeathMessage) {
            messageReceivers.add(attacker);
            messageReceivers.add(victim);
        }
    }
    ConcurrencyTaskBuilder taskBuilder = ConcurrencyTask.builder();
    if (config.dataModel == DataModel.MYSQL) {
        victim.getGuild().peek(guild -> taskBuilder.delegate(new DatabaseUpdateGuildPointsRequest(guild)));
        attacker.getGuild().peek(guild -> taskBuilder.delegate(new DatabaseUpdateGuildPointsRequest(guild)));
        taskBuilder.delegate(new DatabaseUpdateUserPointsRequest(victim));
        taskBuilder.delegate(new DatabaseUpdateUserPointsRequest(attacker));
    }
    this.concurrencyManager.postTask(taskBuilder.delegate(new DummyGlobalUpdateUserRequest(victim)).delegate(new DummyGlobalUpdateUserRequest(attacker)).build());
    Formatter killFormatter = new Formatter().register("{ATTACKER}", attacker.getName()).register("{VICTIM}", victim.getName()).register("{+}", Integer.toString(attackerPointsChangeEvent.getPointsChange())).register("{-}", Math.min(victimPointsBeforeChange, victimPointsChangeEvent.getPointsChange())).register("{POINTS-FORMAT}", NumberRange.inRangeToString(victimPoints, config.pointsFormat)).register("{POINTS}", Integer.toString(victim.getRank().getPoints())).register("{WEAPON}", MaterialUtils.getMaterialName(playerAttacker.getItemInHand().getType())).register("{WEAPON-NAME}", MaterialUtils.getItemCustomName(playerAttacker.getItemInHand())).register("{REMAINING-HEALTH}", String.format(Locale.US, "%.2f", playerAttacker.getHealth())).register("{REMAINING-HEARTS}", Integer.toString((int) (playerAttacker.getHealth() / 2))).register("{VTAG}", victim.getGuild().map(guild -> StringUtils.replace(config.chatGuild.getValue(), "{TAG}", guild.getTag())).orElseGet("")).register("{ATAG}", attacker.getGuild().map(guild -> StringUtils.replace(config.chatGuild.getValue(), "{TAG}", guild.getTag())).orElseGet("")).register("{ASSISTS}", config.assistEnable && !assistEntries.isEmpty() ? StringUtils.replace(messages.rankAssistMessage, "{ASSISTS}", String.join(messages.rankAssistDelimiter, assistEntries)) : "");
    if (config.displayTitleNotificationForKiller) {
        TitleMessage titleMessage = TitleMessage.builder().text(killFormatter.format(messages.rankKillTitle)).subText(killFormatter.format(messages.rankKillSubtitle)).fadeInDuration(config.notificationTitleFadeIn).stayDuration(config.notificationTitleStay).fadeOutDuration(config.notificationTitleFadeOut).build();
        plugin.getNmsAccessor().getMessageAccessor().sendTitleMessage(titleMessage, playerAttacker);
    }
    String deathMessage = killFormatter.format(messages.rankDeathMessage);
    if (config.broadcastDeathMessage) {
        if (config.ignoreDisabledDeathMessages) {
            for (Player player : event.getEntity().getWorld().getPlayers()) {
                event.setDeathMessage(null);
                ChatUtils.sendMessage(player, deathMessage);
            }
        } else {
            event.setDeathMessage(deathMessage);
        }
    } else {
        event.setDeathMessage(null);
        for (User fighter : messageReceivers) {
            fighter.sendMessage(deathMessage);
        }
    }
}
Also used : DummyGlobalUpdateUserRequest(net.dzikoysk.funnyguilds.concurrency.requests.dummy.DummyGlobalUpdateUserRequest) MaterialUtils(net.dzikoysk.funnyguilds.shared.bukkit.MaterialUtils) Player(org.bukkit.entity.Player) StringUtils(org.apache.commons.lang3.StringUtils) DeathsChangeEvent(net.dzikoysk.funnyguilds.event.rank.DeathsChangeEvent) ArrayList(java.util.ArrayList) Option(panda.std.Option) DatabaseUpdateGuildPointsRequest(net.dzikoysk.funnyguilds.concurrency.requests.database.DatabaseUpdateGuildPointsRequest) UserCache(net.dzikoysk.funnyguilds.user.UserCache) EventHandler(org.bukkit.event.EventHandler) AssistsChangeEvent(net.dzikoysk.funnyguilds.event.rank.AssistsChangeEvent) Locale(java.util.Locale) Map(java.util.Map) ConcurrencyTaskBuilder(net.dzikoysk.funnyguilds.concurrency.ConcurrencyTaskBuilder) DatabaseUpdateUserPointsRequest(net.dzikoysk.funnyguilds.concurrency.requests.database.DatabaseUpdateUserPointsRequest) RankSystem(net.dzikoysk.funnyguilds.rank.RankSystem) User(net.dzikoysk.funnyguilds.user.User) Formatter(panda.utilities.text.Formatter) DataModel(net.dzikoysk.funnyguilds.config.PluginConfiguration.DataModel) TitleMessage(net.dzikoysk.funnyguilds.nms.api.message.TitleMessage) PointsChangeEvent(net.dzikoysk.funnyguilds.event.rank.PointsChangeEvent) MapUtil(net.dzikoysk.funnyguilds.shared.MapUtil) ConcurrencyTask(net.dzikoysk.funnyguilds.concurrency.ConcurrencyTask) SimpleEventHandler(net.dzikoysk.funnyguilds.event.SimpleEventHandler) List(java.util.List) PlayerDeathEvent(org.bukkit.event.entity.PlayerDeathEvent) EventCause(net.dzikoysk.funnyguilds.event.FunnyEvent.EventCause) NumberRange(net.dzikoysk.funnyguilds.config.NumberRange) KillsChangeEvent(net.dzikoysk.funnyguilds.event.rank.KillsChangeEvent) Entry(java.util.Map.Entry) PluginConfiguration(net.dzikoysk.funnyguilds.config.PluginConfiguration) HookManager(net.dzikoysk.funnyguilds.feature.hooks.HookManager) WorldGuardHook(net.dzikoysk.funnyguilds.feature.hooks.worldguard.WorldGuardHook) ChatUtils(net.dzikoysk.funnyguilds.shared.bukkit.ChatUtils) User(net.dzikoysk.funnyguilds.user.User) Formatter(panda.utilities.text.Formatter) ArrayList(java.util.ArrayList) UserCache(net.dzikoysk.funnyguilds.user.UserCache) DatabaseUpdateUserPointsRequest(net.dzikoysk.funnyguilds.concurrency.requests.database.DatabaseUpdateUserPointsRequest) DatabaseUpdateGuildPointsRequest(net.dzikoysk.funnyguilds.concurrency.requests.database.DatabaseUpdateGuildPointsRequest) WorldGuardHook(net.dzikoysk.funnyguilds.feature.hooks.worldguard.WorldGuardHook) TitleMessage(net.dzikoysk.funnyguilds.nms.api.message.TitleMessage) ConcurrencyTaskBuilder(net.dzikoysk.funnyguilds.concurrency.ConcurrencyTaskBuilder) DeathsChangeEvent(net.dzikoysk.funnyguilds.event.rank.DeathsChangeEvent) Player(org.bukkit.entity.Player) RankSystem(net.dzikoysk.funnyguilds.rank.RankSystem) AssistsChangeEvent(net.dzikoysk.funnyguilds.event.rank.AssistsChangeEvent) KillsChangeEvent(net.dzikoysk.funnyguilds.event.rank.KillsChangeEvent) DummyGlobalUpdateUserRequest(net.dzikoysk.funnyguilds.concurrency.requests.dummy.DummyGlobalUpdateUserRequest) PointsChangeEvent(net.dzikoysk.funnyguilds.event.rank.PointsChangeEvent) EventHandler(org.bukkit.event.EventHandler) SimpleEventHandler(net.dzikoysk.funnyguilds.event.SimpleEventHandler)

Example 2 with Option

use of panda.std.Option in project FunnyGuilds by FunnyGuilds.

the class RankUtils method parseRank.

/**
 * Parse legacy top placeholders (PTOP/GTOP-x) in text
 *
 * @param targetUser user for which text will be parsed
 * @param text       text to parse
 * @return parsed text
 */
@Deprecated
public static String parseRank(PluginConfiguration config, TablistConfiguration tablistConfig, MessageConfiguration messages, UserRankManager userRankManager, GuildRankManager guildRankManager, User targetUser, String text) {
    if (text == null) {
        return null;
    }
    if (!text.contains("TOP-")) {
        return text;
    }
    Matcher matcher = LEGACY_TOP_PATTERN.matcher(text);
    if (matcher.find()) {
        String topType = matcher.group(1);
        String indexString = matcher.group(2);
        int index;
        try {
            index = Integer.parseInt(indexString);
        } catch (NumberFormatException ex) {
            FunnyGuilds.getPluginLogger().error(indexString + "is invalid " + topType + " index!");
            return text;
        }
        if (index < 1) {
            FunnyGuilds.getPluginLogger().error("Index in " + topType + " must be greater or equal to 1!");
            return text;
        }
        if (topType.equalsIgnoreCase("PTOP")) {
            Option<User> userOption = userRankManager.getUser(DefaultTops.USER_POINTS_TOP, index);
            if (userOption.isEmpty()) {
                return StringUtils.replace(text, "{PTOP-" + index + "}", messages.ptopNoValue);
            }
            User user = userOption.get();
            int points = user.getRank().getPoints();
            String pointsFormat = config.ptopPoints.getValue();
            if (!pointsFormat.isEmpty()) {
                pointsFormat = pointsFormat.replace("{POINTS-FORMAT}", NumberRange.inRangeToString(points, config.pointsFormat));
                pointsFormat = pointsFormat.replace("{POINTS}", String.valueOf(points));
            }
            return formatUserRank(config, text, "{PTOP-" + index + "}", targetUser, user, pointsFormat);
        } else if (topType.equalsIgnoreCase("GTOP")) {
            Option<Guild> guildOption = guildRankManager.getGuild(DefaultTops.GUILD_AVG_POINTS_TOP, index);
            if (guildOption.isEmpty()) {
                return StringUtils.replace(text, "{GTOP-" + index + "}", messages.gtopNoValue);
            }
            Guild guild = guildOption.get();
            int points = guild.getRank().getAveragePoints();
            String pointsFormat = config.gtopPoints.getValue();
            if (!pointsFormat.isEmpty()) {
                pointsFormat = pointsFormat.replace("{POINTS-FORMAT}", NumberRange.inRangeToString(points, config.pointsFormat));
                pointsFormat = pointsFormat.replace("{POINTS}", String.valueOf(points));
            }
            return formatGuildRank(config, tablistConfig, text, "{GTOP-" + index + "}", targetUser, guild, pointsFormat);
        }
    }
    return text;
}
Also used : User(net.dzikoysk.funnyguilds.user.User) Matcher(java.util.regex.Matcher) Option(panda.std.Option) Guild(net.dzikoysk.funnyguilds.guild.Guild)

Example 3 with Option

use of panda.std.Option in project FunnyGuilds by FunnyGuilds.

the class RankUtils method parseTopPosition.

public static String parseTopPosition(PluginConfiguration config, MessageConfiguration messages, GuildRankManager guildRankManager, User targetUser, String text) {
    if (text == null) {
        return null;
    }
    if (!text.contains("POSITION-")) {
        return text;
    }
    Matcher matcher = TOP_POSITION_PATTERN.matcher(text);
    if (matcher.find()) {
        String positionType = matcher.group(1);
        String comparatorType = matcher.group(2);
        if (positionType.equalsIgnoreCase("POSITION")) {
            if (targetUser == null) {
                return StringUtils.replace(text, "{POSITION}", "0");
            }
            return StringUtils.replace(text, "{POSITION-" + comparatorType + "}", Integer.toString(targetUser.getRank().getPosition(comparatorType)));
        } else if (positionType.equalsIgnoreCase("G-POSITION")) {
            if (targetUser == null) {
                return StringUtils.replace(text, "{POSITION}", messages.minMembersToIncludeNoValue);
            }
            Option<Guild> guildOption = targetUser.getGuild();
            if (guildOption.isEmpty()) {
                return StringUtils.replace(text, "{G-POSITION-" + comparatorType + "}", messages.minMembersToIncludeNoValue);
            }
            Guild guild = guildOption.get();
            return StringUtils.replace(text, "{G-POSITION-" + comparatorType + "}", guildRankManager.isRankedGuild(guild) ? Integer.toString(guild.getRank().getPosition(comparatorType)) : messages.minMembersToIncludeNoValue);
        }
    }
    return text;
}
Also used : Matcher(java.util.regex.Matcher) Option(panda.std.Option) Guild(net.dzikoysk.funnyguilds.guild.Guild)

Example 4 with Option

use of panda.std.Option in project cdn by dzikoysk.

the class CdnSerializer method serializeMember.

private Result<Blank, ? extends Exception> serializeMember(AnnotatedMember member, Section output) {
    if (member.isIgnored()) {
        return ok();
    }
    Result<Option<Object>, ReflectiveOperationException> propertyValueResult = member.getValue();
    if (propertyValueResult.isErr()) {
        return error(propertyValueResult.getError());
    }
    List<String> description = PandaStream.of(member.getAnnotationsByType(Description.class)).flatMap(annotation -> Arrays.asList(annotation.value())).toList();
    if (description.isEmpty()) {
        description.addAll(PandaStream.of(member.getAnnotationsByType(Descriptions.class)).flatMapStream(descriptions -> Arrays.stream(descriptions.value())).flatMapStream(descriptions -> Arrays.stream(descriptions.value())).toList());
    }
    Option<Object> propertyValue = propertyValueResult.get();
    if (member.isAnnotationPresent(Contextual.class)) {
        Section section = new Section(description, StandardOperators.OBJECT_SEPARATOR, member.getName());
        output.append(section);
        return serialize(propertyValue.get(), section).mapToBlank();
    }
    return propertyValue.map(value -> CdnUtils.findComposer(settings, member.getType(), member.getAnnotatedType(), member).flatMap(serializer -> serializer.serialize(settings, description, member.getName(), member.getAnnotatedType(), value)).peek(output::append).mapToBlank()).orElseGet(Result.ok());
}
Also used : Result.error(panda.std.Result.error) Result(panda.std.Result) Arrays(java.util.Arrays) CdnException(net.dzikoysk.cdn.CdnException) Configuration(net.dzikoysk.cdn.model.Configuration) Section(net.dzikoysk.cdn.model.Section) Contextual(net.dzikoysk.cdn.entity.Contextual) Blank(panda.std.Blank) Result.ok(panda.std.Result.ok) PandaStream(panda.std.stream.PandaStream) Option(panda.std.Option) ArrayList(java.util.ArrayList) List(java.util.List) CdnUtils(net.dzikoysk.cdn.CdnUtils) StandardOperators(net.dzikoysk.cdn.module.standard.StandardOperators) AnnotatedMember(net.dzikoysk.cdn.annotation.AnnotatedMember) Description(net.dzikoysk.cdn.entity.Description) CdnSettings(net.dzikoysk.cdn.CdnSettings) Descriptions(net.dzikoysk.cdn.entity.Descriptions) Descriptions(net.dzikoysk.cdn.entity.Descriptions) Description(net.dzikoysk.cdn.entity.Description) Option(panda.std.Option) Section(net.dzikoysk.cdn.model.Section)

Example 5 with Option

use of panda.std.Option in project EternalCore by EternalCodeTeam.

the class InventoryOpenCommand method createInventory.

@IgnoreMethod
private Gui createInventory(Player player) {
    Gui gui = Gui.gui().rows(1).title(ChatUtils.component("Armor player: " + player.getName())).create();
    if (player.getInventory().getHelmet() != null) {
        gui.setItem(0, new GuiItem(player.getInventory().getHelmet()));
    }
    if (player.getInventory().getChestplate() != null) {
        gui.setItem(1, new GuiItem(player.getInventory().getChestplate()));
    }
    if (player.getInventory().getLeggings() != null) {
        gui.setItem(2, new GuiItem(player.getInventory().getLeggings()));
    }
    if (player.getInventory().getBoots() != null) {
        gui.setItem(3, new GuiItem(player.getInventory().getBoots()));
    }
    GuiItem empty = new GuiItem(new ItemStack(Material.GRAY_STAINED_GLASS_PANE));
    for (int i = 4; i < 9; i++) {
        gui.setItem(i, empty);
    }
    gui.setDefaultClickAction(event -> {
        Option<ItemStack> itemStackOption = Option.of(event.getCurrentItem());
        itemStackOption.filter(itemStack -> itemStack.getType() == Material.GRAY_STAINED_GLASS_PANE).peek(itemStack -> event.setCancelled(true));
    });
    gui.setCloseGuiAction(event -> {
        Inventory inventory = event.getInventory();
        String title = event.getView().getTitle();
        String playerString = title.replace("Armor player: ", "");
        Option<Player> playerOption = Option.of(this.server.getPlayer(playerString));
        playerOption.peek(playerPeek -> {
            playerPeek.getInventory().setHelmet(inventory.getItem(0));
            playerPeek.getInventory().setChestplate(inventory.getItem(1));
            playerPeek.getInventory().setLeggings(inventory.getItem(2));
            playerPeek.getInventory().setBoots(inventory.getItem(3));
            playerPeek.updateInventory();
        });
    });
    return gui;
}
Also used : UsageMessage(dev.rollczi.litecommands.annotations.UsageMessage) PermissionExclude(dev.rollczi.litecommands.annotations.PermissionExclude) Execute(dev.rollczi.litecommands.annotations.Execute) Player(org.bukkit.entity.Player) Permission(dev.rollczi.litecommands.annotations.Permission) Inventory(org.bukkit.inventory.Inventory) ItemStack(org.bukkit.inventory.ItemStack) Option(panda.std.Option) Section(dev.rollczi.litecommands.annotations.Section) Arg(dev.rollczi.litecommands.annotations.Arg) Gui(dev.triumphteam.gui.guis.Gui) GuiItem(dev.triumphteam.gui.guis.GuiItem) Server(org.bukkit.Server) IgnoreMethod(dev.rollczi.litecommands.annotations.IgnoreMethod) ChatUtils(com.eternalcode.core.utils.ChatUtils) Material(org.bukkit.Material) GuiItem(dev.triumphteam.gui.guis.GuiItem) Player(org.bukkit.entity.Player) Gui(dev.triumphteam.gui.guis.Gui) ItemStack(org.bukkit.inventory.ItemStack) Inventory(org.bukkit.inventory.Inventory) IgnoreMethod(dev.rollczi.litecommands.annotations.IgnoreMethod)

Aggregations

Option (panda.std.Option)16 User (net.dzikoysk.funnyguilds.user.User)11 Player (org.bukkit.entity.Player)11 Guild (net.dzikoysk.funnyguilds.guild.Guild)9 Region (net.dzikoysk.funnyguilds.guild.Region)6 List (java.util.List)5 Map (java.util.Map)5 FunnyGuilds (net.dzikoysk.funnyguilds.FunnyGuilds)5 ChatUtils (net.dzikoysk.funnyguilds.shared.bukkit.ChatUtils)5 Bukkit (org.bukkit.Bukkit)5 EventHandler (org.bukkit.event.EventHandler)5 PluginConfiguration (net.dzikoysk.funnyguilds.config.PluginConfiguration)4 AbstractFunnyListener (net.dzikoysk.funnyguilds.listener.AbstractFunnyListener)4 Location (org.bukkit.Location)4 TimeUnit (java.util.concurrent.TimeUnit)3 EventCause (net.dzikoysk.funnyguilds.event.FunnyEvent.EventCause)3 SimpleEventHandler (net.dzikoysk.funnyguilds.event.SimpleEventHandler)3 GuildEntityHelper (net.dzikoysk.funnyguilds.nms.GuildEntityHelper)3 EventPriority (org.bukkit.event.EventPriority)3 Arg (dev.rollczi.litecommands.annotations.Arg)2