feat: 1.20.1

This commit is contained in:
Lexi Larkin
2023-06-30 14:54:32 -04:00
parent 3edba7dac4
commit 17e63ac792
42 changed files with 783 additions and 828 deletions

View File

@@ -5,122 +5,94 @@ Subject: [PATCH] Add Timings Events
diff --git a/src/main/java/co/aikar/timings/Timings.java b/src/main/java/co/aikar/timings/Timings.java
index 852f5673fb3f9c7d7ad44b01d04b3dcdf7352e50..52dc9dd0e45c6b20b2414bd74726ade049959e72 100644
index 9812d668ad945aba486fbf6d5bf83c4292cb5d03..16198861748b29c537527151216e79c7c32e7204 100644
--- a/src/main/java/co/aikar/timings/Timings.java
+++ b/src/main/java/co/aikar/timings/Timings.java
@@ -23,6 +23,8 @@
*/
package co.aikar.timings;
+import co.aikar.timings.event.TimingsModifyEvent;
+import co.aikar.timings.event.TimingsModifyEvent.Action;
import com.google.common.base.Preconditions;
import com.google.common.collect.EvictingQueue;
import com.google.common.collect.Lists;
@@ -139,7 +141,24 @@ public final class Timings {
@@ -145,8 +145,27 @@ public final class Timings {
* @param enabled Should timings be reported
*/
public static void setTimingsEnabled(boolean enabled) {
+ // Parchment start
+ setTimingsEnabled(enabled, null);
+ }
+
+ /**
+ * <p>Sets whether or not the Spigot Timings system should be enabled</p>
+ *
+ * Calls a {@link TimingsModifyEvent}, if cancelled the timings will not be reset
+ * Calls a {@link co.aikar.timings.event.TimingsModifyEvent}, if cancelled the timings will not be reset
+ *
+ * @param enabled Should timings be reported
+ * @param sender The sender asking to reset
+ */
+ public static void setTimingsEnabled(boolean enabled, CommandSender sender) {
timingsEnabled = enabled;
warnAboutDeprecationOnEnable();
+ if (sender != null) {
+ if (!new co.aikar.timings.event.TimingsModifyEvent(sender, Action.RESET).callEvent()) {
+ if (!new co.aikar.timings.event.TimingsModifyEvent(sender, co.aikar.timings.event.TimingsModifyEvent.Action.RESET).callEvent()) {
+ return;
+ }
+ }
+ // Parchment end
reset();
}
diff --git a/src/main/java/co/aikar/timings/TimingsCommand.java b/src/main/java/co/aikar/timings/TimingsCommand.java
index 61cfad5cd53980836e1fd6ecf08a760166fff2b9..b668b91f2159cd693e95a1652ca0c65012aa7a88 100644
index e801e79fa57c44b2e5d359647c920f88064826f1..012d2281c386d2e5f5a655079c0cbfa4545d6476 100644
--- a/src/main/java/co/aikar/timings/TimingsCommand.java
+++ b/src/main/java/co/aikar/timings/TimingsCommand.java
@@ -60,12 +60,14 @@ public class TimingsCommand extends BukkitCommand {
@@ -63,10 +63,12 @@ public class TimingsCommand extends BukkitCommand {
}
final String arg = args[0];
if ("on".equalsIgnoreCase(arg)) {
- Timings.setTimingsEnabled(true);
- sender.sendMessage(text("Enabled Timings & Reset"));
+ if (new co.aikar.timings.event.TimingsModifyEvent(sender, co.aikar.timings.event.TimingsModifyEvent.Action.ENABLE).callEvent()) {
+ Timings.setTimingsEnabled(true, sender);
+ }
+ if (!new co.aikar.timings.event.TimingsModifyEvent(sender, co.aikar.timings.event.TimingsModifyEvent.Action.ENABLE).callEvent()) return true; // Parchment
+ Timings.setTimingsEnabled(true, sender);
sender.sendMessage(text("Enabled Timings & Reset"));
return true;
} else if ("off".equalsIgnoreCase(arg)) {
- Timings.setTimingsEnabled(false);
- sender.sendMessage(text("Disabled Timings"));
+ if (new co.aikar.timings.event.TimingsModifyEvent(sender, co.aikar.timings.event.TimingsModifyEvent.Action.DISABLE).callEvent()) {
+ Timings.setTimingsEnabled(false, sender);
+ }
+ if (!new co.aikar.timings.event.TimingsModifyEvent(sender, co.aikar.timings.event.TimingsModifyEvent.Action.DISABLE).callEvent()) return true; // Parchment
Timings.setTimingsEnabled(false);
sender.sendMessage(text("Disabled Timings"));
return true;
}
@@ -76,20 +78,22 @@ public class TimingsCommand extends BukkitCommand {
@@ -79,15 +81,18 @@ public class TimingsCommand extends BukkitCommand {
long now = System.currentTimeMillis();
if ("verbon".equalsIgnoreCase(arg)) {
- Timings.setVerboseTimingsEnabled(true);
- sender.sendMessage(text("Enabled Verbose Timings"));
+ if (new co.aikar.timings.event.TimingsModifyEvent(sender, co.aikar.timings.event.TimingsModifyEvent.Action.VERBOSE_ON).callEvent()) {
+ Timings.setVerboseTimingsEnabled(true);
+ }
+ if (!new co.aikar.timings.event.TimingsModifyEvent(sender, co.aikar.timings.event.TimingsModifyEvent.Action.VERBOSE_ON).callEvent()) return true; // Parchment
Timings.setVerboseTimingsEnabled(true);
sender.sendMessage(text("Enabled Verbose Timings"));
return true;
} else if ("verboff".equalsIgnoreCase(arg)) {
- Timings.setVerboseTimingsEnabled(false);
- sender.sendMessage(text("Disabled Verbose Timings"));
+ if (new co.aikar.timings.event.TimingsModifyEvent(sender, co.aikar.timings.event.TimingsModifyEvent.Action.VERBOSE_OFF).callEvent()) {
+ Timings.setVerboseTimingsEnabled(false);
+ }
+ if (!new co.aikar.timings.event.TimingsModifyEvent(sender, co.aikar.timings.event.TimingsModifyEvent.Action.VERBOSE_OFF).callEvent()) return true; // Parchment
Timings.setVerboseTimingsEnabled(false);
sender.sendMessage(text("Disabled Verbose Timings"));
return true;
} else if ("reset".equalsIgnoreCase(arg)) {
if (now - lastResetAttempt < 30000) {
- TimingsManager.reset();
- sender.sendMessage(text("Timings reset. Please wait 5-10 minutes before using /timings report.", NamedTextColor.RED));
+ if (new co.aikar.timings.event.TimingsModifyEvent(sender, co.aikar.timings.event.TimingsModifyEvent.Action.RESET).callEvent()) {
+ TimingsManager.reset();
+ }
+ if (!new co.aikar.timings.event.TimingsModifyEvent(sender, co.aikar.timings.event.TimingsModifyEvent.Action.RESET).callEvent()) return true; // Parchment
TimingsManager.reset();
sender.sendMessage(text("Timings reset. Please wait 5-10 minutes before using /timings report.", NamedTextColor.RED));
} else {
lastResetAttempt = now;
- sender.sendMessage(text("WARNING: Timings v2 should not be reset. If you are experiencing lag, please wait 3 minutes and then issue a report. The best timings will include 10+ minutes, with data before and after your lag period. If you really want to reset, run this command again within 30 seconds.", NamedTextColor.RED));
}
} else if (
"paste".equalsIgnoreCase(arg) ||
diff --git a/src/main/java/co/aikar/timings/TimingsReportListener.java b/src/main/java/co/aikar/timings/TimingsReportListener.java
index 3af5b8ea795311582044c712de50d29412024b77..b509aa8d2b05e913277713308e2eea46e631a5df 100644
index 3af5b8ea795311582044c712de50d29412024b77..806a1e528aae9a26413b483855130bef78ca72fb 100644
--- a/src/main/java/co/aikar/timings/TimingsReportListener.java
+++ b/src/main/java/co/aikar/timings/TimingsReportListener.java
@@ -59,7 +59,9 @@ public class TimingsReportListener implements net.kyori.adventure.audience.Forwa
@@ -59,6 +59,7 @@ public class TimingsReportListener implements net.kyori.adventure.audience.Forwa
@Override
public void sendMessage(final @NotNull net.kyori.adventure.identity.Identity source, final @NotNull net.kyori.adventure.text.Component message, final @NotNull net.kyori.adventure.audience.MessageType type) {
- net.kyori.adventure.audience.ForwardingAudience.super.sendMessage(source, message, type);
+ if (new co.aikar.timings.event.TimingsMessageEvent(this.senders, message).callEvent()) {
+ net.kyori.adventure.audience.ForwardingAudience.super.sendMessage(source, message, type);
+ }
+ if (!new co.aikar.timings.event.TimingsMessageEvent(this.senders, message).callEvent()) return; // Parchment
net.kyori.adventure.audience.ForwardingAudience.super.sendMessage(source, message, type);
}
@NotNull
@@ -70,7 +72,9 @@ public class TimingsReportListener implements net.kyori.adventure.audience.Forwa
@@ -70,6 +71,7 @@ public class TimingsReportListener implements net.kyori.adventure.audience.Forwa
@Override
public void sendMessage(@NotNull String message) {
- senders.forEach((sender) -> sender.sendMessage(message));
+ if (new co.aikar.timings.event.TimingsMessageEvent(this.senders, net.kyori.adventure.text.Component.text(message)).callEvent()) {
+ senders.forEach((sender) -> sender.sendMessage(message));
+ }
+ if (!new co.aikar.timings.event.TimingsMessageEvent(this.senders, net.kyori.adventure.text.Component.text(message)).callEvent()) return; // Parchment
senders.forEach((sender) -> sender.sendMessage(message));
}
public void addConsoleIfNeeded() {
diff --git a/src/main/java/co/aikar/timings/event/TimingsEvent.java b/src/main/java/co/aikar/timings/event/TimingsEvent.java
new file mode 100644
index 0000000000000000000000000000000000000000..df78c90859999ec18c7b8758e0f1c71281e1abe4