1
0
Fork 0
mirror of https://github.com/PaperMC/Paper.git synced 2025-02-18 19:24:10 +01:00

Server Tick Events

Fires event at start and end of a server tick
This commit is contained in:
Aikar 2019-03-27 21:58:55 -04:00
parent 2825ece820
commit 06e00bdd20
2 changed files with 97 additions and 0 deletions
paper-api/src/main/java/com/destroystokyo/paper/event/server

View file

@ -0,0 +1,62 @@
package com.destroystokyo.paper.event.server;
import org.bukkit.event.Event;
import org.bukkit.event.HandlerList;
import org.jetbrains.annotations.ApiStatus;
import org.jspecify.annotations.NullMarked;
/**
* Called when the server has finished ticking the main loop
*/
@NullMarked
public class ServerTickEndEvent extends Event {
private static final HandlerList HANDLER_LIST = new HandlerList();
private final int tickNumber;
private final double tickDuration;
private final long timeEnd;
@ApiStatus.Internal
public ServerTickEndEvent(final int tickNumber, final double tickDuration, final 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 this.tickNumber;
}
/**
* @return Time in milliseconds of how long this tick took
*/
public double getTickDuration() {
return this.tickDuration;
}
/**
* Amount of nanoseconds remaining before the next tick should start.
* <p>
* If this value is negative, then that means the server has exceeded the tick time limit and TPS has been lost.
* <p>
* Method will continuously 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();
}
@Override
public HandlerList getHandlers() {
return HANDLER_LIST;
}
public static HandlerList getHandlerList() {
return HANDLER_LIST;
}
}

View file

@ -0,0 +1,35 @@
package com.destroystokyo.paper.event.server;
import org.bukkit.event.Event;
import org.bukkit.event.HandlerList;
import org.jetbrains.annotations.ApiStatus;
import org.jspecify.annotations.NullMarked;
@NullMarked
public class ServerTickStartEvent extends Event {
private static final HandlerList HANDLER_LIST = new HandlerList();
private final int tickNumber;
@ApiStatus.Internal
public ServerTickStartEvent(final int tickNumber) {
this.tickNumber = tickNumber;
}
/**
* @return What tick this is going be since start (first tick = 1)
*/
public int getTickNumber() {
return this.tickNumber;
}
@Override
public HandlerList getHandlers() {
return HANDLER_LIST;
}
public static HandlerList getHandlerList() {
return HANDLER_LIST;
}
}