EnsureNetworkSendable class

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

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

extends: HolderSystem<EntityStore>

Поля (1)

МодификаторыТипИмя
private final Query<EntityStore> query

Методы (3)

МодификаторыВозвратСигнатура
public Query<EntityStore> getQuerypublic Query<EntityStore> getQuery()
public void onEntityAddpublic void onEntityAdd(@Nonnull Holder<EntityStore> var1, @Nonnull AddReason var2, @Nonnull Store<EntityStore> var3)
public void onEntityRemovedpublic void onEntityRemoved(@Nonnull Holder<EntityStore> var1, @Nonnull RemoveReason var2, @Nonnull Store<EntityStore> var3)

Исходный код

Показать/скрыть
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));
         }
      }
   }
}