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