LookBlocksBelowProvider class

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

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

extends: WorldLocationProvider

Поля (23)

МодификаторыТипИмя
break
break
int var1
var1
var1
int var10
int var11
var11
var11
BlockType var12
String var13
boolean var14
var14
int var16
String var2
LookBlocksBelowProvider var2
Vector3i var3
long var4
String var6
WorldChunk var6
int var7
int var8
int var9

Методы (12)

МодификаторыВозвратСигнатура
for for(int var1 = 0; var1 < var0.blockTags.length; var1++)
for for(int var5 = 0; var5 < var1.length; var5++)
for for(int var15 = 0; var15 < this.blockTagsIndexes.length; var15++)
if if(var0.blockTags != null)
if if(var0.minRange > var0.maxRange)
if if(var6 == null)
if if(var12 == null)
if if(var11 == this.count)
if if(!var14)
if if(this == var1)
if if(this.count != var2.count)
while while(var9 >= this.minRange && var7 - var9 <= this.maxRange)

Исходный код

Показать/скрыть
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.util.ChunkUtil;
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 LookBlocksBelowProvider class="kw">extends WorldLocationProvider {
   @Nonnull
   class="kw">public class="kw">static class="kw">final BuilderCodec<LookBlocksBelowProvider> CODEC = BuilderCodec.builder(
         LookBlocksBelowProvider.class, LookBlocksBelowProvider::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<>("Count", Codec.INTEGER), (var0, var1) -> var0.count = var1, var0 -> var0.count)
      .addValidator(Validators.greaterThan(0))
      .add()
      .<Integer>append(new KeyedCodec<>("MinRange", Codec.INTEGER), (var0, var1) -> var0.minRange = var1, var0 -> var0.minRange)
      .addValidator(Validators.greaterThanOrEqual(0))
      .add()
      .<Integer>append(new KeyedCodec<>("MaxRange", Codec.INTEGER), (var0, var1) -> var0.maxRange = var1, var0 -> var0.maxRange)
      .addValidator(Validators.greaterThanOrEqual(1))
      .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);
               }

               if (var0.minRange > var0.maxRange) {
                  throw new IllegalArgumentException(
                     "LookBlocksBelowCondition.MinRange ("
                        + var0.minRange
                        + ") needs to be greater than LookBlocksBelowCondition.MaxRange ("
                        + var0.maxRange
                        + ")"
                  );
               }
            }
         }
      )
      .build();
   class="kw">protected String[] blockTags;
   class="kw">protected int count = 1;
   class="kw">protected int minRange = 0;
   class="kw">protected int maxRange = 10;
   class="kw">private int[] blockTagsIndexes;

   class="kw">public LookBlocksBelowProvider(@Nonnull String[] var1, int var2, int var3, int var4) {
      this.blockTags = var1;
      this.count = var2;
      this.minRange = var3;
      this.maxRange = var4;
      this.blockTagsIndexes = new int[var1.length];

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

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

   @Nullable
   @Override
   class="kw">public Vector3i runCondition(@Nonnull World var1, @Nonnull Vector3i var2) {
      Vector3i var3 = new Vector3i(var2);
      long var4 = ChunkUtil.indexChunkFromBlock(var3.x, var3.z);
      WorldChunk var6 = var1.getChunk(var4);
      if (var6 == null) {
         class="kw">return null;
      }

      int var7 = var3.y;
      int var8 = var3.x;
      int var9 = var3.y;
      int var10 = var3.z;
      int var11 = 0;

      while (var9 >= this.minRange && var7 - var9 <= this.maxRange) {
         BlockType var12 = var6.getBlockType(var8, var9, var10);
         if (var12 == null) {
            var9--;
            var11 = 0;
         } else {
            String var13 = var12.getId();
            boolean var14 = false;

            for (int var15 = 0; var15 < this.blockTagsIndexes.length; var15++) {
               int var16 = this.blockTagsIndexes[var15];
               if (BlockType.getAssetMap().getKeysForTag(var16).contains(var13)) {
                  var14 = true;
                  var11++;
                  break;
               }
            }

            if (var11 == this.count) {
               break;
            }

            var9--;
            if (!var14) {
               var11 = 0;
            }
         }
      }

      class="kw">return var11 == this.count ? new Vector3i(var8, var9, var10) : null;
   }

   @Override
   class="kw">public boolean equals(@Nullable Object var1) {
      if (this == var1) {
         class="kw">return true;
      }

      if (var1 != null && this.getClass() == var1.getClass()) {
         LookBlocksBelowProvider var2 = (LookBlocksBelowProvider)var1;
         if (this.count != var2.count) {
            class="kw">return false;
         } else if (this.minRange != var2.minRange) {
            class="kw">return false;
         } else {
            class="kw">return this.maxRange != var2.maxRange ? false : Arrays.equals(this.blockTags, var2.blockTags);
         }
      } else {
         class="kw">return false;
      }
   }

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

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