DensityProp class
Пакет: com.hypixel.hytale.builtin.hytalegenerator.props.deprecated
Файл: com/hypixel/hytale/builtin/hytalegenerator/props/deprecated/DensityProp.java
extends: Prop
Поля (29)
| Модификаторы | Тип | Имя |
|---|---|---|
|
int |
var10 |
|
ArrayVoxelSpace |
var11 |
|
Density.Context |
var12 |
|
Vector3i |
var13 |
|
Material |
var14 |
|
int |
var15 |
|
double |
var16 |
|
int[] |
var17 |
|
int[] |
var18 |
|
int[] |
var19 |
|
PositionListScanResult |
var2 |
|
int |
var20 |
|
boolean |
var21 |
|
Material |
var22 |
|
|
var22 |
|
int[] |
var23 |
|
int |
var24 |
|
int |
var25 |
|
boolean |
var26 |
|
MaterialProvider.Context |
var27 |
|
Scanner.Context |
var3 |
|
List |
var3 |
|
Bounds3i |
var3 |
|
Vector3i |
var4 |
|
Vector3i |
var5 |
|
Vector3i |
var6 |
|
Vector3i |
var7 |
|
int |
var8 |
|
int |
var9 |
Методы (19)
| Модификаторы | Возврат | Сигнатура |
|---|---|---|
abstract |
return new |
PositionListScanResultreturn new PositionListScanResult(var3.validPositions_out) |
|
|
for for(Vector3i var5 : var3) |
|
|
for for(var13.x = var4.x; var13.x < var5.x; var13.x++) |
|
|
for for(var13.z = var4.z; var13.z < var5.z; var13.z++) |
|
|
for for(var13.y = var4.y; var13.y < var5.y; var13.y++) |
|
|
for for(var13.x = var4.x; var13.x < var5.x; var13.x++) |
|
|
for for(var13.z = var4.z; var13.z < var5.z; var13.z++) |
|
|
for for(var13.y = var9 - 1; var13.y >= var8; var13.y--) |
|
|
for for(var13.y = var8; var13.y < var9; var13.y++) |
|
|
for for(var13.y = var9 - 1; var13.y >= var8; var13.y--) |
|
|
if if(var3 != null) |
|
|
if if(var13.y == var9 - 1) |
|
|
if if(var21) |
|
|
if if(var13.y == var8) |
|
|
if if(var26) |
|
|
if if(var13.x >= var6.x && var13.y >= var6.y && var13.z >= var6.z && var13.x < var7.x && var13.y < var7.y && var13.z < var7.z) |
|
|
if if(var22 == null) |
private |
void |
placevoid place(@Nonnull Vector3i var1, @Nonnull VoxelSpace<Material> var2) |
public |
void |
place_deprecatedvoid place_deprecated(@Nonnull Prop.Context var1, @Nonnull PositionListScanResult var2) |
Исходный код
Показать/скрыть
class="kw">package com.hypixel.hytale.builtin.hytalegenerator.props.deprecated;
class="kw">import com.hypixel.hytale.builtin.hytalegenerator.BlockMask;
class="kw">import com.hypixel.hytale.builtin.hytalegenerator.bounds.Bounds3i;
class="kw">import com.hypixel.hytale.builtin.hytalegenerator.density.Density;
class="kw">import com.hypixel.hytale.builtin.hytalegenerator.material.Material;
class="kw">import com.hypixel.hytale.builtin.hytalegenerator.materialproviders.MaterialProvider;
class="kw">import com.hypixel.hytale.builtin.hytalegenerator.patterns.Pattern;
class="kw">import com.hypixel.hytale.builtin.hytalegenerator.props.Prop;
class="kw">import com.hypixel.hytale.builtin.hytalegenerator.scanners.Scanner;
class="kw">import com.hypixel.hytale.builtin.hytalegenerator.voxelspace.ArrayVoxelSpace;
class="kw">import com.hypixel.hytale.builtin.hytalegenerator.voxelspace.VoxelSpace;
class="kw">import com.hypixel.hytale.math.vector.Vector3iUtil;
class="kw">import java.util.ArrayList;
class="kw">import java.util.List;
class="kw">import javax.annotation.Nonnull;
class="kw">import org.joml.Vector3i;
class="kw">public class DensityProp class="kw">extends Prop {
@Nonnull
class="kw">private class="kw">final Vector3i range;
@Nonnull
class="kw">private class="kw">final Density density;
@Nonnull
class="kw">private class="kw">final MaterialProvider<Material> materialProvider;
@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 BlockMask placementMask;
@Nonnull
class="kw">private class="kw">final Material defaultMaterial;
@Nonnull
class="kw">private class="kw">final Bounds3i readBounds_voxelGrid;
@Nonnull
class="kw">private class="kw">final Bounds3i writeBounds_voxelGrid;
class="kw">public DensityProp(
@Nonnull Vector3i var1,
@Nonnull Density var2,
@Nonnull MaterialProvider<Material> var3,
@Nonnull Scanner var4,
@Nonnull Pattern var5,
@Nonnull BlockMask var6,
@Nonnull Material var7
) {
this.range = new Vector3i(var1);
this.density = var2;
this.materialProvider = var3;
this.scanner = var4;
this.pattern = var5;
this.placementMask = var6;
this.defaultMaterial = var7;
this.readBounds_voxelGrid = var4.getBoundsWithPattern_voxelGrid(var5);
this.writeBounds_voxelGrid = new Bounds3i(new Vector3i(-var1.x, -var1.y, -var1.z), new Vector3i(var1.x, var1.y, var1.z));
this.writeBounds_voxelGrid.stack(var4.getBounds_voxelGrid());
}
@Override
class="kw">public boolean generate(@Nonnull Prop.Context var1) {
PositionListScanResult var2 = this.scan_deprecated(var1.position, var1.materialReadSpace);
this.place_deprecated(var1, var2);
class="kw">return !var2.isNegative();
}
@Nonnull
class="kw">public PositionListScanResult scan_deprecated(@Nonnull Vector3i var1, @Nonnull VoxelSpace<Material> var2) {
Scanner.Context var3 = new Scanner.Context(var1, this.pattern, var2, new ArrayList<>());
this.scanner.scan(var3);
class="kw">return new PositionListScanResult(var3.validPositions_out);
}
class="kw">public void place_deprecated(@Nonnull Prop.Context var1, @Nonnull PositionListScanResult var2) {
List var3 = var2.getPositions();
if (var3 != null) {
for (Vector3i var5 : var3) {
this.place(var5, var1.materialWriteSpace);
}
}
}
class="kw">private void place(@Nonnull Vector3i var1, @Nonnull VoxelSpace<Material> var2) {
Bounds3i var3 = var2.getBounds();
Vector3i var4 = new Vector3i(var1).add(-this.range.x, -this.range.y, -this.range.z);
Vector3i var5 = new Vector3i(var1).add(this.range.x, this.range.y, this.range.z);
Vector3i var6 = Vector3iUtil.max(var4, var3.min);
Vector3i var7 = Vector3iUtil.min(var5, var3.max);
int var8 = var4.y;
int var9 = var5.y;
int var10 = var9 - var8;
ArrayVoxelSpace var11 = new ArrayVoxelSpace<>(new Bounds3i(var4, var5));
Density.Context var12 = new Density.Context();
var12.densityAnchor = Vector3iUtil.toVector3d(var1);
Vector3i var13 = new Vector3i(var1);
for (var13.x = var4.x; var13.x < var5.x; var13.x++) {
for (var13.z = var4.z; var13.z < var5.z; var13.z++) {
for (var13.y = var4.y; var13.y < var5.y; var13.y++) {
if (var11.getBounds().contains(var13.x, var13.y, var13.z)) {
var12.position.x = var13.x;
var12.position.y = var13.y;
var12.position.z = var13.z;
double var16 = this.density.process(var12);
var11.set(var16 > 0.0, var13.x, var13.y, var13.z);
}
}
}
}
for (var13.x = var4.x; var13.x < var5.x; var13.x++) {
for (var13.z = var4.z; var13.z < var5.z; var13.z++) {
int[] var23 = new int[var10 + 1];
int[] var17 = new int[var10 + 1];
int[] var18 = new int[var10 + 1];
int[] var19 = new int[var10 + 1];
for (var13.y = var9 - 1; var13.y >= var8; var13.y--) {
int var20 = var13.y - var8;
boolean var21 = var11.get(var13.x, var13.y, var13.z);
if (var13.y == var9 - 1) {
if (var21) {
var17[var20] = 1;
} else {
var17[var20] = 0;
}
var19[var20] = 1073741823;
} else if (var21) {
var17[var20] = var17[var20 + 1] + 1;
var19[var20] = var19[var20 + 1];
} else {
var17[var20] = 0;
if (var11.get(var13.x, var13.y + 1, var13.z)) {
var19[var20] = 0;
} else {
var19[var20] = var19[var20 + 1] + 1;
}
}
}
for (var13.y = var8; var13.y < var9; var13.y++) {
int var24 = var13.y - var8;
boolean var26 = var11.get(var13.x, var13.y, var13.z);
if (var13.y == var8) {
if (var26) {
var23[var24] = 1;
} else {
var23[var24] = 0;
}
var18[var24] = Integer.MAX_VALUE;
} else if (var26) {
var23[var24] = var23[var24 - 1] + 1;
var18[var24] = var18[var24 - 1];
} else {
var23[var24] = 0;
if (var11.get(var13.x, var13.y - 1, var13.z)) {
var18[var24] = 0;
} else {
var18[var24] = var18[var24 - 1] + 1;
}
}
}
for (var13.y = var9 - 1; var13.y >= var8; var13.y--) {
if (var13.x >= var6.x && var13.y >= var6.y && var13.z >= var6.z && var13.x < var7.x && var13.y < var7.y && var13.z < var7.z) {
int var25 = var13.y - var8;
MaterialProvider.Context var27 = new MaterialProvider.Context(var1, 0.0, var17[var25], var23[var25], var19[var25], var18[var25], var2x -> {
var12.position = Vector3iUtil.toVector3d(var2x);
class="kw">return this.density.process(var12);
}, var12.distanceToBiomeEdge, null, null);
Material var22 = this.materialProvider.getVoxelTypeAt(var27);
if (var22 == null) {
var22 = this.defaultMaterial;
}
if (this.placementMask.canPlace(var22)) {
Material var14 = var2.get(var13.x, var13.y, var13.z);
int var15 = var14.hashMaterialIds();
if (this.placementMask.canReplace(var22.hashCode(), var15)) {
var2.set(var22, var13.x, var13.y, var13.z);
}
}
}
}
}
}
}
@Nonnull
@Override
class="kw">public Bounds3i getReadBounds_voxelGrid() {
class="kw">return this.readBounds_voxelGrid;
}
@Nonnull
@Override
class="kw">public Bounds3i getWriteBounds_voxelGrid() {
class="kw">return this.writeBounds_voxelGrid;
}
}