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));
}
}
}
}
}