BuilderExpressionDynamic class

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

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

extends: BuilderExpression

Поля (8)

МодификаторыТипИмя
final String KEY_COMPUTE
ObjectSchema var0
JsonObject var2
JsonElement var3
String var4
ValueType var5
ExecutionContext.Operand var6
ExecutionContext.Instruction[] var7

Методы (5)

МодификаторыВозвратСигнатура
abstract throw new IllegalArgumentExceptionthrow new IllegalArgumentException("JSON expression missing 'Compute' member: " + var0)
protected void executevoid execute(@Nonnull ExecutionContext var1)
if if(var3 == null)
if if(var6 != null)
return switchreturn switch(var5)

Исходный код

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

class="kw">import com.google.gson.JsonElement;
class="kw">import com.google.gson.JsonObject;
class="kw">import com.hypixel.hytale.codec.schema.config.ObjectSchema;
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.BuilderBase;
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.ValueType;
class="kw">import java.util.Map;
class="kw">import java.util.Objects;
class="kw">import javax.annotation.Nonnull;

class="kw">public class="kw">abstract class BuilderExpressionDynamic class="kw">extends BuilderExpression {
   class="kw">public class="kw">static class="kw">final String KEY_COMPUTE = "Compute";
   class="kw">private class="kw">final String expression;
   class="kw">private class="kw">final ExecutionContext.Instruction[] instructionSequence;

   class="kw">public BuilderExpressionDynamic(String var1, ExecutionContext.Instruction[] var2) {
      this.expression = var1;
      this.instructionSequence = var2;
   }

   @Override
   class="kw">public boolean isStatic() {
      class="kw">return false;
   }

   @Override
   class="kw">public String getExpression() {
      class="kw">return this.expression;
   }

   class="kw">protected void execute(@Nonnull ExecutionContext var1) {
      Objects.requireNonNull(var1, "ExecutionContext not initialised");
      if (var1.execute(this.instructionSequence) != this.getType()) {
         throw new IllegalStateException("Expression returned wrong type " + var1.getType() + " but expected " + this.getType() + ": " + this.expression);
      }
   }

   @Nonnull
   class="kw">public class="kw">static BuilderExpression fromJSON(@Nonnull JsonElement var0, @Nonnull BuilderParameters var1) {
      JsonObject var2 = var0.getAsJsonObject();
      JsonElement var3 = var2.get("Compute");
      if (var3 == null) {
         throw new IllegalArgumentException("JSON expression missing 'Compute' member: " + var0);
      }

      String var4 = BuilderBase.expectStringElement(var3, "Compute");
      ValueType var5 = var1.compile(var4);
      ExecutionContext.Operand var6 = var1.getConstantOperand();
      if (var6 != null) {
         class="kw">return BuilderExpression.fromOperand(var6);
      }

      ExecutionContext.Instruction[] var7 = var1.getInstructions().toArray(ExecutionContext.Instruction[]::new);

      class="kw">return class="kw">switch (var5) {
         case NUMBER -> new BuilderExpressionDynamicNumber(var4, var7);
         case STRING -> new BuilderExpressionDynamicString(var4, var7);
         case BOOLEAN -> new BuilderExpressionDynamicBoolean(var4, var7);
         case NUMBER_ARRAY -> new BuilderExpressionDynamicNumberArray(var4, var7);
         case STRING_ARRAY -> new BuilderExpressionDynamicStringArray(var4, var7);
         case BOOLEAN_ARRAY -> new BuilderExpressionDynamicBooleanArray(var4, var7);
         class="kw">default -> throw new IllegalStateException("Unable to create dynamic expression from type " + var5);
      };
   }

   @Nonnull
   class="kw">public class="kw">static Schema toSchema() {
      ObjectSchema var0 = new ObjectSchema();
      var0.setTitle("ExpressionDynamic");
      var0.setProperties(Map.of("Compute", new StringSchema()));
      var0.setRequired("Compute");
      var0.setAdditionalProperties(false);
      class="kw">return var0;
   }

   @Nonnull
   class="kw">public class="kw">static Schema computableSchema(Schema var0) {
      class="kw">return Schema.anyOf(var0, toSchema());
   }
}