Ticking class
Пакет: com.hypixel.hytale.builtin.parkour
Файл: com/hypixel/hytale/builtin/parkour/ParkourCheckpointSystems.java
extends: EntityTickingSystem<EntityStore>
Поля (25)
| Модификаторы | Тип | Имя |
|---|---|---|
|
private final Set<Dependency<EntityStore>> |
dependencies |
|
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 |
|
|
return |
|
|
return |
|
|
return |
|
private final ComponentType<EntityStore, TransformComponent> |
transformComponentType |
|
private final ComponentType<EntityStore, UUIDComponent> |
uuidComponentType |
|
Vector3d |
var10 |
|
ParkourPlugin |
var11 |
|
Object2IntMap |
var12 |
|
Object2LongMap |
var13 |
|
Ref |
var15 |
|
UUIDComponent |
var16 |
|
UUID |
var17 |
|
PlayerRef |
var18 |
|
int |
var6 |
|
int |
var6 |
|
int |
var7 |
|
long |
var7 |
|
SpatialResource |
var8 |
|
List |
var9 |
|
long |
var9 |
Методы (11)
| Модификаторы | Возврат | Сигнатура |
|---|---|---|
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() |
|
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 |
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));
}
}
}
}