mirror of
https://github.com/MinecraftForge/MinecraftForge.git
synced 2026-11-14 01:04:24 +00:00
205 lines
6.3 KiB
Java
205 lines
6.3 KiB
Java
/*
|
|
* Copyright (c) Forge Development LLC and contributors
|
|
* SPDX-License-Identifier: LGPL-2.1-only
|
|
*/
|
|
|
|
package net.minecraftforge.event;
|
|
|
|
import net.minecraft.world.entity.player.Player;
|
|
import net.minecraft.server.MinecraftServer;
|
|
|
|
import java.util.function.BooleanSupplier;
|
|
|
|
import net.minecraft.server.level.ServerPlayer;
|
|
import net.minecraft.world.level.Level;
|
|
import net.minecraftforge.eventbus.api.Event;
|
|
import net.minecraftforge.fml.LogicalSide;
|
|
|
|
public class TickEvent extends Event {
|
|
public enum Type {
|
|
LEVEL, PLAYER, CLIENT, SERVER, RENDER;
|
|
}
|
|
|
|
public enum Phase {
|
|
START, END;
|
|
}
|
|
|
|
public final Type type;
|
|
public final LogicalSide side;
|
|
@Deprecated(forRemoval = true, since = "1.20.6")
|
|
public final Phase phase;
|
|
public TickEvent(Type type, LogicalSide side, Phase phase) {
|
|
this.type = type;
|
|
this.side = side;
|
|
this.phase = phase;
|
|
}
|
|
|
|
public static class ServerTickEvent extends TickEvent {
|
|
private final BooleanSupplier haveTime;
|
|
private final MinecraftServer server;
|
|
|
|
@Deprecated(forRemoval = true, since = "1.20.6")
|
|
public ServerTickEvent(Phase phase, BooleanSupplier haveTime, MinecraftServer server) {
|
|
this(haveTime, server, phase);
|
|
}
|
|
protected ServerTickEvent(BooleanSupplier haveTime, MinecraftServer server, Phase phase) {
|
|
super(Type.SERVER, LogicalSide.SERVER, phase);
|
|
this.haveTime = haveTime;
|
|
this.server = server;
|
|
}
|
|
|
|
/**
|
|
* @return {@code true} whether the server has enough time to perform any
|
|
* additional tasks (usually IO related) during the current tick,
|
|
* otherwise {@code false}
|
|
*/
|
|
public boolean haveTime() {
|
|
return this.haveTime.getAsBoolean();
|
|
}
|
|
|
|
/**
|
|
* {@return the server instance}
|
|
*/
|
|
public MinecraftServer getServer() {
|
|
return server;
|
|
}
|
|
|
|
public static class Pre extends ServerTickEvent {
|
|
|
|
public Pre(BooleanSupplier haveTime, MinecraftServer server) {
|
|
super(haveTime, server, Phase.START);
|
|
}
|
|
}
|
|
|
|
public static class Post extends ServerTickEvent {
|
|
|
|
public Post(BooleanSupplier haveTime, MinecraftServer server) {
|
|
super(haveTime, server, Phase.END);
|
|
}
|
|
}
|
|
}
|
|
|
|
public static class ClientTickEvent extends TickEvent {
|
|
@Deprecated(forRemoval = true, since = "1.20.6")
|
|
public ClientTickEvent(Phase phase) {
|
|
super(Type.CLIENT, LogicalSide.CLIENT, phase);
|
|
}
|
|
|
|
public static class Pre extends ClientTickEvent {
|
|
|
|
private static final Pre INSTANCE = new Pre();
|
|
|
|
private Pre() {
|
|
super(Phase.START);
|
|
}
|
|
|
|
public static Pre get() {
|
|
return INSTANCE;
|
|
}
|
|
}
|
|
|
|
public static class Post extends ClientTickEvent {
|
|
|
|
private static final Post INSTANCE = new Post();
|
|
|
|
private Post() {
|
|
super(Phase.END);
|
|
}
|
|
|
|
public static Post get() {
|
|
return INSTANCE;
|
|
}
|
|
}
|
|
}
|
|
|
|
public static class LevelTickEvent extends TickEvent {
|
|
public final Level level;
|
|
private final BooleanSupplier haveTime;
|
|
|
|
@Deprecated(forRemoval = true, since = "1.20.6")
|
|
public LevelTickEvent(LogicalSide side, Phase phase, Level level, BooleanSupplier haveTime) {
|
|
super(Type.LEVEL, side, phase);
|
|
this.level = level;
|
|
this.haveTime = haveTime;
|
|
}
|
|
protected LevelTickEvent(LogicalSide side, Level level, BooleanSupplier haveTime, Phase phase) {
|
|
super(Type.LEVEL, side, phase);
|
|
this.level = level;
|
|
this.haveTime = haveTime;
|
|
}
|
|
|
|
/**
|
|
* @return {@code true} whether the server has enough time to perform any
|
|
* additional tasks (usually IO related) during the current tick,
|
|
* otherwise {@code false}
|
|
* @see ServerTickEvent#haveTime()
|
|
*/
|
|
public boolean haveTime() {
|
|
return this.haveTime.getAsBoolean();
|
|
}
|
|
|
|
public static class Pre extends LevelTickEvent {
|
|
public Pre(LogicalSide side, Level level, BooleanSupplier haveTime) {
|
|
super(side, level, haveTime, Phase.START);
|
|
}
|
|
}
|
|
|
|
public static class Post extends LevelTickEvent {
|
|
public Post(LogicalSide side, Level level, BooleanSupplier haveTime) {
|
|
super(side, level, haveTime, Phase.END);
|
|
}
|
|
}
|
|
}
|
|
|
|
public static class PlayerTickEvent extends TickEvent {
|
|
public final Player player;
|
|
|
|
@Deprecated(forRemoval = true, since = "1.20.6")
|
|
public PlayerTickEvent(Phase phase, Player player) {
|
|
this(player, phase);
|
|
}
|
|
protected PlayerTickEvent(Player player, Phase phase) {
|
|
super(Type.PLAYER, player instanceof ServerPlayer ? LogicalSide.SERVER : LogicalSide.CLIENT, phase);
|
|
this.player = player;
|
|
}
|
|
|
|
public static class Pre extends PlayerTickEvent {
|
|
public Pre(Player player) {
|
|
super(player, Phase.START);
|
|
}
|
|
}
|
|
|
|
public static class Post extends PlayerTickEvent {
|
|
public Post(Player player) {
|
|
super(player, Phase.END);
|
|
}
|
|
}
|
|
}
|
|
|
|
public static class RenderTickEvent extends TickEvent {
|
|
public final float renderTickTime;
|
|
|
|
@Deprecated(forRemoval = true, since = "1.20.6")
|
|
public RenderTickEvent(Phase phase, float renderTickTime) {
|
|
super(Type.RENDER, LogicalSide.CLIENT, phase);
|
|
this.renderTickTime = renderTickTime;
|
|
}
|
|
protected RenderTickEvent(float renderTickTime, Phase phase) {
|
|
super(Type.RENDER, LogicalSide.CLIENT, phase);
|
|
this.renderTickTime = renderTickTime;
|
|
}
|
|
|
|
public static class Pre extends RenderTickEvent {
|
|
public Pre(float renderTickTime) {
|
|
super(renderTickTime, Phase.START);
|
|
}
|
|
}
|
|
|
|
public static class Post extends RenderTickEvent {
|
|
public Post(float renderTickTime) {
|
|
super(renderTickTime, Phase.END);
|
|
}
|
|
}
|
|
}
|
|
}
|