EntitySystems class

Пакет: com.hypixel.hytale.server.core.modules.entity.system

Файл: com/hypixel/hytale/server/core/modules/entity/system/EntitySystems.java

Поля (35)

МодификаторыТипИмя
private static final Set<Dependency<EntityStore>> DEPENDENCIES
private static final Query<EntityStore> QUERY
break
private final ComponentType<EntityStore, T> componentType
private final ComponentType<EntityStore, EntityTrackerSystems.Visible> componentType
private final Set<Dependency<EntityStore>> dependencies
private final Set<Dependency<EntityStore>> dependencies
private final ComponentType<EntityStore, DynamicLight> dynamicLightType
private final SystemGroup<EntityStore> group
private final ComponentType<EntityStore, NewSpawnComponent> newSpawnComponentType
private final ComponentType<EntityStore, NewSpawnComponent> newSpawnComponentType
private final Query<EntityStore> query
private final Query<EntityStore> query
private final Query<EntityStore> query
EntitySection var10
DynamicLightUpdate var3
TransformComponent var4
EntitySection var5
var5
TransformComponent var5
EntityTrackerSystems.Visible var6
ChunkStore var6
EntityTrackerSystems.Visible var6
NewSpawnComponent var6
Ref var6
DynamicLight var7
Ref var7
NewSpawnComponent var7
World var7
ColorLight var8
Ref var8
ChunkStore var8
NewSpawnUpdate var9
Store var9
private final ComponentType<EntityStore, EntityTrackerSystems.Visible> visibleComponentType

Методы (41)

МодификаторыВозвратСигнатура
public ClearFromPrefabMarkerpublic ClearFromPrefabMarker(@Nonnull ComponentType<EntityStore, FromPrefab> var1, @Nonnull SystemGroup<EntityStore> var2)
public ClearFromWorldGenMarkerpublic ClearFromWorldGenMarker(@Nonnull ComponentType<EntityStore, FromWorldGen> var1, @Nonnull SystemGroup<EntityStore> var2)
public ClearMarkerpublic ClearMarker(@Nonnull ComponentType<EntityStore, T> var1, @Nonnull SystemGroup<EntityStore> var2)
public DynamicLightTrackerpublic DynamicLightTracker(@Nonnull ComponentType<EntityStore, EntityTrackerSystems.Visible> var1)
public EnsureForSerializablepublic EnsureForSerializable()
public NewSpawnEntityTrackerUpdatepublic NewSpawnEntityTrackerUpdate()
public NewSpawnTickpublic NewSpawnTick()
public OnLoadFromExternalpublic OnLoadFromExternal(@Nonnull ComponentType<EntityStore, FromPrefab> var1, @Nonnull ComponentType<EntityStore, FromWorldGen> var2, @Nonnull SystemGroup<EntityStore> var3)
public UnloadEntityFromChunkpublic UnloadEntityFromChunk()
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 SystemGroup<EntityStore> getGrouppublic SystemGroup<EntityStore> getGroup()
public SystemGroup<EntityStore> getGrouppublic SystemGroup<EntityStore> getGroup()
public SystemGroup<EntityStore> getGrouppublic SystemGroup<EntityStore> getGroup()
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()
public Query<EntityStore> getQuerypublic Query<EntityStore> getQuery()
public Query<EntityStore> getQuerypublic Query<EntityStore> getQuery()
if if(var8 != null)
public boolean isParallelpublic boolean isParallel(int var1, int var2)
public boolean isParallelpublic boolean isParallel(int var1, int var2)
public boolean isParallelpublic boolean isParallel(int var1, int var2)
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 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 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)
private static void queueRemoveForprivate static void queueRemoveFor(@Nonnull Ref<EntityStore> var0, @Nonnull Map<Ref<EntityStore>, EntityTrackerSystems.EntityViewer> var1)
private static void queueUpdatesForprivate static void queueUpdatesFor(@Nonnull Ref<EntityStore> var0, @Nonnull ColorLight var1, @Nonnull Map<Ref<EntityStore>, EntityTrackerSystems.EntityViewer> var2)
abstract super super(var1, var2)
switch switch(var2)
public void tickpublic void tick(float var1, int var2, @Nonnull ArchetypeChunk<EntityStore> var3, @Nonnull Store<EntityStore> var4, @Nonnull CommandBuffer<EntityStore> var5)
public void tickpublic void tick(float var1, int var2, @Nonnull ArchetypeChunk<EntityStore> var3, @Nonnull Store<EntityStore> var4, @Nonnull CommandBuffer<EntityStore> var5)
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.core.modules.entity.system;

class="kw">import com.hypixel.hytale.component.AddReason;
class="kw">import com.hypixel.hytale.component.ArchetypeChunk;
class="kw">import com.hypixel.hytale.component.CommandBuffer;
class="kw">import com.hypixel.hytale.component.Component;
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.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.SystemDependency;
class="kw">import com.hypixel.hytale.component.dependency.SystemGroupDependency;
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.RefSystem;
class="kw">import com.hypixel.hytale.component.system.tick.EntityTickingSystem;
class="kw">import com.hypixel.hytale.protocol.ColorLight;
class="kw">import com.hypixel.hytale.protocol.ComponentUpdateType;
class="kw">import com.hypixel.hytale.protocol.DynamicLightUpdate;
class="kw">import com.hypixel.hytale.protocol.NewSpawnUpdate;
class="kw">import com.hypixel.hytale.server.core.entity.Dirty;
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.DynamicLight;
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.NewSpawnComponent;
class="kw">import com.hypixel.hytale.server.core.modules.entity.component.TransformComponent;
class="kw">import com.hypixel.hytale.server.core.modules.entity.tracker.EntityTrackerSystems;
class="kw">import com.hypixel.hytale.server.core.universe.world.World;
class="kw">import com.hypixel.hytale.server.core.universe.world.chunk.section.EntitySection;
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.core.universe.world.storage.IChunkSaver;
class="kw">import java.util.Map;
class="kw">import java.util.Set;
class="kw">import java.util.Map.Entry;
class="kw">import javax.annotation.Nonnull;
class="kw">import javax.annotation.Nullable;

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

   class="kw">public class="kw">static class ClearFromPrefabMarker class="kw">extends EntitySystems.ClearMarker<FromPrefab> {
      class="kw">public ClearFromPrefabMarker(@Nonnull ComponentType<EntityStore, FromPrefab> var1, @Nonnull SystemGroup<EntityStore> var2) {
         super(var1, var2);
      }
   }

   class="kw">public class="kw">static class ClearFromWorldGenMarker class="kw">extends EntitySystems.ClearMarker<FromWorldGen> {
      class="kw">public ClearFromWorldGenMarker(@Nonnull ComponentType<EntityStore, FromWorldGen> var1, @Nonnull SystemGroup<EntityStore> var2) {
         super(var1, var2);
      }
   }

   class="kw">public class="kw">abstract class="kw">static class ClearMarker<T class="kw">extends Component<EntityStore>> class="kw">extends RefSystem<EntityStore> {
      @Nonnull
      class="kw">private class="kw">final ComponentType<EntityStore, T> componentType;
      @Nonnull
      class="kw">private class="kw">final Set<Dependency<EntityStore>> dependencies;

      class="kw">public ClearMarker(@Nonnull ComponentType<EntityStore, T> var1, @Nonnull SystemGroup<EntityStore> var2) {
         this.componentType = var1;
         this.dependencies = Set.of(new SystemGroupDependency<>(Order.AFTER, var2));
      }

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

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

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

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

   class="kw">public class="kw">static class DynamicLightTracker class="kw">extends EntityTickingSystem<EntityStore> {
      @Nonnull
      class="kw">private class="kw">final ComponentType<EntityStore, EntityTrackerSystems.Visible> componentType;
      @Nonnull
      class="kw">private class="kw">final ComponentType<EntityStore, DynamicLight> dynamicLightType;
      @Nonnull
      class="kw">private class="kw">final Query<EntityStore> query;

      class="kw">public DynamicLightTracker(@Nonnull ComponentType<EntityStore, EntityTrackerSystems.Visible> var1) {
         this.componentType = var1;
         this.dynamicLightType = DynamicLight.getComponentType();
         this.query = Query.and(var1, this.dynamicLightType);
      }

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

      @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
      ) {
         EntityTrackerSystems.Visible var6 = var3.getComponent(var2, this.componentType);
         assert var6 != null;
         DynamicLight var7 = var3.getComponent(var2, this.dynamicLightType);
         assert var7 != null;
         ColorLight var8 = var7.getColorLight();
         if (var7.consumeNetworkOutdated()) {
            if (var8 != null) {
               queueUpdatesFor(var3.getReferenceTo(var2), var8, var6.visibleTo);
            } else {
               queueRemoveFor(var3.getReferenceTo(var2), var6.visibleTo);
            }
         } else if (!var6.newlyVisibleTo.isEmpty() && var8 != null) {
            queueUpdatesFor(var3.getReferenceTo(var2), var8, var6.newlyVisibleTo);
         }
      }

      class="kw">private class="kw">static void queueUpdatesFor(
         @Nonnull Ref<EntityStore> var0, @Nonnull ColorLight var1, @Nonnull Map<Ref<EntityStore>, EntityTrackerSystems.EntityViewer> var2
      ) {
         DynamicLightUpdate var3 = new DynamicLightUpdate(var1);

         for (EntityTrackerSystems.EntityViewer var5 : var2.values()) {
            var5.queueUpdate(var0, var3);
         }
      }

      class="kw">private class="kw">static void queueRemoveFor(@Nonnull Ref<EntityStore> var0, @Nonnull Map<Ref<EntityStore>, EntityTrackerSystems.EntityViewer> var1) {
         for (EntityTrackerSystems.EntityViewer var3 : var1.values()) {
            var3.queueRemove(var0, ComponentUpdateType.DynamicLight);
         }
      }
   }

   class="kw">public class="kw">static class EnsureForSerializable class="kw">extends HolderSystem<EntityStore> {
      class="kw">private class="kw">static class="kw">final Query<EntityStore> QUERY = Query.and(
         TransformComponent.getComponentType(), Query.not(Dirty.getComponentType()), Query.not(EntityStore.REGISTRY.getNonSerializedComponentType())
      );
      class="kw">private class="kw">static class="kw">final Set<Dependency<EntityStore>> DEPENDENCIES = Set.of(
         new SystemDependency<>(Order.BEFORE, EntityStore.UUIDSystem.class),
         new SystemDependency<>(Order.AFTER, EntitySystems.OnLoadFromExternal.class),
         new SystemDependency<>(Order.AFTER, EntityModule.LegacyUUIDSystem.class)
      );

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

      @Override
      class="kw">public void onEntityAdd(@Nonnull Holder<EntityStore> var1, @Nonnull AddReason var2, @Nonnull Store<EntityStore> var3) {
         TransformComponent var4 = var1.getComponent(TransformComponent.getComponentType());
         assert var4 != null;
         var1.ensureComponent(UUIDComponent.getComponentType());
         EntitySection var5 = null;
         ChunkStore var6 = var3.getExternalData().getWorld().getChunkStore();
         if (!(var6.getSaver() class="kw">instanceof IChunkSaver.Cubic)) {
            Ref var7 = var4.getSectionRef();
            if (var7 != null && var7.isValid()) {
               var5 = var6.getStore().getComponent(var7, EntitySection.getComponentType());
            }
         }

         var1.putComponent(Dirty.getComponentType(), new Dirty(var5, var2 == AddReason.SPAWN));
      }

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

      @Nullable
      @Override
      class="kw">public Query<EntityStore> getQuery() {
         class="kw">return QUERY;
      }

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

   class="kw">public class="kw">static class NewSpawnEntityTrackerUpdate class="kw">extends EntityTickingSystem<EntityStore> {
      @Nonnull
      class="kw">private class="kw">final ComponentType<EntityStore, EntityTrackerSystems.Visible> visibleComponentType = EntityTrackerSystems.Visible.getComponentType();
      @Nonnull
      class="kw">private class="kw">final ComponentType<EntityStore, NewSpawnComponent> newSpawnComponentType = NewSpawnComponent.getComponentType();
      @Nonnull
      class="kw">private class="kw">final Query<EntityStore> query = Query.and(this.visibleComponentType, this.newSpawnComponentType);

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

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

      @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
      ) {
         EntityTrackerSystems.Visible var6 = var3.getComponent(var2, this.visibleComponentType);
         assert var6 != null;
         NewSpawnComponent var7 = var3.getComponent(var2, this.newSpawnComponentType);
         assert var7 != null;
         Ref var8 = var3.getReferenceTo(var2);
         if (!var6.newlyVisibleTo.isEmpty()) {
            NewSpawnUpdate var9 = new NewSpawnUpdate();

            for (Entry var11 : var6.newlyVisibleTo.entrySet()) {
               var11.getValue().queueUpdate(var8, var9);
            }
         }
      }
   }

   class="kw">public class="kw">static class NewSpawnTick class="kw">extends EntityTickingSystem<EntityStore> {
      @Nonnull
      class="kw">private class="kw">final ComponentType<EntityStore, NewSpawnComponent> newSpawnComponentType = NewSpawnComponent.getComponentType();

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

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

      @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
      ) {
         NewSpawnComponent var6 = var3.getComponent(var2, this.newSpawnComponentType);
         assert var6 != null;
         if (var6.newSpawnWindowPassed(var1)) {
            var5.removeComponent(var3.getReferenceTo(var2), this.newSpawnComponentType);
         }
      }
   }

   class="kw">public class="kw">static class OnLoadFromExternal class="kw">extends HolderSystem<EntityStore> {
      @Nonnull
      class="kw">private class="kw">final Query<EntityStore> query;
      @Nonnull
      class="kw">private class="kw">final SystemGroup<EntityStore> group;
      @Nonnull
      class="kw">private class="kw">final Set<Dependency<EntityStore>> dependencies;

      class="kw">public OnLoadFromExternal(
         @Nonnull ComponentType<EntityStore, FromPrefab> var1, @Nonnull ComponentType<EntityStore, FromWorldGen> var2, @Nonnull SystemGroup<EntityStore> var3
      ) {
         this.query = Query.and(Query.or(var1, var2), UUIDComponent.getComponentType());
         this.group = var3;
         this.dependencies = Set.of(
            new SystemDependency<>(Order.BEFORE, EntityStore.UUIDSystem.class), new SystemDependency<>(Order.AFTER, EntityModule.LegacyUUIDSystem.class)
         );
      }

      @Override
      class="kw">public void onEntityAdd(@Nonnull Holder<EntityStore> var1, @Nonnull AddReason var2, @Nonnull Store<EntityStore> var3) {
         var1.putComponent(UUIDComponent.getComponentType(), UUIDComponent.generateVersion3UUID());
      }

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

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

      @Nonnull
      @Override
      class="kw">public SystemGroup<EntityStore> getGroup() {
         class="kw">return this.group;
      }
   }

   class="kw">public class="kw">static class UnloadEntityFromChunk class="kw">extends RefSystem<EntityStore> {
      class="kw">public UnloadEntityFromChunk() {
      }

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

      @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
      ) {
         TransformComponent var5 = var3.getComponent(var1, TransformComponent.getComponentType());
         assert var5 != null;
         Ref var6 = var5.getSectionRef();
         if (var6 != null && var6.isValid()) {
            World var7 = var4.getExternalData().getWorld();
            ChunkStore var8 = var7.getChunkStore();
            Store var9 = var8.getStore();
            EntitySection var10 = var9.getComponent(var6, EntitySection.getComponentType());
            assert var10 != null;
            class="kw">switch (var2) {
               case REMOVE:
               case BUILDER_TOOLS_UNDO:
                  var10.removeEntityReference(var1);
                  break;
               case UNLOAD:
                  var10.unloadEntityReference(var1);
            }
         }
      }
   }
}