QueueResource class

Пакет: com.hypixel.hytale.server.npc.systems

Файл: com/hypixel/hytale/server/npc/systems/NewSpawnStartTickingSystem.java

implements: Resource<EntityStore>

Поля (2)

МодификаторыТипИмя
private final ReferenceList<Ref<EntityStore>> queue
NewSpawnStartTickingSystem.QueueResource var1

Методы (2)

МодификаторыВозвратСигнатура
public Resource<EntityStore> clonepublic Resource<EntityStore> clone()
public static ResourceType<EntityStore, NewSpawnStartTickingSystem.QueueResource> getResourceTypepublic static ResourceType<EntityStore, NewSpawnStartTickingSystem.QueueResource> getResourceType()

Исходный код

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

class="kw">import com.hypixel.hytale.component.ComponentType;
class="kw">import com.hypixel.hytale.component.NonTicking;
class="kw">import com.hypixel.hytale.component.Ref;
class="kw">import com.hypixel.hytale.component.Resource;
class="kw">import com.hypixel.hytale.component.ResourceType;
class="kw">import com.hypixel.hytale.component.Store;
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.SystemDependency;
class="kw">import com.hypixel.hytale.component.system.tick.TickingSystem;
class="kw">import com.hypixel.hytale.server.core.universe.world.storage.EntityStore;
class="kw">import com.hypixel.hytale.server.npc.NPCPlugin;
class="kw">import it.unimi.dsi.fastutil.objects.ObjectListIterator;
class="kw">import it.unimi.dsi.fastutil.objects.ReferenceArrayList;
class="kw">import it.unimi.dsi.fastutil.objects.ReferenceList;
class="kw">import java.util.Set;
class="kw">import javax.annotation.Nonnull;

class="kw">public class NewSpawnStartTickingSystem class="kw">extends TickingSystem<EntityStore> {
   @Nonnull
   class="kw">private class="kw">final ResourceType<EntityStore, NewSpawnStartTickingSystem.QueueResource> queueResourceType;
   @Nonnull
   class="kw">private class="kw">final ComponentType<EntityStore, NonTicking<EntityStore>> nonTickingComponentType;
   @Nonnull
   class="kw">private class="kw">final Set<Dependency<EntityStore>> dependencies = Set.of(new SystemDependency<>(Order.AFTER, StepCleanupSystem.class));

   class="kw">public NewSpawnStartTickingSystem(@Nonnull ResourceType<EntityStore, NewSpawnStartTickingSystem.QueueResource> var1) {
      this.queueResourceType = var1;
      this.nonTickingComponentType = EntityStore.REGISTRY.getNonTickingComponentType();
   }

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

   @Override
   class="kw">public void tick(float var1, int var2, @Nonnull Store<EntityStore> var3) {
      ReferenceList var4 = var3.getResource(this.queueResourceType).queue;
      if (!var4.isEmpty()) {
         ObjectListIterator var5 = var4.iterator();

         while (var5.hasNext()) {
            Ref var6 = (Ref<EntityStore>)var5.next();
            if (var6.isValid()) {
               var3.removeComponent(var6, this.nonTickingComponentType);
            }
         }

         var4.clear();
      }
   }

   class="kw">public class="kw">static void queueNewSpawn(@Nonnull Ref<EntityStore> var0, @Nonnull Store<EntityStore> var1) {
      var1.ensureComponent(var0, EntityStore.REGISTRY.getNonTickingComponentType());
      var1.getResource(NewSpawnStartTickingSystem.QueueResource.getResourceType()).queue.add(var0);
   }

   class="kw">public class="kw">static class QueueResource class="kw">implements Resource<EntityStore> {
      @Nonnull
      class="kw">private class="kw">final ReferenceList<Ref<EntityStore>> queue = new ReferenceArrayList();

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

      @Nonnull
      class="kw">public class="kw">static ResourceType<EntityStore, NewSpawnStartTickingSystem.QueueResource> getResourceType() {
         class="kw">return NPCPlugin.get().getNewSpawnStartTickingQueueResourceType();
      }

      @Nonnull
      @Override
      class="kw">public Resource<EntityStore> clone() {
         NewSpawnStartTickingSystem.QueueResource var1 = new NewSpawnStartTickingSystem.QueueResource();
         var1.queue.addAll(this.queue);
         class="kw">return var1;
      }
   }
}