Search in sources :

Example 26 with User

use of mc.dragons.core.gameobject.user.User in project DragonsOnline by UniverseCraft.

the class ChannelCommand method onCommand.

@Override
public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
    if (!requirePlayer(sender))
        return true;
    User user = user(sender);
    boolean staff = hasPermission(sender, PermissionLevel.BUILDER);
    if (handleAlias(sender, label))
        return true;
    if (args.length == 0) {
        openGUI(user);
        return true;
    }
    if (args.length == 1) {
        ChatChannel channel = parse(sender, staff, args[0]);
        if (channel == null)
            return true;
        if (user.getActiveChatChannels().contains(channel)) {
            user.removeActiveChatChannel(channel);
            sender.sendMessage(ChatColor.GREEN + "You are no longer " + (user.getSpeakingChannel() == channel ? "speaking or " : "") + "listening on " + channel);
        } else {
            user.setSpeakingChannel(channel);
            user.addActiveChatChannel(channel);
            sender.sendMessage(ChatColor.GREEN + "You are now speaking and listening on " + channel);
            if (user.getActiveChatChannels().size() > 1) {
                List<ChatChannel> others = new ArrayList<>(user.getActiveChatChannels());
                others.remove(channel);
                sender.sendMessage(ChatColor.GRAY + "You are also listening on " + StringUtil.parseList(others.stream().map(c -> c.toString()).collect(Collectors.toList())));
            }
        }
        return true;
    }
    ChatChannel channel = parse(sender, staff, args[1]);
    if (channel == null)
        return true;
    if (args[0].equalsIgnoreCase("speak") || args[0].equalsIgnoreCase("s")) {
        if (user.getSpeakingChannel() == channel) {
            sender.sendMessage(ChatColor.RED + "You are already speaking on " + channel);
        }
        user.setSpeakingChannel(channel);
        sender.sendMessage(ChatColor.GREEN + "Now speaking and listening on " + channel);
        if (!user.getActiveChatChannels().contains(channel)) {
            user.addActiveChatChannel(channel);
        // sender.sendMessage(ChatColor.GREEN + "You are now listening to this channel as well.");
        }
    } else if (args[0].equalsIgnoreCase("listen") || args[0].equalsIgnoreCase("l")) {
        if (user.getActiveChatChannels().contains(channel)) {
            user.removeActiveChatChannel(channel);
            sender.sendMessage(ChatColor.GREEN + "You are no longer listening on " + channel);
            return true;
        }
        user.addActiveChatChannel(channel);
        sender.sendMessage(ChatColor.GREEN + "You are now listening on " + channel);
    } else {
        sender.sendMessage(ChatColor.RED + "Invalid arguments! /channel");
    }
    return true;
}
Also used : ChatChannel(mc.dragons.core.gameobject.user.chat.ChatChannel) User(mc.dragons.core.gameobject.user.User) ArrayList(java.util.ArrayList)

Example 27 with User

use of mc.dragons.core.gameobject.user.User in project DragonsOnline by UniverseCraft.

the class ChannelCommand method openGUI.

private void openGUI(User user) {
    boolean staff = hasPermission(user, PermissionLevel.BUILDER);
    GUI gui = new GUI(5, ChatColor.WHITE + "Chat Channels");
    gui.add(new GUIElement(4, Material.BOOK, ChatColor.AQUA + "Chat Channels", List.of(ChatColor.WHITE + "Channels are different streams of chat", ChatColor.WHITE + "that you can speak or listen on.", "", ChatColor.WHITE + "You can listen to multiple channels,", ChatColor.WHITE + "but can only speak on one.", "", ChatColor.WHITE + "Do " + ChatColor.GRAY + "/channel <channel> " + ChatColor.WHITE + "to manually", ChatColor.WHITE + "change channels."), 1, u -> {
    }));
    // Assume we have 7 or fewer channels, otherwise overflow occurs
    int i = 10;
    for (ChatChannel channel : ChatChannel.values()) {
        if (channel == ChatChannel.STAFF && !staff)
            continue;
        boolean speaking = user.getSpeakingChannel() == channel;
        boolean listening = user.getActiveChatChannels().contains(channel);
        gui.add(new GUIElement(i, Material.OAK_SIGN, ChatColor.YELLOW + "" + ChatColor.BOLD + channel, List.of(ChatColor.GRAY + channel.getDescription(), ChatColor.GRAY + "- " + (speaking ? ChatColor.GREEN + "You are speaking on this channel" : ChatColor.RED + "You are not speaking on this channel"), ChatColor.GRAY + "- " + (listening ? ChatColor.GREEN + "You are listening to this channel" : ChatColor.RED + "You are not speaking to this channel")), 1, u -> {
        }));
        gui.add(new GUIElement(i + 9, speaking ? Material.EMERALD_BLOCK : Material.STONE, speaking ? ChatColor.GRAY + "You are currently speaking on this channel" : ChatColor.GREEN + "Click to speak on " + channel, ChatColor.GRAY + "You can only speak on one channel at a time", u -> {
            u.setSpeakingChannel(channel);
            if (!u.getActiveChatChannels().contains(channel)) {
                u.addActiveChatChannel(channel);
            }
            openGUI(u);
        }));
        gui.add(new GUIElement(i + 9 * 2, listening ? Material.EMERALD_BLOCK : Material.REDSTONE_BLOCK, listening ? speaking ? ChatColor.RED + "You must listen to the channel you're speaking on" : ChatColor.RED + "Click to stop listening to " + channel : ChatColor.GREEN + "Click to listen to " + channel, ChatColor.GRAY + "You can listen to multiple channels at once", u -> {
            if (speaking && listening)
                return;
            if (listening) {
                u.removeActiveChatChannel(channel);
            } else {
                u.addActiveChatChannel(channel);
            }
            openGUI(u);
        }));
        i++;
    }
    gui.open(user);
}
Also used : StringUtil(mc.dragons.core.util.StringUtil) Arrays(java.util.Arrays) CommandSender(org.bukkit.command.CommandSender) ChatChannel(mc.dragons.core.gameobject.user.chat.ChatChannel) GUIElement(mc.dragons.core.gui.GUIElement) User(mc.dragons.core.gameobject.user.User) Collectors(java.util.stream.Collectors) ArrayList(java.util.ArrayList) List(java.util.List) DragonsCommandExecutor(mc.dragons.core.commands.DragonsCommandExecutor) PermissionLevel(mc.dragons.core.gameobject.user.permission.PermissionLevel) GUI(mc.dragons.core.gui.GUI) ChatColor(org.bukkit.ChatColor) Command(org.bukkit.command.Command) Material(org.bukkit.Material) ChatChannel(mc.dragons.core.gameobject.user.chat.ChatChannel) GUIElement(mc.dragons.core.gui.GUIElement) GUI(mc.dragons.core.gui.GUI)

Example 28 with User

use of mc.dragons.core.gameobject.user.User in project DragonsOnline by UniverseCraft.

the class SocialUserHook method onVerifiedJoin.

@Override
public void onVerifiedJoin(User user) {
    /* Send guild welcome(s) */
    Bukkit.getScheduler().scheduleSyncDelayedTask(instance, () -> {
        List<Guild> guilds = guildLoader.getAllGuildsWithRaw(user.getUUID());
        boolean shown = false;
        for (Guild guild : guilds) {
            if (!guild.getMOTD().equals("")) {
                if (!shown) {
                    user.getPlayer().sendMessage(" ");
                    user.getPlayer().sendMessage(ChatColor.GREEN + "---[ " + ChatColor.GOLD + "Guild Messages" + ChatColor.GREEN + " ]---");
                }
                shown = true;
                user.getPlayer().sendMessage(guild.getThemeColor().primary() + "" + ChatColor.BOLD + guild.getName());
                user.getPlayer().sendMessage(guild.getThemeColor().secondary() + guild.getMOTD());
                user.getPlayer().sendMessage(" ");
            }
        }
    }, 20L);
    /* Warn if others are online but cannot hear the user */
    boolean anyCanHear = false;
    for (User test : UserLoader.allUsers()) {
        if (test.equals(user))
            continue;
        for (ChatChannel ch : test.getActiveChatChannels()) {
            if (ch.canHear(test, user)) {
                anyCanHear = true;
                break;
            }
        }
    }
    if (!anyCanHear && Bukkit.getOnlinePlayers().size() > 1) {
        Bukkit.getScheduler().scheduleSyncDelayedTask(instance, () -> {
            user.getPlayer().sendMessage(ChatColor.DARK_RED + "" + ChatColor.BOLD + "Warning: " + ChatColor.RED + "Nobody else can hear you in the channel you're speaking in.");
            user.getPlayer().sendMessage(ChatColor.GRAY + "Do " + ChatColor.RESET + "/channel " + ChatColor.GRAY + "to manage channels.");
        }, 20L * 2);
    }
}
Also used : ChatChannel(mc.dragons.core.gameobject.user.chat.ChatChannel) User(mc.dragons.core.gameobject.user.User) Guild(mc.dragons.social.guild.GuildLoader.Guild)

Example 29 with User

use of mc.dragons.core.gameobject.user.User in project DragonsOnline by UniverseCraft.

the class SocialUserHook method onDeath.

@Override
public boolean onDeath(User user) {
    for (Set<User> dueling : DuelCommands.getActive()) {
        if (dueling.contains(user)) {
            User loser = user;
            dueling.remove(user);
            User winner = user;
            if (dueling.size() > 0) {
                winner = (User) dueling.toArray()[0];
            }
            String[] endMessage = new String[] { " ", DuelCommands.DUEL_MESSAGE_HEADER, ChatColor.GOLD + "" + ChatColor.BOLD + "DUEL ENDED", ChatColor.YELLOW + "Winner: " + ChatColor.GRAY + winner.getName(), ChatColor.RED + "Loser: " + ChatColor.GRAY + loser.getName(), DuelCommands.DUEL_MESSAGE_HEADER, " " };
            winner.getPlayer().sendMessage(endMessage);
            loser.getPlayer().sendMessage(endMessage);
            final User fWinner = winner;
            Bukkit.getScheduler().scheduleSyncDelayedTask(instance, () -> {
                DuelCommands.restore(fWinner);
                DuelCommands.restore(loser);
                DuelCommands.getActive().remove(dueling);
            }, 20L);
            return false;
        }
    }
    return true;
}
Also used : User(mc.dragons.core.gameobject.user.User)

Example 30 with User

use of mc.dragons.core.gameobject.user.User in project DragonsOnline by UniverseCraft.

the class PrivateMessageCommands method privateMessageCommand.

private void privateMessageCommand(User user, String to, String message) {
    User target = lookupUser(user.getPlayer(), to);
    if (target == null)
        return;
    target.safeResyncData();
    if (user.equals(target) && !user.getLocalData().getBoolean("canSelfMessage", false)) {
        user.getPlayer().sendMessage(ChatColor.RED + "You can't message yourself!");
    } else if (target.hasActiveDialogue()) {
        user.getPlayer().sendMessage(ChatColor.RED + "That player is in active dialogue and cannot hear you.");
    } else if (target.getBlockedUsers().contains(user)) {
        user.getPlayer().sendMessage(ChatColor.RED + "That player has blocked you.");
    } else if (user.getBlockedUsers().contains(target)) {
        user.getPlayer().sendMessage(ChatColor.RED + "You can't send messages to players you've blocked.");
    } else if (!FriendUtil.getFriends(user).contains(target) && user.getData().getBoolean("messageFriendsOnly", false) && !hasPermission(user, PermissionLevel.HELPER) && !hasPermission(target, PermissionLevel.HELPER)) {
        user.getPlayer().sendMessage(ChatColor.RED + "You can't send or receive messages from non-friends. Use /togglemsg to change this.");
    } else if (!FriendUtil.getFriends(user).contains(target) && target.getData().getBoolean("messageFriendsOnly", false) && !hasPermission(user, PermissionLevel.HELPER) && !hasPermission(target, PermissionLevel.HELPER)) {
        user.getPlayer().sendMessage(ChatColor.RED + "This user has blocked private messages from non-friends.");
    } else {
        handler.send(user, target, message);
    }
}
Also used : User(mc.dragons.core.gameobject.user.User)

Aggregations

User (mc.dragons.core.gameobject.user.User)157 Player (org.bukkit.entity.Player)49 Document (org.bson.Document)28 EventHandler (org.bukkit.event.EventHandler)26 UUID (java.util.UUID)25 List (java.util.List)22 StringUtil (mc.dragons.core.util.StringUtil)21 ArrayList (java.util.ArrayList)19 ChatColor (org.bukkit.ChatColor)19 Collectors (java.util.stream.Collectors)18 WrappedUser (mc.dragons.tools.moderation.WrappedUser)17 Dragons (mc.dragons.core.Dragons)14 DragonsCommandExecutor (mc.dragons.core.commands.DragonsCommandExecutor)14 Item (mc.dragons.core.gameobject.item.Item)14 UserLoader (mc.dragons.core.gameobject.user.UserLoader)14 PermissionLevel (mc.dragons.core.gameobject.user.permission.PermissionLevel)14 Command (org.bukkit.command.Command)14 CommandSender (org.bukkit.command.CommandSender)14 NPC (mc.dragons.core.gameobject.npc.NPC)13 SystemProfileFlag (mc.dragons.core.gameobject.user.permission.SystemProfile.SystemProfileFlags.SystemProfileFlag)12