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;
}
}