EntityFilterFlock class
Пакет: com.hypixel.hytale.server.flock.corecomponents
Файл: com/hypixel/hytale/server/flock/corecomponents/EntityFilterFlock.java
extends: EntityFilterBase
Поля (11)
| Модификаторы | Тип | Имя |
|---|---|---|
final |
int |
COST |
|
|
break |
|
|
break |
|
|
break |
|
|
break |
|
FlockMembership |
var5 |
|
EntityGroup |
var6 |
|
|
var6 |
|
Ref |
var7 |
|
boolean |
var8 |
|
Ref |
var9 |
Методы (6)
| Модификаторы | Возврат | Сигнатура |
|---|---|---|
abstract |
throw new |
MatchExceptionthrow new MatchException(null, null) |
|
|
if if(var5 == null) |
|
|
if if(var5 != null) |
|
|
if if(var5 != null) |
|
|
switch switch(this.flockMembership) |
|
return |
switchreturn switch(this.flockPlayerMembership) |
Исходный код
Показать/скрыть
class="kw">package com.hypixel.hytale.server.flock.corecomponents;
class="kw">import com.hypixel.hytale.component.ComponentType;
class="kw">import com.hypixel.hytale.component.Ref;
class="kw">import com.hypixel.hytale.component.Store;
class="kw">import com.hypixel.hytale.server.core.entity.entities.Player;
class="kw">import com.hypixel.hytale.server.core.entity.group.EntityGroup;
class="kw">import com.hypixel.hytale.server.core.universe.world.storage.EntityStore;
class="kw">import com.hypixel.hytale.server.flock.FlockMembership;
class="kw">import com.hypixel.hytale.server.flock.FlockMembershipSystems;
class="kw">import com.hypixel.hytale.server.flock.corecomponents.builders.BuilderEntityFilterFlock;
class="kw">import com.hypixel.hytale.server.npc.corecomponents.EntityFilterBase;
class="kw">import com.hypixel.hytale.server.npc.instructions.ExecutionSupport;
class="kw">import com.hypixel.hytale.server.npc.movement.FlockMembershipType;
class="kw">import com.hypixel.hytale.server.npc.movement.FlockPlayerMembership;
class="kw">import javax.annotation.Nonnull;
class="kw">public class EntityFilterFlock class="kw">extends EntityFilterBase {
class="kw">public class="kw">static class="kw">final int COST = 100;
class="kw">protected class="kw">static class="kw">final ComponentType<EntityStore, FlockMembership> FLOCK_MEMBERSHIP_COMPONENT_TYPE = FlockMembership.getComponentType();
class="kw">protected class="kw">static class="kw">final ComponentType<EntityStore, Player> PLAYER_COMPONENT_TYPE = Player.getComponentType();
class="kw">protected class="kw">static class="kw">final ComponentType<EntityStore, EntityGroup> ENTITY_GROUP_COMPONENT_TYPE = EntityGroup.getComponentType();
class="kw">protected class="kw">final FlockMembershipType flockMembership;
class="kw">protected class="kw">final FlockPlayerMembership flockPlayerMembership;
class="kw">protected class="kw">final int[] size;
class="kw">protected class="kw">final boolean checkCanJoin;
class="kw">public EntityFilterFlock(@Nonnull BuilderEntityFilterFlock var1) {
this.flockMembership = var1.getFlockMembership();
this.flockPlayerMembership = var1.getFlockPlayerMembership();
this.size = var1.getSize();
this.checkCanJoin = var1.isCheckCanJoin();
}
@Override
class="kw">public boolean matchesEntity(
@Nonnull Ref<EntityStore> var1, @Nonnull Ref<EntityStore> var2, @Nonnull ExecutionSupport var3, @Nonnull Store<EntityStore> var4
) {
FlockMembership var5 = var4.getComponent(var2, FLOCK_MEMBERSHIP_COMPONENT_TYPE);
class="kw">switch (this.flockMembership) {
case Leader:
if (var5 == null || !var5.getMembershipType().isActingAsLeader()) {
class="kw">return false;
}
break;
case Follower:
if (var5 == null || var5.getMembershipType().isActingAsLeader()) {
class="kw">return false;
}
break;
case Member:
if (var5 == null) {
class="kw">return false;
}
break;
case NotMember:
if (var5 != null) {
class="kw">return false;
}
case Any:
break;
class="kw">default:
throw new MatchException(null, null);
}
EntityGroup var6 = null;
if (var5 != null) {
Ref var7 = var5.getFlockRef();
if (var7 != null && var7.isValid()) {
var6 = var4.getComponent(var7, ENTITY_GROUP_COMPONENT_TYPE);
}
}
if (this.size != null && var6 != null && (var6.size() < this.size[0] || var6.size() > this.size[1])) {
class="kw">return false;
}
if (!this.checkCanJoin || var5 != null && FlockMembershipSystems.canJoinFlock(var2, var5.getFlockRef(), var4)) {
Ref var9 = var6 != null ? var6.getLeaderRef() : null;
boolean var8 = var9 != null && var9.isValid() && var4.getArchetype(var9).contains(PLAYER_COMPONENT_TYPE);
class="kw">return class="kw">switch (this.flockPlayerMembership) {
case Member -> var8;
case NotMember -> !var8;
case Any -> true;
};
} else {
class="kw">return false;
}
}
@Override
class="kw">public int cost() {
class="kw">return 100;
}
}