EnvironmentCondition class

Пакет: com.hypixel.hytale.server.core.modules.entity.condition

Файл: com/hypixel/hytale/server/core/modules/entity/condition/EnvironmentCondition.java

extends: Condition

Поля (9)

МодификаторыТипИмя
Ref var10
Store var11
BlockChunk var12
int var13
TransformComponent var4
Vector3d var5
World var6
ChunkStore var7
long var8

Методы (2)

МодификаторыВозвратСигнатура
public int[] getEnvironmentsint[] getEnvironments()
if if(this.environments == null && this.unknownEnvironments != null)

Исходный код

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

class="kw">import com.hypixel.hytale.codec.Codec;
class="kw">import com.hypixel.hytale.codec.KeyedCodec;
class="kw">import com.hypixel.hytale.codec.builder.BuilderCodec;
class="kw">import com.hypixel.hytale.codec.codecs.array.ArrayCodec;
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.math.util.ChunkUtil;
class="kw">import com.hypixel.hytale.server.core.asset.type.environment.config.Environment;
class="kw">import com.hypixel.hytale.server.core.modules.entity.component.TransformComponent;
class="kw">import com.hypixel.hytale.server.core.universe.world.World;
class="kw">import com.hypixel.hytale.server.core.universe.world.chunk.BlockChunk;
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 java.time.Instant;
class="kw">import java.util.Arrays;
class="kw">import javax.annotation.Nonnull;
class="kw">import javax.annotation.Nullable;
class="kw">import org.joml.Vector3d;

class="kw">public class EnvironmentCondition class="kw">extends Condition {
   @Nonnull
   class="kw">public class="kw">static class="kw">final BuilderCodec<EnvironmentCondition> CODEC = BuilderCodec.builder(
         EnvironmentCondition.class, EnvironmentCondition::new, Condition.BASE_CODEC
      )
      .append(
         new KeyedCodec<>("Environments", new ArrayCodec<>(Codec.STRING, String[]::new)),
         (var0, var1) -> var0.unknownEnvironments = var1,
         var0 -> var0.unknownEnvironments
      )
      .documentation("The environments to evaluate the condition against.")
      .add()
      .afterDecode(var0 -> var0.environments = null)
      .build();
   class="kw">protected String[] unknownEnvironments;
   @Nullable
   class="kw">protected int[] environments;

   class="kw">protected EnvironmentCondition() {
   }

   class="kw">public int[] getEnvironments() {
      if (this.environments == null && this.unknownEnvironments != null) {
         this.environments = Arrays.stream(this.unknownEnvironments).mapToInt(var0 -> Environment.getAssetMap().getIndex(var0)).sorted().toArray();
      }

      class="kw">return this.environments;
   }

   @Override
   class="kw">public boolean eval0(@Nonnull ComponentAccessor<EntityStore> var1, @Nonnull Ref<EntityStore> var2, @Nonnull Instant var3) {
      TransformComponent var4 = var1.getComponent(var2, TransformComponent.getComponentType());
      assert var4 != null;
      Vector3d var5 = var4.getPosition();
      World var6 = var1.getExternalData().getWorld();
      ChunkStore var7 = var6.getChunkStore();
      long var8 = ChunkUtil.indexChunkFromBlock(var5.x(), var5.z());
      Ref var10 = var7.getChunkReference(var8);
      if (var10 != null && var10.isValid()) {
         Store var11 = var7.getStore();
         BlockChunk var12 = var11.getComponent(var10, BlockChunk.getComponentType());
         assert var12 != null;
         int var13 = var12.getEnvironment(var5);
         class="kw">return Arrays.binarySearch(this.getEnvironments(), var13) >= 0;
      } else {
         class="kw">return false;
      }
   }

   @Nonnull
   @Override
   class="kw">public String toString() {
      class="kw">return "EnvironmentCondition{unknownEnvironments="
         + Arrays.toString(this.unknownEnvironments)
         + ", environments="
         + Arrays.toString(this.environments)
         + "} "
         + super.toString();
   }
}