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;
   }
}