CheckTagWorldHeightRadiusProvider class

Пакет: com.hypixel.hytale.builtin.adventure.objectives.config.worldlocationproviders

Файл: com/hypixel/hytale/builtin/adventure/objectives/config/worldlocationproviders/CheckTagWorldHeightRadiusProvider.java

extends: WorldLocationProvider

Поля (12)

МодификаторыТипИмя
int var1
WorldChunk var10
int var11
int var12
String var2
CheckTagWorldHeightRadiusProvider var2
SpiralIterator var3
String var4
long var4
int var6
int var7
long var8

Методы (7)

МодификаторыВозвратСигнатура
abstract return new Vector3ireturn new Vector3i(var6, var11 + 1, var7)
for for(int var1 = 0; var1 < var0.blockTags.length; var1++)
for for(int var3 = 0; var3 < var1.length; var3++)
for for(int var13 = 0; var13 < this.blockTagsIndexes.length; var13++)
if if(var0.blockTags != null)
if if(var10 != null)
if if(this == var1)

Исходный код

Показать/скрыть
class="kw">package com.hypixel.hytale.builtin.adventure.objectives.config.worldlocationproviders;

class="kw">import com.hypixel.hytale.assetstore.AssetRegistry;
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.validation.Validators;
class="kw">import com.hypixel.hytale.math.iterator.SpiralIterator;
class="kw">import com.hypixel.hytale.math.util.ChunkUtil;
class="kw">import com.hypixel.hytale.math.util.MathUtil;
class="kw">import com.hypixel.hytale.server.core.asset.type.blocktype.config.BlockType;
class="kw">import com.hypixel.hytale.server.core.universe.world.World;
class="kw">import com.hypixel.hytale.server.core.universe.world.chunk.WorldChunk;
class="kw">import java.util.Arrays;
class="kw">import javax.annotation.Nonnull;
class="kw">import javax.annotation.Nullable;
class="kw">import org.joml.Vector3i;

class="kw">public class CheckTagWorldHeightRadiusProvider class="kw">extends WorldLocationProvider {
   @Nonnull
   class="kw">public class="kw">static class="kw">final BuilderCodec<CheckTagWorldHeightRadiusProvider> CODEC = BuilderCodec.builder(
         CheckTagWorldHeightRadiusProvider.class, CheckTagWorldHeightRadiusProvider::new, BASE_CODEC
      )
      .append(new KeyedCodec<>("BlockTags", Codec.STRING_ARRAY), (var0, var1) -> var0.blockTags = var1, var0 -> var0.blockTags)
      .addValidator(Validators.nonEmptyArray())
      .addValidator(Validators.uniqueInArray())
      .add()
      .<Integer>append(new KeyedCodec<>("Radius", Codec.INTEGER), (var0, var1) -> var0.radius = var1, var0 -> var0.radius)
      .addValidator(Validators.greaterThan(0))
      .add()
      .afterDecode(var0 -> {
         if (var0.blockTags != null) {
            var0.blockTagsIndexes = new int[var0.blockTags.length];

            for (int var1 = 0; var1 < var0.blockTags.length; var1++) {
               String var2 = var0.blockTags[var1];
               var0.blockTagsIndexes[var1] = AssetRegistry.getOrCreateTagIndex(var2);
            }
         }
      })
      .build();
   class="kw">protected String[] blockTags;
   class="kw">protected int radius = 5;
   class="kw">private int[] blockTagsIndexes;

   class="kw">public CheckTagWorldHeightRadiusProvider(@Nonnull String[] var1, int var2) {
      this.blockTags = var1;
      this.radius = var2;
      this.blockTagsIndexes = new int[var1.length];

      for (int var3 = 0; var3 < var1.length; var3++) {
         String var4 = var1[var3];
         this.blockTagsIndexes[var3] = AssetRegistry.getOrCreateTagIndex(var4);
      }
   }

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

   @Nullable
   @Override
   class="kw">public Vector3i runCondition(@Nonnull World var1, @Nonnull Vector3i var2) {
      SpiralIterator var3 = new SpiralIterator(var2.x, var2.z, this.radius);

      while (var3.hasNext()) {
         long var4 = var3.next();
         int var6 = MathUtil.unpackLeft(var4);
         int var7 = MathUtil.unpackRight(var4);
         long var8 = ChunkUtil.indexChunkFromBlock(var6, var7);
         WorldChunk var10 = var1.getNonTickingChunk(var8);
         if (var10 != null) {
            int var11 = var10.getHeight(var6, var7);
            int var12 = var10.getBlock(var6, var11, var7);

            for (int var13 = 0; var13 < this.blockTagsIndexes.length; var13++) {
               if (BlockType.getAssetMap().getIndexesForTag(this.blockTagsIndexes[var13]).contains(var12)) {
                  class="kw">return new Vector3i(var6, var11 + 1, var7);
               }
            }
         }
      }

      class="kw">return null;
   }

   @Override
   class="kw">public boolean equals(@Nullable Object var1) {
      if (this == var1) {
         class="kw">return true;
      } else if (var1 != null && this.getClass() == var1.getClass()) {
         CheckTagWorldHeightRadiusProvider var2 = (CheckTagWorldHeightRadiusProvider)var1;
         class="kw">return this.radius != var2.radius ? false : Arrays.equals(this.blockTags, var2.blockTags);
      } else {
         class="kw">return false;
      }
   }

   @Override
   class="kw">public int hashCode() {
      int var1 = Arrays.hashCode(this.blockTags);
      class="kw">return 31 * var1 + this.radius;
   }

   @Nonnull
   @Override
   class="kw">public String toString() {
      class="kw">return "CheckTagWorldHeightRadiusProvider{blockTags=" + Arrays.toString(this.blockTags) + ", radius=" + this.radius + "} " + super.toString();
   }
}