Suppressor class
Пакет: com.hypixel.hytale.server.spawning.suppression.system
Файл: com/hypixel/hytale/server/spawning/suppression/system/SpawnSuppressionSystems.java
extends: RefSystem<EntityStore>
Поля (46)
| Модификаторы | Тип | Имя |
|---|---|---|
|
private final ResourceType<ChunkStore, ChunkSuppressionQueue> |
chunkSuppressionQueueResourceType |
|
private final Query<EntityStore> |
query |
|
private final ComponentType<EntityStore, SpawnMarkerEntity> |
spawnMarkerEntityComponentType |
|
private final ResourceType<EntityStore, SpatialResource<Ref<EntityStore>, EntityStore>> |
spawnMarkerSpatialResourceType |
|
private final ResourceType<EntityStore, SpawnSuppressionController> |
spawnSuppressionControllerResourceType |
|
private final ComponentType<EntityStore, SpawnSuppressionComponent> |
spawnSuppressorComponentType |
|
private final ComponentType<EntityStore, TransformComponent> |
transformComponentType |
|
private final ComponentType<EntityStore, UUIDComponent> |
uuidComponentType |
|
SpawnSuppressionController |
var10 |
|
String |
var10 |
|
SpawnSuppressorEntry |
var11 |
|
SpawnSuppression |
var11 |
|
UUID |
var12 |
|
double |
var12 |
|
SpawnSuppressorEntry |
var13 |
|
Vector3d |
var14 |
|
int |
var15 |
|
int |
var16 |
|
int |
var17 |
|
int |
var18 |
|
ChunkStore |
var19 |
|
Store |
var20 |
|
Long2ObjectConcurrentHashMap |
var21 |
|
long |
var24 |
|
Ref |
var25 |
|
ChunkSuppressionEntry |
var26 |
|
|
var26 |
|
ChunkSuppressionEntry |
var27 |
|
List |
var28 |
|
ObjectArrayList |
var29 |
|
List |
var32 |
|
SpatialResource |
var33 |
|
SpawnMarkerEntity |
var35 |
|
HytaleLogger.Api |
var36 |
|
Ref |
var37 |
|
ChunkSuppressionQueue |
var38 |
|
Archetype |
var5 |
|
SpawnSuppressionController |
var5 |
|
SpawnSuppressionComponent |
var6 |
|
UUIDComponent |
var6 |
|
TransformComponent |
var7 |
|
Map |
var7 |
|
UUIDComponent |
var8 |
|
UUID |
var8 |
|
boolean |
var9 |
|
SpawnSuppressorEntry |
var9 |
Методы (15)
| Модификаторы | Возврат | Сигнатура |
|---|---|---|
|
|
for for(int var22 = var15; var22 <= var17; var22++) |
|
|
for for(int var23 = var16; var23 <= var18; var23++) |
|
|
for for(ChunkSuppressionEntry.SuppressionSpan var31 : var28) |
abstract |
|
for for(int var34 = 0; var34 < var32.size() |
|
public SystemGroup<EntityStore> |
getGrouppublic SystemGroup<EntityStore> getGroup() |
|
public Query<EntityStore> |
getQuerypublic Query<EntityStore> getQuery() |
|
|
if if(var2 == AddReason.SPAWN || var9) |
|
|
if if(var13 != null) |
|
|
if if(var2 == RemoveReason.REMOVE) |
|
|
if if(var11 == null) |
|
|
if if(var27 != null) |
|
|
if if(var37 != null) |
|
|
if if(var26 == null) |
|
public void |
onEntityAddedpublic void onEntityAdded(@Nonnull Ref<EntityStore> var1, @Nonnull AddReason var2, @Nonnull Store<EntityStore> var3, @Nonnull CommandBuffer<EntityStore> var4) |
|
public void |
onEntityRemovepublic void onEntityRemove(@Nonnull Ref<EntityStore> var1, @Nonnull RemoveReason var2, @Nonnull Store<EntityStore> var3, @Nonnull CommandBuffer<EntityStore> var4) |
Исходный код
Показать/скрыть
class="kw">package com.hypixel.hytale.server.spawning.suppression.system;
class="kw">import com.hypixel.fastutil.longs.Long2ObjectConcurrentHashMap;
class="kw">import com.hypixel.hytale.assetstore.event.LoadedAssetsEvent;
class="kw">import com.hypixel.hytale.assetstore.event.RemovedAssetsEvent;
class="kw">import com.hypixel.hytale.assetstore.map.IndexedAssetMap;
class="kw">import com.hypixel.hytale.builtin.tagset.TagSetPlugin;
class="kw">import com.hypixel.hytale.builtin.tagset.config.NPCGroup;
class="kw">import com.hypixel.hytale.component.AddReason;
class="kw">import com.hypixel.hytale.component.Archetype;
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.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.StoreSystem;
class="kw">import com.hypixel.hytale.event.EventRegistry;
class="kw">import com.hypixel.hytale.logger.HytaleLogger;
class="kw">import com.hypixel.hytale.math.util.ChunkUtil;
class="kw">import com.hypixel.hytale.math.util.MathUtil;
class="kw">import com.hypixel.hytale.server.core.entity.UUIDComponent;
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.TransformComponent;
class="kw">import com.hypixel.hytale.server.core.modules.entity.tracker.NetworkId;
class="kw">import com.hypixel.hytale.server.core.prefab.PrefabCopyableComponent;
class="kw">import com.hypixel.hytale.server.core.universe.Universe;
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 com.hypixel.hytale.server.spawning.SpawningPlugin;
class="kw">import com.hypixel.hytale.server.spawning.assets.spawnsuppression.SpawnSuppression;
class="kw">import com.hypixel.hytale.server.spawning.spawnmarkers.SpawnMarkerEntity;
class="kw">import com.hypixel.hytale.server.spawning.suppression.SpawnSuppressorEntry;
class="kw">import com.hypixel.hytale.server.spawning.suppression.component.ChunkSuppressionEntry;
class="kw">import com.hypixel.hytale.server.spawning.suppression.component.ChunkSuppressionQueue;
class="kw">import com.hypixel.hytale.server.spawning.suppression.component.SpawnSuppressionComponent;
class="kw">import com.hypixel.hytale.server.spawning.suppression.component.SpawnSuppressionController;
class="kw">import it.unimi.dsi.fastutil.ints.IntOpenHashSet;
class="kw">import it.unimi.dsi.fastutil.ints.IntSet;
class="kw">import it.unimi.dsi.fastutil.longs.LongIterator;
class="kw">import it.unimi.dsi.fastutil.objects.ObjectArrayList;
class="kw">import java.util.Comparator;
class="kw">import java.util.List;
class="kw">import java.util.Map;
class="kw">import java.util.Set;
class="kw">import java.util.UUID;
class="kw">import java.util.concurrent.CopyOnWriteArrayList;
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 SpawnSuppressionSystems {
class="kw">public SpawnSuppressionSystems() {
}
class="kw">private class="kw">static void suppressSpawns(
@Nonnull ResourceType<ChunkStore, ChunkSuppressionQueue> var0,
@Nonnull ComponentType<EntityStore, SpawnMarkerEntity> var1,
UUID var2,
@Nonnull SpawnSuppressorEntry var3,
@Nonnull SpawnSuppressionController var4,
@Nonnull Store<EntityStore> var5,
@Nonnull ChunkStore var6
) {
String var7 = var3.getSuppressionId();
SpawningPlugin.get().getLogger().at(Level.FINEST).log("Suppressing spawns with id '%s' from suppressor %s", var7, var2);
SpawnSuppression var8 = SpawnSuppression.getAssetMap().getAsset(var7);
if (var8 == null) {
SpawningPlugin.get().getLogger().at(Level.WARNING).log("Spawn suppression config '%s' does not exist", var7);
} else {
int[] var9 = var8.getSuppressedGroupIds();
Object var10;
if (var9 != null && var9.length > 0) {
var10 = new IntOpenHashSet();
for (int var14 : var9) {
IntSet var15 = TagSetPlugin.get(NPCGroup.class).getSet(var14);
if (var15 != null) {
var10.addAll(var15);
}
}
} else {
var10 = null;
}
double var30 = var8.getRadius();
Vector3d var31 = var3.getPosition();
int var32 = MathUtil.floor(var31.x - var30) >> 5;
int var33 = MathUtil.floor(var31.z - var30) >> 5;
int var16 = MathUtil.floor(var31.x + var30) >> 5;
int var17 = MathUtil.floor(var31.z + var30) >> 5;
int var18 = MathUtil.floor(var31.y - var30);
int var19 = MathUtil.floor(var31.y + var30);
Long2ObjectConcurrentHashMap var20 = var4.getChunkSuppressionMap();
for (int var21 = var32; var21 <= var16; var21++) {
for (int var22 = var33; var22 <= var17; var22++) {
long var23 = ChunkUtil.indexChunk(var21, var22);
SpawningPlugin.get().getLogger().at(Level.FINEST).log("Suppressing chunk index %s with id '%s'", var23, var7);
ChunkSuppressionEntry var25 = var20.get(var23);
Object var26;
if (var25 != null) {
var26 = new ObjectArrayList(var25.getSuppressionSpans());
} else {
var26 = new ObjectArrayList();
}
var26.add(new ChunkSuppressionEntry.SuppressionSpan(var2, var18, var19, var10));
var26.sort(Comparator.comparingInt(ChunkSuppressionEntry.SuppressionSpan::getMinY));
ChunkSuppressionEntry var27 = new ChunkSuppressionEntry(var26);
var20.put(var23, var27);
Ref var28 = var6.getChunkReference(var23);
if (var28 != null) {
ChunkSuppressionQueue var29 = var6.getStore().getResource(var0);
var29.queueForAdd(var28, var27);
SpawningPlugin.get().getLogger().at(Level.FINEST).log("Queueing annotation of chunk index %s with id '%s'", var23, var7);
}
}
}
if (var8.isSuppressSpawnMarkers()) {
List var34 = SpatialResource.getThreadLocalReferenceList();
SpatialResource var35 = var5.getResource(SpawningPlugin.get().getSpawnMarkerSpatialResource());
var35.getSpatialStructure().collect(var31, var30, var34);
for (int var36 = 0; var36 < var34.size(); var36++) {
Ref var24 = var34.get(var36);
SpawnMarkerEntity var37 = var5.getComponent(var24, var1);
if (var37.isSuppressedBy(var8)) {
var37.suppress(var2);
HytaleLogger.Api var38 = SpawningPlugin.get().getLogger().at(Level.FINEST);
if (var38.isEnabled()) {
var38.log("Suppressing spawn marker %s", var5.getComponent(var24, UUIDComponent.getComponentType()).getUuid());
}
}
}
}
}
}
class="kw">public class="kw">static class EnsureNetworkSendable class="kw">extends HolderSystem<EntityStore> {
class="kw">private class="kw">final Query<EntityStore> query = Query.and(SpawnSuppressionComponent.getComponentType(), Query.not(NetworkId.getComponentType()));
class="kw">public EnsureNetworkSendable() {
}
@Override
class="kw">public void onEntityAdd(@Nonnull Holder<EntityStore> var1, @Nonnull AddReason var2, @Nonnull Store<EntityStore> var3) {
var1.addComponent(NetworkId.getComponentType(), new NetworkId(var3.getExternalData().takeNextNetworkId()));
}
@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 Load class="kw">extends StoreSystem<EntityStore> {
class="kw">private class="kw">final ResourceType<EntityStore, SpawnSuppressionController> spawnSuppressionControllerResourceType;
class="kw">private class="kw">final ComponentType<EntityStore, SpawnMarkerEntity> spawnMarkerEntityComponentType;
class="kw">private class="kw">final ResourceType<ChunkStore, ChunkSuppressionQueue> chunkSuppressionQueueResourceType;
class="kw">private class="kw">final ComponentType<ChunkStore, ChunkSuppressionEntry> chunkSuppressionEntryComponentType;
@Nonnull
class="kw">private class="kw">final EventRegistry eventRegistry;
class="kw">public Load(
ResourceType<EntityStore, SpawnSuppressionController> var1,
ComponentType<EntityStore, SpawnMarkerEntity> var2,
ResourceType<ChunkStore, ChunkSuppressionQueue> var3,
ComponentType<ChunkStore, ChunkSuppressionEntry> var4
) {
this.spawnSuppressionControllerResourceType = var1;
this.spawnMarkerEntityComponentType = var2;
this.chunkSuppressionQueueResourceType = var3;
this.chunkSuppressionEntryComponentType = var4;
this.eventRegistry = new EventRegistry(new CopyOnWriteArrayList<>(), () -> true, null, SpawningPlugin.get().getEventRegistry());
this.eventRegistry.register(LoadedAssetsEvent.class, SpawnSuppression.class, this::onSpawnSuppressionsLoaded);
this.eventRegistry.register(RemovedAssetsEvent.class, SpawnSuppression.class, this::onSpawnSuppressionsRemoved);
}
@Override
class="kw">public void onSystemAddedToStore(@Nonnull Store<EntityStore> var1) {
SpawnSuppressionController var2 = var1.getResource(this.spawnSuppressionControllerResourceType);
Map var3 = var2.getSpawnSuppressorMap();
var3.forEach(
(var3x, var4) -> SpawnSuppressionSystems.suppressSpawns(
this.chunkSuppressionQueueResourceType,
this.spawnMarkerEntityComponentType,
var3x,
var4,
var2,
var1,
var1.getExternalData().getWorld().getChunkStore()
)
);
}
@Override
class="kw">public void onSystemRemovedFromStore(@Nonnull Store<EntityStore> var1) {
}
@Override
class="kw">public void onSystemUnregistered() {
this.eventRegistry.shutdownAndCleanup(true);
}
class="kw">private void onSpawnSuppressionsLoaded(@Nonnull LoadedAssetsEvent<String, SpawnSuppression, IndexedAssetMap<String, SpawnSuppression>> var1) {
Map var2 = var1.getLoadedAssets();
Universe.get().getWorlds().forEach((var2x, var3) -> var3.execute(() -> {
World var3 = false;
Store var4 = var3.getEntityStore().getStore();
SpawnSuppressionController var5 = var4.getResource(this.spawnSuppressionControllerResourceType);
Map var6 = var5.getSpawnSuppressorMap();
for (SpawnSuppressorEntry var8 : var6.values()) {
if (var2.containsKey(var8.getSuppressionId())) {
var3 = true;
break;
}
}
if (var3) {
this.rebuildSuppressionMap(var3, var4, var5);
}
}));
}
class="kw">private void onSpawnSuppressionsRemoved(@Nonnull RemovedAssetsEvent<String, SpawnSuppression, IndexedAssetMap<String, SpawnSuppression>> var1) {
Set var2 = var1.getRemovedAssets();
Universe.get().getWorlds().forEach((var2x, var3) -> var3.execute(() -> {
World var3 = false;
Store var4 = var3.getEntityStore().getStore();
SpawnSuppressionController var5 = var4.getResource(this.spawnSuppressionControllerResourceType);
Map var6 = var5.getSpawnSuppressorMap();
for (SpawnSuppressorEntry var8 : var6.values()) {
if (var2.contains(var8.getSuppressionId())) {
var3 = true;
break;
}
}
if (var3) {
this.rebuildSuppressionMap(var3, var4, var5);
}
}));
}
class="kw">private void rebuildSuppressionMap(@Nonnull World var1, @Nonnull Store<EntityStore> var2, @Nonnull SpawnSuppressionController var3) {
SpawningPlugin.get().getLogger().at(Level.INFO).log("Rebuilding spawn suppression map for world %s", var1.getName());
ChunkStore var4 = var1.getChunkStore();
Store var5 = var4.getStore();
Long2ObjectConcurrentHashMap var6 = var3.getChunkSuppressionMap();
LongIterator var7 = var6.keySet().iterator();
while (var7.hasNext()) {
long var8 = (Long)var7.next();
Ref var10 = var4.getChunkReference(var8);
if (var10 != null) {
var5.tryRemoveComponent(var10, this.chunkSuppressionEntryComponentType);
}
}
var6.clear();
var2.forEachEntityParallel(
SpawnMarkerEntity.getComponentType(), (var0, var1x, var2x) -> var1x.getComponent(var0, SpawnMarkerEntity.getComponentType()).clearAllSuppressions()
);
Map var11 = var3.getSpawnSuppressorMap();
var11.forEach(
(var3x, var4x) -> SpawnSuppressionSystems.suppressSpawns(
this.chunkSuppressionQueueResourceType,
this.spawnMarkerEntityComponentType,
var3x,
var4x,
var3,
var2,
var2.getExternalData().getWorld().getChunkStore()
)
);
}
}
class="kw">public class="kw">static class Suppressor class="kw">extends RefSystem<EntityStore> {
class="kw">private class="kw">final ComponentType<EntityStore, SpawnSuppressionComponent> spawnSuppressorComponentType;
class="kw">private class="kw">final ResourceType<EntityStore, SpawnSuppressionController> spawnSuppressionControllerResourceType;
class="kw">private class="kw">final ComponentType<EntityStore, SpawnMarkerEntity> spawnMarkerEntityComponentType;
class="kw">private class="kw">final ResourceType<ChunkStore, ChunkSuppressionQueue> chunkSuppressionQueueResourceType;
class="kw">private class="kw">final ResourceType<EntityStore, SpatialResource<Ref<EntityStore>, EntityStore>> spawnMarkerSpatialResourceType;
class="kw">private class="kw">final ComponentType<EntityStore, TransformComponent> transformComponentType = TransformComponent.getComponentType();
class="kw">private class="kw">final ComponentType<EntityStore, UUIDComponent> uuidComponentType = UUIDComponent.getComponentType();
@Nonnull
class="kw">private class="kw">final Query<EntityStore> query;
class="kw">public Suppressor(
ComponentType<EntityStore, SpawnSuppressionComponent> var1,
ResourceType<EntityStore, SpawnSuppressionController> var2,
ComponentType<EntityStore, SpawnMarkerEntity> var3,
ResourceType<ChunkStore, ChunkSuppressionQueue> var4,
ResourceType<EntityStore, SpatialResource<Ref<EntityStore>, EntityStore>> var5
) {
this.spawnSuppressorComponentType = var1;
this.spawnSuppressionControllerResourceType = var2;
this.spawnMarkerEntityComponentType = var3;
this.chunkSuppressionQueueResourceType = var4;
this.spawnMarkerSpatialResourceType = var5;
this.query = Query.and(var1, this.transformComponentType, this.uuidComponentType);
}
@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 onEntityAdded(
@Nonnull Ref<EntityStore> var1, @Nonnull AddReason var2, @Nonnull Store<EntityStore> var3, @Nonnull CommandBuffer<EntityStore> var4
) {
Archetype var5 = var3.getArchetype(var1);
SpawnSuppressionComponent var6 = var3.getComponent(var1, this.spawnSuppressorComponentType);
TransformComponent var7 = var4.getComponent(var1, this.transformComponentType);
UUIDComponent var8 = var4.getComponent(var1, this.uuidComponentType);
boolean var9 = var5.contains(FromPrefab.getComponentType()) || var5.contains(FromWorldGen.getComponentType());
if (var2 == AddReason.SPAWN || var9) {
SpawnSuppressionController var10 = var3.getResource(this.spawnSuppressionControllerResourceType);
SpawnSuppressorEntry var11 = new SpawnSuppressorEntry(var6.getSpawnSuppression(), new Vector3d(var7.getPosition()));
UUID var12 = var8.getUuid();
SpawnSuppressorEntry var13 = var10.getSpawnSuppressorMap().put(var12, var11);
if (var13 != null) {
throw new IllegalStateException(String.format("A spawn suppressor with the ID %s is already registered.", var12));
}
SpawnSuppressionSystems.suppressSpawns(
this.chunkSuppressionQueueResourceType,
this.spawnMarkerEntityComponentType,
var12,
var11,
var10,
var3,
var3.getExternalData().getWorld().getChunkStore()
);
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.REMOVE) {
SpawnSuppressionController var5 = var3.getResource(this.spawnSuppressionControllerResourceType);
UUIDComponent var6 = var4.getComponent(var1, this.uuidComponentType);
Map var7 = var5.getSpawnSuppressorMap();
UUID var8 = var6.getUuid();
SpawnSuppressorEntry var9 = var7.remove(var8);
String var10 = var9.getSuppressionId();
SpawnSuppression var11 = SpawnSuppression.getAssetMap().getAsset(var10);
if (var11 == null) {
SpawningPlugin.get().getLogger().at(Level.WARNING).log("Spawn suppression config '%s' does not exist", var10);
} else {
double var12 = var11.getRadius();
Vector3d var14 = var9.getPosition();
int var15 = MathUtil.floor(var14.x - var12) >> 5;
int var16 = MathUtil.floor(var14.z - var12) >> 5;
int var17 = MathUtil.floor(var14.x + var12) >> 5;
int var18 = MathUtil.floor(var14.z + var12) >> 5;
ChunkStore var19 = var3.getExternalData().getWorld().getChunkStore();
Store var20 = var19.getStore();
Long2ObjectConcurrentHashMap var21 = var5.getChunkSuppressionMap();
for (int var22 = var15; var22 <= var17; var22++) {
for (int var23 = var16; var23 <= var18; var23++) {
long var24 = ChunkUtil.indexChunk(var22, var23);
ChunkSuppressionEntry var26 = null;
ChunkSuppressionEntry var27 = var21.get(var24);
if (var27 != null) {
if (var27.containsOnly(var8)) {
var21.remove(var24);
} else {
List var28 = var27.getSuppressionSpans();
ObjectArrayList var29 = new ObjectArrayList();
for (ChunkSuppressionEntry.SuppressionSpan var31 : var28) {
if (!var31.getSuppressorId().equals(var8)) {
var29.add(var31);
}
}
var26 = new ChunkSuppressionEntry(var29);
var21.put(var24, var26);
}
Ref var37 = var19.getChunkReference(var24);
if (var37 != null) {
ChunkSuppressionQueue var38 = var20.getResource(this.chunkSuppressionQueueResourceType);
if (var26 == null) {
var38.queueForRemove(var37);
} else {
var38.queueForAdd(var37, var26);
}
SpawningPlugin.get().getLogger().at(Level.FINEST).log("Queuing removal of suppression from chunk index %s, %s", var24, var10);
}
}
}
}
if (var11.isSuppressSpawnMarkers()) {
List var32 = SpatialResource.getThreadLocalReferenceList();
SpatialResource var33 = var3.getResource(this.spawnMarkerSpatialResourceType);
var33.getSpatialStructure().collect(var14, var12, var32);
for (int var34 = 0; var34 < var32.size(); var34++) {
Ref var25 = var32.get(var34);
SpawnMarkerEntity var35 = var4.getComponent(var25, this.spawnMarkerEntityComponentType);
var35.releaseSuppression(var8);
HytaleLogger.Api var36 = SpawningPlugin.get().getLogger().at(Level.FINEST);
if (var36.isEnabled()) {
var36.log("Releasing suppression of spawn marker %s", var4.getComponent(var25, this.uuidComponentType).getUuid());
}
}
}
}
}
}
}
}