public static void handleNotify(byte[] bytes) { try { DataInputStream in = new DataInputStream(new ByteArrayInputStream(bytes)); String subChannel = in.readUTF(); if (subChannel.equals("ReportRTS")) { short len = in.readShort(); byte[] msgbytes = new byte[len]; in.readFully(msgbytes); DataInputStream msgin = new DataInputStream(new ByteArrayInputStream(msgbytes)); String function = msgin.readUTF(); if (function.equals("NotifyAndSync")) { int ticketId = msgin.readInt(); NotificationType notifType = NotificationType.getTypeByCode(msgin.readInt()); String msg = msgin.readUTF(); if (notifType.getCode() == 0 || notifType.getCode() == 1) { if (RTSFunctions.syncTicket(ticketId)) { RTSFunctions.messageMods(msg, (notifType.getCode() == 0)); } } else if (notifType.getCode() == 3 || notifType.getCode() == 4) { RTSFunctions.messageMods(msg, false); } else if (notifType.getCode() == 2 || notifType.getCode() == 5) { if (RTSFunctions.syncTicket(ticketId)) { if (notifType.getCode() == 2) ReportRTS.getPlugin() .notificationMap .put(ticketId, ReportRTS.getPlugin().requestMap.get(ticketId).getName()); ReportRTS.getPlugin().requestMap.remove(ticketId); RTSFunctions.messageMods(msg, (notifType.getCode() == 0)); } } else if (notifType.getCode() == 6) { ReportRTS.getPlugin().requestMap.remove(ticketId); RTSFunctions.messageMods(msg, (notifType.getCode() == 0)); } } else if (function.equals("NotifyUserAndSync")) { int ticketId = msgin.readInt(); String username = msgin.readUTF(); String msg = msgin.readUTF(); if (RTSFunctions.syncTicket(ticketId)) { Player player = Bukkit.getPlayerExact(username); if (player != null) { player.sendMessage(msg); if (!DatabaseManager.getDatabase().setNotificationStatus(ticketId, 1)) ReportRTS.getPlugin() .getLogger() .warning("Unable to set notification status to 1."); } } } else if (function.equals("TeleportNotify")) { int ticketId = msgin.readInt(); String username = msgin.readUTF(); if (RTSFunctions.isUserOnline(username)) { Player player = Bukkit.getPlayerExact(username); if (player != null) { player.sendMessage( Message.parse("teleportedUser", "/tp-id " + Integer.toString(ticketId))); Bukkit.dispatchCommand(player, "tp-id " + Integer.toString(ticketId)); } else { ReportRTS.getPlugin().teleportMap.put(username, ticketId); } } else { ReportRTS.getPlugin().teleportMap.put(username, ticketId); } } } else if (subChannel.equals("GetServer")) { String serverName = in.readUTF(); setServer(serverName); } } catch (Exception e) { e.printStackTrace(); } }
public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) { if (args.length == 0) return false; if (!(sender instanceof Player)) { sender.sendMessage("[ReportRTS] Some information will not be correct, such as location."); int userId = dbManager.getUserId("CONSOLE", true); String message = RTSFunctions.implode(args, " "); Location location = plugin.getServer().getWorlds().get(0).getSpawnLocation(); String world = plugin.getServer().getWorlds().get(0).getName(); if (!dbManager.fileRequest("CONSOLE", world, location, message, userId)) { sender.sendMessage(Message.parse("generalInternalError", "Request could not be filed.")); return true; } int ticketId = dbManager.getLatestTicketIdByUser(userId); HelpRequest request = new HelpRequest( "CONSOLE", ticketId, System.currentTimeMillis() / 1000, message, 0, location.getBlockX(), location.getBlockY(), location.getBlockZ(), location.getYaw(), location.getPitch(), world, BungeeCord.getServer(), ""); plugin.getServer().getPluginManager().callEvent(new ReportCreateEvent(request)); plugin.requestMap.put(ticketId, request); if (plugin.notifyStaffOnNewRequest) { try { BungeeCord.globalNotify( Message.parse("modreqFiledMod", "CONSOLE", ticketId), ticketId, NotificationType.NEW); } catch (IOException e) { e.printStackTrace(); } RTSFunctions.messageMods(Message.parse("modreqFiledMod", "CONSOLE", ticketId), true); } return true; } if (!RTSPermissions.canFileRequest(sender)) return true; if (plugin.requestMinimumWords > args.length) { sender.sendMessage(Message.parse("modreqTooShort", plugin.requestMinimumWords)); return true; } if (RTSFunctions.getOpenRequestsByUser(sender) >= plugin.maxRequests && !(ReportRTS.permission != null ? ReportRTS.permission.has(sender, "reportrts.command.modreq.unlimited") : sender.hasPermission("reportrts.command.modreq.unlimited"))) { sender.sendMessage(Message.parse("modreqTooManyOpen")); return true; } if (plugin.requestDelay > 0) { if (!(ReportRTS.permission != null ? ReportRTS.permission.has(sender, "reportrts.command.modreq.unlimited") : sender.hasPermission("reportrts.command.modreq.unlimited"))) { long timeBetweenRequest = RTSFunctions.checkTimeBetweenRequests(sender); if (timeBetweenRequest > 0) { sender.sendMessage(Message.parse("modreqTooFast", timeBetweenRequest)); return true; } } } double start = 0; if (plugin.debugMode) start = System.nanoTime(); Player player = (Player) sender; String message = RTSFunctions.implode(args, " "); int userId = dbManager.getUserId(player.getName(), true); if (!dbManager.fileRequest( player.getName(), player.getWorld().getName(), player.getLocation(), message, userId)) { sender.sendMessage(Message.parse("generalInternalError", "Request could not be filed.")); return true; } int ticketId = dbManager.getLatestTicketIdByUser(userId); Location location = player.getLocation(); sender.sendMessage(Message.parse("modreqFiledUser")); plugin.getLogger().log(Level.INFO, "" + player.getName() + " filed a request."); if (plugin.notifyStaffOnNewRequest) { try { BungeeCord.globalNotify( Message.parse("modreqFiledMod", player.getName(), ticketId), ticketId, NotificationType.NEW); } catch (IOException e) { e.printStackTrace(); } RTSFunctions.messageMods(Message.parse("modreqFiledMod", player.getName(), ticketId), true); } HelpRequest request = new HelpRequest( player.getName(), ticketId, System.currentTimeMillis() / 1000, message, 0, location.getBlockX(), location.getBlockY(), location.getBlockZ(), location.getYaw(), location.getPitch(), player.getWorld().getName(), BungeeCord.getServer(), ""); plugin.getServer().getPluginManager().callEvent(new ReportCreateEvent(request)); plugin.requestMap.put(ticketId, request); if (plugin.debugMode) Message.debug(sender.getName(), this.getClass().getSimpleName(), start, cmd.getName(), args); return true; }