SchemaGenerator class

Пакет: com.hypixel.hytale.server.npc.asset.builder.expression

Файл: com/hypixel/hytale/server/npc/asset/builder/expression/BuilderExpression.java

implements: SchemaConvertable<Void>, NamedSchema

Поля (2)

МодификаторыТипИмя
public static final BuilderExpression.SchemaGenerator INSTANCE
Schema var2

Методы (2)

МодификаторыВозвратСигнатура
public String getSchemaNamepublic String getSchemaName()
public Schema toSchemapublic Schema toSchema(@Nonnull SchemaContext var1)

Исходный код

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

class="kw">import com.google.gson.JsonArray;
class="kw">import com.google.gson.JsonElement;
class="kw">import com.google.gson.JsonPrimitive;
class="kw">import com.hypixel.hytale.codec.schema.NamedSchema;
class="kw">import com.hypixel.hytale.codec.schema.SchemaContext;
class="kw">import com.hypixel.hytale.codec.schema.SchemaConvertable;
class="kw">import com.hypixel.hytale.codec.schema.config.ArraySchema;
class="kw">import com.hypixel.hytale.codec.schema.config.BooleanSchema;
class="kw">import com.hypixel.hytale.codec.schema.config.NumberSchema;
class="kw">import com.hypixel.hytale.codec.schema.config.Schema;
class="kw">import com.hypixel.hytale.codec.schema.config.StringSchema;
class="kw">import com.hypixel.hytale.server.npc.asset.builder.BuilderParameters;
class="kw">import com.hypixel.hytale.server.npc.util.expression.ExecutionContext;
class="kw">import com.hypixel.hytale.server.npc.util.expression.StdScope;
class="kw">import com.hypixel.hytale.server.npc.util.expression.ValueType;
class="kw">import javax.annotation.Nonnull;
class="kw">import javax.annotation.Nullable;

class="kw">public class="kw">abstract class BuilderExpression {
   class="kw">public class="kw">static class="kw">final String STATIC = "<STATIC>";

   class="kw">public BuilderExpression() {
   }

   class="kw">public class="kw">abstract ValueType getType();

   class="kw">public class="kw">abstract boolean isStatic();

   class="kw">public double getNumber(ExecutionContext var1) {
      throw new IllegalStateException("BuilderExpression: Reading number is not supported");
   }

   class="kw">public String getString(ExecutionContext var1) {
      throw new IllegalStateException("BuilderExpression: Reading string is not supported");
   }

   class="kw">public boolean getBoolean(ExecutionContext var1) {
      throw new IllegalStateException("BuilderExpression: Reading boolean is not supported");
   }

   class="kw">public double[] getNumberArray(ExecutionContext var1) {
      throw new IllegalStateException("BuilderExpression: Reading number array is not supported");
   }

   class="kw">public int[] getIntegerArray(ExecutionContext var1) {
      throw new IllegalStateException("BuilderExpression: Reading integer is not supported");
   }

   @Nullable
   class="kw">public String[] getStringArray(ExecutionContext var1) {
      throw new IllegalStateException("BuilderExpression: Reading string array is not supported");
   }

   class="kw">public boolean[] getBooleanArray(ExecutionContext var1) {
      throw new IllegalStateException("BuilderExpression: Reading boolean array is not supported");
   }

   class="kw">public void addToScope(String var1, StdScope var2) {
      throw new IllegalStateException("This type of builder expression cannot be added to a scope");
   }

   class="kw">public void updateScope(StdScope var1, String var2, ExecutionContext var3) {
      throw new IllegalStateException("This type of builder expression cannot update a scope");
   }

   class="kw">public String getExpression() {
      class="kw">return "<STATIC>";
   }

   @Nonnull
   class="kw">public class="kw">static BuilderExpression fromOperand(@Nonnull ExecutionContext.Operand var0) {
      class="kw">return class="kw">switch (var0.type) {
         case NUMBER -> new BuilderExpressionStaticNumber(var0.number);
         case STRING -> new BuilderExpressionStaticString(var0.string);
         case BOOLEAN -> new BuilderExpressionStaticBoolean(var0.bool);
         case EMPTY_ARRAY -> BuilderExpressionStaticEmptyArray.INSTANCE;
         case NUMBER_ARRAY -> new BuilderExpressionStaticNumberArray(var0.numberArray);
         case STRING_ARRAY -> new BuilderExpressionStaticStringArray(var0.stringArray);
         case BOOLEAN_ARRAY -> new BuilderExpressionStaticBooleanArray(var0.boolArray);
         class="kw">default -> throw new IllegalStateException("Operand cannot be converted to builder expression");
      };
   }

   @Nonnull
   class="kw">public class="kw">static BuilderExpression fromJSON(@Nonnull JsonElement var0, @Nonnull BuilderParameters var1, boolean var2) {
      BuilderExpression var3 = fromJSON(var0, var1);
      if (var2 && !var3.isStatic()) {
         throw new IllegalArgumentException("Only constant string, number or boolean or arrays allowed, found: " + var0);
      } else {
         class="kw">return var3;
      }
   }

   @Nonnull
   class="kw">public class="kw">static BuilderExpression fromJSON(@Nonnull JsonElement var0, @Nonnull BuilderParameters var1, ValueType var2) {
      BuilderExpression var3 = fromJSON(var0, var1);
      if (!ValueType.isAssignableType(var3.getType(), var2)) {
         throw new IllegalStateException("Expression type mismatch. Got " + var3.getType() + " but expected " + var2 + " from: " + var0);
      } else {
         class="kw">return var3;
      }
   }

   @Nonnull
   class="kw">public class="kw">static BuilderExpression fromJSON(@Nonnull JsonElement var0, @Nonnull BuilderParameters var1) {
      if (var0.isJsonObject()) {
         class="kw">return BuilderExpressionDynamic.fromJSON(var0, var1);
      }

      if (var0.isJsonPrimitive()) {
         BuilderExpression var2 = readJSONPrimitive(var0);
         if (var2 != null) {
            class="kw">return var2;
         }
      } else if (var0.isJsonArray()) {
         BuilderExpression var3 = readStaticArray(var0);
         if (var3 != null) {
            class="kw">return var3;
         }
      }

      throw new IllegalArgumentException("Illegal JSON value for expression: " + var0);
   }

   @Nullable
   class="kw">private class="kw">static BuilderExpression readJSONPrimitive(@Nonnull JsonElement var0) {
      JsonPrimitive var1 = var0.getAsJsonPrimitive();
      if (var1.isString()) {
         class="kw">return new BuilderExpressionStaticString(var1.getAsString());
      } else if (var1.isBoolean()) {
         class="kw">return new BuilderExpressionStaticBoolean(var1.getAsBoolean());
      } else {
         class="kw">return var1.isNumber() ? new BuilderExpressionStaticNumber(var1.getAsDouble()) : null;
      }
   }

   @Nullable
   class="kw">private class="kw">static BuilderExpression readStaticArray(@Nonnull JsonElement var0) {
      JsonArray var1 = var0.getAsJsonArray();
      if (var1.isEmpty()) {
         class="kw">return BuilderExpressionStaticEmptyArray.INSTANCE;
      }

      JsonElement var2 = var1.get(0);
      BuilderExpression var3 = null;
      if (var2.isJsonPrimitive()) {
         JsonPrimitive var4 = var2.getAsJsonPrimitive();
         if (var4.isString()) {
            var3 = BuilderExpressionStaticStringArray.fromJSON(var1);
         } else if (var4.isBoolean()) {
            var3 = BuilderExpressionStaticBooleanArray.fromJSON(var1);
         } else if (var4.isNumber()) {
            var3 = BuilderExpressionStaticNumberArray.fromJSON(var1);
         }
      }

      class="kw">return var3;
   }

   class="kw">public void compile(BuilderParameters var1) {
   }

   @Nonnull
   class="kw">public class="kw">static Schema toSchema(@Nonnull SchemaContext var0) {
      class="kw">return var0.refDefinition(BuilderExpression.SchemaGenerator.INSTANCE);
   }

   class="kw">private class="kw">static class SchemaGenerator class="kw">implements SchemaConvertable<Void>, NamedSchema {
      @Nonnull
      class="kw">public class="kw">static class="kw">final BuilderExpression.SchemaGenerator INSTANCE = new BuilderExpression.SchemaGenerator();

      class="kw">private SchemaGenerator() {
      }

      @Nonnull
      @Override
      class="kw">public String getSchemaName() {
         class="kw">return "NPC:Type:BuilderExpression";
      }

      @Nonnull
      @Override
      class="kw">public Schema toSchema(@Nonnull SchemaContext var1) {
         Schema var2 = new Schema();
         var2.setTitle("Expression");
         var2.setAnyOf(new ArraySchema(), new NumberSchema(), new StringSchema(), new BooleanSchema(), BuilderExpressionDynamic.toSchema());
         class="kw">return var2;
      }
   }
}