summaryrefslogtreecommitdiff
path: root/src/main/java/com/redstoner/modules/reports/Reports.java
diff options
context:
space:
mode:
authorDavid <david@panic.tk>2018-11-07 23:50:06 +0100
committerDavid <david@panic.tk>2018-11-07 23:50:06 +0100
commit604cf01967ede98bf5024e4926bb0777fc4e8eee (patch)
treee2fa63d7e683769ee3bf3eddc75280648e92eb04 /src/main/java/com/redstoner/modules/reports/Reports.java
parente86c52ef7c0e1e33c6af0e8674b038976bec11cc (diff)
Converted Modules to gradle
Diffstat (limited to 'src/main/java/com/redstoner/modules/reports/Reports.java')
-rw-r--r--src/main/java/com/redstoner/modules/reports/Reports.java154
1 files changed, 154 insertions, 0 deletions
diff --git a/src/main/java/com/redstoner/modules/reports/Reports.java b/src/main/java/com/redstoner/modules/reports/Reports.java
new file mode 100644
index 0000000..0e55ccc
--- /dev/null
+++ b/src/main/java/com/redstoner/modules/reports/Reports.java
@@ -0,0 +1,154 @@
+package com.redstoner.modules.reports;
+
+import java.io.File;
+import java.text.SimpleDateFormat;
+import java.util.Date;
+
+import org.bukkit.Bukkit;
+import org.bukkit.Location;
+import org.bukkit.World;
+import org.bukkit.command.CommandSender;
+import org.bukkit.entity.Player;
+import org.json.simple.JSONArray;
+import org.json.simple.JSONObject;
+
+import com.nemez.cmdmgr.Command;
+import com.redstoner.annotations.Commands;
+import com.redstoner.annotations.Version;
+import com.redstoner.misc.CommandHolderType;
+import com.redstoner.misc.JsonManager;
+import com.redstoner.misc.Main;
+import com.redstoner.modules.Module;
+
+import net.md_5.bungee.api.ChatColor;
+
+/** Report module. Allows reports to be created and handled by staff
+ *
+ * @author Redempt */
+@Commands(CommandHolderType.File)
+@Version(major = 4, minor = 1, revision = 0, compatible = 4)
+public class Reports implements Module
+{
+ private int task = 0;
+ private JSONArray reports;
+ private JSONArray archived;
+ private SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy/MM/dd kk:mm");
+
+ @Override
+ public boolean onEnable()
+ {
+ reports = JsonManager.getArray(new File(Main.plugin.getDataFolder(), "reports.json"));
+ archived = JsonManager.getArray(new File(Main.plugin.getDataFolder(), "archived_reports.json"));
+ if (reports == null)
+ reports = new JSONArray();
+ if (archived == null)
+ archived = new JSONArray();
+ // Notify online staff of open reports
+ task = Bukkit.getScheduler().scheduleSyncRepeatingTask(Main.plugin, () ->
+ {
+ if (reports.size() <= 0)
+ {
+ return;
+ }
+ for (Player player : Bukkit.getOnlinePlayers())
+ {
+ if (player.hasPermission("utils.report"))
+ {
+ getLogger().message(player, "&cThere are &e" + reports.size()
+ + " &copen reports!");
+ }
+ }
+ getLogger().info("&cThere are &e" + reports.size()
+ + " &copen reports!");
+ }, 2400, 2400);
+ return true;
+ }
+
+ @Override
+ public void onDisable()
+ {
+ // Save reports, cancel notifier task
+ Bukkit.getScheduler().cancelTask(task);
+ JsonManager.save(reports, new File(Main.plugin.getDataFolder(), "reports.json"));
+ JsonManager.save(archived, new File(Main.plugin.getDataFolder(), "archived_reports.json"));
+ }
+
+ @Command(hook = "report_tp")
+ public void tpReport(CommandSender sender, int id)
+ {
+ // Check for invalid ID
+ Player player = (Player) sender;
+ if (id > reports.size() - 1 || id < 0)
+ {
+ getLogger().message(sender, true, "Invalid ID!");
+ return;
+ }
+ JSONObject report = (JSONObject) reports.get(id);
+ String loc = (String) report.get("location");
+ String[] split = loc.split(";");
+ // Location from string
+ int x = Integer.parseInt(split[0]);
+ int y = Integer.parseInt(split[1]);
+ int z = Integer.parseInt(split[2]);
+ World world = Bukkit.getWorld(split[3]);
+ Location location = new Location(world, x, y, z);
+ player.teleport(location);
+ }
+
+ @SuppressWarnings("unchecked")
+ @Command(hook = "report_close")
+ public void closeReport(CommandSender sender, int id)
+ {
+ // Check for invalid ID
+ if (id > reports.size() - 1 || id < 0)
+ {
+ getLogger().message(sender, true, "Invalid ID!");
+ return;
+ }
+ // Move report to archived reports
+ JSONObject report = (JSONObject) reports.get(id);
+ reports.remove(id);
+ archived.add(report);
+ sender.sendMessage(ChatColor.GREEN + "Report #" + id + " closed!");
+ }
+
+ @Command(hook = "report_open")
+ public void listOpen(CommandSender sender)
+ {
+ int i = 0;
+ for (Object object : reports)
+ {
+ JSONObject report = (JSONObject) object;
+ String message = "";
+ message += ChatColor.DARK_GRAY + "[" + ChatColor.YELLOW + i + ChatColor.DARK_GRAY + "]";
+ message += "[" + ChatColor.YELLOW + report.get("time") + ChatColor.DARK_GRAY + "] ";
+ message += ChatColor.DARK_AQUA + "" + report.get("name");
+ message += ChatColor.WHITE + ": " + ChatColor.YELLOW + report.get("message");
+ sender.sendMessage(message);
+ i++;
+ }
+ if (i == 0)
+ {
+ sender.sendMessage(ChatColor.GREEN + "There are no open reports.");
+ }
+ }
+
+ @SuppressWarnings("unchecked")
+ @Command(hook = "report")
+ public void report(CommandSender sender, String message)
+ {
+ Player player = (Player) sender;
+ // Create report JSONObject
+ JSONObject report = new JSONObject();
+ report.put("name", player.getName());
+ report.put("time", dateFormat.format(new Date()));
+ report.put("message", message);
+ String loc = "";
+ // Location to string
+ loc += player.getLocation().getBlockX() + ";" + player.getLocation().getBlockY() + ";"
+ + player.getLocation().getBlockZ() + ";" + player.getLocation().getWorld().getName();
+ report.put("location", loc);
+ reports.add(report);
+ sender.sendMessage(ChatColor.GREEN + "Report created!");
+ }
+}