ParkourCheckpointSystems class

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

Файл: com/hypixel/hytale/builtin/parkour/ParkourCheckpointSystems.java

Поля (31)

МодификаторыТипИмя
private final Set<Dependency<EntityStore>> dependencies
private final ComponentType<EntityStore, ParkourCheckpoint> parkourCheckpointComponentType
private final ComponentType<EntityStore, ParkourCheckpoint> parkourCheckpointComponentType
private final ComponentType<EntityStore, PlayerRef> playerRefComponentType
private final ResourceType<EntityStore, SpatialResource<Ref<EntityStore>, EntityStore>> playerSpatialComponent
private final Query<EntityStore> query
private final Query<EntityStore> query
private final Query<EntityStore> query
return
return
return
private final ComponentType<EntityStore, TransformComponent> transformComponentType
private final ComponentType<EntityStore, UUIDComponent> uuidComponentComponentType
private final ComponentType<EntityStore, UUIDComponent> uuidComponentType
Vector3d var10
ParkourPlugin var11
Object2IntMap var12
Object2LongMap var13
Ref var15
UUIDComponent var16
UUID var17
PlayerRef var18
ComponentType var2
ParkourCheckpoint var5
int var6
int var6
int var7
long var7
SpatialResource var8
List var9
long var9

Методы (20)

МодификаторыВозвратСигнатура
public EnsureNetworkSendablepublic EnsureNetworkSendable()
public Initpublic Init(ComponentType<EntityStore, ParkourCheckpoint> var1)
public Tickingpublic Ticking(ComponentType<EntityStore, ParkourCheckpoint> var1, ComponentType<EntityStore, PlayerRef> var2, ResourceType<EntityStore, SpatialResource<Ref<EntityStore>, EntityStore>> var3)
abstract for for(int var14 = 0; var14 < var9.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()
private static void handleCheckpointUpdateprivate static void handleCheckpointUpdate(@Nonnull Object2IntMap<UUID> var0, @Nonnull Object2LongMap<UUID> var1, @Nonnull PlayerRef var2, UUID var3, int var4, int var5)
abstract handleCheckpointUpdate handleCheckpointUpdate(var12, var13, var18, var17, var7, var6)
if if(var6 != 0)
if if(var6 == -1)
if if(var4 != 0)
if if(var6 + 1 != var4)
if if(var5 == var4)
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.parkour;

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.server.core.Message;
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.PlayerRef;
class="kw">import com.hypixel.hytale.server.core.universe.world.storage.EntityStore;
class="kw">import it.unimi.dsi.fastutil.objects.Object2IntMap;
class="kw">import it.unimi.dsi.fastutil.objects.Object2LongMap;
class="kw">import java.util.List;
class="kw">import java.util.Set;
class="kw">import java.util.UUID;
class="kw">import java.util.concurrent.TimeUnit;
class="kw">import javax.annotation.Nonnull;
class="kw">import org.joml.Vector3d;

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

   class="kw">public class="kw">static class EnsureNetworkSendable class="kw">extends HolderSystem<EntityStore> {
      class="kw">private class="kw">final Query<EntityStore> query = Query.and(ParkourCheckpoint.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 Init class="kw">extends RefSystem<EntityStore> {
      class="kw">private class="kw">final ComponentType<EntityStore, ParkourCheckpoint> parkourCheckpointComponentType;
      @Nonnull
      class="kw">private class="kw">final ComponentType<EntityStore, UUIDComponent> uuidComponentComponentType;
      @Nonnull
      class="kw">private class="kw">final Query<EntityStore> query;

      class="kw">public Init(ComponentType<EntityStore, ParkourCheckpoint> var1) {
         this.parkourCheckpointComponentType = var1;
         this.uuidComponentComponentType = UUIDComponent.getComponentType();
         ComponentType var2 = TransformComponent.getComponentType();
         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
      ) {
         ParkourCheckpoint var5 = var3.getComponent(var1, this.parkourCheckpointComponentType);
         ParkourPlugin.get().updateLastIndex(var5.getIndex());
         ParkourPlugin.get().getCheckpointUUIDMap().put(var5.getIndex(), var3.getComponent(var1, this.uuidComponentComponentType).getUuid());
      }

      @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> {
      class="kw">private class="kw">final ComponentType<EntityStore, ParkourCheckpoint> parkourCheckpointComponentType;
      class="kw">private class="kw">final ComponentType<EntityStore, PlayerRef> playerRefComponentType;
      class="kw">private class="kw">final ResourceType<EntityStore, SpatialResource<Ref<EntityStore>, EntityStore>> playerSpatialComponent;
      class="kw">private class="kw">final ComponentType<EntityStore, TransformComponent> transformComponentType;
      @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(
         ComponentType<EntityStore, ParkourCheckpoint> var1,
         ComponentType<EntityStore, PlayerRef> var2,
         ResourceType<EntityStore, SpatialResource<Ref<EntityStore>, EntityStore>> var3
      ) {
         this.parkourCheckpointComponentType = var1;
         this.playerRefComponentType = var2;
         this.playerSpatialComponent = var3;
         this.transformComponentType = TransformComponent.getComponentType();
         this.uuidComponentType = UUIDComponent.getComponentType();
         this.query = Query.and(var1, this.transformComponentType);
         this.dependencies = Set.of(new SystemDependency<>(Order.AFTER, PlayerSpatialSystem.class, OrderPriority.CLOSEST));
      }

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

      @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 ArchetypeChunk<EntityStore> var3, @Nonnull Store<EntityStore> var4, @Nonnull CommandBuffer<EntityStore> var5
      ) {
         int var6 = ParkourPlugin.get().getLastIndex();
         if (var6 != 0) {
            int var7 = var3.getComponent(var2, this.parkourCheckpointComponentType).getIndex();
            SpatialResource var8 = var4.getResource(this.playerSpatialComponent);
            List var9 = SpatialResource.getThreadLocalReferenceList();
            Vector3d var10 = var3.getComponent(var2, this.transformComponentType).getPosition();
            var8.getSpatialStructure().ordered(var10, 1.0, var9);
            ParkourPlugin var11 = ParkourPlugin.get();
            Object2IntMap var12 = var11.getCurrentCheckpointByPlayerMap();
            Object2LongMap var13 = var11.getStartTimeByPlayerMap();

            for (int var14 = 0; var14 < var9.size(); var14++) {
               Ref var15 = var9.get(var14);
               UUIDComponent var16 = var5.getComponent(var15, this.uuidComponentType);
               UUID var17 = var16.getUuid();
               PlayerRef var18 = var5.getComponent(var15, this.playerRefComponentType);
               handleCheckpointUpdate(var12, var13, var18, var17, var7, var6);
            }
         }
      }

      class="kw">private class="kw">static void handleCheckpointUpdate(
         @Nonnull Object2IntMap<UUID> var0, @Nonnull Object2LongMap<UUID> var1, @Nonnull PlayerRef var2, UUID var3, int var4, int var5
      ) {
         int var6 = var0.getOrDefault(var3, -1);
         if (var6 == -1) {
            if (var4 != 0) {
               class="kw">return;
            }

            var0.put(var3, 0);
            var1.put(var3, System.nanoTime());
            var2.sendMessage(Message.translation("server.general.parkourRun.started"));
         } else {
            if (var6 + 1 != var4) {
               class="kw">return;
            }

            if (var5 == var4) {
               long var7 = System.nanoTime() - var1.getLong(var3);
               long var9 = TimeUnit.NANOSECONDS.toMillis(var7);
               var2.sendMessage(Message.translation("server.general.parkourRun.completed").param("seconds", var9 / 1000.0));
               var0.remove(var3, var6);
               class="kw">return;
            }

            var0.put(var3, var4);
            var2.sendMessage(Message.translation("server.general.parkourRun.checkpointReached").param("checkpoint", var4).param("checkpoints", var5));
         }
      }
   }
}