Search in sources :

Example 96 with User

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

the class FriendCommand method toggleSelfFriend.

private void toggleSelfFriend(CommandSender sender) {
    if (!requirePermission(sender, PermissionLevel.DEVELOPER))
        return;
    User user = user(sender);
    user.getLocalData().append("canSelfFriend", !user.getLocalData().getBoolean("canSelfFriend", false));
    sender.sendMessage(ChatColor.GREEN + "Toggled self-friend ability.");
}
Also used : User(mc.dragons.core.gameobject.user.User)

Example 97 with User

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

the class PurgePunishmentsCommand method onCommand.

@Override
public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
    if (!requirePermission(sender, PermissionLevel.ADMIN) || !requirePermission(sender, SystemProfileFlag.MODERATION))
        return true;
    if (args.length == 0) {
        sender.sendMessage(ChatColor.RED + "/purgepunishments <player>");
        return true;
    }
    User target = lookupUser(sender, args[0]);
    if (target == null)
        return true;
    Document standingLevelsEmpty = new Document();
    for (StandingLevelType level : StandingLevelType.values()) {
        standingLevelsEmpty.append(level.toString(), new Document("level", 0).append("on", 0L));
    }
    target.getStorageAccess().set("punishmentHistory", new ArrayList<>());
    target.getStorageAccess().set("standingLevel", standingLevelsEmpty);
    holdLoader.getActiveHoldsByUser(target).forEach(hold -> {
        hold.setStatus(HoldStatus.CLOSED_NOACTION);
        reportLoader.getReportById(hold.getReportId()).setStatus(ReportStatus.NO_ACTION);
    });
    reportLoader.closeReports(new Document("target", List.of(target.getUUID().toString())).append("status", new Document("$in", List.of(ReportStatus.OPEN.toString(), ReportStatus.SUSPENDED.toString()))));
    sender.sendMessage(ChatColor.GREEN + "Purged punishment history of " + target.getName() + " and released all pending holds and watchlist entries");
    return true;
}
Also used : StandingLevelType(mc.dragons.tools.moderation.punishment.StandingLevelType) User(mc.dragons.core.gameobject.user.User) Document(org.bson.Document)

Example 98 with User

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

the class RemovePunishmentCommand method onCommand.

public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
    if (!requirePermission(sender, SystemProfileFlag.HELPER))
        return true;
    if (args.length < 3) {
        sender.sendMessage(ChatColor.RED + "/removepunishment <player> <#> <revocation code> [-delete]");
        sender.sendMessage(ChatColor.RED + "View a player's punishments with /viewpunishments <player>");
        return true;
    }
    User targetUser = lookupUser(sender, args[0]);
    Integer punishmentNo = parseInt(sender, args[1]);
    RevocationCode code = RevocationCode.parseCode(sender, args[2]);
    if (targetUser == null || punishmentNo == null || code == null)
        return true;
    punishmentNo--;
    WrappedUser wrapped = WrappedUser.of(targetUser);
    boolean deletePermanently = StringUtil.getFlagIndex(args, "-delete", 3) != -1;
    if (!hasPermission(sender, SystemProfileFlag.APPEALS_TEAM) && !hasPermission(sender, PermissionLevel.ADMIN) && deletePermanently) {
        sender.sendMessage(ChatColor.RED + "You must be a member of the appeals team to permanently delete a punishment!");
        return true;
    }
    if (punishmentNo < 0 || punishmentNo >= wrapped.getPunishmentHistory().size()) {
        sender.sendMessage(ChatColor.RED + "Invalid punishment number! Use /viewpunishments " + targetUser.getName() + " to see their punishment records.");
        return true;
    }
    PunishmentData data = wrapped.getPunishmentHistory().get(punishmentNo);
    if (!hasPermission(sender, SystemProfileFlag.APPEALS_TEAM) && !hasPermission(sender, PermissionLevel.ADMIN) && !data.getIssuedBy().equals(user(sender))) {
        sender.sendMessage(ChatColor.RED + "You must be a member of the appeals team to revoke a punishment you did not issue!");
        return true;
    }
    if (deletePermanently) {
        wrapped.deletePunishment(punishmentNo);
    } else {
        wrapped.unpunish(punishmentNo, code, user(sender));
    }
    sender.sendMessage(ChatColor.GREEN + (deletePermanently ? "Deleted" : "Revoked") + " punishment #" + args[1] + " from " + targetUser.getName());
    if (targetUser.getServerName() != null && !targetUser.getServerName().equals(dragons.getServerName())) {
        handler.forwardUnpunishment(targetUser, punishmentNo);
    }
    if (targetUser.getPlayer() == null) {
        // User was only constructed for querying purposes. Since they're not really online, remove them from local registry
        userLoader.unregister(targetUser);
    }
    return true;
}
Also used : RevocationCode(mc.dragons.tools.moderation.punishment.RevocationCode) WrappedUser(mc.dragons.tools.moderation.WrappedUser) User(mc.dragons.core.gameobject.user.User) PunishmentData(mc.dragons.tools.moderation.punishment.PunishmentData) WrappedUser(mc.dragons.tools.moderation.WrappedUser)

Example 99 with User

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

the class StandingLevelCommand method onCommand.

@Override
public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
    if (!requirePermission(sender, PermissionLevel.ADMIN) || !requirePermission(sender, SystemProfileFlag.MODERATION))
        return true;
    if (args.length < 3) {
        sender.sendMessage(ChatColor.RED + "/setsl <player> <type> <level>");
        return true;
    }
    User target = lookupUser(sender, args[0]);
    StandingLevelType type = StringUtil.parseEnum(sender, StandingLevelType.class, args[1].toUpperCase());
    Integer level = parseInt(sender, args[2]);
    if (target == null || type == null || level == null)
        return true;
    WrappedUser wrapped = WrappedUser.of(target);
    wrapped.setStandingLevel(type, level);
    sender.sendMessage(ChatColor.GREEN + "Updated " + target.getName() + "'s standing level successfully.");
    return true;
}
Also used : StandingLevelType(mc.dragons.tools.moderation.punishment.StandingLevelType) WrappedUser(mc.dragons.tools.moderation.WrappedUser) User(mc.dragons.core.gameobject.user.User) WrappedUser(mc.dragons.tools.moderation.WrappedUser)

Example 100 with User

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

the class EscalateCommand method onCommand.

@Override
public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
    if (!requirePlayer(sender) || !requirePermission(sender, PermissionLevel.HELPER))
        return true;
    User reporter = user(sender);
    if (args.length < 2) {
        sender.sendMessage(ChatColor.RED + "Specify a player and code! /escalate <player1 [player2 ...]> <code> [extra info]");
        return true;
    }
    CmdData data = CmdUtil.parse(sender, "/escalate <players> <code> ", args);
    if (data == null)
        return true;
    if (reportLoader.fileStaffReport(data.targets, reporter, data.formatInternalReason(), "") == null) {
        sender.sendMessage(ChatColor.RED + "You have nobody to escalate this report to!");
    } else {
        sender.sendMessage(ChatColor.GREEN + "Escalated issue successfully.");
    }
    return true;
}
Also used : User(mc.dragons.core.gameobject.user.User) CmdData(mc.dragons.tools.moderation.util.CmdUtil.CmdData)

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