From 46a77700b48ffdc330287963428ef9b4c01067b4 Mon Sep 17 00:00:00 2001 From: Heliosares Date: Wed, 17 Jul 2024 21:36:55 -0400 Subject: [PATCH] Activity fixes --- .../heliosares/auxprotect/database/Results.java | 10 ++++++++++ .../auxprotect/utils/ActivitySolver.java | 16 +++++++++------- 2 files changed, 19 insertions(+), 7 deletions(-) diff --git a/src/main/java/dev/heliosares/auxprotect/database/Results.java b/src/main/java/dev/heliosares/auxprotect/database/Results.java index 40483dc..b4915f1 100644 --- a/src/main/java/dev/heliosares/auxprotect/database/Results.java +++ b/src/main/java/dev/heliosares/auxprotect/database/Results.java @@ -24,6 +24,9 @@ import org.bukkit.inventory.ItemStack; import java.io.IOException; import java.sql.SQLException; +import java.time.Instant; +import java.time.ZoneId; +import java.time.ZonedDateTime; import java.util.List; import java.util.Objects; import java.util.Random; @@ -205,6 +208,13 @@ public class Results { message.event(hoverEvent).event(new ClickEvent(ClickEvent.Action.COPY_TO_CLIPBOARD, data)); } } + if (entry.getAction().equals(EntryAction.ACTIVITY)) { + message.append(" " + ChatColor.COLOR_CHAR + "8[" + ChatColor.COLOR_CHAR + "7Copy Minute Range" + ChatColor.COLOR_CHAR + "8]"); + ZonedDateTime zonedDateTime = Instant.ofEpochMilli(entry.getTime()).atZone(ZoneId.systemDefault()); + ZonedDateTime start = zonedDateTime.withSecond(0).withNano(0); + ZonedDateTime end = start.plusMinutes(1).minusNanos(1000000); + message.event(clickToCopy).event(new ClickEvent(ClickEvent.Action.COPY_TO_CLIPBOARD, start.toInstant().toEpochMilli() + "e-" + end.toInstant().toEpochMilli() + "e")); + } } } if (entry.getWorld() != null && !entry.getWorld().equals("$null") && coords) { diff --git a/src/main/java/dev/heliosares/auxprotect/utils/ActivitySolver.java b/src/main/java/dev/heliosares/auxprotect/utils/ActivitySolver.java index ae3a6f0..0945b6e 100644 --- a/src/main/java/dev/heliosares/auxprotect/utils/ActivitySolver.java +++ b/src/main/java/dev/heliosares/auxprotect/utils/ActivitySolver.java @@ -1,6 +1,5 @@ package dev.heliosares.auxprotect.utils; -import dev.heliosares.auxprotect.core.Activity; import dev.heliosares.auxprotect.core.ActivityRecord; import dev.heliosares.auxprotect.database.DbEntry; import dev.heliosares.auxprotect.database.EntryAction; @@ -21,11 +20,12 @@ import java.time.ZoneId; import java.time.format.DateTimeFormatter; import java.util.ArrayList; import java.util.Arrays; -import java.util.HashSet; import java.util.List; public class ActivitySolver { public static BaseComponent[][] solveActivity(List entries, long rangeStart, long rangeEnd) { + if (entries.isEmpty()) return null; + ComponentBuilder message = new ComponentBuilder().append("", FormatRetention.NONE); LocalDateTime startTime = Instant.ofEpochMilli(rangeStart).atZone(ZoneId.systemDefault()).toLocalDateTime() .withSecond(0).withNano(0); @@ -45,6 +45,7 @@ public class ActivitySolver { message = new ComponentBuilder(); ActivityRecord[] activityRecords = new ActivityRecord[minutes]; + long[] times = new long[minutes]; long lastTime = startMillis; for (int i = entries.size() - 1, minute = 0; i >= 0; i--) { @@ -91,6 +92,7 @@ public class ActivitySolver { } counter[minute] += activity; locations[minute] = new Location(Bukkit.getWorld(entry.getWorld()), entry.getX(), entry.getY(), entry.getZ()); + times[minute] = entry.getTime(); lastTime = entry.getTime(); minute++; @@ -134,12 +136,8 @@ public class ActivitySolver { } ClickEvent clickevent = null; if (locations[i] != null) { - hovertext += String.format("\n\n" + ChatColor.COLOR_CHAR + "7(x%d/y%d/z%d/%s)\n" + ChatColor.COLOR_CHAR + "7Click to teleport", locations[i].getBlockX(), + hovertext += String.format("\n\n" + ChatColor.COLOR_CHAR + "7(x%d/y%d/z%d/%s)\n", locations[i].getBlockX(), locations[i].getBlockY(), locations[i].getBlockZ(), locations[i].getWorld().getName()); - clickevent = new ClickEvent(ClickEvent.Action.RUN_COMMAND, - String.format("/auxprotect tp %d %d %d %s", locations[i].getBlockX(), - locations[i].getBlockY(), locations[i].getBlockZ(), - locations[i].getWorld().getName())); } ActivityRecord activityRecord = activityRecords[i]; @@ -147,6 +145,10 @@ public class ActivitySolver { hovertext += activityRecord.getHoverText(); } + hovertext += "\n\n"; + hovertext += ChatColor.COLOR_CHAR + "9Click to view"; + clickevent = new ClickEvent(ClickEvent.Action.RUN_COMMAND, "/auxprotect lookup a:activity t:" + times[i] + "e"); + message.append(AuxProtectSpigot.BLOCK + "") .event(new HoverEvent(HoverEvent.Action.SHOW_TEXT, new Text(hovertext))).event(clickevent); if (activity >= 20) {