ReachLocationMarkerSystems class

Пакет: com.hypixel.hytale.builtin.adventure.objectives.markers.reachlocation

Файл: com/hypixel/hytale/builtin/adventure/objectives/markers/reachlocation/ReachLocationMarkerSystems.java

Поля (31)

МодификаторыТипИмя
private final Set<Dependency<EntityStore>> dependencies
private final ComponentType<EntityStore, NetworkId> networkIdComponentType
private final ResourceType<EntityStore, SpatialResource<Ref<EntityStore>, EntityStore>> playerSpatialComponent
private final Query<EntityStore> query
private final Query<EntityStore> query
private final Query<EntityStore> query
private final ComponentType<EntityStore, ReachLocationMarker> reachLocationMarkerComponent
private final ComponentType<EntityStore, ReachLocationMarker> reachLocationMarkerComponent
private final ComponentType<EntityStore, TransformComponent> transformComponentType
private final ComponentType<EntityStore, TransformComponent> transformComponentType
private final ComponentType<EntityStore, UUIDComponent> uuidComponentType
Set var10
SpatialResource var11
Objective var12
List var12
TransformComponent var13
Vector3d var14
ObjectiveDataStore var15
Ref var17
UUIDComponent var18
UUID var19
Objective var23
int var4
ReachLocationMarker var5
TransformComponent var6
ReachLocationMarker var6
Vector3d var7
String var7
ObjectiveDataStore var8
ReachLocationMarkerAsset var8
Set var9

Методы (18)

МодификаторыВозвратСигнатура
public EnsureNetworkSendablepublic EnsureNetworkSendable(@Nonnull ComponentType<EntityStore, ReachLocationMarker> var1, @Nonnull ComponentType<EntityStore, NetworkId> var2)
public EntityAddedpublic EntityAdded(@Nonnull ComponentType<EntityStore, ReachLocationMarker> var1, @Nonnull ComponentType<EntityStore, TransformComponent> var2)
public Tickingpublic Ticking(@Nonnull ComponentType<EntityStore, ReachLocationMarker> var1, @Nonnull ResourceType<EntityStore, SpatialResource<Ref<EntityStore>, EntityStore>> var2, @Nonnull ComponentType<EntityStore, TransformComponent> var3, @Nonnull ComponentType<EntityStore, UUIDComponent> var4)
abstract for for(int var16 = 0; var16 < var12.size()
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()
if if(var12 != null)
if if(var8 == null)
if if(var18 != null)
if if(var23 != null)
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 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 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.builtin.adventure.objectives.markers.reachlocation;

class="kw">import com.hypixel.hytale.builtin.adventure.objectives.Objective;
class="kw">import com.hypixel.hytale.builtin.adventure.objectives.ObjectiveDataStore;
class="kw">import com.hypixel.hytale.builtin.adventure.objectives.ObjectivePlugin;
class="kw">import com.hypixel.hytale.builtin.adventure.objectives.task.ObjectiveTaskRef;
class="kw">import com.hypixel.hytale.builtin.adventure.objectives.task.ReachLocationTask;
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.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.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.server.core.entity.UUIDComponent;
class="kw">import com.hypixel.hytale.server.core.modules.entity.component.TransformComponent;
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.universe.world.storage.EntityStore;
class="kw">import java.util.HashSet;
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">import org.joml.Vector3d;

class="kw">public class ReachLocationMarkerSystems {
   @Nonnull
   class="kw">private class="kw">static class="kw">final HytaleLogger LOGGER = HytaleLogger.forEnclosingClass();
   @Nonnull
   class="kw">private class="kw">static class="kw">final ThreadLocal<Set<UUID>> THREAD_LOCAL_TEMP_UUIDS = ThreadLocal.withInitial(HashSet::new);

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

   class="kw">public class="kw">static class EnsureNetworkSendable class="kw">extends HolderSystem<EntityStore> {
      @Nonnull
      class="kw">private class="kw">final ComponentType<EntityStore, NetworkId> networkIdComponentType;
      @Nonnull
      class="kw">private class="kw">final Query<EntityStore> query;

      class="kw">public EnsureNetworkSendable(@Nonnull ComponentType<EntityStore, ReachLocationMarker> var1, @Nonnull ComponentType<EntityStore, NetworkId> var2) {
         this.networkIdComponentType = var2;
         this.query = Query.and(var1, Query.not(var2));
      }

      @Override
      class="kw">public void onEntityAdd(@Nonnull Holder<EntityStore> var1, @Nonnull AddReason var2, @Nonnull Store<EntityStore> var3) {
         int var4 = var3.getExternalData().takeNextNetworkId();
         var1.addComponent(this.networkIdComponentType, new NetworkId(var4));
      }

      @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, ReachLocationMarker> reachLocationMarkerComponent;
      @Nonnull
      class="kw">private class="kw">final ComponentType<EntityStore, TransformComponent> transformComponentType;
      @Nonnull
      class="kw">private class="kw">final Query<EntityStore> query;

      class="kw">public EntityAdded(@Nonnull ComponentType<EntityStore, ReachLocationMarker> var1, @Nonnull ComponentType<EntityStore, TransformComponent> var2) {
         this.reachLocationMarkerComponent = var1;
         this.transformComponentType = var2;
         this.query = Query.and(var1, var2);
      }

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

      @Override
      class="kw">public void onEntityAdded(
         @Nonnull Ref<EntityStore> var1, @Nonnull AddReason var2, @Nonnull Store<EntityStore> var3, @Nonnull CommandBuffer<EntityStore> var4
      ) {
         ReachLocationMarker var5 = var4.getComponent(var1, this.reachLocationMarkerComponent);
         assert var5 != null;
         TransformComponent var6 = var4.getComponent(var1, this.transformComponentType);
         assert var6 != null;
         Vector3d var7 = var6.getPosition();
         ObjectiveDataStore var8 = ObjectivePlugin.get().getObjectiveDataStore();

         for (ObjectiveTaskRef var11 : var8.getTaskRefsForType(ReachLocationTask.class)) {
            Objective var12 = var8.getObjective(var11.getObjectiveUUID());
            if (var12 != null) {
               var11.getObjectiveTask().setupMarker(var12, var5, var7, var4);
            }
         }
      }

      @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 Ticking class="kw">extends EntityTickingSystem<EntityStore> {
      @Nonnull
      class="kw">private class="kw">final ComponentType<EntityStore, ReachLocationMarker> reachLocationMarkerComponent;
      @Nonnull
      class="kw">private class="kw">final ComponentType<EntityStore, TransformComponent> transformComponentType;
      @Nonnull
      class="kw">private class="kw">final ResourceType<EntityStore, SpatialResource<Ref<EntityStore>, EntityStore>> playerSpatialComponent;
      @Nonnull
      class="kw">private class="kw">final ComponentType<EntityStore, UUIDComponent> uuidComponentType;
      @Nonnull
      class="kw">private class="kw">final Query<EntityStore> query;
      @Nonnull
      class="kw">private class="kw">final Set<Dependency<EntityStore>> dependencies;

      class="kw">public Ticking(
         @Nonnull ComponentType<EntityStore, ReachLocationMarker> var1,
         @Nonnull ResourceType<EntityStore, SpatialResource<Ref<EntityStore>, EntityStore>> var2,
         @Nonnull ComponentType<EntityStore, TransformComponent> var3,
         @Nonnull ComponentType<EntityStore, UUIDComponent> var4
      ) {
         this.reachLocationMarkerComponent = var1;
         this.transformComponentType = var3;
         this.uuidComponentType = var4;
         this.playerSpatialComponent = var2;
         this.query = Query.and(var1, var3);
         this.dependencies = Set.of(new SystemDependency<>(Order.AFTER, PlayerSpatialSystem.class, OrderPriority.CLOSEST));
      }

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

      @Override
      class="kw">public void tick(
         float var1, int var2, @Nonnull ArchetypeChunk<EntityStore> var3, @Nonnull Store<EntityStore> var4, @Nonnull CommandBuffer<EntityStore> var5
      ) {
         ReachLocationMarker var6 = var3.getComponent(var2, this.reachLocationMarkerComponent);
         assert var6 != null;
         String var7 = var6.getMarkerId();
         ReachLocationMarkerAsset var8 = ReachLocationMarkerAsset.getAssetMap().getAsset(var7);
         if (var8 == null) {
            ReachLocationMarkerSystems.LOGGER.at(Level.WARNING).log("No ReachLocationMarkerAsset found for ID '%s', entity removed! %s", var7, var6);
            var5.removeEntity(var3.getReferenceTo(var2), RemoveReason.REMOVE);
         } else {
            Set var9 = ReachLocationMarkerSystems.THREAD_LOCAL_TEMP_UUIDS.get();
            var9.clear();
            var9.addAll(var6.getPlayers());
            Set var10 = var6.getPlayers();
            var10.clear();
            SpatialResource var11 = var4.getResource(this.playerSpatialComponent);
            List var12 = SpatialResource.getThreadLocalReferenceList();
            TransformComponent var13 = var3.getComponent(var2, this.transformComponentType);
            assert var13 != null;
            Vector3d var14 = var13.getPosition();
            var11.getSpatialStructure().ordered(var14, var8.getRadius(), var12);
            ObjectiveDataStore var15 = ObjectivePlugin.get().getObjectiveDataStore();

            for (int var16 = 0; var16 < var12.size(); var16++) {
               Ref var17 = var12.get(var16);
               UUIDComponent var18 = var5.getComponent(var17, this.uuidComponentType);
               if (var18 != null) {
                  UUID var19 = var18.getUuid();
                  var10.add(var19);
                  if (!var9.contains(var19)) {
                     for (ObjectiveTaskRef var22 : var15.getTaskRefsForType(ReachLocationTask.class)) {
                        Objective var23 = var15.getObjective(var22.getObjectiveUUID());
                        if (var23 != null) {
                           var22.getObjectiveTask().onPlayerReachLocationMarker(var4, var17, var7, var23);
                        }
                     }
                  }
               }
            }
         }
      }
   }
}