DensityAsset class
Пакет: com.hypixel.hytale.builtin.hytalegenerator.assets.density
Файл: com/hypixel/hytale/builtin/hytalegenerator/assets/density/DensityAsset.java
implements: JsonAssetWithMap<String, DefaultAssetMap<String, DensityAsset>>, Cleanable
Поля (15)
| Модификаторы | Тип | Имя |
|---|---|---|
|
public DensityAsset |
asset |
|
public boolean |
isSingleInstance |
|
public SeedBox |
parentSeed |
|
public ReferenceBundle |
referenceBundle |
|
public ThreadBridge |
threadBridge |
|
public Map<WorkerIndexer.Id, Density> |
threadInstances |
|
boolean |
var1 |
|
|
var1 |
|
|
var1 |
|
Density[] |
var2 |
|
DensityAsset.Exported |
var3 |
|
Density |
var3 |
|
ArrayList |
var3 |
|
int |
var3 |
|
public WorkerIndexer.Id |
workerId |
Методы (14)
| Модификаторы | Возврат | Сигнатура |
|---|---|---|
|
public |
Argumentpublic Argument(@Nonnull SeedBox var1, @Nonnull ReferenceBundle var2, @Nonnull WorkerIndexer.Id var3, @Nonnull ThreadBridge var4) |
|
public |
Argumentpublic Argument(@Nonnull DensityAsset.Argument var1) |
|
public |
Argumentpublic Argument(@Nonnull GraphGeneratorAsset.Argument var1) |
abstract |
return new |
ConstantDensityAssetreturn new ConstantDensityAsset() |
|
public |
Exportedpublic Exported(boolean var1, @Nonnull DensityAsset var2) |
protected |
void |
cleanUpInputsvoid cleanUpInputs() |
|
|
for for(DensityAsset var4 : this.inputs) |
|
|
for for(DensityAsset var7 : this.inputs) |
|
|
for for(DensityAsset var7 : this.inputs) |
static |
DensityAsset.Exported |
getExportedAssetDensityAsset.Exported getExportedAsset(@Nonnull String var0) |
public |
String |
getIdString getId() |
|
|
if if(var0 instanceof ExportedDensityAsset var2) |
public |
DensityAsset[] |
inputsDensityAsset[] inputs() |
public |
boolean |
isSkippedboolean isSkipped() |
Исходный код
Показать/скрыть
class="kw">package com.hypixel.hytale.builtin.hytalegenerator.assets.density;
class="kw">import com.hypixel.hytale.assetstore.AssetExtraInfo;
class="kw">import com.hypixel.hytale.assetstore.codec.AssetCodecMapCodec;
class="kw">import com.hypixel.hytale.assetstore.codec.ContainedAssetCodec;
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.assets.Cleanable;
class="kw">import com.hypixel.hytale.builtin.hytalegenerator.assets.ThreadBridge;
class="kw">import com.hypixel.hytale.builtin.hytalegenerator.assets.assignments.AssignmentsAsset;
class="kw">import com.hypixel.hytale.builtin.hytalegenerator.assets.environmentproviders.EnvironmentProviderAsset;
class="kw">import com.hypixel.hytale.builtin.hytalegenerator.assets.graph.GraphGeneratorAsset;
class="kw">import com.hypixel.hytale.builtin.hytalegenerator.assets.materialproviders.MaterialProviderAsset;
class="kw">import com.hypixel.hytale.builtin.hytalegenerator.assets.patterns.PatternAsset;
class="kw">import com.hypixel.hytale.builtin.hytalegenerator.assets.positionproviders.PositionProviderAsset;
class="kw">import com.hypixel.hytale.builtin.hytalegenerator.assets.props.PropAsset;
class="kw">import com.hypixel.hytale.builtin.hytalegenerator.assets.tintproviders.TintProviderAsset;
class="kw">import com.hypixel.hytale.builtin.hytalegenerator.assets.vectorproviders.VectorProviderAsset;
class="kw">import com.hypixel.hytale.builtin.hytalegenerator.assets.worldstructures.WorldStructureAsset;
class="kw">import com.hypixel.hytale.builtin.hytalegenerator.density.ConstantValueDensity;
class="kw">import com.hypixel.hytale.builtin.hytalegenerator.density.Density;
class="kw">import com.hypixel.hytale.builtin.hytalegenerator.referencebundle.ReferenceBundle;
class="kw">import com.hypixel.hytale.builtin.hytalegenerator.rng.SeedBox;
class="kw">import com.hypixel.hytale.builtin.hytalegenerator.workerindexer.WorkerIndexer;
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 java.util.ArrayList;
class="kw">import java.util.List;
class="kw">import java.util.Map;
class="kw">import java.util.concurrent.ConcurrentHashMap;
class="kw">import javax.annotation.Nonnull;
class="kw">import javax.annotation.Nullable;
class="kw">public class="kw">abstract class DensityAsset class="kw">implements JsonAssetWithMap<String, DefaultAssetMap<String, DensityAsset>>, Cleanable {
@Nonnull
class="kw">private class="kw">static class="kw">final DensityAsset[] EMPTY_INPUTS = new DensityAsset[0];
@Nonnull
class="kw">public class="kw">static class="kw">final AssetCodecMapCodec<String, DensityAsset> CODEC = new AssetCodecMapCodec<>(
Codec.STRING, (var0, var1) -> var0.id = var1, var0 -> var0.id, (var0, var1) -> var0.data = var1, var0 -> var0.data
);
@Nonnull
class="kw">private class="kw">static class="kw">final Map<String, DensityAsset.Exported> exportedNodes = new ConcurrentHashMap<>();
@Nonnull
class="kw">public class="kw">static class="kw">final Codec<String> CHILD_ASSET_CODEC = new ContainedAssetCodec<>(DensityAsset.class, CODEC);
@Nonnull
class="kw">public class="kw">static class="kw">final Codec<String[]> CHILD_ASSET_CODEC_ARRAY = new ArrayCodec<>(CHILD_ASSET_CODEC, String[]::new);
@Nonnull
class="kw">public class="kw">static class="kw">final BuilderCodec<DensityAsset> ABSTRACT_CODEC = BuilderCodec.abstractBuilder(DensityAsset.class)
.append(new KeyedCodec<>("Inputs", new ArrayCodec<>(CODEC, DensityAsset[]::new), true), (var0, var1) -> var0.inputs = var1, var0 -> var0.inputs)
.add()
.append(new KeyedCodec<>("Skip", Codec.BOOLEAN, false), (var0, var1) -> var0.skip = var1, var0 -> var0.skip)
.add()
.append(new KeyedCodec<>("ExportAs", Codec.STRING, false), (var0, var1) -> var0.exportName = var1, var0 -> var0.exportName)
.add()
.afterDecode(var0 -> {
if (var0.exportName != null && !var0.exportName.isEmpty()) {
if (exportedNodes.containsKey(var0.exportName)) {
LoggerUtil.getLogger().warning("Duplicate export name for asset: " + var0.exportName);
}
boolean var1;
if (var0 class="kw">instanceof ExportedDensityAsset var2) {
var1 = var2.isSingleInstance();
} else {
var1 = false;
}
DensityAsset.Exported var3 = new DensityAsset.Exported(var1, var0);
exportedNodes.put(var0.exportName, var3);
LoggerUtil.getLogger().fine("Registered imported node asset with name '" + var0.exportName + "' with asset id '" + var0.id);
}
})
.build();
class="kw">private String id;
class="kw">private AssetExtraInfo.Data data;
class="kw">private DensityAsset[] inputs = EMPTY_INPUTS;
class="kw">private boolean skip = false;
class="kw">protected String exportName = "";
class="kw">protected DensityAsset() {
}
@Nonnull
class="kw">public class="kw">abstract Density build(@Nonnull DensityAsset.Argument var1);
@Override
class="kw">public void cleanUp() {
this.cleanUpInputs();
}
class="kw">protected void cleanUpInputs() {
for (DensityAsset var4 : this.inputs) {
var4.cleanUp();
}
}
@Nonnull
class="kw">public class="kw">static DensityAsset getFallbackAsset() {
class="kw">return new ConstantDensityAsset();
}
@Nonnull
class="kw">public Density buildWithInputs(@Nonnull DensityAsset.Argument var1, @Nonnull Density[] var2) {
Density var3 = this.build(var1);
var3.setInputs(var2);
class="kw">return var3;
}
class="kw">public DensityAsset[] inputs() {
class="kw">return this.inputs;
}
@Nonnull
class="kw">public List<Density> buildInputs(@Nonnull DensityAsset.Argument var1, boolean var2) {
ArrayList var3 = new ArrayList<>();
for (DensityAsset var7 : this.inputs) {
if (!var2 || !var7.isSkipped()) {
var3.add(var7.build(var1));
}
}
class="kw">return var3;
}
@Nonnull
class="kw">public Density[] buildInputsArray(@Nonnull DensityAsset.Argument var1) {
Density[] var2 = new Density[this.inputs.length];
int var3 = 0;
for (DensityAsset var7 : this.inputs) {
var2[var3++] = var7.build(var1);
}
class="kw">return var2;
}
@Nullable
class="kw">public DensityAsset firstInput() {
class="kw">return this.inputs.length > 0 ? this.inputs[0] : null;
}
@Nullable
class="kw">public DensityAsset secondInput() {
class="kw">return this.inputs.length > 1 ? this.inputs[1] : null;
}
@Nonnull
class="kw">public Density buildFirstInput(@Nonnull DensityAsset.Argument var1) {
class="kw">return this.firstInput() == null ? new ConstantValueDensity(0.0) : this.firstInput().build(var1);
}
@Nonnull
class="kw">public Density buildSecondInput(@Nonnull DensityAsset.Argument var1) {
class="kw">return this.secondInput() == null ? new ConstantValueDensity(0.0) : this.secondInput().build(var1);
}
class="kw">public boolean isSkipped() {
class="kw">return this.skip;
}
class="kw">public class="kw">static DensityAsset.Exported getExportedAsset(@Nonnull String var0) {
class="kw">return exportedNodes.get(var0);
}
class="kw">public String getId() {
class="kw">return this.id;
}
@Nonnull
class="kw">public class="kw">static DensityAsset.Argument from(@Nonnull GraphGeneratorAsset.Argument var0) {
class="kw">return new DensityAsset.Argument(var0.parentSeed, var0.referenceBundle, var0.workerId, var0.threadBridge);
}
@Nonnull
class="kw">public class="kw">static DensityAsset.Argument from(@Nonnull VectorProviderAsset.Argument var0) {
class="kw">return new DensityAsset.Argument(var0.parentSeed, var0.referenceBundle, var0.workerId, var0.threadBridge);
}
@Nonnull
class="kw">public class="kw">static DensityAsset.Argument from(@Nonnull MaterialProviderAsset.Argument var0) {
class="kw">return new DensityAsset.Argument(var0.parentSeed, var0.referenceBundle, var0.workerId, var0.threadBridge);
}
@Nonnull
class="kw">public class="kw">static DensityAsset.Argument from(@Nonnull PropAsset.Argument var0) {
class="kw">return new DensityAsset.Argument(var0.parentSeed, var0.referenceBundle, var0.workerId, var0.threadBridge);
}
@Nonnull
class="kw">public class="kw">static DensityAsset.Argument from(@Nonnull PatternAsset.Argument var0) {
class="kw">return new DensityAsset.Argument(var0.parentSeed, var0.referenceBundle, var0.workerId, var0.threadBridge);
}
@Nonnull
class="kw">public class="kw">static DensityAsset.Argument from(@Nonnull PositionProviderAsset.Argument var0) {
class="kw">return new DensityAsset.Argument(var0.parentSeed, var0.referenceBundle, var0.workerId, var0.threadBridge);
}
@Nonnull
class="kw">public class="kw">static DensityAsset.Argument from(@Nonnull AssignmentsAsset.Argument var0) {
class="kw">return new DensityAsset.Argument(var0.parentSeed, var0.referenceBundle, var0.workerId, var0.threadBridge);
}
@Nonnull
class="kw">public class="kw">static DensityAsset.Argument from(@Nonnull WorldStructureAsset.Argument var0, @Nonnull ReferenceBundle var1) {
class="kw">return new DensityAsset.Argument(var0.parentSeed, var1, var0.workerId, var0.threadBridge);
}
@Nonnull
class="kw">public class="kw">static DensityAsset.Argument from(@Nonnull EnvironmentProviderAsset.Argument var0) {
class="kw">return new DensityAsset.Argument(var0.parentSeed, var0.referenceBundle, var0.workerId, var0.threadBridge);
}
@Nonnull
class="kw">public class="kw">static DensityAsset.Argument from(@Nonnull TintProviderAsset.Argument var0) {
class="kw">return new DensityAsset.Argument(var0.parentSeed, var0.referenceBundle, var0.workerId, var0.threadBridge);
}
class="kw">public class="kw">static class Argument {
@Nonnull
class="kw">public SeedBox parentSeed;
@Nonnull
class="kw">public ReferenceBundle referenceBundle;
@Nonnull
class="kw">public WorkerIndexer.Id workerId;
@Nonnull
class="kw">public ThreadBridge threadBridge;
class="kw">public Argument(@Nonnull SeedBox var1, @Nonnull ReferenceBundle var2, @Nonnull WorkerIndexer.Id var3, @Nonnull ThreadBridge var4) {
this.parentSeed = var1;
this.referenceBundle = var2;
this.workerId = var3;
this.threadBridge = var4;
}
class="kw">public Argument(@Nonnull DensityAsset.Argument var1) {
this.parentSeed = var1.parentSeed;
this.referenceBundle = var1.referenceBundle;
this.workerId = var1.workerId;
this.threadBridge = var1.threadBridge;
}
class="kw">public Argument(@Nonnull GraphGeneratorAsset.Argument var1) {
this.parentSeed = var1.parentSeed;
this.referenceBundle = var1.referenceBundle;
this.workerId = var1.workerId;
this.threadBridge = var1.threadBridge;
}
}
class="kw">public class="kw">static class Exported {
class="kw">public boolean isSingleInstance;
@Nonnull
class="kw">public DensityAsset asset;
@Nonnull
class="kw">public Map<WorkerIndexer.Id, Density> threadInstances;
class="kw">public Exported(boolean var1, @Nonnull DensityAsset var2) {
this.isSingleInstance = var1;
this.asset = var2;
this.threadInstances = new ConcurrentHashMap<>();
}
}
}