ClusterPropAsset class
Пакет: com.hypixel.hytale.builtin.hytalegenerator.assets.props
Файл: com/hypixel/hytale/builtin/hytalegenerator/assets/props/ClusterPropAsset.java
extends: PropAsset
Поля (12)
| Модификаторы | Тип | Имя |
|---|---|---|
|
public static final AssetBuilderCodec<String, ClusterPropAsset.WeightedEntryAsset> |
CODEC |
|
private AssetExtraInfo.Data |
data |
|
private String |
id |
|
private PropAsset |
propAsset |
|
Pattern |
var10 |
|
Scanner |
var11 |
|
int |
var12 |
|
WeightedMap |
var2 |
|
Prop |
var7 |
|
Vector3i |
var8 |
|
Vector3i |
var9 |
|
private double |
weight |
Методы (6)
| Модификаторы | Возврат | Сигнатура |
|---|---|---|
|
public |
WeightedEntryAssetpublic WeightedEntryAsset() |
|
public void |
cleanUppublic void cleanUp() |
|
|
for for(ClusterPropAsset.WeightedEntryAsset var6 : this.weightedEntryAssets) |
|
|
for for(ClusterPropAsset.WeightedEntryAsset var4 : this.weightedEntryAssets) |
|
public String |
getIdpublic String getId() |
|
|
if if(var8.x != 1 || var8.z != 1) |
Исходный код
Показать/скрыть
class="kw">package com.hypixel.hytale.builtin.hytalegenerator.assets.props;
class="kw">import com.hypixel.hytale.assetstore.AssetExtraInfo;
class="kw">import com.hypixel.hytale.assetstore.codec.AssetBuilderCodec;
class="kw">import com.hypixel.hytale.assetstore.map.DefaultAssetMap;
class="kw">import com.hypixel.hytale.assetstore.map.JsonAssetWithMap;
class="kw">import com.hypixel.hytale.builtin.hytalegenerator.LoggerUtil;
class="kw">import com.hypixel.hytale.builtin.hytalegenerator.WeightedMap;
class="kw">import com.hypixel.hytale.builtin.hytalegenerator.assets.Cleanable;
class="kw">import com.hypixel.hytale.builtin.hytalegenerator.assets.curves.ConstantCurveAsset;
class="kw">import com.hypixel.hytale.builtin.hytalegenerator.assets.curves.CurveAsset;
class="kw">import com.hypixel.hytale.builtin.hytalegenerator.assets.patterns.ConstantPatternAsset;
class="kw">import com.hypixel.hytale.builtin.hytalegenerator.assets.patterns.PatternAsset;
class="kw">import com.hypixel.hytale.builtin.hytalegenerator.assets.scanners.DirectScannerAsset;
class="kw">import com.hypixel.hytale.builtin.hytalegenerator.assets.scanners.ScannerAsset;
class="kw">import com.hypixel.hytale.builtin.hytalegenerator.patterns.ConstantPattern;
class="kw">import com.hypixel.hytale.builtin.hytalegenerator.patterns.Pattern;
class="kw">import com.hypixel.hytale.builtin.hytalegenerator.props.EmptyProp;
class="kw">import com.hypixel.hytale.builtin.hytalegenerator.props.Prop;
class="kw">import com.hypixel.hytale.builtin.hytalegenerator.props.deprecated.ClusterProp;
class="kw">import com.hypixel.hytale.builtin.hytalegenerator.scanners.DirectScanner;
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.KeyedCodec;
class="kw">import com.hypixel.hytale.codec.builder.BuilderCodec;
class="kw">import com.hypixel.hytale.codec.codecs.array.ArrayCodec;
class="kw">import com.hypixel.hytale.codec.validation.Validators;
class="kw">import java.util.logging.Level;
class="kw">import javax.annotation.Nonnull;
class="kw">import org.joml.Vector3i;
class="kw">public class ClusterPropAsset class="kw">extends PropAsset {
@Nonnull
class="kw">public class="kw">static class="kw">final BuilderCodec<ClusterPropAsset> CODEC = BuilderCodec.builder(ClusterPropAsset.class, ClusterPropAsset::new, PropAsset.ABSTRACT_CODEC)
.append(new KeyedCodec<>("Range", Codec.INTEGER, false), (var0, var1) -> var0.range = var1, var0 -> var0.range)
.addValidator(Validators.greaterThanOrEqual(0))
.add()
.append(new KeyedCodec<>("DistanceCurve", CurveAsset.CODEC, true), (var0, var1) -> var0.distanceCurve = var1, var0 -> var0.distanceCurve)
.add()
.append(new KeyedCodec<>("Seed", Codec.STRING, false), (var0, var1) -> var0.seed = var1, var0 -> var0.seed)
.add()
.append(
new KeyedCodec<>("WeightedProps", new ArrayCodec<>(ClusterPropAsset.WeightedEntryAsset.CODEC, ClusterPropAsset.WeightedEntryAsset[]::new), true),
(var0, var1) -> var0.weightedEntryAssets = var1,
var0 -> var0.weightedEntryAssets
)
.add()
.append(new KeyedCodec<>("Pattern", PatternAsset.CODEC, false), (var0, var1) -> var0.patternAsset = var1, var0 -> var0.patternAsset)
.add()
.append(new KeyedCodec<>("Scanner", ScannerAsset.CODEC, false), (var0, var1) -> var0.scannerAsset = var1, var0 -> var0.scannerAsset)
.add()
.build();
class="kw">private int range = 0;
class="kw">private CurveAsset distanceCurve = new ConstantCurveAsset();
class="kw">private String seed = "A";
class="kw">private ClusterPropAsset.WeightedEntryAsset[] weightedEntryAssets = new ClusterPropAsset.WeightedEntryAsset[0];
class="kw">private PatternAsset patternAsset = new ConstantPatternAsset();
class="kw">private ScannerAsset scannerAsset = new DirectScannerAsset();
class="kw">public ClusterPropAsset() {
}
@Nonnull
@Override
class="kw">public Prop build(@Nonnull PropAsset.Argument var1) {
if (super.skip()) {
class="kw">return EmptyProp.INSTANCE;
}
WeightedMap var2 = new WeightedMap<>();
for (ClusterPropAsset.WeightedEntryAsset var6 : this.weightedEntryAssets) {
Prop var7 = var6.propAsset.build(var1);
Vector3i var8 = var7.getReadBounds_voxelGrid().getSize();
Vector3i var9 = var7.getWriteBounds_voxelGrid().getSize();
if (var8.x != 1 || var8.z != 1) {
LoggerUtil.getLogger().log(Level.WARNING, "Cluster Prop child has a read area larger than a column.");
} else if (var9.x == 1 && var9.z == 1) {
var2.add(var6.propAsset.build(var1), var6.weight);
} else {
LoggerUtil.getLogger().log(Level.WARNING, "Cluster Prop child has a write area larger than a column.");
}
}
Pattern var10 = this.patternAsset == null ? ConstantPattern.INSTANCE_TRUE : this.patternAsset.build(PatternAsset.argumentFrom(var1));
Scanner var11 = this.scannerAsset == null ? new DirectScanner() : this.scannerAsset.build(ScannerAsset.argumentFrom(var1));
int var12 = var1.parentSeed.child(this.seed).createSupplier().get();
class="kw">return new ClusterProp(this.range, this.distanceCurve.build(), var12, var2, var10, var11);
}
@Override
class="kw">public void cleanUp() {
this.distanceCurve.cleanUp();
for (ClusterPropAsset.WeightedEntryAsset var4 : this.weightedEntryAssets) {
var4.cleanUp();
}
this.patternAsset.cleanUp();
this.scannerAsset.cleanUp();
}
class="kw">public class="kw">static class WeightedEntryAsset class="kw">implements Cleanable, JsonAssetWithMap<String, DefaultAssetMap<String, ClusterPropAsset.WeightedEntryAsset>> {
@Nonnull
class="kw">public class="kw">static class="kw">final AssetBuilderCodec<String, ClusterPropAsset.WeightedEntryAsset> CODEC = AssetBuilderCodec.builder(
ClusterPropAsset.WeightedEntryAsset.class,
ClusterPropAsset.WeightedEntryAsset::new,
Codec.STRING,
(var0, var1) -> var0.id = var1,
var0 -> var0.id,
(var0, var1) -> var0.data = var1,
var0 -> var0.data
)
.append(new KeyedCodec<>("Weight", Codec.DOUBLE, true), (var0, var1) -> var0.weight = var1, var0 -> var0.weight)
.addValidator(Validators.greaterThan(0.0))
.add()
.append(new KeyedCodec<>("ColumnProp", PropAsset.CODEC, true), (var0, var1) -> var0.propAsset = var1, var0 -> var0.propAsset)
.add()
.build();
class="kw">private String id;
class="kw">private AssetExtraInfo.Data data;
class="kw">private double weight = 1.0;
class="kw">private PropAsset propAsset;
class="kw">public WeightedEntryAsset() {
}
class="kw">public String getId() {
class="kw">return this.id;
}
@Override
class="kw">public void cleanUp() {
this.propAsset.cleanUp();
}
}
}