Search in sources :

Example 1 with Name

use of gg.projecteden.nexus.utils.Name in project Nexus by ProjectEdenGG.

the class TeamMechanic method getVoiceChannelMember.

@Nullable
public static Member getVoiceChannelMember(@NotNull OptionalPlayer hasPlayer) {
    Player player = hasPlayer.getPlayer();
    if (player == null)
        return null;
    Guild guild = Discord.getGuild();
    if (guild == null)
        return null;
    DiscordUser discordUser = new DiscordUserService().get(player);
    Member member = discordUser.getMember();
    if (member == null) {
        // user has no linked account, find a disc account with matching (nick)name
        Optional<Member> optionalMember = guild.getMembers().stream().filter(fmember -> (fmember.getNickname() != null && fmember.getNickname().equalsIgnoreCase(Name.of(player))) || fmember.getUser().getName().equalsIgnoreCase(Name.of(player))).findAny();
        if (optionalMember.isPresent())
            member = optionalMember.get();
        else
            return null;
    }
    if (member.getVoiceState() == null || !member.getVoiceState().inAudioChannel())
        return null;
    return member;
}
Also used : MatchTasks(gg.projecteden.nexus.features.minigames.models.Match.MatchTasks) VoiceChannelCategory(gg.projecteden.utils.DiscordId.VoiceChannelCategory) JsonBuilder(gg.projecteden.nexus.utils.JsonBuilder) LocalDateTime(java.time.LocalDateTime) OptionalPlayer(me.lexikiq.OptionalPlayer) HashMap(java.util.HashMap) Member(net.dv8tion.jda.api.entities.Member) Player(org.bukkit.entity.Player) MatchData(gg.projecteden.nexus.features.minigames.models.MatchData) Name(gg.projecteden.nexus.utils.Name) Match(gg.projecteden.nexus.features.minigames.models.Match) MinigamerQuitEvent(gg.projecteden.nexus.features.minigames.models.events.matches.MinigamerQuitEvent) ArrayList(java.util.ArrayList) HashSet(java.util.HashSet) Guild(net.dv8tion.jda.api.entities.Guild) MatchEndEvent(gg.projecteden.nexus.features.minigames.models.events.matches.MatchEndEvent) RandomUtils(gg.projecteden.nexus.utils.RandomUtils) Component(net.kyori.adventure.text.Component) Map(java.util.Map) Team(gg.projecteden.nexus.features.minigames.models.Team) Minigames(gg.projecteden.nexus.features.minigames.Minigames) ChatColor(net.md_5.bungee.api.ChatColor) Nexus(gg.projecteden.nexus.Nexus) DiscordUserService(gg.projecteden.nexus.models.discord.DiscordUserService) Minigamer(gg.projecteden.nexus.features.minigames.models.Minigamer) Set(java.util.Set) EqualsAndHashCode(lombok.EqualsAndHashCode) Collectors(java.util.stream.Collectors) Discord(gg.projecteden.nexus.features.discord.Discord) Arena(gg.projecteden.nexus.features.minigames.models.Arena) MinigamerDeathEvent(gg.projecteden.nexus.features.minigames.models.events.matches.minigamers.MinigamerDeathEvent) DiscordId(gg.projecteden.utils.DiscordId) MatchTaskType(gg.projecteden.nexus.features.minigames.models.Match.MatchTasks.MatchTaskType) TickTime(gg.projecteden.utils.TimeUtils.TickTime) Nullable(org.jetbrains.annotations.Nullable) DiscordUser(gg.projecteden.nexus.models.discord.DiscordUser) List(java.util.List) Data(lombok.Data) Optional(java.util.Optional) NotNull(org.jetbrains.annotations.NotNull) Comparator(java.util.Comparator) Collections(java.util.Collections) MultiplayerMechanic(gg.projecteden.nexus.features.minigames.models.mechanics.multiplayer.MultiplayerMechanic) DiscordUser(gg.projecteden.nexus.models.discord.DiscordUser) OptionalPlayer(me.lexikiq.OptionalPlayer) Player(org.bukkit.entity.Player) DiscordUserService(gg.projecteden.nexus.models.discord.DiscordUserService) Guild(net.dv8tion.jda.api.entities.Guild) Member(net.dv8tion.jda.api.entities.Member) Nullable(org.jetbrains.annotations.Nullable)

Example 2 with Name

use of gg.projecteden.nexus.utils.Name in project Nexus by ProjectEdenGG.

the class RoleManager method update.

public static void update(DiscordUser user) {
    if (Discord.getGuild() == null)
        return;
    DiscordUserService service = new DiscordUserService();
    String name = Name.of(user);
    if (name == null)
        return;
    if (ignore.contains(user.getUniqueId()))
        return;
    String nickname = Nickname.of(user);
    Color roleColor = user.getRank().getDiscordColor();
    if (roleColor == null) {
        user.setRoleId(null);
        service.save(user);
        return;
    }
    debug("Updating role for " + user.getNickname());
    if (user.getRoleId() == null) {
        debug("  No role found, searching");
        List<Role> rolesByName = Discord.getGuild().getRolesByName(name, true);
        if (rolesByName.size() > 0) {
            debug("    Found matching username role");
            user.setRoleId(rolesByName.get(0).getId());
            service.save(user);
        } else {
            List<Role> rolesByNickname = Discord.getGuild().getRolesByName(nickname, true);
            if (rolesByNickname.size() > 0) {
                debug("    Found matching nickname role");
                user.setRoleId(rolesByNickname.get(0).getId());
                service.save(user);
            } else {
                debug("    No matching role found, creating a new one");
                Discord.getGuild().createRole().setName(nickname).setColor(roleColor).queue();
                return;
            }
        }
    }
    Role role = Discord.getGuild().getRoleById(user.getRoleId());
    if (role == null) {
        debug("  Unable to retrieve role, deleted?");
        return;
    }
    debug("  Role found, checking for updates");
    boolean update = false;
    net.dv8tion.jda.api.managers.RoleManager manager = role.getManager();
    if (!roleColor.equals(role.getColor())) {
        debug("    Updating color to " + roleColor);
        update = true;
        manager.setColor(roleColor);
    }
    if (!role.getName().equals(nickname)) {
        debug("    Updating nickname to " + nickname);
        update = true;
        manager.setName(nickname);
    }
    if (update)
        manager.queue(success -> Nexus.debug("      Updated role"), error -> {
            throw new RuntimeException(error);
        });
    else
        debug("    No updates needed");
}
Also used : Role(net.dv8tion.jda.api.entities.Role) Nexus(gg.projecteden.nexus.Nexus) Color(java.awt.Color) DiscordUser(gg.projecteden.nexus.models.discord.DiscordUser) Arrays(java.util.Arrays) List(java.util.List) Role(net.dv8tion.jda.api.entities.Role) DiscordUserService(gg.projecteden.nexus.models.discord.DiscordUserService) Nickname(gg.projecteden.nexus.models.nickname.Nickname) Dev(gg.projecteden.nexus.utils.PlayerUtils.Dev) UUID(java.util.UUID) Name(gg.projecteden.nexus.utils.Name) Discord(gg.projecteden.nexus.features.discord.Discord) Color(java.awt.Color) DiscordUserService(gg.projecteden.nexus.models.discord.DiscordUserService)

Aggregations

Nexus (gg.projecteden.nexus.Nexus)2 Discord (gg.projecteden.nexus.features.discord.Discord)2 DiscordUser (gg.projecteden.nexus.models.discord.DiscordUser)2 DiscordUserService (gg.projecteden.nexus.models.discord.DiscordUserService)2 Name (gg.projecteden.nexus.utils.Name)2 List (java.util.List)2 Minigames (gg.projecteden.nexus.features.minigames.Minigames)1 Arena (gg.projecteden.nexus.features.minigames.models.Arena)1 Match (gg.projecteden.nexus.features.minigames.models.Match)1 MatchTasks (gg.projecteden.nexus.features.minigames.models.Match.MatchTasks)1 MatchTaskType (gg.projecteden.nexus.features.minigames.models.Match.MatchTasks.MatchTaskType)1 MatchData (gg.projecteden.nexus.features.minigames.models.MatchData)1 Minigamer (gg.projecteden.nexus.features.minigames.models.Minigamer)1 Team (gg.projecteden.nexus.features.minigames.models.Team)1 MatchEndEvent (gg.projecteden.nexus.features.minigames.models.events.matches.MatchEndEvent)1 MinigamerQuitEvent (gg.projecteden.nexus.features.minigames.models.events.matches.MinigamerQuitEvent)1 MinigamerDeathEvent (gg.projecteden.nexus.features.minigames.models.events.matches.minigamers.MinigamerDeathEvent)1 MultiplayerMechanic (gg.projecteden.nexus.features.minigames.models.mechanics.multiplayer.MultiplayerMechanic)1 Nickname (gg.projecteden.nexus.models.nickname.Nickname)1 JsonBuilder (gg.projecteden.nexus.utils.JsonBuilder)1