Created
May 26, 2020 11:17
-
-
Save astei/ba079e508e712fe8dd0574109784233b to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
From 06233f3598074f1287db92610b96bb5b88b21c4c Mon Sep 17 00:00:00 2001 | |
From: Aikar <[email protected]> | |
Date: Wed, 27 Mar 2019 21:58:55 -0400 | |
Subject: [PATCH] Backport Server Tick Events | |
Fires event at start and end of a server tick | |
--- | |
.../event/server/ServerTickEndEvent.java | 56 +++++++++++++++++++ | |
.../event/server/ServerTickStartEvent.java | 29 ++++++++++ | |
2 files changed, 85 insertions(+) | |
create mode 100644 src/main/java/com/destroystokyo/paper/event/server/ServerTickEndEvent.java | |
create mode 100644 src/main/java/com/destroystokyo/paper/event/server/ServerTickStartEvent.java | |
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 00000000..e16c093a | |
--- /dev/null | |
+++ b/src/main/java/com/destroystokyo/paper/event/server/ServerTickEndEvent.java | |
@@ -0,0 +1,56 @@ | |
+package com.destroystokyo.paper.event.server; | |
+ | |
+import org.bukkit.event.Event; | |
+import org.bukkit.event.HandlerList; | |
+ | |
+/** | |
+ * 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(); | |
+ } | |
+ | |
+ public HandlerList getHandlers() { | |
+ return handlers; | |
+ } | |
+ | |
+ 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 00000000..6aa0d1fe | |
--- /dev/null | |
+++ b/src/main/java/com/destroystokyo/paper/event/server/ServerTickStartEvent.java | |
@@ -0,0 +1,29 @@ | |
+package com.destroystokyo.paper.event.server; | |
+ | |
+import org.bukkit.event.Event; | |
+import org.bukkit.event.HandlerList; | |
+ | |
+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; | |
+ } | |
+ | |
+ public HandlerList getHandlers() { | |
+ return handlers; | |
+ } | |
+ | |
+ public static HandlerList getHandlerList() { | |
+ return handlers; | |
+ } | |
+} | |
-- | |
2.26.2 |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
From a48fbd1f9b2d5b0b1705a801db3df64784140409 Mon Sep 17 00:00:00 2001 | |
From: Andrew Steinborn <[email protected]> | |
Date: Sun, 26 Apr 2020 13:48:30 -0400 | |
Subject: [PATCH] Backport Server Tick Events | |
--- | |
src/main/java/net/minecraft/server/MinecraftServer.java | 6 ++++++ | |
1 file changed, 6 insertions(+) | |
diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java | |
index 132bc5221..e1e8025bd 100644 | |
--- a/src/main/java/net/minecraft/server/MinecraftServer.java | |
+++ b/src/main/java/net/minecraft/server/MinecraftServer.java | |
@@ -669,7 +669,13 @@ public abstract class MinecraftServer implements ICommandListener, Runnable, IAs | |
} | |
lastTick = curTime; | |
+ // Imagine Start - backport tick events from Paper | |
+ new com.destroystokyo.paper.event.server.ServerTickStartEvent(this.ticks+1).callEvent(); | |
this.C(); | |
+ long endTime = System.nanoTime(); | |
+ long remaining = (TICK_TIME - (endTime - lastTick)) - catchupTime; | |
+ new com.destroystokyo.paper.event.server.ServerTickEndEvent(this.ticks, ((double)(endTime - lastTick) / 1000000D), remaining).callEvent(); // Imagine | |
+ // Imagine End | |
this.Q = true; | |
} | |
// Spigot end | |
-- | |
2.26.2 |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment