package com.nyancraft.reportrts.command.sub; import com.nyancraft.reportrts.RTSFunctions; import com.nyancraft.reportrts.RTSPermissions; import com.nyancraft.reportrts.ReportRTS; import com.nyancraft.reportrts.data.NotificationType; import com.nyancraft.reportrts.data.User; import com.nyancraft.reportrts.event.TicketHoldEvent; import com.nyancraft.reportrts.persistence.DataProvider; import com.nyancraft.reportrts.util.BungeeCord; import com.nyancraft.reportrts.util.Message; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; import java.io.IOException; public class HoldTicket { private static ReportRTS plugin = ReportRTS.getPlugin(); private static DataProvider data = plugin.getDataProvider(); /** * Initial handling of the Hold sub-command. * @param sender player that sent the command * @param args arguments * @return true if command handled correctly */ public static boolean handleCommand(CommandSender sender, String[] args) { if(!RTSPermissions.canPutTicketOnHold(sender) || args.length < 2 || !RTSFunctions.isNumber(args[1])) return false; args[0] = ""; int ticketId = Integer.parseInt(args[1]); String reason = RTSFunctions.implode(args, " ").trim(); if(reason.length() <= args[1].length()) { reason = "No reason provided."; } else { reason = reason.substring(args[1].length()).trim(); } User user = sender instanceof Player ? data.getUser(((Player) sender).getUniqueId(), 0, true) : data.getConsole(); if(user.getUsername() == null) { sender.sendMessage(Message.error("user.getUsername() returned NULL! Are you using plugins to modify names?")); return true; } if(data.setTicketStatus(ticketId, user.getUuid(), sender.getName(), 2, false, System.currentTimeMillis() / 1000) < 1) { sender.sendMessage(Message.error("Unable to put ticket #" + args[0] + " on hold.")); return true; } if(plugin.tickets.containsKey(ticketId)) { Player player = sender.getServer().getPlayer(plugin.tickets.get(ticketId).getUUID()); if(player != null) { player.sendMessage(Message.ticketHoldUser(sender.getName(), ticketId)); player.sendMessage(Message.ticketHoldText(plugin.tickets.get(ticketId).getMessage(), reason.trim())); } plugin.getServer().getPluginManager().callEvent(new TicketHoldEvent(plugin.tickets.get(ticketId), reason, sender)); plugin.tickets.remove(ticketId); } try { BungeeCord.globalNotify(Message.ticketHold(args[1], sender.getName()), ticketId, NotificationType.HOLD); } catch(IOException e) { e.printStackTrace(); } RTSFunctions.messageStaff(Message.ticketHold(args[1], sender.getName()), false); return true; } }