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;
   }
}