WorldEventsPlugin class

Пакет: com.hypixel.hytale.builtin.adventure.worldevents

Файл: com/hypixel/hytale/builtin/adventure/worldevents/WorldEventsPlugin.java

extends: JavaPlugin

Поля (9)

МодификаторыТипИмя
static WorldEventsPlugin instance
instance
ComponentRegistryProxy var1
WorldEventsPlugin var1
WorldEventsPlugin var1
WorldEventsConfig var1
ComponentRegistryProxy var2
Store var2
WorldEventsPlugin var3

Методы (26)

МодификаторыВозвратСигнатура
for for(WorldEventRecord var6 : var1.events)
public ResourceType<EntityStore, ConditionManager> getConditionManagerResourceTypeResourceType<EntityStore, ConditionManager> getConditionManagerResourceType()
public ComponentType<ChunkStore, TrackedBlockComponent> getTrackedBlockComponentTypeComponentType<ChunkStore, TrackedBlockComponent> getTrackedBlockComponentType()
public ComponentType<EntityStore, TrackedEntityComponent> getTrackedEntityComponentTypeComponentType<EntityStore, TrackedEntityComponent> getTrackedEntityComponentType()
public ComponentType<EntityStore, WorldEvent> getWorldEventComponentTypeComponentType<EntityStore, WorldEvent> getWorldEventComponentType()
public ResourceType<EntityStore, WorldEventManager> getWorldEventManagerResourceTypeResourceType<EntityStore, WorldEventManager> getWorldEventManagerResourceType()
public ResourceType<EntityStore, WorldEventStorage> getWorldEventStorageResourceTypeResourceType<EntityStore, WorldEventStorage> getWorldEventStorageResourceType()
if if(var2 != null)
if if(var3 != var0)
if if(var1 != null && var1.events.length != 0)
static void loadGameplayWorldEventsvoid loadGameplayWorldEvents(@Nonnull World var0)
static void registerChunkStoreEventConditionvoid registerChunkStoreEventCondition(@Nonnull PluginBase var0, @Nonnull EventCondition.Type var1, @Nonnull BuilderCodec<? extends EventCondition> var2, @Nonnull BuilderCodec<? extends EventCondition.Config> var3, @Nonnull ConditionEventHandler<ChunkStore, ?> var4)
static void registerChunkStoreEventHandlervoid registerChunkStoreEventHandler(@Nonnull ConditionEventHandler<ChunkStore, ?> var0)
abstract registerChunkStoreEventHandler registerChunkStoreEventHandler(var4)
static void registerConditionvoid registerCondition(@Nonnull PluginBase var0, @Nonnull EventCondition.Type var1, @Nonnull BuilderCodec<? extends EventCondition> var2, @Nonnull BuilderCodec<? extends EventCondition.Config> var3)
abstract registerCondition registerCondition(this, NoCondition.TYPE, NoCondition.CODEC, NoCondition.Config.CODEC)
abstract registerCondition registerCondition(this, IntervalCondition.TYPE, IntervalCondition.CODEC, IntervalCondition.Config.CODEC)
abstract registerCondition registerCondition(this, LocationCondition.TYPE, LocationCondition.CODEC, LocationCondition.Config.CODEC)
abstract registerCondition registerCondition(this, ProximityCondition.TYPE, ProximityCondition.CODEC, ProximityCondition.Config.CODEC)
abstract registerCondition registerCondition(this, WorldClosedCondition.TYPE, WorldClosedCondition.CODEC, WorldClosedCondition.Config.CODEC)
abstract registerCondition registerCondition(var0, var1, var2, var3)
static void registerConditionTypevoid registerConditionType(@Nonnull PluginBase var0, @Nonnull EventCondition.Type var1, @Nonnull Class<? extends EventCondition> var2)
static void registerEntityStoreEventConditionvoid registerEntityStoreEventCondition(@Nonnull PluginBase var0, @Nonnull EventCondition.Type var1, @Nonnull BuilderCodec<? extends EventCondition> var2, @Nonnull BuilderCodec<? extends EventCondition.Config> var3, @Nonnull ConditionEventHandler<EntityStore, ?> var4)
static void registerEntityStoreEventHandlervoid registerEntityStoreEventHandler(@Nonnull ConditionEventHandler<EntityStore, ?> var0)
abstract registerEntityStoreEventHandler registerEntityStoreEventHandler(var4)
abstract super super(var1)

Исходный код

Показать/скрыть
class="kw">package com.hypixel.hytale.builtin.adventure.worldevents;

class="kw">import com.hypixel.hytale.builtin.adventure.worldevents.action.EffectsAction;
class="kw">import com.hypixel.hytale.builtin.adventure.worldevents.action.EventAction;
class="kw">import com.hypixel.hytale.builtin.adventure.worldevents.action.EventStartAction;
class="kw">import com.hypixel.hytale.builtin.adventure.worldevents.action.EventStopAction;
class="kw">import com.hypixel.hytale.builtin.adventure.worldevents.action.GlobalEventStartAction;
class="kw">import com.hypixel.hytale.builtin.adventure.worldevents.action.GlobalEventStopAction;
class="kw">import com.hypixel.hytale.builtin.adventure.worldevents.action.MapMarkerOverrideAddAction;
class="kw">import com.hypixel.hytale.builtin.adventure.worldevents.action.MapMarkerOverrideRemoveAction;
class="kw">import com.hypixel.hytale.builtin.adventure.worldevents.action.MessageAction;
class="kw">import com.hypixel.hytale.builtin.adventure.worldevents.action.NoAction;
class="kw">import com.hypixel.hytale.builtin.adventure.worldevents.action.PrefabPasteAction;
class="kw">import com.hypixel.hytale.builtin.adventure.worldevents.action.PrefabRemoveAction;
class="kw">import com.hypixel.hytale.builtin.adventure.worldevents.action.effect.shape.Point;
class="kw">import com.hypixel.hytale.builtin.adventure.worldevents.action.effect.shape.Ring;
class="kw">import com.hypixel.hytale.builtin.adventure.worldevents.action.effect.shape.Shape;
class="kw">import com.hypixel.hytale.builtin.adventure.worldevents.command.WorldEventCommand;
class="kw">import com.hypixel.hytale.builtin.adventure.worldevents.component.TrackedBlockComponent;
class="kw">import com.hypixel.hytale.builtin.adventure.worldevents.component.TrackedEntityComponent;
class="kw">import com.hypixel.hytale.builtin.adventure.worldevents.condition.EventCondition;
class="kw">import com.hypixel.hytale.builtin.adventure.worldevents.condition.EventEndCondition;
class="kw">import com.hypixel.hytale.builtin.adventure.worldevents.condition.IntervalCondition;
class="kw">import com.hypixel.hytale.builtin.adventure.worldevents.condition.LocationCondition;
class="kw">import com.hypixel.hytale.builtin.adventure.worldevents.condition.NoCondition;
class="kw">import com.hypixel.hytale.builtin.adventure.worldevents.condition.ProximityCondition;
class="kw">import com.hypixel.hytale.builtin.adventure.worldevents.condition.SignalCondition;
class="kw">import com.hypixel.hytale.builtin.adventure.worldevents.condition.WorldClosedCondition;
class="kw">import com.hypixel.hytale.builtin.adventure.worldevents.condition.location.EventLocation;
class="kw">import com.hypixel.hytale.builtin.adventure.worldevents.condition.location.NoLocation;
class="kw">import com.hypixel.hytale.builtin.adventure.worldevents.condition.manager.ConditionManager;
class="kw">import com.hypixel.hytale.builtin.adventure.worldevents.condition.spawner.NoSpawner;
class="kw">import com.hypixel.hytale.builtin.adventure.worldevents.condition.spawner.PrefabSpawner;
class="kw">import com.hypixel.hytale.builtin.adventure.worldevents.condition.spawner.Spawner;
class="kw">import com.hypixel.hytale.builtin.adventure.worldevents.context.Context;
class="kw">import com.hypixel.hytale.builtin.adventure.worldevents.context.EventContext;
class="kw">import com.hypixel.hytale.builtin.adventure.worldevents.context.IntervalContext;
class="kw">import com.hypixel.hytale.builtin.adventure.worldevents.context.LocationContext;
class="kw">import com.hypixel.hytale.builtin.adventure.worldevents.context.MapMarkerOverrideContext;
class="kw">import com.hypixel.hytale.builtin.adventure.worldevents.context.PrefabPasteContext;
class="kw">import com.hypixel.hytale.builtin.adventure.worldevents.context.PrefabRemoveContext;
class="kw">import com.hypixel.hytale.builtin.adventure.worldevents.context.WorldContext;
class="kw">import com.hypixel.hytale.builtin.adventure.worldevents.event.StageAsset;
class="kw">import com.hypixel.hytale.builtin.adventure.worldevents.event.WorldEvent;
class="kw">import com.hypixel.hytale.builtin.adventure.worldevents.event.WorldEventAsset;
class="kw">import com.hypixel.hytale.builtin.adventure.worldevents.interaction.EventStartInteraction;
class="kw">import com.hypixel.hytale.builtin.adventure.worldevents.interaction.EventStopInteraction;
class="kw">import com.hypixel.hytale.builtin.adventure.worldevents.interaction.GlobalEventStartInteraction;
class="kw">import com.hypixel.hytale.builtin.adventure.worldevents.interaction.GlobalEventStopInteraction;
class="kw">import com.hypixel.hytale.builtin.adventure.worldevents.interaction.ModifyIntervalConditionInteraction;
class="kw">import com.hypixel.hytale.builtin.adventure.worldevents.system.ConditionEventHandler;
class="kw">import com.hypixel.hytale.builtin.adventure.worldevents.system.EventConditionSystem;
class="kw">import com.hypixel.hytale.builtin.adventure.worldevents.system.WorldEventInitSystem;
class="kw">import com.hypixel.hytale.builtin.adventure.worldevents.system.WorldEventStorageSystem;
class="kw">import com.hypixel.hytale.builtin.adventure.worldevents.system.WorldEventTickSystem;
class="kw">import com.hypixel.hytale.codec.builder.BuilderCodec;
class="kw">import com.hypixel.hytale.codec.lookup.Priority;
class="kw">import com.hypixel.hytale.component.ComponentRegistryProxy;
class="kw">import com.hypixel.hytale.component.ComponentType;
class="kw">import com.hypixel.hytale.component.ResourceType;
class="kw">import com.hypixel.hytale.component.Store;
class="kw">import com.hypixel.hytale.component.system.EcsEvent;
class="kw">import com.hypixel.hytale.logger.HytaleLogger;
class="kw">import com.hypixel.hytale.logger.sentry.SkipSentryException;
class="kw">import com.hypixel.hytale.server.core.asset.HytaleAssetStore;
class="kw">import com.hypixel.hytale.server.core.asset.type.gameplay.GameplayConfig;
class="kw">import com.hypixel.hytale.server.core.modules.interaction.interaction.config.Interaction;
class="kw">import com.hypixel.hytale.server.core.plugin.JavaPlugin;
class="kw">import com.hypixel.hytale.server.core.plugin.JavaPluginInit;
class="kw">import com.hypixel.hytale.server.core.plugin.PluginBase;
class="kw">import com.hypixel.hytale.server.core.task.TaskRegistration;
class="kw">import com.hypixel.hytale.server.core.universe.world.World;
class="kw">import com.hypixel.hytale.server.core.universe.world.storage.ChunkStore;
class="kw">import com.hypixel.hytale.server.core.universe.world.storage.EntityStore;
class="kw">import java.util.List;
class="kw">import java.util.Set;
class="kw">import java.util.concurrent.CompletableFuture;
class="kw">import java.util.concurrent.ConcurrentHashMap;
class="kw">import javax.annotation.Nonnull;
class="kw">import javax.annotation.Nullable;

class="kw">public class WorldEventsPlugin class="kw">extends JavaPlugin {
   class="kw">protected class="kw">static WorldEventsPlugin instance;
   class="kw">protected class="kw">static class="kw">final TaskRegistration NOOP_TASK = new TaskRegistration(CompletableFuture.completedFuture(null));
   class="kw">protected ComponentType<ChunkStore, TrackedBlockComponent> trackedBlockComponentType;
   class="kw">protected ComponentType<EntityStore, TrackedEntityComponent> trackedEntityComponentType;
   class="kw">protected ComponentType<EntityStore, WorldEvent> worldEventComponentType;
   class="kw">protected ResourceType<EntityStore, WorldEventManager> worldEventManagerResourceType;
   class="kw">protected ResourceType<EntityStore, WorldEventStorage> worldEventStorageResourceType;
   class="kw">protected ResourceType<EntityStore, ConditionManager> conditionManagerResourceType;
   class="kw">protected class="kw">final Set<Class<? class="kw">extends EcsEvent>> eventTypes = ConcurrentHashMap.newKeySet();
   class="kw">protected class="kw">final ConcurrentHashMap<Class<?>, EventCondition.Type> conditionTypes = new ConcurrentHashMap<>();

   class="kw">public WorldEventsPlugin(@Nonnull JavaPluginInit var1) {
      super(var1);
      instance = this;
   }

   @Override
   class="kw">protected void setup() {
      ComponentRegistryProxy var1 = this.getChunkStoreRegistry();
      ComponentRegistryProxy var2 = this.getEntityStoreRegistry();
      this.trackedBlockComponentType = var1.registerComponent(TrackedBlockComponent.class, "EventTrackedBlock", TrackedBlockComponent.CODEC);
      this.trackedEntityComponentType = var2.registerComponent(TrackedEntityComponent.class, "EventTrackedEntity", TrackedEntityComponent.CODEC);
      this.worldEventComponentType = var2.registerComponent(WorldEvent.class, "WorldEvent", WorldEvent.CODEC);
      this.worldEventManagerResourceType = var2.registerResource(WorldEventManager.class, WorldEventManager::new);
      this.worldEventStorageResourceType = var2.registerResource(WorldEventStorage.class, "WorldEventStorage", WorldEventStorage.CODEC);
      this.conditionManagerResourceType = var2.registerResource(ConditionManager.class, ConditionManager::new);
      var2.registerSystem(new WorldEventTickSystem(this.worldEventComponentType, this.worldEventStorageResourceType, this.conditionManagerResourceType));
      var2.registerSystem(
         new WorldEventInitSystem(
            this.worldEventComponentType, this.worldEventManagerResourceType, this.worldEventStorageResourceType, this.conditionManagerResourceType
         )
      );
      var2.registerSystem(new WorldEventStorageSystem(this.worldEventManagerResourceType, this.worldEventStorageResourceType, this.worldEventComponentType));
      var2.registerSystem(new EventConditionSystem(this.conditionManagerResourceType));
      this.getCodecRegistry(Shape.TYPE_CODEC).register(Priority.DEFAULT, "Point", Point.class, Point.CODEC).register("Ring", Ring.class, Ring.CODEC);
      this.getCodecRegistry(Spawner.Config.TYPE_CODEC)
         .register(Priority.DEFAULT, "NoSpawner", NoSpawner.Config.class, NoSpawner.Config.CODEC)
         .register("PrefabSpawner", PrefabSpawner.Config.class, PrefabSpawner.Config.CODEC);
      this.getCodecRegistry(Context.TYPE_CODEC)
         .register("IntervalContext", IntervalContext.class, IntervalContext.CODEC)
         .register("LocationContext", LocationContext.class, LocationContext.CODEC)
         .register("EventContext", EventContext.class, EventContext.CODEC)
         .register("MapMarkerOverrideContext", MapMarkerOverrideContext.class, MapMarkerOverrideContext.CODEC)
         .register("PrefabPasteContext", PrefabPasteContext.class, PrefabPasteContext.CODEC)
         .register("PrefabRemoveContext", PrefabRemoveContext.class, PrefabRemoveContext.CODEC)
         .register("WorldContext", WorldContext.class, WorldContext.CODEC);
      this.getCodecRegistry(EventAction.TYPE_CODEC)
         .register(Priority.DEFAULT, "None", NoAction.class, NoAction.CODEC)
         .register("EffectsAction", EffectsAction.class, EffectsAction.CODEC)
         .register("EventStartAction", EventStartAction.class, EventStartAction.CODEC)
         .register("EventStopAction", EventStopAction.class, EventStopAction.CODEC)
         .register("GlobalEventStartAction", GlobalEventStartAction.class, GlobalEventStartAction.CODEC)
         .register("GlobalEventStopAction", GlobalEventStopAction.class, GlobalEventStopAction.CODEC)
         .register("MapMarkerOverrideAddAction", MapMarkerOverrideAddAction.class, MapMarkerOverrideAddAction.CODEC)
         .register("MapMarkerOverrideRemoveAction", MapMarkerOverrideRemoveAction.class, MapMarkerOverrideRemoveAction.CODEC)
         .register("MessageAction", MessageAction.class, MessageAction.CODEC)
         .register("PrefabPasteAction", PrefabPasteAction.class, PrefabPasteAction.CODEC)
         .register("PrefabRemoveAction", PrefabRemoveAction.class, PrefabRemoveAction.CODEC);
      this.getCodecRegistry(EventLocation.Config.TYPE_CODEC).register(Priority.DEFAULT, "None", NoLocation.Config.class, NoLocation.Config.CODEC);
      registerCondition(this, NoCondition.TYPE, NoCondition.CODEC, NoCondition.Config.CODEC);
      registerCondition(this, IntervalCondition.TYPE, IntervalCondition.CODEC, IntervalCondition.Config.CODEC);
      registerCondition(this, LocationCondition.TYPE, LocationCondition.CODEC, LocationCondition.Config.CODEC);
      registerCondition(this, ProximityCondition.TYPE, ProximityCondition.CODEC, ProximityCondition.Config.CODEC);
      registerCondition(this, WorldClosedCondition.TYPE, WorldClosedCondition.CODEC, WorldClosedCondition.Config.CODEC);
      registerEntityStoreEventCondition(this, EventEndCondition.TYPE, EventEndCondition.CODEC, EventEndCondition.Config.CODEC, new EventEndCondition.Handler());
      registerEntityStoreEventCondition(this, SignalCondition.TYPE, SignalCondition.CODEC, SignalCondition.Config.CODEC, new SignalCondition.Handler());
      this.getAssetRegistry()
         .register(
            ((HytaleAssetStore.Builder)((HytaleAssetStore.Builder)((HytaleAssetStore.Builder)((HytaleAssetStore.Builder)((HytaleAssetStore.Builder)HytaleAssetStore.builder(
                                 StageAsset.class, StageAsset.ASSET_MAP
                              )
                              .setPath("WorldEvent/Stage"))
                           .setCodec(StageAsset.CODEC))
                        .setKeyFunction(StageAsset::getId))
                     .setReplaceOnRemove(var0 -> StageAsset.UNKNOWN))
                  .preLoadAssets(List.of(StageAsset.UNKNOWN)))
               .build()
         );
      this.getAssetRegistry()
         .register(
            ((HytaleAssetStore.Builder)((HytaleAssetStore.Builder)((HytaleAssetStore.Builder)((HytaleAssetStore.Builder)((HytaleAssetStore.Builder)HytaleAssetStore.builder(
                                 WorldEventAsset.class, WorldEventAsset.ASSET_MAP
                              )
                              .setPath("WorldEvent/Event"))
                           .setCodec(WorldEventAsset.CODEC))
                        .setKeyFunction(WorldEventAsset::getId))
                     .setReplaceOnRemove(var0 -> WorldEventAsset.UNKNOWN))
                  .preLoadAssets(List.of(WorldEventAsset.UNKNOWN)))
               .build()
         );
      this.getCodecRegistry(GameplayConfig.PLUGIN_CODEC).register(WorldEventsConfig.class, "WorldEvents", WorldEventsConfig.CODEC);
      this.getCodecRegistry(Interaction.CODEC)
         .register("EventStartInteraction", EventStartInteraction.class, EventStartInteraction.CODEC)
         .register("EventStopInteraction", EventStopInteraction.class, EventStopInteraction.CODEC)
         .register("GlobalEventStartInteraction", GlobalEventStartInteraction.class, GlobalEventStartInteraction.CODEC)
         .register("GlobalEventStopInteraction", GlobalEventStopInteraction.class, GlobalEventStopInteraction.CODEC)
         .register("ModifyIntervalConditionInteraction", ModifyIntervalConditionInteraction.class, ModifyIntervalConditionInteraction.CODEC);
      this.getCommandRegistry().registerCommand(new WorldEventCommand());
   }

   @Override
   class="kw">protected void start() {
      GlobalWorldEventManager.INSTANCE
         .loadAsync()
         .whenCompleteAsync(
            (var1, var2) -> {
               if (var2 != null) {
                  ((HytaleLogger.Api)((HytaleLogger.Api)this.getLogger().atSevere()).withCause(new SkipSentryException(var2)))
                     .log("Failed to load %s", "events.json");
               } else {
                  var1.startup();
               }
            }
         );
   }

   @Override
   class="kw">protected void shutdown() {
      super.shutdown();
      GlobalWorldEventManager.INSTANCE.saveAsync();
      GlobalWorldEventManager.INSTANCE.shutdown();
   }

   class="kw">public ComponentType<ChunkStore, TrackedBlockComponent> getTrackedBlockComponentType() {
      class="kw">return this.trackedBlockComponentType;
   }

   class="kw">public ComponentType<EntityStore, TrackedEntityComponent> getTrackedEntityComponentType() {
      class="kw">return this.trackedEntityComponentType;
   }

   class="kw">public ComponentType<EntityStore, WorldEvent> getWorldEventComponentType() {
      class="kw">return this.worldEventComponentType;
   }

   class="kw">public ResourceType<EntityStore, WorldEventManager> getWorldEventManagerResourceType() {
      class="kw">return this.worldEventManagerResourceType;
   }

   class="kw">public ResourceType<EntityStore, WorldEventStorage> getWorldEventStorageResourceType() {
      class="kw">return this.worldEventStorageResourceType;
   }

   class="kw">public ResourceType<EntityStore, ConditionManager> getConditionManagerResourceType() {
      class="kw">return this.conditionManagerResourceType;
   }

   @Nullable
   class="kw">public EventCondition.Type getConditionType(@Nonnull Class<? class="kw">extends EventCondition> var1) {
      class="kw">return this.conditionTypes.get(var1);
   }

   @Nonnull
   class="kw">public class="kw">static WorldEventsPlugin get() {
      assert instance != null : "WorldEventsPlugin not initialized";
      class="kw">return instance;
   }

   class="kw">public class="kw">static void registerConditionType(@Nonnull PluginBase var0, @Nonnull EventCondition.Type var1, @Nonnull Class<? class="kw">extends EventCondition> var2) {
      WorldEventsPlugin var3 = get();
      var3.conditionTypes.put(var2, var1);
      if (var3 != var0) {
         var0.getTaskRegistry().register(new TaskRegistration(NOOP_TASK, () -> true, () -> get().conditionTypes.remove(var2)));
      }
   }

   class="kw">public class="kw">static void registerChunkStoreEventHandler(@Nonnull ConditionEventHandler<ChunkStore, ?> var0) {
      WorldEventsPlugin var1 = get();
      if (var1.eventTypes.add((Class<? class="kw">extends EcsEvent>)var0.getEventType())) {
         var1.getChunkStoreRegistry().registerSystem(var0);
      }
   }

   class="kw">public class="kw">static void registerEntityStoreEventHandler(@Nonnull ConditionEventHandler<EntityStore, ?> var0) {
      WorldEventsPlugin var1 = get();
      if (var1.eventTypes.add((Class<? class="kw">extends EcsEvent>)var0.getEventType())) {
         var1.getEntityStoreRegistry().registerSystem(var0);
      }
   }

   class="kw">public class="kw">static void registerCondition(
      @Nonnull PluginBase var0,
      @Nonnull EventCondition.Type var1,
      @Nonnull BuilderCodec<? class="kw">extends EventCondition> var2,
      @Nonnull BuilderCodec<? class="kw">extends EventCondition.Config> var3
   ) {
      registerConditionType(var0, var1, var2.getInnerClass());
      var0.getCodecRegistry(EventCondition.TYPE_CODEC).register(var1.id(), var2.getInnerClass(), var2);
      var0.getCodecRegistry(EventCondition.Config.TYPE_CODEC).register(var1.id(), var3.getInnerClass(), var3);
   }

   class="kw">public class="kw">static void registerChunkStoreEventCondition(
      @Nonnull PluginBase var0,
      @Nonnull EventCondition.Type var1,
      @Nonnull BuilderCodec<? class="kw">extends EventCondition> var2,
      @Nonnull BuilderCodec<? class="kw">extends EventCondition.Config> var3,
      @Nonnull ConditionEventHandler<ChunkStore, ?> var4
   ) {
      registerCondition(var0, var1, var2, var3);
      registerChunkStoreEventHandler(var4);
   }

   class="kw">public class="kw">static void registerEntityStoreEventCondition(
      @Nonnull PluginBase var0,
      @Nonnull EventCondition.Type var1,
      @Nonnull BuilderCodec<? class="kw">extends EventCondition> var2,
      @Nonnull BuilderCodec<? class="kw">extends EventCondition.Config> var3,
      @Nonnull ConditionEventHandler<EntityStore, ?> var4
   ) {
      registerCondition(var0, var1, var2, var3);
      registerEntityStoreEventHandler(var4);
   }

   class="kw">public class="kw">static void loadGameplayWorldEvents(@Nonnull World var0) {
      WorldEventsConfig var1 = var0.getGameplayConfig().getPluginConfig().get(WorldEventsConfig.class);
      if (var1 != null && var1.events.length != 0) {
         Store var2 = var0.getEntityStore().getStore();
         var2.assertThread();

         for (WorldEventRecord var6 : var1.events) {
            EventStartAction.startEvent(var2, var6);
         }

         GlobalWorldEventManager.INSTANCE.start(var2, var1.globalEvents);
      }
   }
}