Constants interface
Пакет: com.hypixel.hytale.server.worldgen.loader.cave
Файл: com/hypixel/hytale/server/worldgen/loader/cave/CaveNodeChildEntryJsonLoader.java
Поля (17)
| Модификаторы | Тип | Имя |
|---|---|---|
|
String |
ERROR_ENTRY_WEIGHT_SIZE |
|
String |
ERROR_NO_NODES |
|
String |
ERROR_WEIGHTS_ARRAY |
|
String |
KEY_ANCHOR |
|
String |
KEY_CHANCE |
|
String |
KEY_CHILDREN_LIMIT |
|
String |
KEY_NODE |
|
String |
KEY_OFFSET |
|
String |
KEY_PITCH_ADD |
|
String |
KEY_PITCH_SET |
|
String |
KEY_REPEAT |
|
String |
KEY_ROTATION |
|
String |
KEY_SEED |
|
String |
KEY_WEIGHTS |
|
String |
KEY_YAW_ADD |
|
String |
KEY_YAW_MODE |
|
String |
KEY_YAW_SET |
Исходный код
Показать/скрыть
class="kw">package com.hypixel.hytale.server.worldgen.loader.cave;
class="kw">import com.google.gson.JsonArray;
class="kw">import com.google.gson.JsonElement;
class="kw">import com.hypixel.hytale.common.map.IWeightedMap;
class="kw">import com.hypixel.hytale.common.map.WeightedMap;
class="kw">import com.hypixel.hytale.procedurallib.json.DoubleRangeJsonLoader;
class="kw">import com.hypixel.hytale.procedurallib.json.FloatRangeJsonLoader;
class="kw">import com.hypixel.hytale.procedurallib.json.JsonLoader;
class="kw">import com.hypixel.hytale.procedurallib.json.SeedString;
class="kw">import com.hypixel.hytale.procedurallib.supplier.DoubleRange;
class="kw">import com.hypixel.hytale.procedurallib.supplier.IDoubleRange;
class="kw">import com.hypixel.hytale.procedurallib.supplier.IFloatRange;
class="kw">import com.hypixel.hytale.server.core.prefab.PrefabRotation;
class="kw">import com.hypixel.hytale.server.worldgen.SeedStringResource;
class="kw">import com.hypixel.hytale.server.worldgen.cave.CaveNodeType;
class="kw">import com.hypixel.hytale.server.worldgen.cave.CaveYawMode;
class="kw">import java.nio.file.Path;
class="kw">import javax.annotation.Nonnull;
class="kw">import javax.annotation.Nullable;
class="kw">import org.joml.Vector3d;
class="kw">public class CaveNodeChildEntryJsonLoader class="kw">extends JsonLoader<SeedStringResource, CaveNodeType.CaveNodeChildEntry> {
class="kw">protected class="kw">final CaveNodeTypeStorage storage;
class="kw">public CaveNodeChildEntryJsonLoader(@Nonnull SeedString<SeedStringResource> var1, Path var2, JsonElement var3, CaveNodeTypeStorage var4) {
super(var1.append(".CaveNodeChildEntry"), var2, var3);
this.storage = var4;
}
@Nonnull
class="kw">public CaveNodeType.CaveNodeChildEntry load() {
class="kw">return new CaveNodeType.CaveNodeChildEntry(
this.loadNodes(),
this.loadAnchor(),
this.loadOffset(),
this.loadRotations(),
this.loadChildrenLimit(),
this.loadRepeat(),
this.loadPitchModifier(),
this.loadYawModifier(),
this.loadChance(),
this.loadYawMode()
);
}
@Nonnull
class="kw">protected IWeightedMap<CaveNodeType> loadNodes() {
WeightedMap.Builder var1 = WeightedMap.builder(CaveNodeType.EMPTY_ARRAY);
JsonElement var2 = this.get("Node");
if (var2.isJsonArray()) {
JsonArray var3 = var2.getAsJsonArray();
JsonArray var4;
if (this.has("Weights")) {
JsonElement var5 = this.get("Weights");
if (!var5.isJsonArray()) {
throw new IllegalArgumentException("'Weights' must be an array if set");
}
var4 = var5.getAsJsonArray();
if (var4.size() != var3.size()) {
throw new IllegalArgumentException("Weight array size is different from node name array.");
}
} else {
var4 = null;
}
for (int var11 = 0; var11 < var3.size(); var11++) {
JsonElement var6 = this.getOrLoad(var3.get(var11));
CaveNodeType var7 = this.loadCaveNodeType(var11, var6);
double var8 = var4 != null ? var4.get(var11).getAsDouble() : 1.0;
var1.put(var7, var8);
}
} else if (var2.isJsonObject() || var2.isJsonPrimitive()) {
CaveNodeType var10 = this.loadCaveNodeType(0, var2);
var1.put(var10, 1.0);
}
if (var1.size() <= 0) {
throw new IllegalArgumentException("There are no valid nodes in this child entry!");
} else {
class="kw">return var1.build();
}
}
@Nonnull
class="kw">protected CaveNodeType loadCaveNodeType(int var1, @Nonnull JsonElement var2) {
if (var2.isJsonObject()) {
String var4 = this.seed.get().getUniqueName("ChildCaveType#");
class="kw">return this.storage.loadCaveNodeType(var4, var2.getAsJsonObject());
} else if (var2.isJsonPrimitive() && var2.getAsJsonPrimitive().isString()) {
String var3 = var2.getAsString();
class="kw">return this.storage.getOrLoadCaveNodeType(var3);
} else {
throw error("Invalid cave node type entry: %d", var1);
}
}
@Nonnull
class="kw">protected Vector3d loadAnchor() {
Vector3d var1 = new Vector3d();
if (this.has("Anchor")) {
var1 = this.loadVector(new Vector3d(var1), this.get("Anchor"));
}
class="kw">return var1;
}
@Nonnull
class="kw">protected Vector3d loadOffset() {
Vector3d var1 = new Vector3d();
if (this.has("Offset")) {
var1 = this.loadVector(new Vector3d(var1), this.get("Offset"));
}
class="kw">return var1;
}
@Nonnull
class="kw">protected PrefabRotation[] loadRotations() {
PrefabRotation[] var1 = new PrefabRotation[]{PrefabRotation.ROTATION_0};
if (this.has("Rotation")) {
JsonElement var2 = this.get("Rotation");
if (var2.isJsonPrimitive()) {
var1 = new PrefabRotation[]{PrefabRotation.valueOfExtended(var2.getAsString())};
} else if (var2.isJsonArray()) {
JsonArray var3 = var2.getAsJsonArray();
var1 = new PrefabRotation[var3.size()];
for (int var4 = 0; var4 < var1.length; var4++) {
var1[var4] = PrefabRotation.valueOfExtended(var3.get(var4).getAsString());
}
}
}
class="kw">return var1;
}
@Nullable
class="kw">protected IDoubleRange loadChildrenLimit() {
class="kw">return this.has("ChildrenLimit") ? new DoubleRangeJsonLoader<>(this.seed, this.dataFolder, this.get("ChildrenLimit"), 0.0).load() : null;
}
@Nonnull
class="kw">protected IDoubleRange loadRepeat() {
IDoubleRange var1 = DoubleRange.ONE;
if (this.has("Repeat")) {
var1 = new DoubleRangeJsonLoader<>(this.seed, this.dataFolder, this.get("Repeat"), 0.0).load();
}
class="kw">return var1;
}
@Nonnull
class="kw">protected CaveNodeType.CaveNodeChildEntry.OrientationModifier loadYawModifier() {
IFloatRange var1 = this.loadYawAdd();
if (var1 != null) {
class="kw">return (var1x, var2x) -> var1x + var1.getValue(var2x);
}
IFloatRange var2 = this.loadYawSet();
class="kw">return var2 != null ? (var1x, var2x) -> var2.getValue(var2x) : (var0, var1x) -> var0;
}
@Nonnull
class="kw">protected CaveNodeType.CaveNodeChildEntry.OrientationModifier loadPitchModifier() {
IFloatRange var1 = this.loadPitchAdd();
if (var1 != null) {
class="kw">return (var1x, var2x) -> var1x + var1.getValue(var2x);
}
IFloatRange var2 = this.loadPitchSet();
class="kw">return var2 != null ? (var1x, var2x) -> var2.getValue(var2x) : (var0, var1x) -> var0;
}
@Nullable
class="kw">protected IFloatRange loadYawAdd() {
IFloatRange var1 = null;
if (this.has("YawAdd")) {
var1 = new FloatRangeJsonLoader<>(this.seed, this.dataFolder, this.get("YawAdd"), 0.0F, var0 -> var0 * (float) (Math.PI / 180.0)).load();
}
class="kw">return var1;
}
@Nullable
class="kw">protected IFloatRange loadPitchAdd() {
IFloatRange var1 = null;
if (this.has("PitchAdd")) {
var1 = new FloatRangeJsonLoader<>(this.seed, this.dataFolder, this.get("PitchAdd"), 0.0F, var0 -> var0 * (float) (Math.PI / 180.0)).load();
}
class="kw">return var1;
}
@Nullable
class="kw">protected IFloatRange loadYawSet() {
IFloatRange var1 = null;
if (this.has("YawSet")) {
var1 = new FloatRangeJsonLoader<>(this.seed, this.dataFolder, this.get("YawSet"), 0.0F, var0 -> var0 * (float) (Math.PI / 180.0)).load();
}
class="kw">return var1;
}
@Nullable
class="kw">protected IFloatRange loadPitchSet() {
IFloatRange var1 = null;
if (this.has("PitchSet")) {
var1 = new FloatRangeJsonLoader<>(this.seed, this.dataFolder, this.get("PitchSet"), 0.0F, var0 -> var0 * (float) (Math.PI / 180.0)).load();
}
class="kw">return var1;
}
class="kw">protected double loadChance() {
double var1 = 1.0;
if (this.has("Chance")) {
var1 = this.get("Chance").getAsDouble();
}
class="kw">return var1;
}
@Nonnull
class="kw">protected CaveYawMode loadYawMode() {
CaveYawMode var1 = CaveYawMode.NODE;
if (this.has("YawMode")) {
var1 = CaveYawMode.valueOf(this.get("YawMode").getAsString());
}
class="kw">return var1;
}
@Nonnull
class="kw">protected Vector3d loadVector(@Nonnull Vector3d var1, @Nonnull JsonElement var2) {
JsonArray var3 = var2.getAsJsonArray();
var1.x = var3.get(0).getAsDouble();
var1.y = var3.get(1).getAsDouble();
var1.z = var3.get(2).getAsDouble();
class="kw">return var1;
}
class="kw">public class="kw">interface Constants {
String KEY_NODE = "Node";
String KEY_SEED = "Seed";
String KEY_WEIGHTS = "Weights";
String KEY_ANCHOR = "Anchor";
String KEY_OFFSET = "Offset";
String KEY_ROTATION = "Rotation";
String KEY_CHILDREN_LIMIT = "ChildrenLimit";
String KEY_REPEAT = "Repeat";
String KEY_PITCH_ADD = "PitchAdd";
String KEY_PITCH_SET = "PitchSet";
String KEY_YAW_ADD = "YawAdd";
String KEY_YAW_SET = "YawSet";
String KEY_CHANCE = "Chance";
String KEY_YAW_MODE = "YawMode";
String ERROR_WEIGHTS_ARRAY = "'Weights' must be an array if set";
String ERROR_ENTRY_WEIGHT_SIZE = "Weight array size is different from node name array.";
String ERROR_NO_NODES = "There are no valid nodes in this child entry!";
}
}