TriggerVolumeEntityQuery class
Пакет: com.hypixel.hytale.builtin.triggervolumes.effect
Файл: com/hypixel/hytale/builtin/triggervolumes/effect/TriggerVolumeEntityQuery.java
Поля (20)
| Модификаторы | Тип | Имя |
|---|---|---|
final |
double |
DEFAULT_ENTITY_HEIGHT |
|
LinkedHashSet |
var1 |
|
ArrayList |
var10 |
|
Ref |
var10 |
|
List |
var11 |
|
TransformComponent |
var11 |
|
UUIDComponent |
var12 |
|
TriggerVolumeShape |
var14 |
|
Vector3d |
var15 |
|
NPCEntity |
var3 |
|
Vector3d |
var4 |
|
String |
var4 |
|
String |
var4 |
|
EntityModule |
var5 |
|
double |
var5 |
|
SpatialResource |
var6 |
|
SpatialResource |
var7 |
|
Vector3d |
var7 |
|
Set |
var8 |
|
HashSet |
var9 |
Методы (16)
| Модификаторы | Возврат | Сигнатура |
|---|---|---|
static |
void |
collectFromSpatialvoid collectFromSpatial(@Nonnull Store<EntityStore> var0,
@Nonnull SpatialResource<Ref<EntityStore>, EntityStore> var1,
@Nonnull TriggerVolumeShape var2,
@Nonnull Vector3d var3,
boolean var4,
@Nonnull Set<String> var5,
@Nonnull HashSet<UUID> var6,
@Nonnull List<Ref<EntityStore>> var7,
@Nonnull List<Ref<EntityStore>> var8) |
abstract |
|
collectFromSpatial collectFromSpatial(var0, var6, var14, var15, false, var8, var9, var10, var11) |
abstract |
|
collectFromSpatial collectFromSpatial(var0, var7, var14, var15, true, var8, var9, var10, var11) |
abstract |
return |
collectTargetsreturn collectTargets(var0, var1, true, false, var2) |
static |
boolean |
containsEntityboolean containsEntity(@Nonnull TriggerVolumeShape var0, @Nonnull Vector3d var1, @Nonnull TransformComponent var2, @Nullable BoundingBox var3) |
|
|
for for(VolumeEntry var13 : var1) |
|
|
for for(String var3 : var0) |
abstract |
|
for for(int var9 = 0; var9 < var8.size() |
|
|
if if(var6 == null && var7 == null) |
|
|
if if(var6 != null) |
|
|
if if(var7 != null) |
|
|
if if(var5 <= 0.0) |
|
|
if if(var3 == null) |
|
|
if if(var3 != null) |
static |
boolean |
isLivingNpcboolean isLivingNpc(@Nonnull Store<EntityStore> var0, @Nonnull Ref<EntityStore> var1, @Nonnull Set<String> var2) |
static |
boolean |
isLivingPlayerboolean isLivingPlayer(@Nonnull Store<EntityStore> var0, @Nonnull Ref<EntityStore> var1) |
Исходный код
Показать/скрыть
class="kw">package com.hypixel.hytale.builtin.triggervolumes.effect;
class="kw">import com.hypixel.hytale.builtin.triggervolumes.manager.VolumeEntry;
class="kw">import com.hypixel.hytale.builtin.triggervolumes.shape.TriggerVolumeShape;
class="kw">import com.hypixel.hytale.component.Ref;
class="kw">import com.hypixel.hytale.component.Store;
class="kw">import com.hypixel.hytale.component.spatial.SpatialResource;
class="kw">import com.hypixel.hytale.server.core.entity.UUIDComponent;
class="kw">import com.hypixel.hytale.server.core.modules.entity.EntityModule;
class="kw">import com.hypixel.hytale.server.core.modules.entity.component.BoundingBox;
class="kw">import com.hypixel.hytale.server.core.modules.entity.component.TransformComponent;
class="kw">import com.hypixel.hytale.server.core.modules.entity.damage.DeathComponent;
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 com.hypixel.hytale.server.npc.entities.NPCEntity;
class="kw">import java.util.ArrayList;
class="kw">import java.util.Collection;
class="kw">import java.util.HashSet;
class="kw">import java.util.LinkedHashSet;
class="kw">import java.util.List;
class="kw">import java.util.Locale;
class="kw">import java.util.Set;
class="kw">import java.util.UUID;
class="kw">import javax.annotation.Nonnull;
class="kw">import javax.annotation.Nullable;
class="kw">import org.joml.Vector3d;
class="kw">public class="kw">final class TriggerVolumeEntityQuery {
class="kw">private class="kw">static class="kw">final double DEFAULT_ENTITY_HEIGHT = 1.8;
class="kw">private class="kw">static class="kw">final ThreadLocal<Vector3d> THREAD_LOCAL_TEST_POINT = ThreadLocal.withInitial(Vector3d::new);
class="kw">private TriggerVolumeEntityQuery() {
}
@Nonnull
class="kw">public class="kw">static List<Ref<EntityStore>> collectLivingNpcs(@Nonnull Store<EntityStore> var0, @Nonnull List<VolumeEntry> var1, @Nonnull Collection<String> var2) {
class="kw">return collectTargets(var0, var1, true, false, var2);
}
@Nonnull
class="kw">public class="kw">static List<Ref<EntityStore>> collectTargets(
@Nonnull Store<EntityStore> var0, @Nonnull List<VolumeEntry> var1, boolean var2, boolean var3, @Nonnull String var4
) {
class="kw">return collectTargets(var0, var1, var2, var3, var4.isBlank() ? List.of() : List.of(var4));
}
@Nonnull
class="kw">public class="kw">static List<Ref<EntityStore>> collectTargets(
@Nonnull Store<EntityStore> var0, @Nonnull List<VolumeEntry> var1, boolean var2, boolean var3, @Nonnull Collection<String> var4
) {
EntityModule var5 = EntityModule.get();
SpatialResource var6 = var2 ? var0.getResource(var5.getEntitySpatialResourceType()) : null;
SpatialResource var7 = var3 ? var0.getResource(var5.getPlayerSpatialResourceType()) : null;
if (var6 == null && var7 == null) {
class="kw">return List.of();
}
Set var8 = normalizeRoleFilters(var4);
HashSet var9 = new HashSet<>();
ArrayList var10 = new ArrayList<>();
List var11 = SpatialResource.getThreadLocalReferenceList();
for (VolumeEntry var13 : var1) {
TriggerVolumeShape var14 = var13.getShape();
Vector3d var15 = var13.getPosition();
if (var6 != null) {
collectFromSpatial(var0, var6, var14, var15, false, var8, var9, var10, var11);
}
if (var7 != null) {
collectFromSpatial(var0, var7, var14, var15, true, var8, var9, var10, var11);
}
}
class="kw">return var10;
}
class="kw">private class="kw">static void collectFromSpatial(
@Nonnull Store<EntityStore> var0,
@Nonnull SpatialResource<Ref<EntityStore>, EntityStore> var1,
@Nonnull TriggerVolumeShape var2,
@Nonnull Vector3d var3,
boolean var4,
@Nonnull Set<String> var5,
@Nonnull HashSet<UUID> var6,
@Nonnull List<Ref<EntityStore>> var7,
@Nonnull List<Ref<EntityStore>> var8
) {
var8.clear();
var1.getSpatialStructure().collect(var3, var2.getMaxDistanceFromOrigin(), var8);
for (int var9 = 0; var9 < var8.size(); var9++) {
Ref var10 = var8.get(var9);
if (var4 ? isLivingPlayer(var0, var10) : isLivingNpc(var0, var10, var5)) {
TransformComponent var11 = var0.getComponent(var10, TransformComponent.getComponentType());
if (var11 != null && containsEntity(var2, var3, var11, var0.getComponent(var10, BoundingBox.getComponentType()))) {
UUIDComponent var12 = var0.getComponent(var10, UUIDComponent.getComponentType());
if (var12 != null && var6.add(var12.getUuid())) {
var7.add(var10);
}
}
}
}
}
class="kw">private class="kw">static boolean containsEntity(@Nonnull TriggerVolumeShape var0, @Nonnull Vector3d var1, @Nonnull TransformComponent var2, @Nullable BoundingBox var3) {
Vector3d var4 = var2.getPosition();
if (var0.contains(var1, var4)) {
class="kw">return true;
}
double var5 = var3 != null ? var3.getBoundingBox().height() : 1.8;
if (var5 <= 0.0) {
class="kw">return false;
}
Vector3d var7 = THREAD_LOCAL_TEST_POINT.get();
var7.set(var4.x(), var4.y() + var5 * 0.5, var4.z());
if (var0.contains(var1, var7)) {
class="kw">return true;
}
var7.set(var4.x(), var4.y() + var5, var4.z());
class="kw">return var0.contains(var1, var7);
}
class="kw">private class="kw">static boolean isLivingNpc(@Nonnull Store<EntityStore> var0, @Nonnull Ref<EntityStore> var1, @Nonnull Set<String> var2) {
if (!var1.isValid()) {
class="kw">return false;
}
NPCEntity var3 = var0.getComponent(var1, NPCEntity.getComponentType());
if (var3 == null) {
class="kw">return false;
}
if (var0.getComponent(var1, DeathComponent.getComponentType()) != null) {
class="kw">return false;
}
if (var2.isEmpty()) {
class="kw">return true;
}
String var4 = var3.getRoleName();
class="kw">return var4 != null && var2.contains(var4.toLowerCase(Locale.ROOT));
}
@Nonnull
class="kw">private class="kw">static Set<String> normalizeRoleFilters(@Nonnull Collection<String> var0) {
if (var0.isEmpty()) {
class="kw">return Set.of();
}
LinkedHashSet var1 = new LinkedHashSet<>(var0.size());
for (String var3 : var0) {
if (var3 != null) {
String var4 = var3.trim();
if (!var4.isEmpty()) {
var1.add(var4.toLowerCase(Locale.ROOT));
}
}
}
class="kw">return var1;
}
class="kw">private class="kw">static boolean isLivingPlayer(@Nonnull Store<EntityStore> var0, @Nonnull Ref<EntityStore> var1) {
if (!var1.isValid()) {
class="kw">return false;
} else {
class="kw">return var0.getComponent(var1, PlayerRef.getComponentType()) == null ? false : var0.getComponent(var1, DeathComponent.getComponentType()) == null;
}
}
}