Ticking class

Пакет: com.hypixel.hytale.server.spawning.spawnmarkers

Файл: com/hypixel/hytale/server/spawning/spawnmarkers/SpawnMarkerSystems.java

extends: EntityTickingSystem<EntityStore>

Поля (52)

МодификаторыТипИмя
private final Set<Dependency<EntityStore>> dependencies
private final ComponentType<EntityStore, HeadRotation> headRotationComponentType
private final ComponentType<EntityStore, ModelComponent> modelComponentType
private final ComponentType<EntityStore, NPCEntity> npcComponentType
private final ResourceType<EntityStore, SpatialResource<Ref<EntityStore>, EntityStore>> playerSpatialComponent
private final Query<EntityStore> query
private final ComponentType<EntityStore, PersistentRefCount> referenceIdComponentType
return
return
return
return
private final ComponentType<EntityStore, SpawnMarkerEntity> spawnMarkerEntityComponentType
private final ComponentType<EntityStore, TransformComponent> transformComponentType
SpawnMarker var10
InvalidatablePersistentRef[] var10
int var11
Ref var11
Ref var12
WorldTimeResource var12
List var13
SpawnMarkerReference var13
Ref var13
boolean var14
NPCEntity var14
InvalidatablePersistentRef[] var15
TransformComponent var15
PersistentRefCount var16
HeadRotation var16
Ref var17
InvalidatablePersistentRef var17
Ref var21
NPCEntity var22
boolean var23
StoredFlock var25
SpatialResource var26
PersistentRefCount var27
Ref var28
List var29
Pair var32
Ref var33
NPCEntity var34
ModelComponent var35
Role var36
double var37
SpawnMarkerEntity var6
TransformComponent var7
List var7
List var7
World var8
Vector3d var8
WorldConfig var9
Rotation3f var9

Методы (14)

МодификаторыВозвратСигнатура
for for(InvalidatablePersistentRef var20 : var15)
for for(InvalidatablePersistentRef var11 : var15)
abstract for for(int var31 = 0; var31 < var29.size()
abstract for for(int var12 = var7.size()
public Set<Dependency<EntityStore>> getDependenciespublic Set<Dependency<EntityStore>> getDependencies()
public Query<EntityStore> getQuerypublic Query<EntityStore> getQuery()
if if(var25 != null)
if if(!var14)
if if(var15 == null)
if if(var21 != null)
if if(var16 != null)
if if(var27 != null)
public boolean isParallelpublic boolean isParallel(int var1, int var2)
public void tickpublic void tick(float var1, int var2, @Nonnull ArchetypeChunk<EntityStore> var3, @Nonnull Store<EntityStore> var4, @Nonnull CommandBuffer<EntityStore> var5)

Исходный код

Показать/скрыть
class="kw">package com.hypixel.hytale.server.spawning.spawnmarkers;

class="kw">import com.hypixel.hytale.component.AddReason;
class="kw">import com.hypixel.hytale.component.Archetype;
class="kw">import com.hypixel.hytale.component.ArchetypeChunk;
class="kw">import com.hypixel.hytale.component.CommandBuffer;
class="kw">import com.hypixel.hytale.component.ComponentType;
class="kw">import com.hypixel.hytale.component.Holder;
class="kw">import com.hypixel.hytale.component.Ref;
class="kw">import com.hypixel.hytale.component.RemoveReason;
class="kw">import com.hypixel.hytale.component.ResourceType;
class="kw">import com.hypixel.hytale.component.Store;
class="kw">import com.hypixel.hytale.component.SystemGroup;
class="kw">import com.hypixel.hytale.component.dependency.Dependency;
class="kw">import com.hypixel.hytale.component.dependency.Order;
class="kw">import com.hypixel.hytale.component.dependency.OrderPriority;
class="kw">import com.hypixel.hytale.component.dependency.SystemDependency;
class="kw">import com.hypixel.hytale.component.query.Query;
class="kw">import com.hypixel.hytale.component.spatial.SpatialResource;
class="kw">import com.hypixel.hytale.component.system.HolderSystem;
class="kw">import com.hypixel.hytale.component.system.RefSystem;
class="kw">import com.hypixel.hytale.component.system.tick.EntityTickingSystem;
class="kw">import com.hypixel.hytale.logger.HytaleLogger;
class="kw">import com.hypixel.hytale.math.vector.Rotation3f;
class="kw">import com.hypixel.hytale.protocol.AnimationSlot;
class="kw">import com.hypixel.hytale.server.core.entity.UUIDComponent;
class="kw">import com.hypixel.hytale.server.core.entity.reference.InvalidatablePersistentRef;
class="kw">import com.hypixel.hytale.server.core.entity.reference.PersistentRefCount;
class="kw">import com.hypixel.hytale.server.core.modules.entity.EntityModule;
class="kw">import com.hypixel.hytale.server.core.modules.entity.component.FromPrefab;
class="kw">import com.hypixel.hytale.server.core.modules.entity.component.FromWorldGen;
class="kw">import com.hypixel.hytale.server.core.modules.entity.component.HeadRotation;
class="kw">import com.hypixel.hytale.server.core.modules.entity.component.Intangible;
class="kw">import com.hypixel.hytale.server.core.modules.entity.component.ModelComponent;
class="kw">import com.hypixel.hytale.server.core.modules.entity.component.TransformComponent;
class="kw">import com.hypixel.hytale.server.core.modules.entity.component.WorldGenId;
class="kw">import com.hypixel.hytale.server.core.modules.entity.damage.DeathComponent;
class="kw">import com.hypixel.hytale.server.core.modules.entity.system.PlayerSpatialSystem;
class="kw">import com.hypixel.hytale.server.core.modules.entity.tracker.NetworkId;
class="kw">import com.hypixel.hytale.server.core.modules.time.WorldTimeResource;
class="kw">import com.hypixel.hytale.server.core.prefab.PrefabCopyableComponent;
class="kw">import com.hypixel.hytale.server.core.universe.world.World;
class="kw">import com.hypixel.hytale.server.core.universe.world.WorldConfig;
class="kw">import com.hypixel.hytale.server.core.universe.world.storage.EntityStore;
class="kw">import com.hypixel.hytale.server.flock.StoredFlock;
class="kw">import com.hypixel.hytale.server.npc.components.SpawnMarkerReference;
class="kw">import com.hypixel.hytale.server.npc.entities.NPCEntity;
class="kw">import com.hypixel.hytale.server.npc.role.Role;
class="kw">import com.hypixel.hytale.server.npc.role.support.StateSupport;
class="kw">import com.hypixel.hytale.server.spawning.assets.spawnmarker.config.SpawnMarker;
class="kw">import it.unimi.dsi.fastutil.Pair;
class="kw">import it.unimi.dsi.fastutil.objects.ObjectArrayList;
class="kw">import java.util.List;
class="kw">import java.util.Set;
class="kw">import java.util.logging.Level;
class="kw">import javax.annotation.Nonnull;
class="kw">import javax.annotation.Nullable;
class="kw">import org.joml.Vector3d;

class="kw">public class SpawnMarkerSystems {
   @Nonnull
   class="kw">private class="kw">static class="kw">final HytaleLogger LOGGER = HytaleLogger.forEnclosingClass();

   class="kw">public SpawnMarkerSystems() {
   }

   class="kw">public class="kw">static class AddedFromWorldGen class="kw">extends HolderSystem<EntityStore> {
      @Nonnull
      class="kw">private class="kw">final ComponentType<EntityStore, SpawnMarkerEntity> componentType = SpawnMarkerEntity.getComponentType();
      @Nonnull
      class="kw">private class="kw">final ComponentType<EntityStore, WorldGenId> worldGenIdComponentType = WorldGenId.getComponentType();
      @Nonnull
      class="kw">private class="kw">final ComponentType<EntityStore, FromWorldGen> fromWorldGenComponentType = FromWorldGen.getComponentType();
      @Nonnull
      class="kw">private class="kw">final Query<EntityStore> query = Query.and(this.componentType, this.fromWorldGenComponentType);

      class="kw">public AddedFromWorldGen() {
      }

      @Nonnull
      @Override
      class="kw">public Query<EntityStore> getQuery() {
         class="kw">return this.query;
      }

      @Nullable
      @Override
      class="kw">public SystemGroup<EntityStore> getGroup() {
         class="kw">return EntityModule.get().getPreClearMarkersGroup();
      }

      @Override
      class="kw">public void onEntityAdd(@Nonnull Holder<EntityStore> var1, @Nonnull AddReason var2, @Nonnull Store<EntityStore> var3) {
         FromWorldGen var4 = var1.getComponent(this.fromWorldGenComponentType);
         assert var4 != null;
         var1.putComponent(this.worldGenIdComponentType, new WorldGenId(var4.getWorldGenId()));
      }

      @Override
      class="kw">public void onEntityRemoved(@Nonnull Holder<EntityStore> var1, @Nonnull RemoveReason var2, @Nonnull Store<EntityStore> var3) {
      }
   }

   class="kw">public class="kw">static class CacheMarker class="kw">extends RefSystem<EntityStore> {
      class="kw">private class="kw">final ComponentType<EntityStore, SpawnMarkerEntity> spawnMarkerComponentType;

      class="kw">public CacheMarker(@Nonnull ComponentType<EntityStore, SpawnMarkerEntity> var1) {
         this.spawnMarkerComponentType = var1;
      }

      @Override
      class="kw">public Query<EntityStore> getQuery() {
         class="kw">return this.spawnMarkerComponentType;
      }

      @Override
      class="kw">public void onEntityAdded(
         @Nonnull Ref<EntityStore> var1, @Nonnull AddReason var2, @Nonnull Store<EntityStore> var3, @Nonnull CommandBuffer<EntityStore> var4
      ) {
         SpawnMarkerEntity var5 = var3.getComponent(var1, this.spawnMarkerComponentType);
         assert var5 != null;
         SpawnMarker var6 = SpawnMarker.getAssetMap().getAsset(var5.getSpawnMarkerId());
         if (var6 == null) {
            SpawnMarkerSystems.LOGGER.at(Level.SEVERE).log("Marker %s removed due to missing spawn marker type: %s", var1, var5.getSpawnMarkerId());
            var4.removeEntity(var1, RemoveReason.REMOVE);
         } else {
            var5.setCachedMarker(var6);
         }
      }

      @Override
      class="kw">public void onEntityRemove(
         @Nonnull Ref<EntityStore> var1, @Nonnull RemoveReason var2, @Nonnull Store<EntityStore> var3, @Nonnull CommandBuffer<EntityStore> var4
      ) {
      }
   }

   class="kw">public class="kw">static class EnsureNetworkSendable class="kw">extends HolderSystem<EntityStore> {
      @Nonnull
      class="kw">private class="kw">final Query<EntityStore> query = SpawnMarkerEntity.getComponentType();

      class="kw">public EnsureNetworkSendable() {
      }

      @Override
      class="kw">public void onEntityAdd(@Nonnull Holder<EntityStore> var1, @Nonnull AddReason var2, @Nonnull Store<EntityStore> var3) {
         Archetype var4 = var1.getArchetype();
         assert var4 != null;
         ComponentType var5 = NetworkId.getComponentType();
         if (!var4.contains(var5)) {
            var1.addComponent(var5, new NetworkId(var3.getExternalData().takeNextNetworkId()));
         }

         var1.ensureComponent(Intangible.getComponentType());
      }

      @Override
      class="kw">public void onEntityRemoved(@Nonnull Holder<EntityStore> var1, @Nonnull RemoveReason var2, @Nonnull Store<EntityStore> var3) {
      }

      @Nonnull
      @Override
      class="kw">public Query<EntityStore> getQuery() {
         class="kw">return this.query;
      }
   }

   class="kw">public class="kw">static class EntityAdded class="kw">extends RefSystem<EntityStore> {
      @Nonnull
      class="kw">private class="kw">final ComponentType<EntityStore, SpawnMarkerEntity> spawnMarkerEntityComponentType;
      @Nonnull
      class="kw">private class="kw">final ComponentType<EntityStore, UUIDComponent> uuidComponentType;
      @Nonnull
      class="kw">private class="kw">final Set<Dependency<EntityStore>> dependencies;
      @Nonnull
      class="kw">private class="kw">final Query<EntityStore> query;

      class="kw">public EntityAdded(@Nonnull ComponentType<EntityStore, SpawnMarkerEntity> var1) {
         this.spawnMarkerEntityComponentType = var1;
         this.uuidComponentType = UUIDComponent.getComponentType();
         this.dependencies = Set.of(new SystemDependency<>(Order.AFTER, SpawnMarkerSystems.CacheMarker.class));
         this.query = Query.and(var1, this.uuidComponentType);
      }

      @Nonnull
      @Override
      class="kw">public Query<EntityStore> getQuery() {
         class="kw">return this.query;
      }

      @Nonnull
      @Override
      class="kw">public Set<Dependency<EntityStore>> getDependencies() {
         class="kw">return this.dependencies;
      }

      @Override
      class="kw">public void onEntityAdded(
         @Nonnull Ref<EntityStore> var1, @Nonnull AddReason var2, @Nonnull Store<EntityStore> var3, @Nonnull CommandBuffer<EntityStore> var4
      ) {
         SpawnMarkerEntity var5 = var3.getComponent(var1, this.spawnMarkerEntityComponentType);
         assert var5 != null;
         HytaleLogger.Api var6 = SpawnMarkerSystems.LOGGER.at(Level.FINE);
         if (var6.isEnabled()) {
            var6.log("Loaded marker %s", var3.getComponent(var1, this.uuidComponentType));
         }

         if (var5.getStoredFlock() != null) {
            var5.setTempStorageList(new ObjectArrayList());
         }

         if (var5.getSpawnCount() != 0) {
            var5.refreshTimeout();
         }

         var4.ensureComponent(var1, PrefabCopyableComponent.getComponentType());
      }

      @Override
      class="kw">public void onEntityRemove(
         @Nonnull Ref<EntityStore> var1, @Nonnull RemoveReason var2, @Nonnull Store<EntityStore> var3, @Nonnull CommandBuffer<EntityStore> var4
      ) {
         if (var2 == RemoveReason.BUILDER_TOOLS_UNDO) {
            SpawnMarkerEntity var5 = var3.getComponent(var1, this.spawnMarkerEntityComponentType);
            if (var5 != null) {
               for (InvalidatablePersistentRef var9 : var5.getNpcReferences()) {
                  if (var9 != null) {
                     Ref var10 = var9.getEntity(var3);
                     if (var10 != null && var10.isValid()) {
                        var4.removeEntity(var10, RemoveReason.BUILDER_TOOLS_UNDO);
                     }
                  }
               }
            }
         }
      }
   }

   class="kw">public class="kw">static class EntityAddedFromExternal class="kw">extends RefSystem<EntityStore> {
      @Nonnull
      class="kw">private class="kw">final Query<EntityStore> query;
      @Nonnull
      class="kw">private class="kw">final ComponentType<EntityStore, SpawnMarkerEntity> spawnMarkerEntityComponentType;
      @Nonnull
      class="kw">private class="kw">final Set<Dependency<EntityStore>> dependencies;

      class="kw">public EntityAddedFromExternal(@Nonnull ComponentType<EntityStore, SpawnMarkerEntity> var1) {
         this.query = Query.and(var1, Query.or(FromPrefab.getComponentType(), FromWorldGen.getComponentType()));
         this.spawnMarkerEntityComponentType = var1;
         this.dependencies = Set.of(
            new SystemDependency<>(Order.BEFORE, SpawnMarkerSystems.EntityAdded.class),
            new SystemDependency<>(Order.AFTER, SpawnMarkerSystems.CacheMarker.class)
         );
      }

      @Override
      class="kw">public void onEntityAdded(
         @Nonnull Ref<EntityStore> var1, @Nonnull AddReason var2, @Nonnull Store<EntityStore> var3, @Nonnull CommandBuffer<EntityStore> var4
      ) {
         SpawnMarkerEntity var5 = var3.getComponent(var1, this.spawnMarkerEntityComponentType);
         assert var5 != null;
         var5.setSpawnCount(0);
         var5.setRespawnCounter(0.0);
         var5.setSpawnAfter(null);
         var5.setGameTimeRespawn(null);
         if (var5.getCachedMarker().getDeactivationDistance() > 0.0) {
            var5.setStoredFlock(new StoredFlock());
         }
      }

      @Override
      class="kw">public void onEntityRemove(
         @Nonnull Ref<EntityStore> var1, @Nonnull RemoveReason var2, @Nonnull Store<EntityStore> var3, @Nonnull CommandBuffer<EntityStore> var4
      ) {
      }

      @Nonnull
      @Override
      class="kw">public Set<Dependency<EntityStore>> getDependencies() {
         class="kw">return this.dependencies;
      }

      @Nonnull
      @Override
      class="kw">public Query<EntityStore> getQuery() {
         class="kw">return this.query;
      }

      @Nullable
      @Override
      class="kw">public SystemGroup<EntityStore> getGroup() {
         class="kw">return EntityModule.get().getPreClearMarkersGroup();
      }
   }

   class="kw">public class="kw">static class Ticking class="kw">extends EntityTickingSystem<EntityStore> {
      @Nonnull
      class="kw">private class="kw">final ComponentType<EntityStore, SpawnMarkerEntity> spawnMarkerEntityComponentType;
      @Nullable
      class="kw">private class="kw">final ComponentType<EntityStore, NPCEntity> npcComponentType;
      @Nonnull
      class="kw">private class="kw">final ComponentType<EntityStore, PersistentRefCount> referenceIdComponentType;
      @Nonnull
      class="kw">private class="kw">final ComponentType<EntityStore, TransformComponent> transformComponentType = TransformComponent.getComponentType();
      @Nonnull
      class="kw">private class="kw">final ComponentType<EntityStore, HeadRotation> headRotationComponentType = HeadRotation.getComponentType();
      @Nonnull
      class="kw">private class="kw">final ComponentType<EntityStore, ModelComponent> modelComponentType = ModelComponent.getComponentType();
      @Nonnull
      class="kw">private class="kw">final ResourceType<EntityStore, SpatialResource<Ref<EntityStore>, EntityStore>> playerSpatialComponent;
      @Nonnull
      class="kw">private class="kw">final Set<Dependency<EntityStore>> dependencies;
      @Nonnull
      class="kw">private class="kw">final Query<EntityStore> query;

      class="kw">public Ticking(
         @Nonnull ComponentType<EntityStore, SpawnMarkerEntity> var1, @Nonnull ResourceType<EntityStore, SpatialResource<Ref<EntityStore>, EntityStore>> var2
      ) {
         this.spawnMarkerEntityComponentType = var1;
         this.npcComponentType = NPCEntity.getComponentType();
         this.referenceIdComponentType = PersistentRefCount.getComponentType();
         this.playerSpatialComponent = var2;
         this.dependencies = Set.of(new SystemDependency<>(Order.AFTER, PlayerSpatialSystem.class, OrderPriority.CLOSEST));
         this.query = Archetype.of(var1, this.transformComponentType);
      }

      @Nonnull
      @Override
      class="kw">public Set<Dependency<EntityStore>> getDependencies() {
         class="kw">return this.dependencies;
      }

      @Nonnull
      @Override
      class="kw">public Query<EntityStore> getQuery() {
         class="kw">return this.query;
      }

      @Override
      class="kw">public boolean isParallel(int var1, int var2) {
         class="kw">return EntityTickingSystem.maybeUseParallel(var1, var2);
      }

      @Override
      class="kw">public void tick(
         float var1, int var2, @Nonnull ArchetypeChunk<EntityStore> var3, @Nonnull Store<EntityStore> var4, @Nonnull CommandBuffer<EntityStore> var5
      ) {
         SpawnMarkerEntity var6 = var3.getComponent(var2, this.spawnMarkerEntityComponentType);
         assert var6 != null;
         TransformComponent var7 = var3.getComponent(var2, this.transformComponentType);
         assert var7 != null;
         World var8 = var4.getExternalData().getWorld();
         WorldConfig var9 = var8.getWorldConfig();
         SpawnMarker var10 = var6.getCachedMarker();
         if (var6.getSpawnCount() > 0) {
            StoredFlock var25 = var6.getStoredFlock();
            if (var25 != null) {
               SpatialResource var26 = var4.getResource(this.playerSpatialComponent);
               List var13 = SpatialResource.getThreadLocalReferenceList();
               var26.getSpatialStructure().collect(var7.getPosition(), var10.getDeactivationDistance(), var13);
               boolean var14 = !var13.isEmpty();
               if (!var14) {
                  if (!var25.hasStoredNPCs() && var6.tickTimeToDeactivation(var1)) {
                     InvalidatablePersistentRef[] var15 = var6.getNpcReferences();
                     if (var15 == null) {
                        class="kw">return;
                     }

                     if (!var6.isDespawnStarted()) {
                        List var29 = var6.getTempStorageList();

                        for (InvalidatablePersistentRef var20 : var15) {
                           Ref var21 = var20.getEntity(var5);
                           if (var21 != null) {
                              NPCEntity var22 = var5.getComponent(var21, this.npcComponentType);
                              assert var22 != null;
                              var29.add(Pair.of(var21, var22));
                              boolean var23 = var5.getArchetype(var21).contains(DeathComponent.getComponentType());
                              if (var23 || StateSupport.get(var21, var5).isInBusyState()) {
                                 var6.setTimeToDeactivation(var10.getDeactivationTime());
                                 var29.clear();
                                 class="kw">return;
                              }
                           }
                        }

                        for (int var31 = 0; var31 < var29.size(); var31++) {
                           Pair var32 = var29.get(var31);
                           Ref var33 = (Ref<EntityStore>)var32.first();
                           NPCEntity var34 = (NPCEntity)var32.second();
                           ModelComponent var35 = var5.getComponent(var33, this.modelComponentType);
                           if (var35 != null && var35.getModel().getAnimationSetMap().containsKey("Despawn")) {
                              Role var36 = var34.getRole();
                              assert var36 != null;
                              double var37 = var36.getDespawnAnimationTime();
                              if (var37 > var6.getTimeToDeactivation()) {
                                 var6.setTimeToDeactivation(var37);
                              }

                              var34.playAnimation(var33, AnimationSlot.Status, "Despawn", var5);
                           }
                        }

                        var6.setDespawnStarted(true);
                        var29.clear();
                        class="kw">return;
                     }

                     PersistentRefCount var16 = var3.getComponent(var2, this.referenceIdComponentType);
                     if (var16 != null) {
                        var16.increment();
                     }

                     Ref var17 = var3.getReferenceTo(var2);
                     var5.run(
                        var6x -> {
                           List var7 = SpatialResource.getThreadLocalReferenceList();

                           for (InvalidatablePersistentRef var11 : var15) {
                              Ref var12 = var11.getEntity(var6x);
                              if (var12 != null && var12.isValid()) {
                                 SpawnMarkerReference var13 = var6x.ensureAndGetComponent(var12, SpawnMarkerReference.getComponentType());
                                 var13.getReference().setEntity(var17, var4);
                                 var7.add(var12);
                              } else {
                                 ((HytaleLogger.Api)SpawnMarkerSystems.LOGGER.atWarning())
                                    .log("Connection with NPC from marker at %s lost due to being invalid/already unloaded", var7.getPosition());
                              }
                           }

                           var25.storeNPCs(var7, var6x);
                           var6.setNpcReferences(null);
                        }
                     );
                  }

                  class="kw">return;
               }

               if (var25.hasStoredNPCs()) {
                  var5.run(var6x -> {
                     List var7 = SpatialResource.getThreadLocalReferenceList();
                     var25.restoreNPCs(var7, var6x);
                     var6.setSpawnCount(var7.size());
                     Vector3d var8 = var6.getSpawnPosition();
                     Rotation3f var9 = var7.getRotation();
                     InvalidatablePersistentRef[] var10 = new InvalidatablePersistentRef[var7.size()];
                     int var11 = 0;

                     for (int var12 = var7.size(); var11 < var12; var11++) {
                        Ref var13 = var7.get(var11);
                        NPCEntity var14 = var6x.getComponent(var13, this.npcComponentType);
                        assert var14 != null;
                        TransformComponent var15 = var6x.getComponent(var13, this.transformComponentType);
                        assert var15 != null;
                        HeadRotation var16 = var6x.getComponent(var13, this.headRotationComponentType);
                        assert var16 != null;
                        InvalidatablePersistentRef var17 = new InvalidatablePersistentRef();
                        var17.setEntity(var13, var6x);
                        var10[var11] = var17;
                        var15.getPosition().set(var8);
                        var15.getRotation().set(var9);
                        var16.setRotation(var9);
                        var14.playAnimation(var13, AnimationSlot.Status, null, var5);
                     }

                     var6.setNpcReferences(var10);
                     var6.setDespawnStarted(false);
                     var6.setTimeToDeactivation(var10.getDeactivationTime());
                  });
               }
            }

            if (var6.tickSpawnLostTimeout(var1) && var9.isSpawningNPC()) {
               PersistentRefCount var27 = var3.getComponent(var2, this.referenceIdComponentType);
               if (var27 != null) {
                  var27.increment();
                  SpawnMarkerSystems.LOGGER.at(Level.FINE).log("Marker lost spawned NPC and changed reference ID to %s", var27.get());
               }

               Ref var28 = var3.getReferenceTo(var2);
               var5.run(var3x -> var6.spawnNPC(var28, var10, null, var3x));
            }
         } else if (var8.getWorldConfig().isSpawningNPC()
            && var8.getWorldConfig().isSpawnMarkersEnabled()
            && !var10.isManualTrigger()
            && (var6.getSuppressedBy() == null || var6.getSuppressedBy().isEmpty())) {
            Ref var11 = var3.getReferenceTo(var2);
            WorldTimeResource var12 = var5.getResource(WorldTimeResource.getResourceType());
            if (var10.isRealtimeRespawn()) {
               if (var6.tickRespawnTimer(var1)) {
                  var5.run(var3x -> var6.spawnNPC(var11, var10, null, var3x));
               }
            } else if (var6.getSpawnAfter() == null || var12.getGameTime().isAfter(var6.getSpawnAfter())) {
               var5.run(var3x -> var6.spawnNPC(var11, var10, null, var3x));
            }
         }
      }
   }
}