ValidationUtil class
Пакет: com.hypixel.hytale.server.worldgen.chunk
Файл: com/hypixel/hytale/server/worldgen/chunk/ValidationUtil.java
Поля (20)
| Модификаторы | Тип | Имя |
|---|---|---|
|
|
continue |
|
Deque |
var1 |
|
CaveNodeType.CaveNodeChildEntry[] |
var15 |
|
boolean |
var2 |
|
boolean |
var2 |
|
boolean |
var2 |
|
boolean |
var2 |
|
|
var2 |
|
PrefabContainer.PrefabContainerEntry[] |
var3 |
|
boolean |
var3 |
|
WorldGenPrefabSupplier[] |
var3 |
|
WorldGenPrefabSupplier[] |
var3 |
|
|
var3 |
|
CavePrefabContainer.CavePrefabEntry[] |
var4 |
|
boolean |
var4 |
|
|
var4 |
|
IPrefabBuffer |
var5 |
|
|
var5 |
|
CaveNodeType[] |
var6 |
|
Set |
var7 |
Методы (12)
| Модификаторы | Возврат | Сигнатура |
|---|---|---|
static |
boolean |
arePrefabsInvalidboolean arePrefabsInvalid(@Nonnull IWeightedMap<WorldGenPrefabSupplier> var0, @Nonnull Deque<String> var1) |
|
|
for for(int var4 = 0; var4 < var3.length; var4++) |
|
|
for for(int var5 = 0; var5 < var4.length; var5++) |
|
|
for for(int var16 = 0; var16 < var15.length; var16++) |
|
|
for for(int var7 = 0; var7 < var6.length; var7++) |
|
|
for for(int var4 = 0; var4 < var3.length; var4++) |
|
|
for for(WorldGenPrefabSupplier var8 : var3) |
static |
boolean |
isBiomeInvalidboolean isBiomeInvalid(@Nonnull Biome var0, @Nonnull Deque<String> var1) |
static |
boolean |
isCaveNodeInvalidboolean isCaveNodeInvalid(@Nonnull CaveNodeType var0, @Nonnull Set<String> var1, @Nonnull Deque<String> var2) |
static |
boolean |
isChildPrefabInvalidboolean isChildPrefabInvalid(@Nonnull PrefabBuffer.ChildPrefab var0, @Nonnull WorldGenPrefabLoader var1, @Nonnull Deque<String> var2) |
static |
boolean |
isInvalidboolean isInvalid(@Nonnull ZonePatternProvider var0, @Nonnull Executor var1) |
static |
boolean |
isZoneInvalidboolean isZoneInvalid(@Nonnull Zone var0, @Nonnull Deque<String> var1) |
Исходный код
Показать/скрыть
class="kw">package com.hypixel.hytale.server.worldgen.chunk;
class="kw">import com.hypixel.hytale.common.map.IWeightedMap;
class="kw">import com.hypixel.hytale.logger.HytaleLogger;
class="kw">import com.hypixel.hytale.server.core.prefab.selection.buffer.impl.IPrefabBuffer;
class="kw">import com.hypixel.hytale.server.core.prefab.selection.buffer.impl.PrefabBuffer;
class="kw">import com.hypixel.hytale.server.worldgen.biome.Biome;
class="kw">import com.hypixel.hytale.server.worldgen.cave.CaveNodeType;
class="kw">import com.hypixel.hytale.server.worldgen.cave.CaveType;
class="kw">import com.hypixel.hytale.server.worldgen.cave.prefab.CavePrefabContainer;
class="kw">import com.hypixel.hytale.server.worldgen.container.PrefabContainer;
class="kw">import com.hypixel.hytale.server.worldgen.loader.WorldGenPrefabLoader;
class="kw">import com.hypixel.hytale.server.worldgen.loader.WorldGenPrefabSupplier;
class="kw">import com.hypixel.hytale.server.worldgen.prefab.unique.UniquePrefabGenerator;
class="kw">import com.hypixel.hytale.server.worldgen.util.LogUtil;
class="kw">import com.hypixel.hytale.server.worldgen.zone.Zone;
class="kw">import com.hypixel.hytale.server.worldgen.zone.ZonePatternProvider;
class="kw">import java.util.ArrayDeque;
class="kw">import java.util.Deque;
class="kw">import java.util.HashSet;
class="kw">import java.util.Set;
class="kw">import java.util.concurrent.CompletableFuture;
class="kw">import java.util.concurrent.Executor;
class="kw">import java.util.logging.Level;
class="kw">import javax.annotation.Nonnull;
class="kw">public class ValidationUtil {
class="kw">public ValidationUtil() {
}
class="kw">public class="kw">static boolean isInvalid(@Nonnull ZonePatternProvider var0, @Nonnull Executor var1) {
class="kw">return CompletableFuture.<Boolean>supplyAsync(() -> {
Deque var1 = new ArrayDeque<>();
boolean var2 = false;
for (Zone var6 : var0.getZones()) {
var1.push("Zone[\"" + var6.name() + "\"]");
try {
var2 |= isZoneInvalid(var6, var1);
} class="kw">finally {
var1.pop();
}
}
class="kw">return var2;
}, var1).join();
}
class="kw">private class="kw">static boolean isZoneInvalid(@Nonnull Zone var0, @Nonnull Deque<String> var1) {
boolean var2 = false;
for (UniquePrefabGenerator var6 : var0.uniquePrefabContainer().getGenerators()) {
var1.push("UniquePrefabs[\"" + var6.getName() + "\"]");
try {
var2 |= arePrefabsInvalid(var6.getPrefabs(), var1);
} class="kw">finally {
var1.pop();
}
}
for (Biome var28 : var0.biomePatternGenerator().getBiomes()) {
var1.push("Biome[\"" + var28.getName() + "\"]");
try {
var2 |= isBiomeInvalid(var28, var1);
} class="kw">finally {
var1.pop();
}
}
if (var0.caveGenerator() != null) {
for (CaveType var29 : var0.caveGenerator().getCaveTypes()) {
var1.push("Cave[\"" + var29.getName() + "\"].Entry");
try {
Set var7 = new HashSet<>();
var2 |= isCaveNodeInvalid(var29.getEntryNode(), var7, var1);
} class="kw">finally {
var1.pop();
}
}
}
class="kw">return var2;
}
class="kw">private class="kw">static boolean isBiomeInvalid(@Nonnull Biome var0, @Nonnull Deque<String> var1) {
boolean var2 = false;
if (var0.getPrefabContainer() != null) {
PrefabContainer.PrefabContainerEntry[] var3 = var0.getPrefabContainer().getEntries();
for (int var4 = 0; var4 < var3.length; var4++) {
var1.push("Prefabs[" + var4 + "]");
try {
var2 |= arePrefabsInvalid(var3[var4].getPrefabs(), var1);
} class="kw">finally {
var1.pop();
}
}
}
class="kw">return var2;
}
class="kw">private class="kw">static boolean isCaveNodeInvalid(@Nonnull CaveNodeType var0, @Nonnull Set<String> var1, @Nonnull Deque<String> var2) {
if (!var1.add(var0.getName())) {
class="kw">return false;
}
boolean var3 = false;
if (var0.getPrefabContainer() != null) {
CavePrefabContainer.CavePrefabEntry[] var4 = var0.getPrefabContainer().getEntries();
for (int var5 = 0; var5 < var4.length; var5++) {
var2.push("Prefabs[" + var5 + "]");
try {
var3 |= arePrefabsInvalid(var4[var5].getPrefabs(), var2);
} class="kw">finally {
var2.pop();
}
}
}
CaveNodeType.CaveNodeChildEntry[] var15 = var0.getChildren();
for (int var16 = 0; var16 < var15.length; var16++) {
CaveNodeType[] var6 = var15[var16].getTypes().internalKeys();
for (int var7 = 0; var7 < var6.length; var7++) {
var2.push("Children[" + var16 + "].Node[" + var7 + "]");
try {
var3 |= isCaveNodeInvalid(var6[var7], var1, var2);
} class="kw">finally {
var2.pop();
}
}
}
class="kw">return var3;
}
class="kw">private class="kw">static boolean arePrefabsInvalid(@Nonnull IWeightedMap<WorldGenPrefabSupplier> var0, @Nonnull Deque<String> var1) {
boolean var2 = false;
WorldGenPrefabSupplier[] var3 = var0.internalKeys();
for (int var4 = 0; var4 < var3.length; var4++) {
var1.push("Prefabs[" + var4 + "]");
try {
IPrefabBuffer var5;
try {
var5 = var3[var4].get();
} catch (Throwable var27) {
var2 = true;
((HytaleLogger.Api)LogUtil.getLogger().at(Level.SEVERE).withCause(var27))
.log("Failed to load prefab: %s loaded from %s", var3[var4].getName(), String.join(".", var1));
class="kw">continue;
}
var1.push("{" + var3[var4].getName() + "}");
try {
for (PrefabBuffer.ChildPrefab var9 : var5.getChildPrefabs()) {
var1.push("(" + var9.getX() + "," + var9.getY() + "," + var9.getZ() + ")");
try {
var2 |= isChildPrefabInvalid(var9, var3[var4].getLoader(), var1);
} class="kw">finally {
var1.pop();
}
}
} class="kw">finally {
var1.pop();
}
} class="kw">finally {
var1.pop();
}
}
class="kw">return var2;
}
class="kw">private class="kw">static boolean isChildPrefabInvalid(@Nonnull PrefabBuffer.ChildPrefab var0, @Nonnull WorldGenPrefabLoader var1, @Nonnull Deque<String> var2) {
WorldGenPrefabSupplier[] var3;
try {
var3 = var1.get(var0.getPath());
} catch (Throwable var11) {
((HytaleLogger.Api)LogUtil.getLogger().at(Level.SEVERE).withCause(var11))
.log("Failed to resolve child prefab: %s loaded from %s", var0.getPath(), String.join(".", var2));
class="kw">return true;
}
boolean var4 = false;
for (WorldGenPrefabSupplier var8 : var3) {
try {
var8.get();
} catch (Throwable var10) {
var4 = true;
((HytaleLogger.Api)LogUtil.getLogger().at(Level.SEVERE).withCause(var10))
.log("Failed to load child prefab: %s loaded from %s", var8.getName(), String.join(".", var2));
}
}
class="kw">return var4;
}
}