package net.fabricmc.fabric.api.event.lifecycle.v1;

import net.fabricmc.fabric.api.event.Event;
import net.fabricmc.fabric.api.event.EventFactory;
import net.minecraft.class_3218;
import net.minecraft.server.MinecraftServer;

public final class ServerTickEvents {
   public static final Event<StartTick> START_SERVER_TICK = EventFactory.createArrayBacked(StartTick.class, (callbacks) -> (server) -> {
         for(StartTick event : callbacks) {
            event.onStartTick(server);
         }

      });
   public static final Event<EndTick> END_SERVER_TICK = EventFactory.createArrayBacked(EndTick.class, (callbacks) -> (server) -> {
         for(EndTick event : callbacks) {
            event.onEndTick(server);
         }

      });
   public static final Event<StartWorldTick> START_WORLD_TICK = EventFactory.createArrayBacked(StartWorldTick.class, (callbacks) -> (world) -> {
         for(StartWorldTick callback : callbacks) {
            callback.onStartTick(world);
         }

      });
   public static final Event<EndWorldTick> END_WORLD_TICK = EventFactory.createArrayBacked(EndWorldTick.class, (callbacks) -> (world) -> {
         for(EndWorldTick callback : callbacks) {
            callback.onEndTick(world);
         }

      });

   private ServerTickEvents() {
   }

   @FunctionalInterface
   public interface EndTick {
      void onEndTick(MinecraftServer var1);
   }

   @FunctionalInterface
   public interface EndWorldTick {
      void onEndTick(class_3218 var1);
   }

   @FunctionalInterface
   public interface StartTick {
      void onStartTick(MinecraftServer var1);
   }

   @FunctionalInterface
   public interface StartWorldTick {
      void onStartTick(class_3218 var1);
   }
}
