EnvironmentContainerJsonLoader class
Пакет: com.hypixel.hytale.server.worldgen.loader.container
Файл: com/hypixel/hytale/server/worldgen/loader/container/EnvironmentContainerJsonLoader.java
extends: JsonLoader<SeedStringResource, EnvironmentContainer>
Поля (38)
| Модификаторы | Тип | Имя |
|---|---|---|
|
String |
ERROR_LOADING_ENTRY |
|
String |
ERROR_NAMES_NOT_FOUND |
|
String |
ERROR_NO_VALUE_NOISE |
|
String |
ERROR_WEIGHT_SIZE |
|
String |
KEY_DEFAULT |
|
String |
KEY_ENTRIES |
|
String |
KEY_ENTRY_NOISE |
|
String |
KEY_NAMES |
|
String |
KEY_NOISE_MASK |
|
String |
KEY_WEIGHTS |
|
String |
SEED_INDEX_SUFFIX |
|
JsonElement |
var1 |
|
|
var1 |
|
|
var1 |
|
|
var1 |
|
|
var1 |
|
JsonArray |
var1 |
|
IWeightedMap |
var1 |
|
|
var1 |
|
|
var1 |
|
|
var1 |
|
IWeightedMap |
var1 |
|
WeightedMap.Builder |
var1 |
|
String |
var10 |
|
String |
var11 |
|
int |
var12 |
|
int |
var13 |
|
WeightedMap.Builder |
var2 |
|
JsonElement |
var2 |
|
String |
var3 |
|
JsonArray |
var3 |
|
int |
var4 |
|
JsonArray |
var4 |
|
WeightedMap.Builder |
var5 |
|
String |
var6 |
|
int |
var7 |
|
ModifyEvent.SeedGenerator |
var8 |
|
double |
var8 |
Методы (21)
| Модификаторы | Возврат | Сигнатура |
|---|---|---|
|
public |
DefaultEnvironmentContainerEntryLoaderpublic DefaultEnvironmentContainerEntryLoader(@Nonnull SeedString<SeedStringResource> var1, Path var2, JsonElement var3) |
|
public |
EnvironmentContainerEntryJsonLoaderpublic EnvironmentContainerEntryJsonLoader(@Nonnull SeedString<SeedStringResource> var1, Path var2, JsonElement var3) |
abstract |
throw new |
IllegalArgumentExceptionthrow new IllegalArgumentException("Unknown key! " + var3) |
abstract |
throw new |
IllegalArgumentExceptionthrow new IllegalArgumentException("Could not find names. Keyword: Names") |
abstract |
throw new |
IllegalArgumentExceptionthrow new IllegalArgumentException("Tint weights array size does not fit color array size.") |
abstract |
throw new |
IllegalArgumentExceptionthrow new IllegalArgumentException("Unknown key! " + var6) |
abstract |
throw new |
IllegalArgumentExceptionthrow new IllegalArgumentException("Unknown key! " + var11) |
abstract |
throw new |
IllegalArgumentExceptionthrow new IllegalArgumentException("Unknown key! " + var10) |
abstract |
throw new |
IllegalArgumentExceptionthrow new IllegalArgumentException("Could not find value noise. Keyword: Noise") |
abstract |
|
for for(int var3 = 0; var3 < var1.size() |
abstract |
|
for for(int var5 = 0; var5 < var3.size() |
|
|
if if(var4 == Integer.MIN_VALUE) |
|
|
if if(var7 == Integer.MIN_VALUE) |
|
|
if if(var13 == Integer.MIN_VALUE) |
|
|
if if(var12 == Integer.MIN_VALUE) |
|
public EnvironmentContainer.DefaultEnvironmentContainerEntry |
loadpublic EnvironmentContainer.DefaultEnvironmentContainerEntry load() |
|
public EnvironmentContainer.EnvironmentContainerEntry |
loadpublic EnvironmentContainer.EnvironmentContainerEntry load() |
|
protected IWeightedMap<Integer> |
loadIdMappingprotected IWeightedMap<Integer> loadIdMapping() |
|
protected ICoordinateCondition |
loadMapConditionprotected ICoordinateCondition loadMapCondition() |
|
protected NoiseProperty |
loadValueNoiseprotected NoiseProperty loadValueNoise() |
abstract |
|
super super(var1, var2, var3) |
Исходный код
Показать/скрыть
class="kw">package com.hypixel.hytale.server.worldgen.loader.container;
class="kw">import com.google.gson.JsonArray;
class="kw">import com.google.gson.JsonElement;
class="kw">import com.hypixel.hytale.builtin.worldgen.modifier.event.ModifyEvent;
class="kw">import com.hypixel.hytale.builtin.worldgen.modifier.event.ModifyEvents;
class="kw">import com.hypixel.hytale.common.map.IWeightedMap;
class="kw">import com.hypixel.hytale.common.map.WeightedMap;
class="kw">import com.hypixel.hytale.common.util.ArrayUtil;
class="kw">import com.hypixel.hytale.procedurallib.condition.ICoordinateCondition;
class="kw">import com.hypixel.hytale.procedurallib.json.JsonLoader;
class="kw">import com.hypixel.hytale.procedurallib.json.NoiseMaskConditionJsonLoader;
class="kw">import com.hypixel.hytale.procedurallib.json.NoisePropertyJsonLoader;
class="kw">import com.hypixel.hytale.procedurallib.json.SeedString;
class="kw">import com.hypixel.hytale.procedurallib.property.NoiseProperty;
class="kw">import com.hypixel.hytale.server.core.asset.type.environment.config.Environment;
class="kw">import com.hypixel.hytale.server.worldgen.SeedStringResource;
class="kw">import com.hypixel.hytale.server.worldgen.container.EnvironmentContainer;
class="kw">import com.hypixel.hytale.server.worldgen.loader.context.BiomeFileContext;
class="kw">import com.hypixel.hytale.server.worldgen.util.ConstantNoiseProperty;
class="kw">import com.hypixel.hytale.server.worldgen.util.ListPool;
class="kw">import java.nio.file.Path;
class="kw">import javax.annotation.Nonnull;
class="kw">import javax.annotation.Nullable;
class="kw">public class EnvironmentContainerJsonLoader class="kw">extends JsonLoader<SeedStringResource, EnvironmentContainer> {
@Nonnull
class="kw">protected class="kw">final BiomeFileContext biomeContext;
class="kw">public EnvironmentContainerJsonLoader(SeedString<SeedStringResource> var1, Path var2, JsonElement var3, @Nonnull BiomeFileContext var4) {
super(var1, var2, var3);
this.biomeContext = var4;
}
@Nonnull
class="kw">public EnvironmentContainer load() {
class="kw">return new EnvironmentContainer(this.loadDefault(), this.loadEntries());
}
@Nonnull
class="kw">protected EnvironmentContainer.DefaultEnvironmentContainerEntry loadDefault() {
JsonElement var1;
if (this.json == null || this.json.isJsonNull() || this.json.isJsonArray()) {
var1 = null;
} else if (this.json.isJsonObject() && this.has("Default")) {
var1 = this.get("Default");
} else if (!this.json.isJsonPrimitive() && !this.json.isJsonObject()) {
var1 = null;
} else {
var1 = this.json;
}
class="kw">return new EnvironmentContainerJsonLoader.DefaultEnvironmentContainerEntryLoader(this.seed, this.dataFolder, var1).load();
}
@Nonnull
class="kw">protected EnvironmentContainer.EnvironmentContainerEntry[] loadEntries() {
JsonArray var1 = this.mustGetArray("Entries", EMPTY_ARRAY);
try (ListPool.Resource var2 = EnvironmentContainer.ENTRY_POOL.acquire(var1.size())) {
for (int var3 = 0; var3 < var1.size(); var3++) {
try {
var2.add(
new EnvironmentContainerJsonLoader.EnvironmentContainerEntryJsonLoader(
this.seed.append(String.format("-%s", var3)), this.dataFolder, var1.get(var3)
)
.load()
);
} catch (Throwable var6) {
throw new Error(String.format("Failed to load TintContainerEntry #%s", var3), var6);
}
}
ModifyEvent.SeedGenerator var8 = new ModifyEvent.SeedGenerator<>(this.seed);
ModifyEvent.dispatch(
ModifyEvents.BiomeEnvironments.class,
new ModifyEvents.BiomeEnvironments(
this.seed,
this.biomeContext,
var2,
var2x -> new EnvironmentContainerJsonLoader.EnvironmentContainerEntryJsonLoader(var8.next(), this.dataFolder, this.loadFile(var2x)).load()
)
);
class="kw">return var2.toArray();
}
}
class="kw">public class="kw">interface Constants {
String KEY_DEFAULT = "Default";
String KEY_ENTRIES = "Entries";
String KEY_NAMES = "Names";
String KEY_WEIGHTS = "Weights";
String KEY_ENTRY_NOISE = "Noise";
String KEY_NOISE_MASK = "NoiseMask";
String ERROR_NAMES_NOT_FOUND = "Could not find names. Keyword: Names";
String ERROR_WEIGHT_SIZE = "Tint weights array size does not fit color array size.";
String ERROR_NO_VALUE_NOISE = "Could not find value noise. Keyword: Noise";
String ERROR_LOADING_ENTRY = "Failed to load TintContainerEntry #%s";
String SEED_INDEX_SUFFIX = "-%s";
}
class="kw">protected class="kw">static class DefaultEnvironmentContainerEntryLoader class="kw">extends EnvironmentContainerJsonLoader.EnvironmentContainerEntryJsonLoader {
class="kw">public DefaultEnvironmentContainerEntryLoader(@Nonnull SeedString<SeedStringResource> var1, Path var2, JsonElement var3) {
super(var1, var2, var3);
}
@Nonnull
class="kw">public EnvironmentContainer.DefaultEnvironmentContainerEntry load() {
IWeightedMap var1;
if (this.json == null || this.json.isJsonNull()) {
WeightedMap.Builder var5 = WeightedMap.builder(ArrayUtil.EMPTY_INTEGER_ARRAY);
var5.put(0, 1.0);
var1 = var5.build();
} else if (this.json.isJsonPrimitive()) {
WeightedMap.Builder var2 = WeightedMap.builder(ArrayUtil.EMPTY_INTEGER_ARRAY);
String var3 = this.json.getAsString();
int var4 = Environment.getAssetMap().getIndex(var3);
if (var4 == Integer.MIN_VALUE) {
throw new IllegalArgumentException("Unknown key! " + var3);
}
var2.put(var4, 1.0);
var1 = var2.build();
} else {
var1 = this.loadIdMapping();
}
class="kw">return new EnvironmentContainer.DefaultEnvironmentContainerEntry(var1, var1.size() > 1 ? this.loadValueNoise() : ConstantNoiseProperty.DEFAULT_ZERO);
}
}
class="kw">protected class="kw">static class EnvironmentContainerEntryJsonLoader class="kw">extends JsonLoader<SeedStringResource, EnvironmentContainer.EnvironmentContainerEntry> {
class="kw">public EnvironmentContainerEntryJsonLoader(@Nonnull SeedString<SeedStringResource> var1, Path var2, JsonElement var3) {
super(var1.append(".EnvironmentContainer"), var2, var3);
}
@Nonnull
class="kw">public EnvironmentContainer.EnvironmentContainerEntry load() {
IWeightedMap var1 = this.loadIdMapping();
class="kw">return new EnvironmentContainer.EnvironmentContainerEntry(
var1, var1.size() > 1 ? this.loadValueNoise() : ConstantNoiseProperty.DEFAULT_ZERO, this.loadMapCondition()
);
}
@Nonnull
class="kw">protected IWeightedMap<Integer> loadIdMapping() {
WeightedMap.Builder var1 = WeightedMap.builder(ArrayUtil.EMPTY_INTEGER_ARRAY);
if (this.json == null || this.json.isJsonNull()) {
var1.put(0, 1.0);
} else if (this.json.isJsonObject()) {
if (!this.has("Names")) {
throw new IllegalArgumentException("Could not find names. Keyword: Names");
}
JsonElement var2 = this.get("Names");
if (var2.isJsonArray()) {
JsonArray var3 = var2.getAsJsonArray();
JsonArray var4 = this.has("Weights") ? this.get("Weights").getAsJsonArray() : null;
if (var4 != null && var4.size() != var3.size()) {
throw new IllegalArgumentException("Tint weights array size does not fit color array size.");
}
for (int var5 = 0; var5 < var3.size(); var5++) {
String var6 = var3.get(var5).getAsString();
int var7 = Environment.getAssetMap().getIndex(var6);
if (var7 == Integer.MIN_VALUE) {
throw new IllegalArgumentException("Unknown key! " + var6);
}
double var8 = var4 == null ? 1.0 : var4.get(var5).getAsDouble();
var1.put(var7, var8);
}
} else {
String var11 = var2.getAsString();
int var13 = Environment.getAssetMap().getIndex(var11);
if (var13 == Integer.MIN_VALUE) {
throw new IllegalArgumentException("Unknown key! " + var11);
}
var1.put(var13, 1.0);
}
} else {
String var10 = this.json.getAsString();
int var12 = Environment.getAssetMap().getIndex(var10);
if (var12 == Integer.MIN_VALUE) {
throw new IllegalArgumentException("Unknown key! " + var10);
}
var1.put(var12, 1.0);
}
class="kw">return var1.build();
}
@Nullable
class="kw">protected NoiseProperty loadValueNoise() {
if (!this.has("Noise")) {
throw new IllegalArgumentException("Could not find value noise. Keyword: Noise");
} else {
class="kw">return new NoisePropertyJsonLoader<>(this.seed, this.dataFolder, this.get("Noise")).load();
}
}
@Nonnull
class="kw">protected ICoordinateCondition loadMapCondition() {
class="kw">return new NoiseMaskConditionJsonLoader<>(this.seed, this.dataFolder, this.get("NoiseMask")).load();
}
}
}