Parameter class
Пакет: com.hypixel.hytale.server.npc.asset.builder
Файл: com/hypixel/hytale/server/npc/asset/builder/BuilderParameters.java
Поля (24)
| Модификаторы | Тип | Имя |
|---|---|---|
|
public static final String |
KEY_CONFINE |
|
public static final String |
KEY_DESCRIPTION |
|
public static final String |
KEY_PRIVATE |
|
public static final String |
KEY_TYPE_HINT |
|
public static final String |
KEY_VALIDATE |
|
public static final String |
KEY_VALUE |
|
private final String |
code |
|
private final String |
description |
|
private final BuilderExpression |
expression |
|
private List<ExecutionContext.Instruction> |
instructionList |
|
private final boolean |
isPrivate |
|
private final boolean |
isValidation |
|
ObjectSchema |
var1 |
|
LinkedHashMap |
var2 |
|
JsonObject |
var3 |
|
BuilderExpression |
var4 |
|
|
var4 |
|
|
var4 |
|
|
var4 |
|
String |
var5 |
|
String |
var6 |
|
boolean |
var7 |
|
String |
var8 |
|
String |
var9 |
Методы (11)
| Модификаторы | Возврат | Сигнатура |
|---|---|---|
abstract |
throw new |
IllegalStateExceptionthrow new IllegalStateException("TypeHint missing for parameter " + var2) |
abstract |
throw new |
IllegalStateExceptionthrow new IllegalStateException("TypeHint must be one of STRING, NUMBER, BOOLEAN for parameter " + var2) |
abstract |
throw new |
IllegalStateExceptionthrow new IllegalStateException("Only either 'Confine' or 'Validate' allowed for parameter " + var2) |
|
private static BuilderParameters.Parameter |
fromJSONprivate static BuilderParameters.Parameter fromJSON(@Nonnull JsonElement var0, @Nonnull BuilderParameters var1, String var2) |
|
public String |
getDescriptionpublic String getDescription() |
|
public BuilderExpression |
getExpressionpublic BuilderExpression getExpression() |
|
|
if if(var4 instanceof BuilderExpressionStaticEmptyArray) |
|
|
if if(var7 && var6 != null) |
|
public boolean |
isPrivatepublic boolean isPrivate() |
|
public boolean |
isValidationpublic boolean isValidation() |
|
public static ObjectSchema |
toSchemapublic static ObjectSchema toSchema(@Nonnull SchemaContext var0) |
Исходный код
Показать/скрыть
class="kw">package com.hypixel.hytale.server.npc.asset.builder;
class="kw">import com.google.gson.JsonElement;
class="kw">import com.google.gson.JsonObject;
class="kw">import com.hypixel.hytale.codec.schema.SchemaContext;
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.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.expression.BuilderExpression;
class="kw">import com.hypixel.hytale.server.npc.asset.builder.expression.BuilderExpressionStaticBooleanArray;
class="kw">import com.hypixel.hytale.server.npc.asset.builder.expression.BuilderExpressionStaticEmptyArray;
class="kw">import com.hypixel.hytale.server.npc.asset.builder.expression.BuilderExpressionStaticNumberArray;
class="kw">import com.hypixel.hytale.server.npc.asset.builder.expression.BuilderExpressionStaticStringArray;
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 com.hypixel.hytale.server.npc.util.expression.compile.CompileContext;
class="kw">import it.unimi.dsi.fastutil.ints.IntOpenHashSet;
class="kw">import it.unimi.dsi.fastutil.ints.IntSet;
class="kw">import java.util.HashMap;
class="kw">import java.util.HashSet;
class="kw">import java.util.LinkedHashMap;
class="kw">import java.util.List;
class="kw">import java.util.Map;
class="kw">import java.util.Set;
class="kw">import javax.annotation.Nonnull;
class="kw">import javax.annotation.Nullable;
class="kw">public class BuilderParameters {
class="kw">public class="kw">static class="kw">final String KEY_PARAMETERS = "Parameters";
class="kw">public class="kw">static class="kw">final String KEY_IMPORT_STATES = "_ImportStates";
class="kw">public class="kw">static class="kw">final String KEY_INTERFACE = "Interface";
@Nonnull
class="kw">protected class="kw">final Map<String, BuilderParameters.Parameter> parameters;
class="kw">protected StdScope scope;
@Nullable
class="kw">protected CompileContext compileContext;
class="kw">protected class="kw">final String fileName;
class="kw">protected class="kw">final IntSet dependencies;
class="kw">protected class="kw">final String interfaceCode;
class="kw">protected class="kw">final Set<String> forwardingSlots = new HashSet<>();
class="kw">protected BuilderParameters(StdScope var1, String var2, String var3) {
this(var1, var2, var3, new IntOpenHashSet());
}
class="kw">protected BuilderParameters(StdScope var1, String var2, String var3, IntSet var4) {
this.scope = new StdScope(var1);
this.compileContext = new CompileContext(this.scope);
this.parameters = new HashMap<>();
this.fileName = var2;
this.dependencies = var4;
this.interfaceCode = var3;
}
class="kw">protected BuilderParameters(@Nonnull BuilderParameters var1) {
this(var1.scope, var1.fileName, var1.interfaceCode, var1.dependencies);
}
class="kw">public boolean isEmpty() {
class="kw">return this.parameters.isEmpty();
}
class="kw">public void addParametersToScope() {
this.parameters.forEach((var1, var2) -> var2.expression.addToScope(var1, this.scope));
}
class="kw">public ValueType getParameterType(String var1) {
BuilderParameters.Parameter var2 = this.parameters.get(var1);
class="kw">return var2 != null && !var2.isPrivate() ? var2.getExpression().getType() : ValueType.VOID;
}
class="kw">public void readJSON(@Nonnull JsonObject var1, @Nonnull StateMappingHelper var2) {
JsonElement var3 = var1.get("Parameters");
if (var3 != null) {
JsonObject var4 = BuilderBase.expectObject(var3, "Parameters");
var4.entrySet().forEach(var2x -> {
String var3 = (String)var2x.getKey();
if (this.parameters.containsKey(var3)) {
throw new IllegalStateException("Duplicate entry '" + var3 + "' in 'Parameters' block");
}
if (var3.equals("_ImportStates")) {
if (!((JsonElement)var2x.getValue()).isJsonArray()) {
throw new IllegalStateException(String.format("%s in parameter block must be a Json Array", "_ImportStates"));
}
var2.setComponentImportStateMappings(((JsonElement)var2x.getValue()).getAsJsonArray());
} else {
this.parameters.put(var3, BuilderParameters.Parameter.fromJSON((JsonElement)var2x.getValue(), this, var3));
}
});
}
}
class="kw">public void createCompileContext() {
this.compileContext = new CompileContext();
}
class="kw">public void disposeCompileContext() {
this.compileContext = null;
}
@Nullable
class="kw">public CompileContext getCompileContext() {
class="kw">return this.compileContext;
}
class="kw">public ValueType compile(@Nonnull String var1) {
class="kw">return this.getCompileContext().compile(var1, this.getScope(), false);
}
class="kw">public List<ExecutionContext.Instruction> getInstructions() {
class="kw">return this.getCompileContext().getInstructions();
}
@Nullable
class="kw">public ExecutionContext.Operand getConstantOperand() {
class="kw">return this.getCompileContext().getAsOperand();
}
class="kw">public StdScope getScope() {
class="kw">return this.scope;
}
@Nonnull
class="kw">public StdScope createScope() {
class="kw">return StdScope.copyOf(this.scope);
}
class="kw">public void validateNoDuplicateParameters(@Nonnull BuilderParameters var1) {
var1.parameters.keySet().forEach(var1x -> {
if (this.parameters.containsKey(var1x)) {
throw new IllegalStateException("Parameter '" + var1x + "' in 'Parameters' block hides parameter from parent scope");
}
});
}
class="kw">public String getFileName() {
class="kw">return this.fileName;
}
class="kw">public IntSet getDependencies() {
class="kw">return this.dependencies;
}
class="kw">public String getInterfaceCode() {
class="kw">return this.interfaceCode;
}
class="kw">public void addDependency(int var1) {
this.dependencies.add(var1);
}
class="kw">public void registerForwardingSlot(@Nonnull String var1) {
this.forwardingSlots.add(var1);
}
@Nonnull
class="kw">public Set<String> getForwardingSlots() {
class="kw">return this.forwardingSlots;
}
@Nonnull
class="kw">public class="kw">static ObjectSchema toSchema(@Nonnull SchemaContext var0) {
ObjectSchema var1 = new ObjectSchema();
var1.setTitle("Parameters");
var1.setProperties(Map.of("_ImportStates", new ArraySchema(new StringSchema())));
var1.setAdditionalProperties(BuilderParameters.Parameter.toSchema(var0));
class="kw">return var1;
}
class="kw">public class="kw">static class Parameter {
class="kw">public class="kw">static class="kw">final String KEY_VALUE = "Value";
class="kw">public class="kw">static class="kw">final String KEY_TYPE_HINT = "TypeHint";
class="kw">public class="kw">static class="kw">final String KEY_VALIDATE = "Validate";
class="kw">public class="kw">static class="kw">final String KEY_CONFINE = "Confine";
class="kw">public class="kw">static class="kw">final String KEY_DESCRIPTION = "Description";
class="kw">public class="kw">static class="kw">final String KEY_PRIVATE = "Private";
class="kw">private class="kw">final BuilderExpression expression;
class="kw">private class="kw">final String description;
class="kw">private class="kw">final String code;
class="kw">private List<ExecutionContext.Instruction> instructionList;
class="kw">private class="kw">final boolean isValidation;
class="kw">private class="kw">final boolean isPrivate;
class="kw">public Parameter(BuilderExpression var1, String var2, String var3, boolean var4, boolean var5) {
this.expression = var1;
this.description = var2;
this.code = var3;
this.isValidation = var4;
this.isPrivate = var5;
}
class="kw">public BuilderExpression getExpression() {
class="kw">return this.expression;
}
class="kw">public String getDescription() {
class="kw">return this.description;
}
class="kw">public boolean isValidation() {
class="kw">return this.isValidation;
}
class="kw">public boolean isPrivate() {
class="kw">return this.isPrivate;
}
@Nonnull
class="kw">public class="kw">static ObjectSchema toSchema(@Nonnull SchemaContext var0) {
ObjectSchema var1 = new ObjectSchema();
var1.setTitle("Parameter");
LinkedHashMap var2 = new LinkedHashMap<>();
var2.put("Value", BuilderExpression.toSchema(var0));
var2.put("TypeHint", new StringSchema());
var2.put("Validate", new StringSchema());
var2.put("Confine", new StringSchema());
var2.put("Description", new StringSchema());
var2.put("Private", new BooleanSchema());
var1.setProperties(var2);
class="kw">return var1;
}
@Nonnull
class="kw">private class="kw">static BuilderParameters.Parameter fromJSON(@Nonnull JsonElement var0, @Nonnull BuilderParameters var1, String var2) {
JsonObject var3 = BuilderBase.expectObject(var0);
BuilderExpression var4 = BuilderExpression.fromJSON(BuilderBase.expectKey(var3, "Value"), var1, true);
if (var4 class="kw">instanceof BuilderExpressionStaticEmptyArray) {
if (!var3.has("TypeHint")) {
throw new IllegalStateException("TypeHint missing for parameter " + var2);
}
String var5 = BuilderBase.readString(var3, "TypeHint");
if ("STRING".equalsIgnoreCase(var5)) {
var4 = BuilderExpressionStaticStringArray.INSTANCE_EMPTY;
} else if ("NUMBER".equalsIgnoreCase(var5)) {
var4 = BuilderExpressionStaticNumberArray.INSTANCE_EMPTY;
} else {
if (!"BOOLEAN".equalsIgnoreCase(var5)) {
throw new IllegalStateException("TypeHint must be one of STRING, NUMBER, BOOLEAN for parameter " + var2);
}
var4 = BuilderExpressionStaticBooleanArray.INSTANCE_EMPTY;
}
}
String var9 = BuilderBase.readString(var3, "Validate", null);
String var6 = BuilderBase.readString(var3, "Confine", null);
boolean var7 = var9 != null;
if (var7 && var6 != null) {
throw new IllegalStateException("Only either 'Confine' or 'Validate' allowed for parameter " + var2);
}
String var8 = var7 ? var9 : var6;
class="kw">return new BuilderParameters.Parameter(
var4, BuilderBase.readString(var3, "Description", null), var8, var7, BuilderBase.readBoolean(var3, "Private", false)
);
}
}
}