Search in sources :

Example 21 with User

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

the class ResCommands method onCommand.

@Override
public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
    if (!requirePlayer(sender))
        return true;
    Player player = player(sender);
    User user = user(sender);
    if (label.equalsIgnoreCase("res")) {
        if (args.length == 0) {
            sender.sendMessage(ChatColor.GRAY + "To create a residence, open the door");
            sender.sendMessage(ChatColor.GRAY + "of the residence you would like to claim.");
            sender.sendMessage(ChatColor.GRAY + "You have claimed " + ChatColor.RESET + resLoader.getAllResidencesOf(user).size() + "/" + DragonsResidences.MAX_RES_PER_USER + " allowed residences.");
            sender.sendMessage(ChatColor.YELLOW + "/res mine");
            sender.sendMessage(ChatColor.YELLOW + "/res exit");
            sender.sendMessage(ChatColor.YELLOW + "/res delete <ID>");
        } else if (args[0].equalsIgnoreCase("mine")) {
            sender.sendMessage(ChatColor.GREEN + "Listing your residences:");
            for (Residence res : resLoader.getAllResidencesOf(user)) {
                Location door = res.getResPoint().getDoorLocation();
                sender.sendMessage(ChatColor.DARK_GREEN + "#" + res.getId() + ChatColor.GRAY + " (" + res.getAccessLevel() + ")" + " (" + FloorLoader.fromWorld(door.getWorld()).getDisplayName() + " " + door.getBlockX() + ", " + door.getBlockZ() + ")");
            }
        } else if (args[0].equalsIgnoreCase("exit")) {
            Document saved = user.getData().get("resExitTo", Document.class);
            if (saved == null) {
                sender.sendMessage(ChatColor.RED + "You're not in a residence right now!");
                return true;
            }
            Location to = StorageUtil.docToLoc(saved);
            player.teleport(to);
            sender.sendMessage(ChatColor.GREEN + "Exited residence successfully.");
            user.getStorageAccess().set("resExitTo", null);
        } else if (args[0].equalsIgnoreCase("delete")) {
            if (args.length == 1) {
                sender.sendMessage(ChatColor.RED + "/res delete <ID>");
                return true;
            }
            Integer id = parseInt(sender, args[1]);
            if (id == null)
                return true;
            Residence res = resLoader.getResidenceById(id);
            if (res == null) {
                sender.sendMessage(ChatColor.RED + "Invalid residence ID! You can see your residences with /res mine");
                return true;
            }
            if (res.isLocked()) {
                sender.sendMessage(ChatColor.RED + "This residence has been locked by an administrator.");
                return true;
            }
            if (!res.getOwner().getIdentifier().equals(user.getIdentifier())) {
                sender.sendMessage(ChatColor.RED + "You do not own this residence! You can see your residences with /res mine");
                return true;
            }
            resLoader.deleteResidence(id);
            resPointLoader.updateResHologramOn(user, res.getResPoint());
            if (player.getWorld().getName().equals("res_temp") && user.getData().getInteger("lastResId") == id) {
                Document saved = user.getData().get("resExitTo", Document.class);
                Location to = StorageUtil.docToLoc(saved);
                player.teleport(to);
                user.getStorageAccess().set("resExitTo", null);
            }
            sender.sendMessage(ChatColor.GREEN + "Deleted residence #" + id + " successfully.");
        }
        return true;
    }
    if (!requirePermission(sender, PermissionLevel.DEVELOPER))
        return true;
    if (label.equalsIgnoreCase("resadmin")) {
        if (!requirePermission(sender, PermissionLevel.ADMIN))
            return true;
        // Res commands for admins
        if (args.length == 0) {
            sender.sendMessage(ChatColor.YELLOW + "/resadmin linkpoint <Name> <Price> <Display Name...>");
            sender.sendMessage(ChatColor.YELLOW + "/resadmin setprice <Name> <NewPrice>");
            sender.sendMessage(ChatColor.YELLOW + "/resadmin displayname <Name> <New Display Name...>");
            sender.sendMessage(ChatColor.YELLOW + "/resadmin delpoint <Name>");
            sender.sendMessage(ChatColor.YELLOW + "/resadmin listpoints");
            sender.sendMessage(ChatColor.YELLOW + "/resadmin listowned <Player>");
            sender.sendMessage(ChatColor.YELLOW + "/resadmin [un]lock <ID>");
            sender.sendMessage(ChatColor.YELLOW + "/resadmin delete <ID>");
            sender.sendMessage(ChatColor.YELLOW + "/resadmin flag <ID> <Flag> <Value>");
            sender.sendMessage(ChatColor.YELLOW + "/resadmin goto <ID>");
            sender.sendMessage(ChatColor.YELLOW + "/resadmin rebuild <ID>");
        } else if (args[0].equalsIgnoreCase("linkpoint")) {
            if (args.length < 3) {
                sender.sendMessage(ChatColor.RED + "/resadmin linkpoint <Name> <Price> <Display Name...>");
                return true;
            }
            Block target = player.getTargetBlock(null, 5);
            if (target == null) {
                sender.sendMessage(ChatColor.RED + "Please look at the door you want to link!");
                return true;
            }
            if (!(target.getBlockData() instanceof Door)) {
                sender.sendMessage(ChatColor.RED + "Please look at the " + ChatColor.ITALIC + "door " + ChatColor.RED + "you want to link!");
                return true;
            }
            Door door = (Door) target.getBlockData();
            if (door.getHalf() == Half.TOP) {
                target = target.getRelative(BlockFace.DOWN);
            }
            resPointLoader.addResPoint(args[1], StringUtil.concatArgs(args, 3), Double.valueOf(args[2]), target.getLocation());
            sender.sendMessage(ChatColor.GREEN + "Added res point successfully.");
        } else if (args[0].equalsIgnoreCase("setprice")) {
            if (args.length < 2) {
                sender.sendMessage(ChatColor.RED + "/resadmin setprice <Name> <NewPrice>");
                return true;
            }
            ResPoint resPoint = resPointLoader.getResPointByName(args[1]);
            if (resPoint == null) {
                sender.sendMessage(ChatColor.RED + "Invalid res point! /respoint listpoints");
                return true;
            }
            resPoint.setPrice(Double.valueOf(args[2]));
            sender.sendMessage(ChatColor.GREEN + "Updated res point price successfully.");
        } else if (args[0].equalsIgnoreCase("displayname")) {
            if (args.length < 2) {
                sender.sendMessage(ChatColor.RED + "/resadmin displayname <Name> <New Display Name...>");
                return true;
            }
            ResPoint resPoint = resPointLoader.getResPointByName(args[1]);
            if (resPoint == null) {
                sender.sendMessage(ChatColor.RED + "Invalid res point! /respoint listpoints");
                return true;
            }
            resPoint.setDisplayName(StringUtil.concatArgs(args, 2));
            sender.sendMessage(ChatColor.GREEN + "Updated res point display name successfully.");
        } else if (args[0].equalsIgnoreCase("delpoint")) {
            if (args.length == 1) {
                sender.sendMessage(ChatColor.RED + "/reasdmin delpoint <Name>");
                return true;
            }
            resPointLoader.deleteResPoint(args[1]);
            sender.sendMessage(ChatColor.GREEN + "If a res point by this name existed, it has been deleted successfully.");
            return true;
        } else if (args[0].equalsIgnoreCase("listpoints")) {
            sender.sendMessage(ChatColor.GREEN + "Listing all res points:");
            for (ResPoint resPoint : resPointLoader.getAllResPoints()) {
                sender.sendMessage(ChatColor.GRAY + "- " + resPoint.getName() + " - " + resPoint.getPrice() + " gold" + " (" + StringUtil.locToString(resPoint.getDoorLocation()) + ")");
                if (!(resPoint.getDoorLocation().getBlock().getBlockData() instanceof Door)) {
                    sender.sendMessage(ChatColor.RED + "   (Invalid: No door at that location!)");
                }
            }
        } else if (args[0].equalsIgnoreCase("listowned")) {
            if (args.length == 1) {
                sender.sendMessage(ChatColor.RED + "/resadmin listowned <Player>");
                return true;
            }
            sender.sendMessage(ChatColor.GREEN + "Listing residences owned by " + args[1] + ":");
            for (Residence res : resLoader.getAllResidencesOf(GameObjectType.USER.<User, UserLoader>getLoader().loadObject(args[1]))) {
                sender.sendMessage(ChatColor.DARK_GREEN + "#" + res.getId() + ChatColor.GRAY + ": " + res.getAccessLevel() + (res.isLocked() ? " (Locked)" : ""));
            }
        } else if (args[0].equalsIgnoreCase("lock") || args[0].equalsIgnoreCase("unlock")) {
            if (args.length == 1) {
                sender.sendMessage(ChatColor.RED + "/resadmin " + args[0].toLowerCase() + " <ID>");
                return true;
            }
            Residence res = resLoader.getResidenceById(Integer.valueOf(args[1]));
            if (res == null) {
                sender.sendMessage(ChatColor.RED + "Invalid residence ID!");
                return true;
            }
            res.setLocked(args[0].equalsIgnoreCase("lock"));
            sender.sendMessage(ChatColor.GREEN + (args[0].equalsIgnoreCase("lock") ? "Locked" : "Unlocked") + " residence #" + args[1]);
        } else if (args[0].equalsIgnoreCase("delete")) {
            if (args.length == 1) {
                sender.sendMessage(ChatColor.RED + "/resadmin delete <ID>");
                return true;
            }
            Residence res = resLoader.getResidenceById(Integer.valueOf(args[1]));
            if (res == null) {
                sender.sendMessage(ChatColor.RED + "Invalid residence ID!");
                return true;
            }
            resLoader.deleteResidence(res.getId());
            sender.sendMessage(ChatColor.GREEN + "Deleted residence #" + args[1]);
        } else if (args[0].equalsIgnoreCase("flag")) {
            if (args.length < 3) {
                sender.sendMessage(ChatColor.RED + "/resadmin flag <ID> <Flag> <Value>");
                return true;
            }
            Residence res = resLoader.getResidenceById(Integer.valueOf(args[1]));
            if (res == null) {
                sender.sendMessage(ChatColor.RED + "Invalid residence ID!");
                return true;
            }
            res.getProperties().append(args[2], args[3]);
            res.save();
            sender.sendMessage(ChatColor.GREEN + "Set flag " + args[2] + " to " + args[3] + " for residence #" + args[1]);
        } else if (args[0].equalsIgnoreCase("goto")) {
            if (args.length == 1) {
                sender.sendMessage(ChatColor.RED + "/resadmin goto <ID>");
                return true;
            }
            Residence res = resLoader.getResidenceById(Integer.valueOf(args[1]));
            if (res == null) {
                sender.sendMessage(ChatColor.RED + "Invalid residence ID!");
                return true;
            }
            resLoader.goToResidence(user, res.getId(), true);
        } else if (args[0].equalsIgnoreCase("rebuild")) {
            if (args.length == 1) {
                sender.sendMessage(ChatColor.RED + "/resadmin rebuild <ID>");
                return true;
            }
            int id = Integer.valueOf(args[1]);
            Residence res = resLoader.getResidenceById(id);
            if (res == null) {
                sender.sendMessage(ChatColor.RED + "Invalid residence ID!");
                return true;
            }
            resLoader.removeResidenceLocally(id);
            resLoader.generateResidence(id);
            sender.sendMessage(ChatColor.GREEN + "Rebuilt residence #" + id + " successfully.");
        } else {
            sender.sendMessage(ChatColor.RED + "/resadmin");
        }
    } else if (label.equalsIgnoreCase("testcontextualholograms")) {
        for (ResPoint resPoint : resPointLoader.getAllResPoints()) {
            resPointLoader.updateResHologramOn(user, resPoint);
        }
    } else if (label.equalsIgnoreCase("testschematic")) {
        if (args[1].equalsIgnoreCase("good")) {
            DragonsResidences.pasteSchematic(DragonsResidences.loadSchematic(args[0]), DragonsResidences.getEditSession(new BukkitWorld(player.getWorld())), player.getLocation());
        } else if (args[1].equalsIgnoreCase("bad")) {
            // DragonsResPlugin.pasteSchematic(args[0], DragonsResPlugin.getEditSession(new BukkitWorld(player.getWorld())), player.getLocation());
            sender.sendMessage(ChatColor.RED + "No! Don't be bad");
            sender.sendMessage(ChatColor.GREEN + "Be good instead ;)");
        }
    } else if (label.equalsIgnoreCase("restest")) {
        // Test commands for devs
        if (args.length == 0) {
            sender.sendMessage("/restest new <ResPoint>");
            sender.sendMessage("/restest go <ID>");
            sender.sendMessage("/restest my");
            sender.sendMessage("/restest whatsthatrespoint");
        } else if (args[0].equalsIgnoreCase("new")) {
            Residence res = resLoader.addResidence(user, resPointLoader.getResPointByName(args[1]), ResAccess.PRIVATE);
            sender.sendMessage("Created new residence #" + res.getId());
        } else if (args[0].equalsIgnoreCase("go")) {
            Residence res = resLoader.getResidenceById(Integer.valueOf(args[1]));
            if (res == null) {
                sender.sendMessage("No residence by that ID exists! (highest ID=" + resPointLoader.getCurrentMaxId() + ")");
                return true;
            }
            resLoader.goToResidence(user, res.getId(), true);
        } else if (args[0].equalsIgnoreCase("my")) {
            for (Residence res : resLoader.getAllResidencesOf(user)) {
                sender.sendMessage("#" + res.getId() + " (owner=" + res.getOwner().getName() + ", access=" + res.getAccessLevel() + ")");
            }
        } else if (args[0].equalsIgnoreCase("whatsthatrespoint")) {
            // bottom half only
            Block target = player.getTargetBlock(null, 5);
            if (target == null) {
                sender.sendMessage("No target block");
                return true;
            }
            sender.sendMessage("Target block is " + target.getType());
            sender.sendMessage("Target block location is " + StringUtil.locToString(target.getLocation()));
            ResPoint resPoint = resPointLoader.getResPointByDoorLocation(target.getLocation());
            if (resPoint == null) {
                sender.sendMessage("No res point here");
                return true;
            }
            sender.sendMessage("Res point is " + resPoint.getName());
        }
    }
    return true;
}
Also used : Player(org.bukkit.entity.Player) User(mc.dragons.core.gameobject.user.User) Block(org.bukkit.block.Block) UserLoader(mc.dragons.core.gameobject.user.UserLoader) BukkitWorld(com.sk89q.worldedit.bukkit.BukkitWorld) Residence(mc.dragons.res.ResLoader.Residence) Document(org.bson.Document) Door(org.bukkit.block.data.type.Door) ResPoint(mc.dragons.res.ResPointLoader.ResPoint) Location(org.bukkit.Location)

Example 22 with User

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

the class IWannaCompanionCommand method onCommand.

@Override
public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
    if (!requirePlayer(sender) || !requirePermission(sender, PermissionLevel.TESTER))
        return true;
    Player player = player(sender);
    User user = user(sender);
    if (user.getStorageAccess().get("companion") != null) {
        sender.sendMessage("You already have a companion");
        return true;
    }
    NPC companion = GameObjectType.NPC.<NPC, NPCLoader>getLoader().registerNew(player.getLocation(), "Companion-Kitty");
    companion.getStorageAccess().set("companionOwner", user.getUUID());
    user.getStorageAccess().set("companion", companion.getUUID());
    sender.sendMessage("Spawned a companion (companion uuid: " + companion.getUUID() + ")");
    return true;
}
Also used : NPC(mc.dragons.core.gameobject.npc.NPC) Player(org.bukkit.entity.Player) User(mc.dragons.core.gameobject.user.User)

Example 23 with User

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

the class TestCompanionCommand method onCommand.

@Override
public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
    if (!requirePlayer(sender) || !requirePermission(sender, PermissionLevel.GM))
        return true;
    Player player = player(sender);
    User user = user(sender);
    if (args.length == 0) {
        sender.sendMessage("/testcompanion remove");
        sender.sendMessage("/testcompanion create <class>");
        sender.sendMessage("/testcompanion tphere");
        sender.sendMessage("/testcompanion mine");
        return true;
    }
    if (args[0].equalsIgnoreCase("create")) {
        NPC companion = GameObjectType.getLoader(NPCLoader.class).registerNew(player.getLocation(), args[1]);
        companion.getStorageAccess().set("companionOwner", user.getUUID());
        user.getStorageAccess().set("companion", companion.getUUID());
        return true;
    }
    UUID companionUUID = user.getStorageAccess().getDocument().get("companion", UUID.class);
    if (companionUUID == null) {
        sender.sendMessage("You don't have a companion");
        return true;
    }
    NPC companion = GameObjectType.getLoader(NPCLoader.class).loadObject(companionUUID);
    if (args[0].equalsIgnoreCase("mine")) {
        sender.sendMessage("companionUUID=" + companionUUID);
        sender.sendMessage("companion name=" + companion.getName());
        sender.sendMessage("companion location=" + StringUtil.locToString(companion.getEntity().getLocation()));
    } else if (args[0].equalsIgnoreCase("tphere")) {
        companion.getEntity().teleport(player);
    } else if (args[0].equalsIgnoreCase("remove")) {
        user.getStorageAccess().set("companion", null);
        companion.remove();
        addon.getCompanions().remove(companion);
    } else {
        sender.sendMessage("I dont understandddddd");
    }
    return true;
}
Also used : NPC(mc.dragons.core.gameobject.npc.NPC) Player(org.bukkit.entity.Player) User(mc.dragons.core.gameobject.user.User) NPCLoader(mc.dragons.core.gameobject.npc.NPCLoader) UUID(java.util.UUID)

Example 24 with User

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

the class SoulStealerAddon method initializeParts.

@Override
public void initializeParts(NPC npc) {
    List<ArmorStand> souls = new ArrayList<>();
    for (int i = 0; i < N_SOULS; i++) {
        ArmorStand soul = newPart(npc);
        soul.getEquipment().setHelmet(new ItemStack(Material.MAGMA_CREAM));
        soul.setHeadPose(NPCUtil.randomRotation());
        souls.add(soul);
    }
    capturedSouls.put(npc, souls);
    attackRunnables.put(npc, new BukkitRunnable() {

        @Override
        public void run() {
            User target = null;
            for (Entity e : npc.getEntity().getNearbyEntities(10.0, 10.0, 10.0)) {
                if (e instanceof Player) {
                    target = UserLoader.fromPlayer((Player) e);
                    break;
                }
            }
            if (target == null)
                return;
            final User fTarget = target;
            if (!(target instanceof User))
                return;
            ArmorStand soul = (ArmorStand) npc.getEntity().getWorld().spawnEntity(npc.getEntity().getLocation(), EntityType.ARMOR_STAND);
            if (target.getPlayer().getWorld() != soul.getWorld()) {
                this.cancel();
                return;
            }
            soul.setMetadata("allow", new FixedMetadataValue(JavaPlugin.getPlugin(DragonsNPCAddons.class), true));
            soul.getEquipment().setHelmet(new ItemStack(Material.MAGMA_CREAM));
            soul.setHeadPose(NPCUtil.randomRotation());
            soul.setVisible(false);
            Vector move = target.getPlayer().getLocation().subtract(soul.getLocation()).toVector().normalize().multiply(0.7);
            new BukkitRunnable() {

                private int i = 0;

                @Override
                public void run() {
                    if (fTarget.getPlayer().getWorld() != soul.getWorld()) {
                        this.cancel();
                        soul.remove();
                        return;
                    }
                    Location to = soul.getLocation();
                    if (soul.isDead() || !soul.isValid()) {
                        this.cancel();
                        soul.remove();
                        return;
                    }
                    try {
                        to.add(move);
                        to.checkFinite();
                        soul.teleport(to);
                    } catch (Exception e) {
                        this.cancel();
                        soul.remove();
                        return;
                    }
                    if (soul.getLocation().distanceSquared(fTarget.getPlayer().getLocation()) < 1.0) {
                        this.cancel();
                        soul.remove();
                        fTarget.getPlayer().damage(5.0, npc.getEntity());
                    }
                    i++;
                    if (i > 250) {
                        this.cancel();
                        soul.remove();
                    }
                }
            }.runTaskTimer(dragons, 0L, 2L);
        }
    });
    attackRunnables.get(npc).runTaskTimer(dragons, 0L, 20L * 5);
}
Also used : Entity(org.bukkit.entity.Entity) Player(org.bukkit.entity.Player) User(mc.dragons.core.gameobject.user.User) DragonsNPCAddons(mc.dragons.npcs.DragonsNPCAddons) ArrayList(java.util.ArrayList) BukkitRunnable(org.bukkit.scheduler.BukkitRunnable) FixedMetadataValue(org.bukkit.metadata.FixedMetadataValue) ArmorStand(org.bukkit.entity.ArmorStand) ItemStack(org.bukkit.inventory.ItemStack) Vector(org.bukkit.util.Vector) Location(org.bukkit.Location)

Example 25 with User

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

the class BlockCommands method onCommand.

@Override
public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
    boolean block = label.equalsIgnoreCase("block");
    String action = block ? "block" : "unblock";
    User user = user(sender);
    if (label.equalsIgnoreCase("toggleselfblock")) {
        toggleSelfBlock(sender);
        return true;
    }
    if (args.length == 0) {
        sender.sendMessage(ChatColor.RED + "Specify a player to " + action + "! /" + label + " <Player>");
        List<User> blockedUsers = user.getBlockedUsers();
        if (!block && blockedUsers.size() > 0) {
            sender.sendMessage(ChatColor.GRAY + "Click a user below to unblock them:");
            for (User blocked : blockedUsers) {
                sender.spigot().sendMessage(StringUtil.clickableHoverableText(ChatColor.GRAY + "- " + ChatColor.RESET + blocked.getName(), "/unblock " + blocked.getName(), "Click to un-block " + blocked.getName()));
            }
        }
        return true;
    }
    User target = lookupUser(sender, args[0]);
    if (target == null)
        return true;
    if (target.equals(user) && !user.getLocalData().getBoolean("canSelfBlock", false)) {
        sender.sendMessage(ChatColor.RED + "You can't block yourself!");
        return true;
    }
    if (user.getBlockedUsers().contains(target) == block) {
        sender.sendMessage(ChatColor.RED + (block ? "You have already blocked " : "You have not blocked ") + target.getName() + "!");
        return true;
    }
    doBlock(sender, user, target, block);
    return true;
}
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