SensorCount class
Пакет: com.hypixel.hytale.server.npc.corecomponents.entity
Файл: com/hypixel/hytale/server/npc/corecomponents/entity/SensorCount.java
extends: SensorBase
Поля (3)
| Модификаторы | Тип | Имя |
|---|---|---|
final |
int |
minCount |
|
int[] |
var3 |
|
double[] |
var4 |
Методы (6)
| Модификаторы | Возврат | Сигнатура |
|---|---|---|
protected |
boolean |
filterNPCboolean filterNPC(@Nonnull Ref<EntityStore> var1, @Nonnull Integer var2, @Nonnull ComponentAccessor<EntityStore> var3) |
|
|
for for(int var4 : var0) |
static |
boolean |
groupListHasPlayerboolean groupListHasPlayer(@Nonnull int[] var0) |
|
|
if if(this.haveIncludeGroups) |
|
|
if if(this.findPlayers) |
abstract |
|
super super(var1) |
Исходный код
Показать/скрыть
class="kw">package com.hypixel.hytale.server.npc.corecomponents.entity;
class="kw">import com.hypixel.hytale.component.ComponentAccessor;
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.BuilderManager;
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.entity.builders.BuilderSensorCount;
class="kw">import com.hypixel.hytale.server.npc.instructions.ExecutionSupport;
class="kw">import com.hypixel.hytale.server.npc.role.support.WorldSupport;
class="kw">import com.hypixel.hytale.server.npc.sensorinfo.InfoProvider;
class="kw">import javax.annotation.Nonnull;
class="kw">public class SensorCount class="kw">extends SensorBase {
class="kw">protected class="kw">final int minCount;
class="kw">protected class="kw">final int maxCount;
class="kw">protected class="kw">final double minRange;
class="kw">protected class="kw">final double maxRange;
class="kw">protected class="kw">final int[] includeGroups;
class="kw">protected class="kw">final int[] excludeGroups;
class="kw">protected boolean findPlayers;
class="kw">protected class="kw">final boolean haveIncludeGroups;
class="kw">protected class="kw">final boolean haveExcludeGroups;
class="kw">public SensorCount(@Nonnull BuilderSensorCount var1, @Nonnull BuilderSupport var2) {
super(var1);
int[] var3 = var1.getCount(var2);
this.minCount = var3[0];
this.maxCount = var3[1];
double[] var4 = var1.getRange(var2);
this.minRange = var4[0];
this.maxRange = var4[1];
this.includeGroups = var1.getIncludeGroups();
this.excludeGroups = var1.getExcludeGroups();
this.haveIncludeGroups = this.includeGroups != null && this.includeGroups.length > 0;
this.haveExcludeGroups = this.excludeGroups != null && this.excludeGroups.length > 0;
}
@Override
class="kw">public void registerWithSupport(@Nonnull ExecutionSupport var1) {
if (this.haveIncludeGroups) {
this.findPlayers = groupListHasPlayer(this.includeGroups);
} else {
this.findPlayers = !this.haveExcludeGroups || !groupListHasPlayer(this.excludeGroups);
}
var1.getPositionCache().requireEntityDistanceSorted(this.maxRange);
if (this.findPlayers) {
var1.getPositionCache().requirePlayerDistanceSorted(this.maxRange);
}
}
@Override
class="kw">public boolean matches(@Nonnull Ref<EntityStore> var1, @Nonnull ExecutionSupport var2, double var3, @Nonnull Store<EntityStore> var5) {
class="kw">return super.matches(var1, var2, var3, var5)
&& var2.getPositionCache()
.isEntityCountInRange(
this.minRange, this.maxRange, this.minCount, this.maxCount, this.findPlayers, var2.getRoleIndex(), SensorCount::filterNPC, this, var5
);
}
@Override
class="kw">public InfoProvider getSensorInfo() {
class="kw">return null;
}
class="kw">protected class="kw">static boolean groupListHasPlayer(@Nonnull int[] var0) {
for (int var4 : var0) {
if (WorldSupport.hasTagInGroup(var4, BuilderManager.getPlayerGroupID())) {
class="kw">return true;
}
}
class="kw">return false;
}
class="kw">protected boolean filterNPC(@Nonnull Ref<EntityStore> var1, @Nonnull Integer var2, @Nonnull ComponentAccessor<EntityStore> var3) {
class="kw">return (!this.haveIncludeGroups || WorldSupport.isGroupMember(var2, var1, this.includeGroups, var3))
&& (!this.haveExcludeGroups || !WorldSupport.isGroupMember(var2, var1, this.excludeGroups, var3));
}
}