SensorChargeEntityCollisions class
Пакет: com.hypixel.hytale.server.npc.corecomponents.combat
Файл: com/hypixel/hytale/server/npc/corecomponents/combat/SensorChargeEntityCollisions.java
extends: SensorBase
Поля (6)
| Модификаторы | Тип | Имя |
|---|---|---|
final |
EntityCollisionProvider |
entityCollisionProvider |
|
Ref |
var4 |
|
NPCEntity |
var5 |
|
int |
var6 |
|
int |
var7 |
|
EntityHit |
var9 |
Методы (5)
| Модификаторы | Возврат | Сигнатура |
|---|---|---|
|
|
for for(int var8 = 0; var8 < var7; var8++) |
|
|
if if(this.parent instanceof Instruction var2) |
|
|
if if(var5 == null) |
private |
boolean |
shouldIncludeHitboolean shouldIncludeHit(@Nonnull EntityHit var1, int var2, @Nonnull Store<EntityStore> var3) |
abstract |
|
super super(var1) |
Исходный код
Показать/скрыть
class="kw">package com.hypixel.hytale.server.npc.corecomponents.combat;
class="kw">import com.hypixel.hytale.component.Ref;
class="kw">import com.hypixel.hytale.component.Store;
class="kw">import com.hypixel.hytale.server.core.universe.world.storage.EntityStore;
class="kw">import com.hypixel.hytale.server.npc.asset.builder.BuilderSupport;
class="kw">import com.hypixel.hytale.server.npc.corecomponents.SensorBase;
class="kw">import com.hypixel.hytale.server.npc.corecomponents.combat.builders.BuilderSensorChargeEntityCollisions;
class="kw">import com.hypixel.hytale.server.npc.entities.NPCEntity;
class="kw">import com.hypixel.hytale.server.npc.instructions.ExecutionSupport;
class="kw">import com.hypixel.hytale.server.npc.instructions.Instruction;
class="kw">import com.hypixel.hytale.server.npc.movement.controllers.EntityHit;
class="kw">import com.hypixel.hytale.server.npc.sensorinfo.EntityCollisionProvider;
class="kw">import com.hypixel.hytale.server.npc.sensorinfo.InfoProvider;
class="kw">import it.unimi.dsi.fastutil.objects.ObjectArrayList;
class="kw">import java.util.List;
class="kw">import javax.annotation.Nonnull;
class="kw">import javax.annotation.Nullable;
class="kw">public class SensorChargeEntityCollisions class="kw">extends SensorBase {
class="kw">private class="kw">final EntityCollisionProvider entityCollisionProvider = new EntityCollisionProvider();
class="kw">private class="kw">final boolean getPlayers;
class="kw">private class="kw">final boolean getNPCs;
class="kw">private class="kw">final boolean excludeOwnType;
class="kw">private class="kw">final List<EntityHit> filteredHits = new ObjectArrayList();
@Nullable
class="kw">private BodyMotionCharge matchingChargeBodyMotion;
class="kw">public SensorChargeEntityCollisions(@Nonnull BuilderSensorChargeEntityCollisions var1, @Nonnull BuilderSupport var2) {
super(var1);
this.getPlayers = var1.isGetPlayers(var2);
this.getNPCs = var1.isGetNPCs(var2);
this.excludeOwnType = var1.isExcludeOwnType(var2);
}
@Override
class="kw">public void loaded(ExecutionSupport var1) {
if (this.parent class="kw">instanceof Instruction var2) {
this.matchingChargeBodyMotion = var2.findNearestPrecedingBodyMotion(BodyMotionCharge.class);
}
}
@Override
class="kw">public boolean matches(@Nonnull Ref<EntityStore> var1, @Nonnull ExecutionSupport var2, double var3, @Nonnull Store<EntityStore> var5) {
this.filteredHits.clear();
this.entityCollisionProvider.clear();
if (super.matches(var1, var2, var3, var5) && this.matchingChargeBodyMotion != null && this.matchingChargeBodyMotion.getEntityHitCount() != 0) {
int var6 = var2.getRole().getRoleIndex();
int var7 = this.matchingChargeBodyMotion.getEntityHitCount();
for (int var8 = 0; var8 < var7; var8++) {
EntityHit var9 = this.matchingChargeBodyMotion.getEntityHit(var8);
if (this.shouldIncludeHit(var9, var6, var5)) {
this.filteredHits.add(var9);
}
}
class="kw">return this.entityCollisionProvider.populate(this.filteredHits, this.filteredHits.size());
} else {
class="kw">return false;
}
}
@Override
class="kw">public InfoProvider getSensorInfo() {
class="kw">return this.entityCollisionProvider;
}
@Override
class="kw">public void done() {
super.done();
this.entityCollisionProvider.clear();
this.filteredHits.clear();
}
class="kw">private boolean shouldIncludeHit(@Nonnull EntityHit var1, int var2, @Nonnull Store<EntityStore> var3) {
Ref var4 = var1.entity;
if (var4 == null || !var4.isValid()) {
class="kw">return false;
} else if (var1.isPlayer) {
class="kw">return this.getPlayers;
} else if (!this.getNPCs) {
class="kw">return false;
} else {
NPCEntity var5 = var3.getComponent(var4, NPCEntity.getComponentType());
if (var5 == null) {
class="kw">return false;
} else {
class="kw">return !this.excludeOwnType ? true : var5.getRoleIndex() != var2;
}
}
}
}