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.");
}
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;
}
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;
}
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;
}
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;
}
Aggregations