EntityFilterInsideBlock class

Пакет: com.hypixel.hytale.server.npc.corecomponents.entity.filters

Файл: com/hypixel/hytale/server/npc/corecomponents/entity/filters/EntityFilterInsideBlock.java

extends: EntityFilterBase

Поля (6)

МодификаторыТипИмя
final int COST
long var4
Vector3d var5
Box var6
int var6
int var7

Методы (5)

МодификаторыВозвратСигнатура
static boolean acceptboolean accept(int var0, int var1, int var2, @Nonnull EntityFilterInsideBlock var3)
if if(var4 != var3.chunkIndex)
if if(var3.blockChunk == null)
if if(var6 != var3.chunkSectionIndex)
if if(var3.chunkSection == null)

Исходный код

Показать/скрыть
class="kw">package com.hypixel.hytale.server.npc.corecomponents.entity.filters;

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.math.shape.Box;
class="kw">import com.hypixel.hytale.math.util.ChunkUtil;
class="kw">import com.hypixel.hytale.server.core.modules.blockset.BlockSetModule;
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.universe.world.chunk.BlockChunk;
class="kw">import com.hypixel.hytale.server.core.universe.world.chunk.section.BlockSection;
class="kw">import com.hypixel.hytale.server.core.universe.world.storage.ChunkStore;
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.EntityFilterBase;
class="kw">import com.hypixel.hytale.server.npc.corecomponents.entity.filters.builders.BuilderEntityFilterInsideBlock;
class="kw">import com.hypixel.hytale.server.npc.instructions.ExecutionSupport;
class="kw">import javax.annotation.Nonnull;
class="kw">import javax.annotation.Nullable;
class="kw">import org.joml.Vector3d;

class="kw">public class EntityFilterInsideBlock class="kw">extends EntityFilterBase {
   class="kw">public class="kw">static class="kw">final int COST = 400;
   class="kw">protected class="kw">static class="kw">final ComponentType<EntityStore, TransformComponent> TRANSFORM_COMPONENT_TYPE = TransformComponent.getComponentType();
   class="kw">protected class="kw">static class="kw">final ComponentType<EntityStore, BoundingBox> BOUNDING_BOX_COMPONENT_TYPE = BoundingBox.getComponentType();
   class="kw">protected class="kw">static class="kw">final ComponentType<ChunkStore, BlockChunk> BLOCK_CHUNK_COMPONENT_TYPE = BlockChunk.getComponentType();
   class="kw">protected class="kw">final int blockSet;
   @Nullable
   class="kw">protected ChunkStore chunkStore;
   class="kw">protected long chunkIndex = ChunkUtil.NOT_FOUND;
   @Nullable
   class="kw">protected BlockChunk blockChunk;
   class="kw">protected int chunkSectionIndex = Integer.MIN_VALUE;
   @Nullable
   class="kw">protected BlockSection chunkSection;
   class="kw">protected boolean matches;

   class="kw">public EntityFilterInsideBlock(@Nonnull BuilderEntityFilterInsideBlock var1, @Nonnull BuilderSupport var2) {
      this.blockSet = var1.getBlockSet(var2);
   }

   @Override
   class="kw">public boolean matchesEntity(
      @Nonnull Ref<EntityStore> var1, @Nonnull Ref<EntityStore> var2, @Nonnull ExecutionSupport var3, @Nonnull Store<EntityStore> var4
   ) {
      this.chunkStore = var4.getExternalData().getWorld().getChunkStore();
      this.matches = false;
      Vector3d var5 = var4.getComponent(var2, TRANSFORM_COMPONENT_TYPE).getPosition();
      Box var6 = var4.getComponent(var2, BOUNDING_BOX_COMPONENT_TYPE).getBoundingBox();
      var6.forEachBlock(var5.x, var5.y, var5.z, this, EntityFilterInsideBlock::accept);
      this.chunkStore = null;
      this.chunkIndex = ChunkUtil.NOT_FOUND;
      this.blockChunk = null;
      this.chunkSectionIndex = Integer.MIN_VALUE;
      this.chunkSection = null;
      class="kw">return this.matches;
   }

   @Override
   class="kw">public int cost() {
      class="kw">return 400;
   }

   class="kw">private class="kw">static boolean accept(int var0, int var1, int var2, @Nonnull EntityFilterInsideBlock var3) {
      long var4 = ChunkUtil.indexChunkFromBlock(var0, var2);
      if (var4 != var3.chunkIndex) {
         var3.chunkIndex = var4;
         var3.blockChunk = var3.chunkStore.getChunkComponent(var4, BLOCK_CHUNK_COMPONENT_TYPE);
      }

      if (var3.blockChunk == null) {
         class="kw">return false;
      }

      int var6 = ChunkUtil.indexSection(var1);
      if (var6 != var3.chunkSectionIndex) {
         var3.chunkSectionIndex = var6;
         var3.chunkSection = var6 >= 0 && var6 < 10 ? var3.blockChunk.getSectionAtIndex(var6) : null;
      }

      if (var3.chunkSection == null) {
         var3.matches = BlockSetModule.getInstance().blockInSet(var3.blockSet, 0);
         class="kw">return !var3.matches;
      } else {
         int var7 = var3.chunkSection.get(var0, var1, var2);
         var3.matches = BlockSetModule.getInstance().blockInSet(var3.blockSet, var7);
         class="kw">return !var3.matches;
      }
   }
}