AreaScanner class

Пакет: com.hypixel.hytale.builtin.hytalegenerator.scanners.deprecated

Файл: com/hypixel/hytale/builtin/hytalegenerator/scanners/deprecated/AreaScanner.java

extends: Scanner

Поля (10)

МодификаторыТипИмя
public static final Codec<AreaScanner.ScanShape> CODEC
GLOBAL, LOCAL
CIRCLE, SQUARE
final int resultCap
return
Vector3i var4
Bounds3i var5
Scanner.Context var5
ArrayList var6
Vector3i var7

Методы (8)

МодификаторыВозвратСигнатура
abstract throw new IllegalArgumentExceptionthrow new IllegalArgumentException()
ScanShape ScanShape()
Verticality Verticality()
for for(var7.x = -var3; var7.x <= var3; var7.x++)
for for(var7.z = -var3; var7.z <= var3; var7.z++)
for for(Vector2i var3 : this.scanOrder)
if if(var1 >= 0 && var3 >= 0)
if if(this.resultCap != 0)

Исходный код

Показать/скрыть
class="kw">package com.hypixel.hytale.builtin.hytalegenerator.scanners.deprecated;

class="kw">import com.hypixel.hytale.builtin.hytalegenerator.VectorUtil;
class="kw">import com.hypixel.hytale.builtin.hytalegenerator.bounds.Bounds3i;
class="kw">import com.hypixel.hytale.builtin.hytalegenerator.math.Calculator;
class="kw">import com.hypixel.hytale.builtin.hytalegenerator.pipe.Pipe;
class="kw">import com.hypixel.hytale.builtin.hytalegenerator.scanners.Scanner;
class="kw">import com.hypixel.hytale.codec.Codec;
class="kw">import com.hypixel.hytale.codec.codecs.EnumCodec;
class="kw">import java.util.ArrayList;
class="kw">import java.util.List;
class="kw">import javax.annotation.Nonnull;
class="kw">import org.joml.Vector2i;
class="kw">import org.joml.Vector3i;

class="kw">public class AreaScanner class="kw">extends Scanner {
   class="kw">private class="kw">final int resultCap;
   @Nonnull
   class="kw">private class="kw">final Scanner childScanner;
   @Nonnull
   class="kw">private class="kw">final List<Vector2i> scanOrder;
   @Nonnull
   class="kw">private class="kw">final Bounds3i bounds_voxelGrid;

   class="kw">public AreaScanner(int var1, @Nonnull AreaScanner.ScanShape var2, int var3, @Nonnull Scanner var4) {
      if (var1 >= 0 && var3 >= 0) {
         this.resultCap = var1;
         this.childScanner = var4;
         this.bounds_voxelGrid = var4.getBounds_voxelGrid().clone();
         Bounds3i var5 = var4.getBounds_voxelGrid().clone();
         ArrayList var6 = new ArrayList<>();
         Vector3i var7 = new Vector3i();

         for (var7.x = -var3; var7.x <= var3; var7.x++) {
            for (var7.z = -var3; var7.z <= var3; var7.z++) {
               if (var2 != AreaScanner.ScanShape.CIRCLE || !(Calculator.distance(var7.x, var7.z, 0.0, 0.0) > var3)) {
                  var6.add(new Vector2i(var7.x, var7.z));
                  var5.offset(var7);
                  this.bounds_voxelGrid.encompass(var5);
                  var5.offset(var7.negate());
                  var7.negate();
               }
            }
         }

         this.scanOrder = VectorUtil.orderByDistanceFrom(new Vector2i(), var6);
      } else {
         throw new IllegalArgumentException();
      }
   }

   @Override
   class="kw">public void scan(@Nonnull Scanner.Context var1) {
      if (this.resultCap != 0) {
         for (Vector2i var3 : this.scanOrder) {
            Vector3i var4 = new Vector3i(var1.position.x + var3.x, var1.position.y, var1.position.z + var3.y);
            Scanner.Context var5 = new Scanner.Context(var1);
            var5.position = var4;
            this.childScanner.scan(var5);
            if (var1.validPositions_out.size() >= this.resultCap) {
               while (var1.validPositions_out.size() > this.resultCap) {
                  var1.validPositions_out.removeLast();
               }

               class="kw">return;
            }
         }
      }
   }

   @Override
   class="kw">public void scan(@Nonnull Vector3i var1, @Nonnull Pipe.One<Vector3i> var2) {
   }

   @Override
   class="kw">public Bounds3i getBounds_voxelGrid() {
      class="kw">return this.bounds_voxelGrid;
   }

   class="kw">public enum ScanShape {
      CIRCLE,
      SQUARE;

      @Nonnull
      class="kw">public class="kw">static class="kw">final Codec<AreaScanner.ScanShape> CODEC = new EnumCodec<>(AreaScanner.ScanShape.class, EnumCodec.EnumStyle.LEGACY);

      ScanShape() {
      }
   }

   class="kw">public enum Verticality {
      GLOBAL,
      LOCAL;

      Verticality() {
      }
   }
}