NPCLoadTimeValidationHelper class

Пакет: com.hypixel.hytale.server.npc.validators

Файл: com/hypixel/hytale/server/npc/validators/NPCLoadTimeValidationHelper.java

Поля (9)

МодификаторыТипИмя
break
final String fileName
ObjectArrayList var2
Set var2
Set var2
HashSet var2
int var3
boolean var6
var6

Методы (38)

МодификаторыВозвратСигнатура
public boolean checkPrecedingProvidedboolean checkPrecedingProvided(Class<?> var1)
public void clearParentSensorOncevoid clearParentSensorOnce()
public void clearPrioritiserProvidedFilterTypesvoid clearPrioritiserProvidedFilterTypes()
for for(Class var5 : this.requiredMotionControllers)
for for(Class var4 : var2)
abstract for for(int var7 = 0; var7 < var2.size()
public Model getSpawnModelModel getSpawnModel()
public boolean hasSeenFilterboolean hasSeenFilter(String var1)
if if(var6)
if if(var1 < this.inventorySize)
if if(var1 < 0)
if if(var1 < this.hotbarSize)
if if(var1 < -1)
if if(var1 < this.offHandSize)
if if(var2 != null)
if if(var2 == null)
public boolean isAbstractboolean isAbstract()
public boolean isFilterExternallyProvidedboolean isFilterExternallyProvided(String var1)
public boolean isParentSensorOnceboolean isParentSensorOnce()
public boolean isVariantboolean isVariant()
public void popCurrentStateNamevoid popCurrentStateName()
public void popFilterSetvoid popFilterSet()
public void popPrecedingScopevoid popPrecedingScope()
public void pushCurrentStateNamevoid pushCurrentStateName(@Nonnull String var1)
public void pushFilterSetvoid pushFilterSet()
public void pushPrecedingScopevoid pushPrecedingScope()
public void registerMotionControllerTypevoid registerMotionControllerType(Class<? extends MotionController> var1)
public void registerPrecedingProvidervoid registerPrecedingProvider(Class<?> var1)
public void requireMotionControllerTypevoid requireMotionControllerType(Class<? extends MotionController> var1)
public void setInventorySizesvoid setInventorySizes(int var1, int var2, int var3)
public void setIsVariantvoid setIsVariant()
public void setPrioritiserProvidedFilterTypesvoid setPrioritiserProvidedFilterTypes(Set<String> var1)
public void updateParentSensorOncevoid updateParentSensorOnce(boolean var1)
public void validateAnimationvoid validateAnimation(@Nullable String var1)
public boolean validateHotbarHasSlotboolean validateHotbarHasSlot(int var1, String var2, @Nonnull List<String> var3)
public boolean validateInventoryHasSlotboolean validateInventoryHasSlot(int var1, String var2, @Nonnull List<String> var3)
public boolean validateMotionControllersboolean validateMotionControllers(@Nonnull List<String> var1)
public boolean validateOffHandHasSlotboolean validateOffHandHasSlot(int var1, String var2, @Nonnull List<String> var3)

Исходный код

Показать/скрыть
class="kw">package com.hypixel.hytale.server.npc.validators;

class="kw">import com.hypixel.hytale.server.core.asset.type.model.config.Model;
class="kw">import com.hypixel.hytale.server.npc.NPCPlugin;
class="kw">import com.hypixel.hytale.server.npc.movement.controllers.MotionController;
class="kw">import com.hypixel.hytale.server.npc.valuestore.ValueStoreValidator;
class="kw">import it.unimi.dsi.fastutil.objects.ObjectArrayList;
class="kw">import java.util.ArrayDeque;
class="kw">import java.util.HashSet;
class="kw">import java.util.List;
class="kw">import java.util.Objects;
class="kw">import java.util.Set;
class="kw">import java.util.logging.Level;
class="kw">import javax.annotation.Nonnull;
class="kw">import javax.annotation.Nullable;

class="kw">public class NPCLoadTimeValidationHelper {
   class="kw">private class="kw">final String fileName;
   class="kw">private class="kw">final Model spawnModel;
   class="kw">private class="kw">final boolean isAbstract;
   class="kw">private class="kw">final HashSet<String> evaluatedAnimations = new HashSet<>();
   class="kw">private class="kw">final Set<Class<? class="kw">extends MotionController>> providedMotionControllers = new HashSet<>();
   class="kw">private class="kw">final Set<Class<? class="kw">extends MotionController>> requiredMotionControllers = new HashSet<>();
   class="kw">private class="kw">final ArrayDeque<HashSet<String>> seenFilterStack = new ArrayDeque<>();
   class="kw">private class="kw">final ArrayDeque<Set<Class<?>>> precedingProviderStack = new ArrayDeque<>();
   class="kw">private class="kw">final ValueStoreValidator valueStoreValidator = new ValueStoreValidator();
   @Nullable
   class="kw">private Set<String> prioritiserProvidedFilterTypes;
   class="kw">private int inventorySize;
   class="kw">private int hotbarSize;
   class="kw">private int offHandSize;
   class="kw">private boolean parentSensorOnce;
   class="kw">private boolean isVariant;
   class="kw">private class="kw">final ArrayDeque<String> stateStack = new ArrayDeque<>();

   class="kw">public NPCLoadTimeValidationHelper(String var1, Model var2, boolean var3) {
      this.fileName = var1;
      this.spawnModel = var2;
      this.isAbstract = var3;
   }

   class="kw">public void setInventorySizes(int var1, int var2, int var3) {
      this.inventorySize = var1;
      this.hotbarSize = var2;
      this.offHandSize = var3;
   }

   class="kw">public Model getSpawnModel() {
      class="kw">return this.spawnModel;
   }

   class="kw">public boolean isAbstract() {
      class="kw">return this.isAbstract;
   }

   class="kw">public boolean isParentSensorOnce() {
      class="kw">return this.parentSensorOnce;
   }

   class="kw">public void updateParentSensorOnce(boolean var1) {
      this.parentSensorOnce |= var1;
   }

   class="kw">public void clearParentSensorOnce() {
      this.parentSensorOnce = false;
   }

   class="kw">public void setIsVariant() {
      this.isVariant = true;
   }

   class="kw">public boolean isVariant() {
      class="kw">return this.isVariant;
   }

   @Nonnull
   class="kw">public ValueStoreValidator getValueStoreValidator() {
      class="kw">return this.valueStoreValidator;
   }

   @Nullable
   class="kw">public String getCurrentStateName() {
      class="kw">return this.stateStack.peek();
   }

   class="kw">public void pushCurrentStateName(@Nonnull String var1) {
      this.stateStack.push(var1);
   }

   class="kw">public void popCurrentStateName() {
      this.stateStack.pop();
   }

   class="kw">public void validateAnimation(@Nullable String var1) {
      if (var1 != null && !var1.isEmpty()) {
         if (this.evaluatedAnimations.add(var1)) {
            if (!this.spawnModel.getAnimationSetMap().containsKey(var1)) {
               NPCPlugin.get().getLogger().at(Level.WARNING).log("Animation %s does not exist for model %s!", var1, this.spawnModel.getModelAssetId());
            }
         }
      }
   }

   class="kw">public void registerMotionControllerType(Class<? class="kw">extends MotionController> var1) {
      this.providedMotionControllers.add(var1);
   }

   class="kw">public void requireMotionControllerType(Class<? class="kw">extends MotionController> var1) {
      this.requiredMotionControllers.add(var1);
   }

   class="kw">public boolean validateMotionControllers(@Nonnull List<String> var1) {
      if (this.requiredMotionControllers.isEmpty()) {
         class="kw">return true;
      }

      ObjectArrayList var2 = new ObjectArrayList(this.providedMotionControllers);
      int var3 = 0;

      for (Class var5 : this.requiredMotionControllers) {
         boolean var6 = true;

         for (int var7 = 0; var7 < var2.size(); var7++) {
            if (((Class)var2.get(var7)).isAssignableFrom(var5)) {
               var3++;
               var6 = false;
               break;
            }
         }

         if (var6) {
            var1.add(String.format("%s: Missing required motion controller: %s", this.fileName, var5.getSimpleName()));
         }
      }

      class="kw">return this.requiredMotionControllers.size() == var3;
   }

   class="kw">public boolean validateInventoryHasSlot(int var1, String var2, @Nonnull List<String> var3) {
      if (var1 < this.inventorySize) {
         class="kw">return true;
      }

      var3.add(String.format("%s: Inventory too small for slot %d, requested by %s", this.fileName, var1, var2));
      class="kw">return false;
   }

   class="kw">public boolean validateHotbarHasSlot(int var1, String var2, @Nonnull List<String> var3) {
      if (var1 < 0) {
         var3.add(String.format("%s: Hotbar slot %s is not valid for parameter %s. Must be >= 0", this.fileName, var1, var2));
         class="kw">return false;
      }

      if (var1 < this.hotbarSize) {
         class="kw">return true;
      }

      var3.add(String.format("%s: Hotbar too small for slot %d, requested by %s. Actual size is %d", this.fileName, var1, var2, this.hotbarSize));
      class="kw">return false;
   }

   class="kw">public boolean validateOffHandHasSlot(int var1, String var2, @Nonnull List<String> var3) {
      if (var1 < -1) {
         var3.add(String.format("%s: Off-hand slot %s is not valid for parameter %s. Must be -1 for empty, or >= 0", this.fileName, var1, var2));
         class="kw">return false;
      }

      if (var1 < this.offHandSize) {
         class="kw">return true;
      }

      var3.add(String.format("%s: Off-hand inventory too small for slot %d, requested by %s. Actual size is %d", this.fileName, var1, var2, this.offHandSize));
      class="kw">return false;
   }

   class="kw">public void pushPrecedingScope() {
      this.precedingProviderStack.push(new HashSet<>());
   }

   class="kw">public void popPrecedingScope() {
      this.precedingProviderStack.pop();
   }

   class="kw">public void registerPrecedingProvider(Class<?> var1) {
      Set var2 = this.precedingProviderStack.peek();
      if (var2 != null) {
         var2.add(var1);
      }
   }

   class="kw">public boolean checkPrecedingProvided(Class<?> var1) {
      Set var2 = this.precedingProviderStack.peek();
      if (var2 == null) {
         class="kw">return false;
      }

      for (Class var4 : var2) {
         if (var1.isAssignableFrom(var4)) {
            class="kw">return true;
         }
      }

      class="kw">return false;
   }

   class="kw">public void pushFilterSet() {
      this.seenFilterStack.push(new HashSet<>());
   }

   class="kw">public void popFilterSet() {
      this.seenFilterStack.pop();
   }

   class="kw">public boolean hasSeenFilter(String var1) {
      HashSet var2 = this.seenFilterStack.peek();
      Objects.requireNonNull(var2, "A filter set must have been pushed before checking if a filter has been seen!");
      class="kw">return !var2.add(var1);
   }

   class="kw">public void setPrioritiserProvidedFilterTypes(Set<String> var1) {
      this.prioritiserProvidedFilterTypes = var1;
   }

   class="kw">public boolean isFilterExternallyProvided(String var1) {
      class="kw">return this.prioritiserProvidedFilterTypes == null ? false : this.prioritiserProvidedFilterTypes.contains(var1);
   }

   class="kw">public void clearPrioritiserProvidedFilterTypes() {
      this.prioritiserProvidedFilterTypes = null;
   }
}