Server Tick Events
Fires event at start and end of a server tick
This commit is contained in:
parent
af52f138da
commit
8f25112b93
|
@ -0,0 +1,113 @@
|
|||
From f32b76ea1ec40f3380f2e0bf20b294c3358f4092 Mon Sep 17 00:00:00 2001
|
||||
From: Aikar <aikar@aikar.co>
|
||||
Date: Wed, 27 Mar 2019 21:58:55 -0400
|
||||
Subject: [PATCH] Server Tick Events
|
||||
|
||||
Fires event at start and end of a server tick
|
||||
|
||||
diff --git a/src/main/java/com/destroystokyo/paper/event/server/ServerTickEndEvent.java b/src/main/java/com/destroystokyo/paper/event/server/ServerTickEndEvent.java
|
||||
new file mode 100644
|
||||
index 000000000..9fd28e036
|
||||
--- /dev/null
|
||||
+++ b/src/main/java/com/destroystokyo/paper/event/server/ServerTickEndEvent.java
|
||||
@@ -0,0 +1,59 @@
|
||||
+package com.destroystokyo.paper.event.server;
|
||||
+
|
||||
+import org.bukkit.event.Event;
|
||||
+import org.bukkit.event.HandlerList;
|
||||
+import org.jetbrains.annotations.NotNull;
|
||||
+
|
||||
+/**
|
||||
+ * Called when the server has finished ticking the main loop
|
||||
+ */
|
||||
+public class ServerTickEndEvent extends Event {
|
||||
+
|
||||
+ private static final HandlerList handlers = new HandlerList();
|
||||
+ private final int tickNumber;
|
||||
+ private final double tickDuration;
|
||||
+ private final long timeEnd;
|
||||
+
|
||||
+ public ServerTickEndEvent(int tickNumber, double tickDuration, long timeRemaining) {
|
||||
+ this.tickNumber = tickNumber;
|
||||
+ this.tickDuration = tickDuration;
|
||||
+ this.timeEnd = System.nanoTime() + timeRemaining;
|
||||
+ }
|
||||
+
|
||||
+ /**
|
||||
+ * @return What tick this was since start (first tick = 1)
|
||||
+ */
|
||||
+ public int getTickNumber() {
|
||||
+ return tickNumber;
|
||||
+ }
|
||||
+
|
||||
+ /**
|
||||
+ * @return Time in milliseconds of how long this tick took
|
||||
+ */
|
||||
+ public double getTickDuration() {
|
||||
+ return tickDuration;
|
||||
+ }
|
||||
+
|
||||
+ /**
|
||||
+ * Amount of nanoseconds remaining before the next tick should start.
|
||||
+ *
|
||||
+ * If this value is negative, then that means the server has exceeded the tick time limit and TPS has been lost.
|
||||
+ *
|
||||
+ * Method will continously return the updated time remaining value. (return value is not static)
|
||||
+ *
|
||||
+ * @return Amount of nanoseconds remaining before the next tick should start
|
||||
+ */
|
||||
+ public long getTimeRemaining() {
|
||||
+ return this.timeEnd - System.nanoTime();
|
||||
+ }
|
||||
+
|
||||
+ @NotNull
|
||||
+ public HandlerList getHandlers() {
|
||||
+ return handlers;
|
||||
+ }
|
||||
+
|
||||
+ @NotNull
|
||||
+ public static HandlerList getHandlerList() {
|
||||
+ return handlers;
|
||||
+ }
|
||||
+}
|
||||
diff --git a/src/main/java/com/destroystokyo/paper/event/server/ServerTickStartEvent.java b/src/main/java/com/destroystokyo/paper/event/server/ServerTickStartEvent.java
|
||||
new file mode 100644
|
||||
index 000000000..eac85f1f4
|
||||
--- /dev/null
|
||||
+++ b/src/main/java/com/destroystokyo/paper/event/server/ServerTickStartEvent.java
|
||||
@@ -0,0 +1,32 @@
|
||||
+package com.destroystokyo.paper.event.server;
|
||||
+
|
||||
+import org.bukkit.event.Event;
|
||||
+import org.bukkit.event.HandlerList;
|
||||
+import org.jetbrains.annotations.NotNull;
|
||||
+
|
||||
+public class ServerTickStartEvent extends Event {
|
||||
+
|
||||
+ private static final HandlerList handlers = new HandlerList();
|
||||
+ private final int tickNumber;
|
||||
+
|
||||
+ public ServerTickStartEvent(int tickNumber) {
|
||||
+ this.tickNumber = tickNumber;
|
||||
+ }
|
||||
+
|
||||
+ /**
|
||||
+ * @return What tick this is going be since start (first tick = 1)
|
||||
+ */
|
||||
+ public int getTickNumber() {
|
||||
+ return tickNumber;
|
||||
+ }
|
||||
+
|
||||
+ @NotNull
|
||||
+ public HandlerList getHandlers() {
|
||||
+ return handlers;
|
||||
+ }
|
||||
+
|
||||
+ @NotNull
|
||||
+ public static HandlerList getHandlerList() {
|
||||
+ return handlers;
|
||||
+ }
|
||||
+}
|
||||
--
|
||||
2.21.0
|
||||
|
|
@ -0,0 +1,34 @@
|
|||
From a64fa8711ba3b64574459546673a90803f46011d Mon Sep 17 00:00:00 2001
|
||||
From: Aikar <aikar@aikar.co>
|
||||
Date: Wed, 27 Mar 2019 22:48:45 -0400
|
||||
Subject: [PATCH] Server Tick Events
|
||||
|
||||
Fires event at start and end of a server tick
|
||||
|
||||
diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java
|
||||
index b93fccf91..9a56afeb3 100644
|
||||
--- a/src/main/java/net/minecraft/server/MinecraftServer.java
|
||||
+++ b/src/main/java/net/minecraft/server/MinecraftServer.java
|
||||
@@ -927,6 +927,7 @@ public abstract class MinecraftServer implements IAsyncTaskHandler, IMojangStati
|
||||
co.aikar.timings.TimingsManager.FULL_SERVER_TICK.startTiming(); // Paper
|
||||
this.slackActivityAccountant.tickStarted(); // Spigot
|
||||
long i = SystemUtils.getMonotonicNanos(); long startTime = i; // Paper
|
||||
+ new com.destroystokyo.paper.event.server.ServerTickStartEvent(this.ticks+1).callEvent(); // Paper
|
||||
|
||||
++this.ticks;
|
||||
if (this.S) {
|
||||
@@ -995,6 +996,11 @@ public abstract class MinecraftServer implements IAsyncTaskHandler, IMojangStati
|
||||
PaperLightingQueue.processQueue(startTime); // Paper
|
||||
expiringMaps.removeIf(ExpiringMap::clean); // Paper
|
||||
this.slackActivityAccountant.tickEnded(l); // Spigot
|
||||
+ // Paper start
|
||||
+ long endTime = System.nanoTime();
|
||||
+ long remaining = (TICK_TIME - (endTime - lastTick)) - catchupTime;
|
||||
+ new com.destroystokyo.paper.event.server.ServerTickEndEvent(this.ticks, endTime - lastTick, remaining).callEvent();
|
||||
+ // Paper end
|
||||
co.aikar.timings.TimingsManager.FULL_SERVER_TICK.stopTiming(); // Paper
|
||||
}
|
||||
|
||||
--
|
||||
2.21.0
|
||||
|
Loading…
Reference in New Issue