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