LocatorProp class

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

Файл: com/hypixel/hytale/builtin/hytalegenerator/props/LocatorProp.java

extends: Prop

Поля (1)

МодификаторыТипИмя
Bounds3i var5

Методы (2)

МодификаторыВозвратСигнатура
public void acceptpublic void accept(@Nonnull Vector3i var1, @Nonnull Control var2)
if if(LocatorProp.this.rPlacedCount[0] >= LocatorProp.this.placementCap)

Исходный код

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

class="kw">import com.hypixel.hytale.builtin.hytalegenerator.bounds.Bounds3i;
class="kw">import com.hypixel.hytale.builtin.hytalegenerator.patterns.Pattern;
class="kw">import com.hypixel.hytale.builtin.hytalegenerator.pipe.Control;
class="kw">import com.hypixel.hytale.builtin.hytalegenerator.pipe.Pipe;
class="kw">import com.hypixel.hytale.builtin.hytalegenerator.scanners.Scanner;
class="kw">import javax.annotation.Nonnull;
class="kw">import org.joml.Vector3i;

class="kw">public class LocatorProp class="kw">extends Prop {
   @Nonnull
   class="kw">private class="kw">final Bounds3i readBounds;
   @Nonnull
   class="kw">private class="kw">final Bounds3i writeBounds;
   @Nonnull
   class="kw">private class="kw">final Scanner scanner;
   @Nonnull
   class="kw">private class="kw">final Pattern pattern;
   @Nonnull
   class="kw">private class="kw">final Prop prop;
   class="kw">private class="kw">final int placementCap;
   @Nonnull
   class="kw">private class="kw">final Pattern.Context rPatternContext;
   @Nonnull
   class="kw">private class="kw">final Prop.Context rPropContext;
   @Nonnull
   class="kw">private class="kw">final int[] rPlacedCount;
   @Nonnull
   class="kw">private class="kw">final boolean[] rHasGenerated;
   @Nonnull
   class="kw">private Prop.Context rContext;
   @Nonnull
   class="kw">private class="kw">final Pipe.One<Vector3i> rScannerPipe = new Pipe.One<Vector3i>() {
      class="kw">public void accept(@Nonnull Vector3i var1, @Nonnull Control var2) {
         if (LocatorProp.this.rPlacedCount[0] >= LocatorProp.this.placementCap) {
            var2.stop = true;
         } else {
            LocatorProp.this.rPatternContext.position = var1;
            if (LocatorProp.this.pattern.matches(LocatorProp.this.rPatternContext)) {
               LocatorProp.this.rPropContext.assign(LocatorProp.this.rContext);
               LocatorProp.this.rPropContext.position = var1;
               LocatorProp.this.rHasGenerated[0] = LocatorProp.this.rHasGenerated[0] | LocatorProp.this.prop.generate(LocatorProp.this.rPropContext);
               LocatorProp.this.rPlacedCount[0]++;
            }
         }
      }
   };

   class="kw">public LocatorProp(@Nonnull Prop var1, @Nonnull Pattern var2, @Nonnull Scanner var3, int var4) {
      this.prop = var1;
      this.scanner = var3;
      this.pattern = var2;
      this.placementCap = var4;
      this.readBounds = var3.getBoundsWithPattern_voxelGrid(var2);
      Bounds3i var5 = var1.getReadBounds_voxelGrid().clone();
      if (!var5.isZeroVolume()) {
         this.readBounds.stack(var5);
      }

      this.writeBounds = var1.getWriteBounds_voxelGrid().clone();
      if (!this.readBounds.isZeroVolume()) {
         this.writeBounds.stack(this.readBounds);
      }

      this.rPatternContext = new Pattern.Context();
      this.rPropContext = new Prop.Context();
      this.rPlacedCount = new int[1];
      this.rHasGenerated = new boolean[1];
      this.rContext = Prop.Context.DEFAULT_INSTANCE;
   }

   @Override
   class="kw">public boolean generate(@Nonnull Prop.Context var1) {
      this.rContext = var1;
      this.rPatternContext.assign(var1);
      this.rHasGenerated[0] = false;
      this.rPlacedCount[0] = 0;
      this.scanner.scan(var1.position, this.rScannerPipe);
      this.rPropContext.clearReferences();
      this.rPatternContext.clearReferences();
      this.rContext = Prop.Context.DEFAULT_INSTANCE;
      class="kw">return this.rHasGenerated[0];
   }

   @Nonnull
   @Override
   class="kw">public Bounds3i getReadBounds_voxelGrid() {
      class="kw">return this.readBounds;
   }

   @Nonnull
   @Override
   class="kw">public Bounds3i getWriteBounds_voxelGrid() {
      class="kw">return this.writeBounds;
   }
}