TintContainerEntryJsonLoader class
Пакет: com.hypixel.hytale.server.worldgen.loader.container
Файл: com/hypixel/hytale/server/worldgen/loader/container/TintContainerJsonLoader.java
extends: JsonLoader<SeedStringResource, TintContainer.TintContainerEntry>
Поля (8)
| Модификаторы | Тип | Имя |
|---|---|---|
|
IWeightedMap |
var1 |
|
WeightedMap.Builder |
var1 |
|
JsonElement |
var2 |
|
JsonArray |
var3 |
|
JsonArray |
var4 |
|
int |
var6 |
|
double |
var7 |
|
int |
var9 |
Методы (8)
| Модификаторы | Возврат | Сигнатура |
|---|---|---|
abstract |
throw new |
IllegalArgumentExceptionthrow new IllegalArgumentException("Could not find colors. Keyword: Colors") |
abstract |
throw new |
IllegalArgumentExceptionthrow new IllegalArgumentException("Tint weights array size does not fit color array size.") |
abstract |
throw new |
IllegalArgumentExceptionthrow new IllegalArgumentException("Could not find value noise. Keyword: Noise") |
abstract |
|
for for(int var5 = 0; var5 < var3.size() |
|
public TintContainer.TintContainerEntry |
loadpublic TintContainer.TintContainerEntry load() |
|
protected IWeightedMap<Integer> |
loadColorMappingprotected IWeightedMap<Integer> loadColorMapping() |
|
protected ICoordinateCondition |
loadMapConditionprotected ICoordinateCondition loadMapCondition() |
|
protected NoiseProperty |
loadValueNoiseprotected NoiseProperty loadValueNoise() |
Исходный код
Показать/скрыть
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.worldgen.SeedStringResource;
class="kw">import com.hypixel.hytale.server.worldgen.container.TintContainer;
class="kw">import com.hypixel.hytale.server.worldgen.loader.context.BiomeFileContext;
class="kw">import com.hypixel.hytale.server.worldgen.loader.util.ColorUtil;
class="kw">import com.hypixel.hytale.server.worldgen.util.ConstantNoiseProperty;
class="kw">import com.hypixel.hytale.server.worldgen.util.ListPool;
class="kw">import it.unimi.dsi.fastutil.objects.ObjectArrayList;
class="kw">import java.nio.file.Path;
class="kw">import java.util.List;
class="kw">import javax.annotation.Nonnull;
class="kw">import javax.annotation.Nullable;
class="kw">public class TintContainerJsonLoader class="kw">extends JsonLoader<SeedStringResource, TintContainer> {
@Nonnull
class="kw">private class="kw">final BiomeFileContext biomeContext;
class="kw">public TintContainerJsonLoader(@Nonnull SeedString<SeedStringResource> var1, Path var2, JsonElement var3, @Nonnull BiomeFileContext var4) {
super(var1.append(".TintContainer"), var2, var3);
this.biomeContext = var4;
}
@Nonnull
class="kw">public TintContainer load() {
class="kw">return new TintContainer(this.loadDefault(), this.loadEntries());
}
@Nonnull
class="kw">protected TintContainer.DefaultTintContainerEntry 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 TintContainerJsonLoader.DefaultTintContainerEntryJsonLoader(this.seed, this.dataFolder, var1).load();
}
@Nonnull
class="kw">protected List<TintContainer.TintContainerEntry> loadEntries() {
JsonArray var1 = this.mustGetArray("Entries", EMPTY_ARRAY);
try (ListPool.Resource var2 = TintContainer.ENTRY_POOL.acquire(var1.size())) {
for (int var3 = 0; var3 < var1.size(); var3++) {
try {
var2.add(
new TintContainerJsonLoader.TintContainerEntryJsonLoader(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.BiomeTints.class,
new ModifyEvents.BiomeTints(
this.seed,
this.biomeContext,
var2,
var2x -> new TintContainerJsonLoader.TintContainerEntryJsonLoader(var8.next(), this.dataFolder, this.loadFile(var2x)).load()
)
);
class="kw">return new ObjectArrayList(var2);
}
}
class="kw">public class="kw">interface Constants {
String KEY_DEFAULT = "Default";
String KEY_ENTRIES = "Entries";
String KEY_COLORS = "Colors";
String KEY_WEIGHTS = "Weights";
String KEY_ENTRY_NOISE = "Noise";
String KEY_NOISE_MASK = "NoiseMask";
String ERROR_COLORS_NOT_FOUND = "Could not find colors. Keyword: Colors";
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";
int DEFAULT_TINT_COLOR = 16711680;
}
class="kw">protected class="kw">static class DefaultTintContainerEntryJsonLoader class="kw">extends TintContainerJsonLoader.TintContainerEntryJsonLoader {
class="kw">public DefaultTintContainerEntryJsonLoader(@Nonnull SeedString<SeedStringResource> var1, Path var2, JsonElement var3) {
super(var1.append(".DefaultTintContainerEntry"), var2, var3);
}
@Nonnull
class="kw">public TintContainer.DefaultTintContainerEntry load() {
IWeightedMap var1;
if (this.json == null || this.json.isJsonNull()) {
WeightedMap.Builder var3 = WeightedMap.builder(ArrayUtil.EMPTY_INTEGER_ARRAY);
var3.put(16711680, 1.0);
var1 = var3.build();
} else if (this.json.isJsonPrimitive()) {
WeightedMap.Builder var2 = WeightedMap.builder(ArrayUtil.EMPTY_INTEGER_ARRAY);
var2.put(ColorUtil.hexString(this.json.getAsString()), 1.0);
var1 = var2.build();
} else {
var1 = this.loadColorMapping();
}
class="kw">return new TintContainer.DefaultTintContainerEntry(var1, var1.size() > 1 ? this.loadValueNoise() : ConstantNoiseProperty.DEFAULT_ZERO);
}
}
class="kw">protected class="kw">static class TintContainerEntryJsonLoader class="kw">extends JsonLoader<SeedStringResource, TintContainer.TintContainerEntry> {
class="kw">public TintContainerEntryJsonLoader(@Nonnull SeedString<SeedStringResource> var1, Path var2, JsonElement var3) {
super(var1.append(".TintContainerEntry"), var2, var3);
}
@Nonnull
class="kw">public TintContainer.TintContainerEntry load() {
IWeightedMap var1 = this.loadColorMapping();
class="kw">return new TintContainer.TintContainerEntry(
var1, var1.size() > 1 ? this.loadValueNoise() : ConstantNoiseProperty.DEFAULT_ZERO, this.loadMapCondition()
);
}
@Nonnull
class="kw">protected IWeightedMap<Integer> loadColorMapping() {
WeightedMap.Builder var1 = WeightedMap.builder(ArrayUtil.EMPTY_INTEGER_ARRAY);
if (this.json == null || this.json.isJsonNull()) {
var1.put(16711680, 1.0);
} else if (this.json.isJsonObject()) {
if (!this.has("Colors")) {
throw new IllegalArgumentException("Could not find colors. Keyword: Colors");
}
JsonElement var2 = this.get("Colors");
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++) {
int var6 = ColorUtil.hexString(var3.get(var5).getAsString());
double var7 = var4 == null ? 1.0 : var4.get(var5).getAsDouble();
var1.put(var6, var7);
}
} else {
int var9 = ColorUtil.hexString(var2.getAsString());
var1.put(var9, 1.0);
}
} else {
var1.put(ColorUtil.hexString(this.json.getAsString()), 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();
}
}
}