EncounterManagerSystems class

Пакет: com.hypixel.hytale.builtin.encountermanager

Файл: com/hypixel/hytale/builtin/encountermanager/EncounterManagerSystems.java

Поля (44)

МодификаторыТипИмя
final ThreadLocal<List<Ref<EntityStore>>> ENTITY_LIST
break
private final Set<Dependency<EntityStore>> dependencies
private final Set<Dependency<EntityStore>> dependencies
private final Set<Dependency<EntityStore>> dependencies
private final Set<Dependency<EntityStore>> dependencies
private final Set<Dependency<EntityStore>> dependencies
private final ComponentType<EntityStore, EncounterManager> encounterComponentType
private final ComponentType<EntityStore, EncounterManager> encounterComponentType
private final ComponentType<EntityStore, EncounterManager> encounterComponentType
private final ComponentType<EntityStore, EncounterManager> encounterComponentType
private final ComponentType<EntityStore, EncounterManager> encounterComponentType
private final Query<EntityStore> query
private final Query<EntityStore> query
return
private final ComponentType<EntityStore, Teleport> teleportComponentType
SpawnLineage var10
Ref var11
BuilderInfo var13
BuilderSupport var14
EncounterManager var4
PositionCache var4
EncounterManager var4
Archetype var4
List var4
ExecutionSupport var5
NPCPlugin var5
ComponentType var5
EncounterManager var5
ComponentType var5
EncounterManager var5
DebugSupport var6
BuilderManager var6
SpawnLineage var6
World var6
Instruction var7
int var7
var7
String var7
World var7
EncounterManager var7
String var8
ComponentType var8
int[] var9

Методы (37)

МодификаторыВозвратСигнатура
public ActivateSystempublic ActivateSystem(@Nonnull ComponentType<EntityStore, EncounterManager> var1)
public BuilderSystempublic BuilderSystem(@Nonnull ComponentType<EntityStore, EncounterManager> var1)
public EnsureEntityComponentspublic EnsureEntityComponents(@Nonnull ComponentType<EntityStore, EncounterManager> var1)
public LifecycleSystempublic LifecycleSystem(@Nonnull ComponentType<EntityStore, EncounterManager> var1)
public TeleportSystempublic TeleportSystem(@Nonnull ComponentType<EntityStore, EncounterManager> var1)
public TickSystempublic TickSystem(@Nonnull ComponentType<EntityStore, EncounterManager> var1)
public ComponentType<EntityStore, Teleport> componentTypepublic ComponentType<EntityStore, Teleport> componentType()
for for(Ref var6 : var4)
abstract for for(int var9 = 0; var9 < var7x.size()
abstract for for(int var3 = 0; var3 < var1x.size()
public Set<Dependency<EntityStore>> getDependenciespublic Set<Dependency<EntityStore>> getDependencies()
public Set<Dependency<EntityStore>> getDependenciespublic Set<Dependency<EntityStore>> getDependencies()
public Set<Dependency<EntityStore>> getDependenciespublic Set<Dependency<EntityStore>> getDependencies()
public Set<Dependency<EntityStore>> getDependenciespublic Set<Dependency<EntityStore>> getDependencies()
public Set<Dependency<EntityStore>> getDependenciespublic Set<Dependency<EntityStore>> getDependencies()
public Query<EntityStore> getQuerypublic Query<EntityStore> getQuery()
public Query<EntityStore> getQuerypublic Query<EntityStore> getQuery()
public Query<EntityStore> getQuerypublic Query<EntityStore> getQuery()
public Query<EntityStore> getQuerypublic Query<EntityStore> getQuery()
public Query<EntityStore> getQuerypublic Query<EntityStore> getQuery()
if if(var7 == Integer.MIN_VALUE)
if if(var7 != null)
public void onComponentAddedpublic void onComponentAdded(@Nonnull Ref<EntityStore> var1, @Nonnull Teleport var2, @Nonnull Store<EntityStore> var3, @Nonnull CommandBuffer<EntityStore> var4)
public void onComponentRemovedpublic void onComponentRemoved(@Nonnull Ref<EntityStore> var1, @Nonnull Teleport var2, @Nonnull Store<EntityStore> var3, @Nonnull CommandBuffer<EntityStore> var4)
public void onComponentSetpublic void onComponentSet(@Nonnull Ref<EntityStore> var1, Teleport var2, @Nonnull Teleport var3, @Nonnull Store<EntityStore> var4, @Nonnull CommandBuffer<EntityStore> var5)
public void onEntityAddpublic void onEntityAdd(@Nonnull Holder<EntityStore> var1, @Nonnull AddReason var2, @Nonnull Store<EntityStore> var3)
public void onEntityAddpublic void onEntityAdd(@Nonnull Holder<EntityStore> var1, @Nonnull AddReason var2, @Nonnull Store<EntityStore> var3)
public void onEntityAddpublic void onEntityAdd(@Nonnull Holder<EntityStore> var1, @Nonnull AddReason var2, @Nonnull Store<EntityStore> var3)
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)
public void onEntityRemovedpublic void onEntityRemoved(@Nonnull Holder<EntityStore> var1, @Nonnull RemoveReason var2, @Nonnull Store<EntityStore> var3)
public void onEntityRemovedpublic void onEntityRemoved(@Nonnull Holder<EntityStore> var1, @Nonnull RemoveReason var2, @Nonnull Store<EntityStore> var3)
public void onEntityRemovedpublic void onEntityRemoved(@Nonnull Holder<EntityStore> var1, @Nonnull RemoveReason var2, @Nonnull Store<EntityStore> var3)
private static void removeLineageprivate static void removeLineage(@Nonnull Ref<EntityStore> var0, @Nonnull EncounterManager var1, @Nonnull RemoveReason var2, @Nonnull Store<EntityStore> var3, @Nonnull CommandBuffer<EntityStore> var4)
abstract removeLineage removeLineage(var1, var5, var2, var3, var4)
switch switch(var2)
public void tickpublic void tick(float var1, int var2, @Nonnull Store<EntityStore> var3)

Исходный код

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

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.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.query.Query;
class="kw">import com.hypixel.hytale.component.system.HolderSystem;
class="kw">import com.hypixel.hytale.component.system.RefChangeSystem;
class="kw">import com.hypixel.hytale.component.system.RefSystem;
class="kw">import com.hypixel.hytale.component.system.tick.TickingSystem;
class="kw">import com.hypixel.hytale.logger.HytaleLogger;
class="kw">import com.hypixel.hytale.server.core.entity.entities.Player;
class="kw">import com.hypixel.hytale.server.core.modules.entity.component.Intangible;
class="kw">import com.hypixel.hytale.server.core.modules.entity.component.TransformComponent;
class="kw">import com.hypixel.hytale.server.core.modules.entity.system.ModelSystems;
class="kw">import com.hypixel.hytale.server.core.modules.entity.teleport.Teleport;
class="kw">import com.hypixel.hytale.server.core.modules.entity.teleport.TeleportSystems;
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.world.World;
class="kw">import com.hypixel.hytale.server.core.universe.world.storage.EntityStore;
class="kw">import com.hypixel.hytale.server.npc.NPCPlugin;
class="kw">import com.hypixel.hytale.server.npc.asset.builder.BuilderInfo;
class="kw">import com.hypixel.hytale.server.npc.asset.builder.BuilderManager;
class="kw">import com.hypixel.hytale.server.npc.asset.builder.BuilderSupport;
class="kw">import com.hypixel.hytale.server.npc.instructions.ExecutionSupport;
class="kw">import com.hypixel.hytale.server.npc.instructions.Instruction;
class="kw">import com.hypixel.hytale.server.npc.role.support.DebugSupport;
class="kw">import com.hypixel.hytale.server.npc.role.support.PositionCache;
class="kw">import com.hypixel.hytale.server.npc.role.support.StateSupport;
class="kw">import com.hypixel.hytale.server.npc.systems.BlackboardSystems;
class="kw">import com.hypixel.hytale.server.npc.systems.PositionCacheSystems;
class="kw">import com.hypixel.hytale.server.npc.systems.RoleSystems;
class="kw">import com.hypixel.hytale.server.npc.util.expression.ExecutionContext;
class="kw">import com.hypixel.hytale.server.spawning.SpawnLineage;
class="kw">import it.unimi.dsi.fastutil.objects.ReferenceArrayList;
class="kw">import java.util.List;
class="kw">import java.util.Set;
class="kw">import java.util.UUID;
class="kw">import java.util.logging.Level;
class="kw">import javax.annotation.Nonnull;

class="kw">public class EncounterManagerSystems {
   class="kw">private class="kw">static class="kw">final ThreadLocal<List<Ref<EntityStore>>> ENTITY_LIST = ThreadLocal.withInitial(ReferenceArrayList::new);

   class="kw">private EncounterManagerSystems() {
   }

   class="kw">public class="kw">static class ActivateSystem class="kw">extends HolderSystem<EntityStore> {
      @Nonnull
      class="kw">private class="kw">final ComponentType<EntityStore, EncounterManager> encounterComponentType;
      @Nonnull
      class="kw">private class="kw">final Set<Dependency<EntityStore>> dependencies = Set.of(new SystemDependency<>(Order.AFTER, EncounterManagerSystems.BuilderSystem.class));

      class="kw">public ActivateSystem(@Nonnull ComponentType<EntityStore, EncounterManager> var1) {
         this.encounterComponentType = var1;
      }

      @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 Query.and(this.encounterComponentType, StateSupport.getComponentType(), DebugSupport.getComponentType(), PositionCache.getComponentType());
      }

      @Override
      class="kw">public void onEntityAdd(@Nonnull Holder<EntityStore> var1, @Nonnull AddReason var2, @Nonnull Store<EntityStore> var3) {
         EncounterManager var4 = var1.getComponent(this.encounterComponentType);
         assert var4 != null;
         if (var4.isBuilt()) {
            ExecutionSupport var5 = ExecutionSupport.acquire();
            var5.populateFromHolder(var1);

            try {
               var5.getStateSupport().activate();
               DebugSupport var6 = var5.getDebugSupport();
               var6.setDebugFlags(var6.getDebugFlags());
               var5.getPositionCache().reset(true);
               Instruction var7 = var4.getRootInstruction();
               assert var7 != null;
               PositionCacheSystems.registerInstructionsWithCache(var5, var7, null, null, null);
            } class="kw">finally {
               var5.clearForReuse();
            }
         }
      }

      @Override
      class="kw">public void onEntityRemoved(@Nonnull Holder<EntityStore> var1, @Nonnull RemoveReason var2, @Nonnull Store<EntityStore> var3) {
         PositionCache var4 = var1.getComponent(PositionCache.getComponentType());
         assert var4 != null;
         var4.reset(false);
      }
   }

   class="kw">public class="kw">static class BuilderSystem class="kw">extends HolderSystem<EntityStore> {
      @Nonnull
      class="kw">private class="kw">final ComponentType<EntityStore, EncounterManager> encounterComponentType;
      @Nonnull
      class="kw">private class="kw">final Set<Dependency<EntityStore>> dependencies = Set.of(
         new SystemDependency<>(Order.BEFORE, ModelSystems.ModelSpawned.class),
         new SystemDependency<>(Order.BEFORE, BlackboardSystems.SubscriptionLifecycleSystem.class)
      );
      @Nonnull
      class="kw">private class="kw">final Query<EntityStore> query;

      class="kw">public BuilderSystem(@Nonnull ComponentType<EntityStore, EncounterManager> var1) {
         this.encounterComponentType = var1;
         this.query = Archetype.of(var1, TransformComponent.getComponentType());
      }

      @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 void onEntityAdd(@Nonnull Holder<EntityStore> var1, @Nonnull AddReason var2, @Nonnull Store<EntityStore> var3) {
         EncounterManager var4 = var1.getComponent(this.encounterComponentType);
         assert var4 != null;
         if (!var4.isBuilt()) {
            NPCPlugin var5 = NPCPlugin.get();
            BuilderManager var6 = var5.getBuilderManager();
            int var7 = var4.getEncounterIndex();
            if (var7 == Integer.MIN_VALUE) {
               String var8 = var4.getEncounterId();
               var7 = var8 != null ? var5.getIndex(var8) : Integer.MIN_VALUE;
            }

            BuilderInfo var13 = var7 >= 0 ? var6.tryGetBuilderInfo(var7) : null;
            if (var13 != null && var13.getBuilder().category() == EncounterManager.class && var13.getBuilder() class="kw">instanceof EncounterBuilder var9) {
               var4.setEncounterIndex(var7);
               BuilderSupport var14 = new BuilderSupport(var6, var1, new ExecutionContext(), var13.getBuilder(), null);

               try {
                  var9.createAndAttach(var1, var14);
               } catch (RuntimeException var12) {
                  ((HytaleLogger.Api)var5.getLogger().at(Level.SEVERE).withCause(var12)).log("Failed to build encounter manager '%s'", var4.getEncounterId());
                  class="kw">return;
               }

               if (!var1.getArchetype().contains(SpawnLineage.getComponentType())) {
                  var1.addComponent(SpawnLineage.getComponentType(), new SpawnLineage(UUID.randomUUID().toString()));
               }

               var4.spawned(var1);
            } else {
               var5.getLogger().at(Level.SEVERE).log("Encounter manager references unknown or invalid asset '%s'", var4.getEncounterId());
            }
         }
      }

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

   class="kw">public class="kw">static class EnsureEntityComponents class="kw">extends HolderSystem<EntityStore> {
      @Nonnull
      class="kw">private class="kw">final Query<EntityStore> query;

      class="kw">public EnsureEntityComponents(@Nonnull ComponentType<EntityStore, EncounterManager> var1) {
         this.query = var1;
      }

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

      @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());
         var1.ensureComponent(PrefabCopyableComponent.getComponentType());
      }

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

   class="kw">public class="kw">static class LifecycleSystem class="kw">extends RefSystem<EntityStore> {
      @Nonnull
      class="kw">private class="kw">final ComponentType<EntityStore, EncounterManager> encounterComponentType;
      @Nonnull
      class="kw">private class="kw">final Set<Dependency<EntityStore>> dependencies = Set.of(new SystemDependency<>(Order.AFTER, EncounterManagerSystems.BuilderSystem.class));

      class="kw">public LifecycleSystem(@Nonnull ComponentType<EntityStore, EncounterManager> var1) {
         this.encounterComponentType = var1;
      }

      @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.encounterComponentType;
      }

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

      @Override
      class="kw">public void onEntityRemove(
         @Nonnull Ref<EntityStore> var1, @Nonnull RemoveReason var2, @Nonnull Store<EntityStore> var3, @Nonnull CommandBuffer<EntityStore> var4
      ) {
         EncounterManager var5 = var3.getComponent(var1, this.encounterComponentType);
         assert var5 != null;
         if (var5.isBuilt()) {
            class="kw">switch (var2) {
               case REMOVE:
               case BUILDER_TOOLS_UNDO:
                  var5.removed(var1, var4);
                  if (var5.isCleanupOnRemove()) {
                     removeLineage(var1, var5, var2, var3, var4);
                  }
                  break;
               case UNLOAD:
                  var5.unloaded(var1, var4);
            }
         }
      }

      class="kw">private class="kw">static void removeLineage(
         @Nonnull Ref<EntityStore> var0,
         @Nonnull EncounterManager var1,
         @Nonnull RemoveReason var2,
         @Nonnull Store<EntityStore> var3,
         @Nonnull CommandBuffer<EntityStore> var4
      ) {
         ComponentType var5 = SpawnLineage.getComponentType();
         SpawnLineage var6 = var3.getComponent(var0, var5);
         String var7 = var6 != null ? var6.getLineageId() : null;
         if (var7 != null) {
            ComponentType var8 = Player.getComponentType();
            int[] var9 = new int[]{0};
            var3.forEachChunk(var5, (var7x, var8x) -> {
               if (!var7x.getArchetype().contains(var8)) {
                  for (int var9 = 0; var9 < var7x.size(); var9++) {
                     SpawnLineage var10 = var7x.getComponent(var9, var5);
                     if (var10 != null && var7.equals(var10.getLineageId())) {
                        Ref var11 = var7x.getReferenceTo(var9);
                        if (!var11.equals(var0)) {
                           var4.tryRemoveEntity(var11, var2);
                           var9[0]++;
                        }
                     }
                  }
               }
            });
            NPCPlugin.get()
               .getLogger()
               .at(Level.FINE)
               .log("Encounter manager '%s' cleanup queued %d entities of lineage %s for removal", var1.getEncounterId(), var9[0], var7);
         }
      }
   }

   class="kw">public class="kw">static class TeleportSystem class="kw">extends RefChangeSystem<EntityStore, Teleport> {
      @Nonnull
      class="kw">private class="kw">final ComponentType<EntityStore, EncounterManager> encounterComponentType;
      @Nonnull
      class="kw">private class="kw">final ComponentType<EntityStore, Teleport> teleportComponentType = Teleport.getComponentType();
      @Nonnull
      class="kw">private class="kw">final Set<Dependency<EntityStore>> dependencies = Set.of(new SystemDependency<>(Order.AFTER, TeleportSystems.MoveSystem.class));

      class="kw">public TeleportSystem(@Nonnull ComponentType<EntityStore, EncounterManager> var1) {
         this.encounterComponentType = var1;
      }

      @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.encounterComponentType;
      }

      @Nonnull
      @Override
      class="kw">public ComponentType<EntityStore, Teleport> componentType() {
         class="kw">return this.teleportComponentType;
      }

      class="kw">public void onComponentAdded(
         @Nonnull Ref<EntityStore> var1, @Nonnull Teleport var2, @Nonnull Store<EntityStore> var3, @Nonnull CommandBuffer<EntityStore> var4
      ) {
         EncounterManager var5 = var4.getComponent(var1, this.encounterComponentType);
         assert var5 != null;
         if (var5.isBuilt()) {
            World var6 = var3.getExternalData().getWorld();
            World var7 = var2.getWorld();
            var5.teleported(var1, var4, var6, var7 == null ? var6 : var7);
         }
      }

      class="kw">public void onComponentSet(
         @Nonnull Ref<EntityStore> var1, Teleport var2, @Nonnull Teleport var3, @Nonnull Store<EntityStore> var4, @Nonnull CommandBuffer<EntityStore> var5
      ) {
      }

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

   class="kw">public class="kw">static class TickSystem class="kw">extends TickingSystem<EntityStore> {
      @Nonnull
      class="kw">private class="kw">final ComponentType<EntityStore, EncounterManager> encounterComponentType;
      @Nonnull
      class="kw">private class="kw">final Set<Dependency<EntityStore>> dependencies = Set.of(
         new SystemDependency<>(Order.AFTER, PositionCacheSystems.UpdateSystem.class),
         new SystemDependency<>(Order.AFTER, RoleSystems.MarkedTargetRebindSystem.class),
         new SystemDependency<>(Order.BEFORE, RoleSystems.WorldSupportTickSystem.class),
         new SystemDependency<>(Order.BEFORE, RoleSystems.EntitySupportTickSystem.class),
         new SystemDependency<>(Order.BEFORE, RoleSystems.PositionCacheClearSystem.class),
         new SystemDependency<>(Order.BEFORE, RoleSystems.StateSupportUpdateSystem.class),
         new SystemDependency<>(Order.BEFORE, RoleSystems.MarkedEntitySupportPostSystem.class)
      );

      class="kw">public TickSystem(@Nonnull ComponentType<EntityStore, EncounterManager> var1) {
         this.encounterComponentType = var1;
      }

      @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) {
         List var4 = EncounterManagerSystems.ENTITY_LIST.get();
         var3.forEachChunk(this.encounterComponentType, (var1x, var2x) -> {
            for (int var3 = 0; var3 < var1x.size(); var3++) {
               var4.add(var1x.getReferenceTo(var3));
            }
         });

         for (Ref var6 : var4) {
            if (var6.isValid()) {
               EncounterManager var7 = var3.getComponent(var6, this.encounterComponentType);
               assert var7 != null;
               if (var7.isBuilt()) {
                  try {
                     var7.tick(var6, var1, var3);
                  } catch (IllegalArgumentException | IllegalStateException var9) {
                     ((HytaleLogger.Api)NPCPlugin.get().getLogger().at(Level.SEVERE).withCause(var9))
                        .log("Failed to tick encounter manager '%s'", var7.getEncounterId());
                     var3.removeEntity(var6, RemoveReason.REMOVE);
                  }
               }
            }
         }

         var4.clear();
      }
   }
}