EntityAdded class
Пакет: com.hypixel.hytale.builtin.adventure.objectives.markers.reachlocation
Файл: com/hypixel/hytale/builtin/adventure/objectives/markers/reachlocation/ReachLocationMarkerSystems.java
extends: RefSystem<EntityStore>
Поля (8)
| Модификаторы | Тип | Имя |
|---|---|---|
|
private final Query<EntityStore> |
query |
|
private final ComponentType<EntityStore, ReachLocationMarker> |
reachLocationMarkerComponent |
|
private final ComponentType<EntityStore, TransformComponent> |
transformComponentType |
|
Objective |
var12 |
|
ReachLocationMarker |
var5 |
|
TransformComponent |
var6 |
|
Vector3d |
var7 |
|
ObjectiveDataStore |
var8 |
Методы (4)
| Модификаторы | Возврат | Сигнатура |
|---|---|---|
|
public Query<EntityStore> |
getQuerypublic Query<EntityStore> getQuery() |
|
|
if if(var12 != null) |
|
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) |
Исходный код
Показать/скрыть
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);
}
}
}
}
}
}
}
}
}