SchemaTypeField class

Пакет: com.hypixel.hytale.codec.schema.config

Файл: com/hypixel/hytale/codec/schema/config/Schema.java

Поля (9)

МодификаторыТипИмя
public static final BuilderCodec<Schema.SchemaTypeField> CODEC
private String defaultValue
private String parentPropertyKey
private String property
private String[] values
int var1
var1
var1
Schema.SchemaTypeField var2

Методы (7)

МодификаторыВозвратСигнатура
public boolean equalspublic boolean equals(Object var1)
public String getDefaultValuepublic String getDefaultValue()
public String getParentPropertyKeypublic String getParentPropertyKey()
public String getPropertypublic String getProperty()
public String[] getValuespublic String[] getValues()
public int hashCodepublic int hashCode()
public void setParentPropertyKeypublic void setParentPropertyKey(String var1)

Исходный код

Показать/скрыть
class="kw">package com.hypixel.hytale.codec.schema.config;

class="kw">import com.hypixel.hytale.codec.Codec;
class="kw">import com.hypixel.hytale.codec.ExtraInfo;
class="kw">import com.hypixel.hytale.codec.KeyedCodec;
class="kw">import com.hypixel.hytale.codec.builder.BuilderCodec;
class="kw">import com.hypixel.hytale.codec.codecs.EnumCodec;
class="kw">import com.hypixel.hytale.codec.codecs.array.ArrayCodec;
class="kw">import com.hypixel.hytale.codec.codecs.map.MapCodec;
class="kw">import com.hypixel.hytale.codec.lookup.ObjectCodecMapCodec;
class="kw">import com.hypixel.hytale.codec.lookup.Priority;
class="kw">import com.hypixel.hytale.codec.schema.SchemaContext;
class="kw">import com.hypixel.hytale.codec.schema.metadata.ui.UIButton;
class="kw">import com.hypixel.hytale.codec.schema.metadata.ui.UIDisplayMode;
class="kw">import com.hypixel.hytale.codec.schema.metadata.ui.UIEditor;
class="kw">import com.hypixel.hytale.codec.schema.metadata.ui.UIEditorFeatures;
class="kw">import com.hypixel.hytale.codec.schema.metadata.ui.UIEditorPreview;
class="kw">import com.hypixel.hytale.codec.schema.metadata.ui.UIRebuildCaches;
class="kw">import com.hypixel.hytale.codec.util.Documentation;
class="kw">import java.util.Arrays;
class="kw">import java.util.HashMap;
class="kw">import java.util.Map;
class="kw">import java.util.Objects;
class="kw">import javax.annotation.Nonnull;
class="kw">import javax.annotation.Nullable;
class="kw">import org.bson.BsonArray;
class="kw">import org.bson.BsonDocument;
class="kw">import org.bson.BsonNull;
class="kw">import org.bson.BsonValue;

class="kw">public class Schema {
   class="kw">public class="kw">static class="kw">final ObjectCodecMapCodec<String, Schema> CODEC = new ObjectCodecMapCodec<>("type", new Schema.StringOrBlank(), true, false);
   class="kw">public class="kw">static class="kw">final ArrayCodec<Schema> ARRAY_CODEC = new ArrayCodec<>(CODEC, Schema[]::new);
   class="kw">public class="kw">static class="kw">final BuilderCodec<Schema> BASE_CODEC = BuilderCodec.builder(Schema.class, Schema::new)
      .append(new KeyedCodec<>("$id", Codec.STRING, false, true), (var0, var1) -> var0.id = var1, var0 -> var0.id)
      .add()
      .append(new KeyedCodec<>("type", new Schema.ArrayOrNull(), false, true), (var0, var1) -> var0.types = var1, var0 -> var0.types)
      .add()
      .append(new KeyedCodec<>("title", Codec.STRING, false, true), (var0, var1) -> var0.title = var1, var0 -> var0.title)
      .add()
      .append(
         new KeyedCodec<>("description", Codec.STRING, false, true),
         (var0, var1) -> var0.description = var1,
         var0 -> var0.description == null && var0.markdownDescription != null ? Documentation.stripMarkdown(var0.markdownDescription) : var0.description
      )
      .add()
      .append(
         new KeyedCodec<>("markdownDescription", Codec.STRING, false, true), (var0, var1) -> var0.markdownDescription = var1, var0 -> var0.markdownDescription
      )
      .add()
      .append(new KeyedCodec<>("enumDescriptions", Codec.STRING_ARRAY, false, true), (var0, var1) -> var0.enumDescriptions = var1, var0 -> {
         if (var0.enumDescriptions == null && var0.markdownEnumDescriptions != null) {
            String[] var1 = new String[var0.markdownEnumDescriptions.length];

            for (int var2 = 0; var2 < var1.length; var2++) {
               var1[var2] = Documentation.stripMarkdown(var0.markdownEnumDescriptions[var2]);
            }

            class="kw">return var1;
         } else {
            class="kw">return var0.enumDescriptions;
         }
      })
      .add()
      .append(
         new KeyedCodec<>("markdownEnumDescriptions", Codec.STRING_ARRAY, false, true),
         (var0, var1) -> var0.markdownEnumDescriptions = var1,
         var0 -> var0.markdownEnumDescriptions
      )
      .add()
      .append(new KeyedCodec<>("anyOf", ARRAY_CODEC, false, true), (var0, var1) -> var0.anyOf = var1, var0 -> var0.anyOf)
      .add()
      .append(new KeyedCodec<>("oneOf", ARRAY_CODEC, false, true), (var0, var1) -> var0.oneOf = var1, var0 -> var0.oneOf)
      .add()
      .append(new KeyedCodec<>("allOf", ARRAY_CODEC, false, true), (var0, var1) -> var0.allOf = var1, var0 -> var0.allOf)
      .add()
      .append(new KeyedCodec<>("not", CODEC, false, true), (var0, var1) -> var0.not = var1, var0 -> var0.not)
      .add()
      .append(new KeyedCodec<>("if", CODEC, false, true), (var0, var1) -> var0.if_ = var1, var0 -> var0.if_)
      .add()
      .append(new KeyedCodec<>("then", CODEC, false, true), (var0, var1) -> var0.then = var1, var0 -> var0.then)
      .add()
      .append(new KeyedCodec<>("else", new Schema.BooleanOrSchema(), false, true), (var0, var1) -> var0.else_ = var1, var0 -> var0.else_)
      .add()
      .append(new KeyedCodec<>("required", Codec.STRING_ARRAY, false, true), (var0, var1) -> var0.required = var1, var0 -> var0.required)
      .add()
      .append(new KeyedCodec<>("class="kw">default", Codec.BSON_DOCUMENT, false, true), (var0, var1) -> var0.default_ = var1, var0 -> var0.default_)
      .add()
      .append(
         new KeyedCodec<>("definitions", new MapCodec<>(CODEC, HashMap::new), false, true), (var0, var1) -> var0.definitions = var1, var0 -> var0.definitions
      )
      .add()
      .append(new KeyedCodec<>("$ref", Codec.STRING, false, true), (var0, var1) -> var0.ref = var1, var0 -> var0.ref)
      .add()
      .append(new KeyedCodec<>("$data", Codec.STRING, false, true), (var0, var1) -> var0.data = var1, var0 -> var0.data)
      .add()
      .append(new KeyedCodec<>("doNotSuggest", Codec.BOOLEAN, false, true), (var0, var1) -> var0.doNotSuggest = var1, var0 -> var0.doNotSuggest)
      .add()
      .append(new KeyedCodec<>("hytaleAssetRef", Codec.STRING, false, true), (var0, var1) -> var0.hytaleAssetRef = var1, var0 -> var0.hytaleAssetRef)
      .add()
      .append(
         new KeyedCodec<>("hytaleCustomAssetRef", Codec.STRING, false, true),
         (var0, var1) -> var0.hytaleCustomAssetRef = var1,
         var0 -> var0.hytaleCustomAssetRef
      )
      .add()
      .append(new KeyedCodec<>("hytaleParent", Schema.InheritSettings.CODEC, false, true), (var0, var1) -> var0.hytaleParent = var1, var0 -> var0.hytaleParent)
      .add()
      .append(
         new KeyedCodec<>("hytaleSchemaTypeField", Schema.SchemaTypeField.CODEC, false, true),
         (var0, var1) -> var0.hytaleSchemaTypeField = var1,
         var0 -> var0.hytaleSchemaTypeField
      )
      .add()
      .append(new KeyedCodec<>("hytale", Schema.HytaleMetadata.CODEC, false, true), (var0, var1) -> {
         if (var1.type == null) {
            var1.type = CODEC.getIdFor((Class<? class="kw">extends Schema>)var0.getClass());
         }

         var0.hytale = var1;
      }, var0 -> var0.hytale)
      .add()
      .build();
   class="kw">private String id;
   class="kw">private String[] types;
   class="kw">private String title;
   class="kw">private String description;
   class="kw">private String markdownDescription;
   class="kw">private Schema[] anyOf;
   class="kw">private Schema[] oneOf;
   class="kw">private Schema[] allOf;
   class="kw">private Schema not;
   class="kw">private String[] required;
   class="kw">private String[] enumDescriptions;
   class="kw">private String[] markdownEnumDescriptions;
   class="kw">private Map<String, Schema> definitions;
   class="kw">private String ref;
   class="kw">private String data;
   class="kw">private BsonDocument default_;
   class="kw">private Schema if_;
   class="kw">private Schema then;
   class="kw">private Object else_;
   class="kw">private Schema.HytaleMetadata hytale;
   class="kw">private Schema.InheritSettings hytaleParent;
   class="kw">private Schema.SchemaTypeField hytaleSchemaTypeField;
   class="kw">private String hytaleAssetRef;
   class="kw">private String hytaleCustomAssetRef;
   class="kw">private Boolean doNotSuggest;

   class="kw">public Schema() {
      String var1 = CODEC.getIdFor((Class<? class="kw">extends Schema>)this.getClass());
      if (var1 != null && !var1.isBlank()) {
         this.hytale = new Schema.HytaleMetadata(var1);
      }
   }

   class="kw">public String getId() {
      class="kw">return this.id;
   }

   class="kw">public void setId(String var1) {
      this.id = var1;
   }

   class="kw">public String[] getTypes() {
      class="kw">return this.types;
   }

   class="kw">public void setTypes(String[] var1) {
      this.types = var1;
   }

   class="kw">public String getTitle() {
      class="kw">return this.title;
   }

   class="kw">public void setTitle(String var1) {
      this.title = var1;
   }

   class="kw">public String getDescription() {
      class="kw">return this.description;
   }

   class="kw">public void setDescription(String var1) {
      this.description = var1;
   }

   class="kw">public String getMarkdownDescription() {
      class="kw">return this.markdownDescription;
   }

   class="kw">public void setMarkdownDescription(String var1) {
      this.markdownDescription = var1;
   }

   class="kw">public String[] getEnumDescriptions() {
      class="kw">return this.enumDescriptions;
   }

   class="kw">public void setEnumDescriptions(String[] var1) {
      this.enumDescriptions = var1;
   }

   class="kw">public String[] getMarkdownEnumDescriptions() {
      class="kw">return this.markdownEnumDescriptions;
   }

   class="kw">public void setMarkdownEnumDescriptions(String[] var1) {
      this.markdownEnumDescriptions = var1;
   }

   class="kw">public Schema[] getAnyOf() {
      class="kw">return this.anyOf;
   }

   class="kw">public void setAnyOf(Schema... var1) {
      this.anyOf = var1;
   }

   class="kw">public Schema[] getOneOf() {
      class="kw">return this.oneOf;
   }

   class="kw">public void setOneOf(Schema... var1) {
      this.oneOf = var1;
   }

   class="kw">public Schema[] getAllOf() {
      class="kw">return this.allOf;
   }

   class="kw">public void setAllOf(Schema... var1) {
      this.allOf = var1;
   }

   class="kw">public String[] getRequired() {
      class="kw">return this.required;
   }

   class="kw">public void setRequired(String... var1) {
      this.required = var1;
   }

   class="kw">public BsonDocument getDefaultRaw() {
      class="kw">return this.default_;
   }

   class="kw">public void setDefaultRaw(BsonDocument var1) {
      this.default_ = var1;
   }

   class="kw">public Map<String, Schema> getDefinitions() {
      class="kw">return this.definitions;
   }

   class="kw">public void setDefinitions(Map<String, Schema> var1) {
      this.definitions = var1;
   }

   class="kw">public String getRef() {
      class="kw">return this.ref;
   }

   class="kw">public void setRef(String var1) {
      this.ref = var1;
   }

   class="kw">public String getData() {
      class="kw">return this.data;
   }

   class="kw">public void setData(String var1) {
      this.data = var1;
   }

   class="kw">public Schema getIf() {
      class="kw">return this.if_;
   }

   class="kw">public void setIf(Schema var1) {
      this.if_ = var1;
   }

   class="kw">public Schema getThen() {
      class="kw">return this.then;
   }

   class="kw">public void setThen(Schema var1) {
      this.then = var1;
   }

   class="kw">public Schema getElse() {
      class="kw">return (Schema)this.else_;
   }

   class="kw">public void setElse(Schema var1) {
      this.else_ = var1;
   }

   class="kw">public void setElse(boolean var1) {
      this.else_ = var1;
   }

   class="kw">public Boolean isDoNotSuggest() {
      class="kw">return this.doNotSuggest;
   }

   class="kw">public void setDoNotSuggest(boolean var1) {
      this.doNotSuggest = var1;
   }

   @Nullable
   class="kw">public Schema.HytaleMetadata getHytale() {
      class="kw">return this.getHytale(true);
   }

   @Nullable
   class="kw">public Schema.HytaleMetadata getHytale(boolean var1) {
      if (var1 && this.hytale == null) {
         this.hytale = new Schema.HytaleMetadata();
         this.hytale.type = CODEC.getIdFor((Class<? class="kw">extends Schema>)this.getClass());
      }

      class="kw">return this.hytale;
   }

   class="kw">public String getHytaleAssetRef() {
      class="kw">return this.hytaleAssetRef;
   }

   class="kw">public void setHytaleAssetRef(String var1) {
      this.hytaleAssetRef = var1;
   }

   class="kw">public Schema.InheritSettings getHytaleParent() {
      class="kw">return this.hytaleParent;
   }

   class="kw">public void setHytaleParent(Schema.InheritSettings var1) {
      this.hytaleParent = var1;
   }

   class="kw">public Schema.SchemaTypeField getHytaleSchemaTypeField() {
      class="kw">return this.hytaleSchemaTypeField;
   }

   class="kw">public void setHytaleSchemaTypeField(Schema.SchemaTypeField var1) {
      this.hytaleSchemaTypeField = var1;
   }

   class="kw">public String getHytaleCustomAssetRef() {
      class="kw">return this.hytaleCustomAssetRef;
   }

   class="kw">public void setHytaleCustomAssetRef(String var1) {
      this.hytaleCustomAssetRef = var1;
   }

   @Nonnull
   class="kw">public class="kw">static Schema ref(String var0) {
      Schema var1 = new Schema();
      var1.setRef(var0);
      class="kw">return var1;
   }

   @Nonnull
   class="kw">public class="kw">static Schema data(String var0) {
      Schema var1 = new Schema();
      var1.setData(var0);
      class="kw">return var1;
   }

   @Nonnull
   class="kw">public class="kw">static Schema anyOf(Schema... var0) {
      Schema var1 = new Schema();
      var1.anyOf = var0;
      class="kw">return var1;
   }

   @Nonnull
   class="kw">public class="kw">static Schema not(Schema var0) {
      Schema var1 = new Schema();
      var1.not = var0;
      class="kw">return var1;
   }

   @Override
   class="kw">public boolean equals(@Nullable Object var1) {
      if (this == var1) {
         class="kw">return true;
      }

      if (var1 != null && this.getClass() == var1.getClass()) {
         Schema var2 = (Schema)var1;
         if (this.id != null ? this.id.equals(var2.id) : var2.id == null) {
            if (!Arrays.equals(this.types, var2.types)) {
               class="kw">return false;
            }

            if (this.title != null ? this.title.equals(var2.title) : var2.title == null) {
               if (this.description != null ? this.description.equals(var2.description) : var2.description == null) {
                  if (this.markdownDescription != null ? this.markdownDescription.equals(var2.markdownDescription) : var2.markdownDescription == null) {
                     if (!Arrays.equals(this.anyOf, var2.anyOf)) {
                        class="kw">return false;
                     }

                     if (!Arrays.equals(this.oneOf, var2.oneOf)) {
                        class="kw">return false;
                     }

                     if (!Arrays.equals(this.allOf, var2.allOf)) {
                        class="kw">return false;
                     }

                     if (this.not != null ? this.not.equals(var2.not) : var2.not == null) {
                        if (!Arrays.equals(this.required, var2.required)) {
                           class="kw">return false;
                        }

                        if (!Arrays.equals(this.enumDescriptions, var2.enumDescriptions)) {
                           class="kw">return false;
                        }

                        if (!Arrays.equals(this.markdownEnumDescriptions, var2.markdownEnumDescriptions)) {
                           class="kw">return false;
                        }

                        if (this.definitions != null ? this.definitions.equals(var2.definitions) : var2.definitions == null) {
                           if (this.ref != null ? this.ref.equals(var2.ref) : var2.ref == null) {
                              if (this.data != null ? this.data.equals(var2.data) : var2.data == null) {
                                 if (this.default_ != null ? this.default_.equals(var2.default_) : var2.default_ == null) {
                                    if (this.hytale != null ? this.hytale.equals(var2.hytale) : var2.hytale == null) {
                                       if (this.hytaleParent != null ? this.hytaleParent.equals(var2.hytaleParent) : var2.hytaleParent == null) {
                                          if (this.hytaleSchemaTypeField != null
                                             ? this.hytaleSchemaTypeField.equals(var2.hytaleSchemaTypeField)
                                             : var2.hytaleSchemaTypeField == null) {
                                             if (this.hytaleAssetRef != null ? this.hytaleAssetRef.equals(var2.hytaleAssetRef) : var2.hytaleAssetRef == null) {
                                                if (this.if_ != null ? this.if_.equals(var2.if_) : var2.if_ == null) {
                                                   if (this.then != null ? this.then.equals(var2.then) : var2.then == null) {
                                                      if (this.else_ != null ? this.else_.equals(var2.else_) : var2.else_ == null) {
                                                         if (this.doNotSuggest != null
                                                            ? this.doNotSuggest.equals(var2.doNotSuggest)
                                                            : var2.doNotSuggest == null) {
                                                            class="kw">return this.hytaleCustomAssetRef != null
                                                               ? this.hytaleCustomAssetRef.equals(var2.hytaleCustomAssetRef)
                                                               : var2.hytaleCustomAssetRef == null;
                                                         } else {
                                                            class="kw">return false;
                                                         }
                                                      } else {
                                                         class="kw">return false;
                                                      }
                                                   } else {
                                                      class="kw">return false;
                                                   }
                                                } else {
                                                   class="kw">return false;
                                                }
                                             } else {
                                                class="kw">return false;
                                             }
                                          } else {
                                             class="kw">return false;
                                          }
                                       } else {
                                          class="kw">return false;
                                       }
                                    } else {
                                       class="kw">return false;
                                    }
                                 } else {
                                    class="kw">return false;
                                 }
                              } else {
                                 class="kw">return false;
                              }
                           } else {
                              class="kw">return false;
                           }
                        } else {
                           class="kw">return false;
                        }
                     } else {
                        class="kw">return false;
                     }
                  } else {
                     class="kw">return false;
                  }
               } else {
                  class="kw">return false;
               }
            } else {
               class="kw">return false;
            }
         } else {
            class="kw">return false;
         }
      } else {
         class="kw">return false;
      }
   }

   @Override
   class="kw">public int hashCode() {
      int var1 = this.id != null ? this.id.hashCode() : 0;
      var1 = 31 * var1 + Arrays.hashCode(this.types);
      var1 = 31 * var1 + (this.title != null ? this.title.hashCode() : 0);
      var1 = 31 * var1 + (this.description != null ? this.description.hashCode() : 0);
      var1 = 31 * var1 + (this.markdownDescription != null ? this.markdownDescription.hashCode() : 0);
      var1 = 31 * var1 + Arrays.hashCode(this.anyOf);
      var1 = 31 * var1 + Arrays.hashCode(this.oneOf);
      var1 = 31 * var1 + Arrays.hashCode(this.allOf);
      var1 = 31 * var1 + (this.not != null ? this.not.hashCode() : 0);
      var1 = 31 * var1 + Arrays.hashCode(this.required);
      var1 = 31 * var1 + Arrays.hashCode(this.enumDescriptions);
      var1 = 31 * var1 + Arrays.hashCode(this.markdownEnumDescriptions);
      var1 = 31 * var1 + (this.definitions != null ? this.definitions.hashCode() : 0);
      var1 = 31 * var1 + (this.ref != null ? this.ref.hashCode() : 0);
      var1 = 31 * var1 + (this.data != null ? this.data.hashCode() : 0);
      var1 = 31 * var1 + (this.default_ != null ? this.default_.hashCode() : 0);
      var1 = 31 * var1 + (this.hytale != null ? this.hytale.hashCode() : 0);
      var1 = 31 * var1 + (this.hytaleParent != null ? this.hytaleParent.hashCode() : 0);
      var1 = 31 * var1 + (this.hytaleSchemaTypeField != null ? this.hytaleSchemaTypeField.hashCode() : 0);
      var1 = 31 * var1 + (this.hytaleAssetRef != null ? this.hytaleAssetRef.hashCode() : 0);
      var1 = 31 * var1 + (this.hytaleCustomAssetRef != null ? this.hytaleCustomAssetRef.hashCode() : 0);
      var1 = 31 * var1 + (this.if_ != null ? this.if_.hashCode() : 0);
      var1 = 31 * var1 + (this.then != null ? this.then.hashCode() : 0);
      var1 = 31 * var1 + (this.else_ != null ? this.else_.hashCode() : 0);
      class="kw">return 31 * var1 + (this.doNotSuggest != null ? this.doNotSuggest.hashCode() : 0);
   }

   class="kw">public class="kw">static void init() {
      CODEC.register(Priority.DEFAULT, "", Schema.class, BASE_CODEC);
      CODEC.register("null", NullSchema.class, NullSchema.CODEC);
      CODEC.register("string", StringSchema.class, StringSchema.CODEC);
      CODEC.register("number", NumberSchema.class, NumberSchema.CODEC);
      CODEC.register("integer", IntegerSchema.class, IntegerSchema.CODEC);
      CODEC.register("array", ArraySchema.class, ArraySchema.CODEC);
      CODEC.register("boolean", BooleanSchema.class, BooleanSchema.CODEC);
      CODEC.register("object", ObjectSchema.class, ObjectSchema.CODEC);
      UIEditor.init();
   }

   @Deprecated
   class="kw">private class="kw">static class ArrayOrNull class="kw">implements Codec<String[]> {
      class="kw">private ArrayOrNull() {
      }

      @Nullable
      class="kw">public String[] decode(@Nonnull BsonValue var1, @Nonnull ExtraInfo var2) {
         class="kw">return var1.isArray() ? Codec.STRING_ARRAY.decode(var1, var2) : null;
      }

      @Nonnull
      class="kw">public BsonValue encode(@Nullable String[] var1, ExtraInfo var2) {
         class="kw">return (BsonValue)(var1 != null ? Codec.STRING_ARRAY.encode(var1, var2) : new BsonNull());
      }

      @Nonnull
      @Override
      class="kw">public Schema toSchema(@Nonnull SchemaContext var1) {
         class="kw">return Schema.anyOf(new ArraySchema(), new NullSchema());
      }
   }

   @Deprecated
   class="kw">protected class="kw">static class BooleanOrSchema class="kw">implements Codec<Object> {
      class="kw">protected BooleanOrSchema() {
      }

      @Override
      class="kw">public Object decode(@Nonnull BsonValue var1, ExtraInfo var2) {
         class="kw">return var1.isBoolean() ? Codec.BOOLEAN.decode(var1, var2) : Schema.CODEC.decode(var1, var2);
      }

      @Override
      class="kw">public BsonValue encode(Object var1, ExtraInfo var2) {
         class="kw">return var1 class="kw">instanceof Boolean ? Codec.BOOLEAN.encode((Boolean)var1, var2) : Schema.CODEC.encode((Schema)var1, var2);
      }

      @Nonnull
      @Override
      class="kw">public Schema toSchema(@Nonnull SchemaContext var1) {
         class="kw">return Schema.anyOf(new BooleanSchema(), Schema.CODEC.toSchema(var1));
      }
   }

   class="kw">public class="kw">static class HytaleMetadata {
      class="kw">public class="kw">static class="kw">final BuilderCodec<Schema.HytaleMetadata> CODEC = BuilderCodec.builder(Schema.HytaleMetadata.class, Schema.HytaleMetadata::new)
         .append(
            new KeyedCodec<>("type", Codec.STRING, false, true),
            (var0, var1) -> var0.type = var1,
            var0 -> var0.type != null && var0.type.isEmpty() ? null : var0.type
         )
         .add()
         .append(new KeyedCodec<>("internalKeys", Codec.STRING_ARRAY, false, true), (var0, var1) -> var0.internalKeys = var1, var0 -> var0.internalKeys)
         .add()
         .append(new KeyedCodec<>("path", Codec.STRING, false, true), (var0, var1) -> var0.path = var1, var0 -> var0.path)
         .add()
         .append(new KeyedCodec<>("virtualPath", Codec.STRING, false, true), (var0, var1) -> var0.virtualPath = var1, var0 -> var0.virtualPath)
         .add()
         .append(new KeyedCodec<>("extension", Codec.STRING, false, true), (var0, var1) -> var0.extension = var1, var0 -> var0.extension)
         .add()
         .append(new KeyedCodec<>("idProvider", Codec.STRING, false, true), (var0, var1) -> var0.idProvider = var1, var0 -> var0.idProvider)
         .add()
         .append(new KeyedCodec<>("inheritsProperty", Codec.BOOLEAN, false, true), (var0, var1) -> var0.inheritsProperty = var1, var0 -> var0.inheritsProperty)
         .add()
         .append(new KeyedCodec<>("mergesProperties", Codec.BOOLEAN, false, true), (var0, var1) -> var0.mergesProperties = var1, var0 -> var0.mergesProperties)
         .add()
         .append(
            new KeyedCodec<>("uiDisplayMode", new EnumCodec<>(UIDisplayMode.DisplayMode.class), false, true),
            (var0, var1) -> var0.uiDisplayMode = var1,
            var0 -> var0.uiDisplayMode
         )
         .add()
         .append(
            new KeyedCodec<>("uiEditorComponent", UIEditor.CODEC, false, true), (var0, var1) -> var0.uiEditorComponent = var1, var0 -> var0.uiEditorComponent
         )
         .add()
         .append(new KeyedCodec<>("allowEmptyObject", Codec.BOOLEAN, false, true), (var0, var1) -> var0.allowEmptyObject = var1, var0 -> var0.allowEmptyObject)
         .add()
         .append(new KeyedCodec<>("uiEditorIgnore", Codec.BOOLEAN, false, true), (var0, var1) -> var0.uiEditorIgnore = var1, var0 -> var0.uiEditorIgnore)
         .add()
         .append(
            new KeyedCodec<>(
               "uiEditorFeatures", new ArrayCodec<>(new EnumCodec<>(UIEditorFeatures.EditorFeature.class), UIEditorFeatures.EditorFeature[]::new), false, true
            ),
            (var0, var1) -> var0.uiEditorFeatures = var1,
            var0 -> var0.uiEditorFeatures
         )
         .add()
         .append(
            new KeyedCodec<>("uiEditorPreview", new EnumCodec<>(UIEditorPreview.PreviewType.class), false, true),
            (var0, var1) -> var0.uiEditorPreview = var1,
            var0 -> var0.uiEditorPreview
         )
         .add()
         .append(new KeyedCodec<>("uiTypeIcon", Codec.STRING, false, true), (var0, var1) -> var0.uiTypeIcon = var1, var0 -> var0.uiTypeIcon)
         .add()
         .append(new KeyedCodec<>("uiPropertyTitle", Codec.STRING, false, true), (var0, var1) -> var0.uiPropertyTitle = var1, var0 -> var0.uiPropertyTitle)
         .add()
         .append(new KeyedCodec<>("uiSectionStart", Codec.STRING, false, true), (var0, var1) -> var0.uiSectionStart = var1, var0 -> var0.uiSectionStart)
         .add()
         .append(
            new KeyedCodec<>(
               "uiRebuildCaches", new ArrayCodec<>(new EnumCodec<>(UIRebuildCaches.ClientCache.class), UIRebuildCaches.ClientCache[]::new), false, true
            ),
            (var0, var1) -> var0.uiRebuildCaches = var1,
            var0 -> var0.uiRebuildCaches
         )
         .add()
         .append(
            new KeyedCodec<>("uiSidebarButtons", new ArrayCodec<>(UIButton.CODEC, UIButton[]::new), false, true),
            (var0, var1) -> var0.uiSidebarButtons = var1,
            var0 -> var0.uiSidebarButtons
         )
         .add()
         .append(
            new KeyedCodec<>("uiRebuildCachesForChildProperties", Codec.BOOLEAN, false, true),
            (var0, var1) -> var0.uiRebuildCachesForChildProperties = var1,
            var0 -> var0.uiRebuildCachesForChildProperties
         )
         .add()
         .append(
            new KeyedCodec<>("uiCollapsedByDefault", Codec.BOOLEAN, false, true),
            (var0, var1) -> var0.uiCollapsedByDefault = var1,
            var0 -> var0.uiCollapsedByDefault
         )
         .add()
         .append(
            new KeyedCodec<>("uiCreateButtons", new ArrayCodec<>(UIButton.CODEC, UIButton[]::new), false, true),
            (var0, var1) -> var0.uiCreateButtons = var1,
            var0 -> var0.uiCreateButtons
         )
         .add()
         .build();
      class="kw">private String type;
      class="kw">private String path;
      class="kw">private String virtualPath;
      class="kw">private String extension;
      class="kw">private String idProvider;
      class="kw">private String[] internalKeys;
      class="kw">private Boolean inheritsProperty;
      class="kw">private Boolean mergesProperties;
      class="kw">private UIEditorFeatures.EditorFeature[] uiEditorFeatures;
      class="kw">private UIEditorPreview.PreviewType uiEditorPreview;
      class="kw">private String uiTypeIcon;
      class="kw">private Boolean uiEditorIgnore;
      class="kw">private Boolean allowEmptyObject;
      class="kw">private UIDisplayMode.DisplayMode uiDisplayMode;
      class="kw">private UIEditor.EditorComponent uiEditorComponent;
      class="kw">private String uiPropertyTitle;
      class="kw">private String uiSectionStart;
      class="kw">private UIRebuildCaches.ClientCache[] uiRebuildCaches;
      class="kw">private Boolean uiRebuildCachesForChildProperties;
      class="kw">private UIButton[] uiSidebarButtons;
      class="kw">private Boolean uiCollapsedByDefault;
      class="kw">private UIButton[] uiCreateButtons;

      class="kw">public HytaleMetadata(String var1) {
         this.type = var1;
      }

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

      class="kw">public String getType() {
         class="kw">return this.type;
      }

      class="kw">public void setType(String var1) {
         this.type = var1;
      }

      class="kw">public String getPath() {
         class="kw">return this.path;
      }

      class="kw">public void setPath(String var1) {
         this.path = var1;
      }

      class="kw">public String getVirtualPath() {
         class="kw">return this.virtualPath;
      }

      class="kw">public void setVirtualPath(String var1) {
         this.virtualPath = var1;
      }

      class="kw">public String getExtension() {
         class="kw">return this.extension;
      }

      class="kw">public void setExtension(String var1) {
         this.extension = var1;
      }

      class="kw">public String getIdProvider() {
         class="kw">return this.idProvider;
      }

      class="kw">public void setIdProvider(String var1) {
         this.idProvider = var1;
      }

      class="kw">public String[] getInternalKeys() {
         class="kw">return this.internalKeys;
      }

      class="kw">public void setInternalKeys(String[] var1) {
         this.internalKeys = var1;
      }

      class="kw">public UIDisplayMode.DisplayMode getUiDisplayMode() {
         class="kw">return this.uiDisplayMode;
      }

      class="kw">public void setUiDisplayMode(UIDisplayMode.DisplayMode var1) {
         this.uiDisplayMode = var1;
      }

      class="kw">public UIEditor.EditorComponent getUiEditorComponent() {
         class="kw">return this.uiEditorComponent;
      }

      class="kw">public void setUiEditorComponent(UIEditor.EditorComponent var1) {
         this.uiEditorComponent = var1;
      }

      class="kw">public UIEditorFeatures.EditorFeature[] getUiEditorFeatures() {
         class="kw">return this.uiEditorFeatures;
      }

      class="kw">public void setUiEditorFeatures(UIEditorFeatures.EditorFeature[] var1) {
         this.uiEditorFeatures = var1;
      }

      class="kw">public UIEditorPreview.PreviewType getUiEditorPreview() {
         class="kw">return this.uiEditorPreview;
      }

      class="kw">public void setUiEditorPreview(UIEditorPreview.PreviewType var1) {
         this.uiEditorPreview = var1;
      }

      class="kw">public String getUiTypeIcon() {
         class="kw">return this.uiTypeIcon;
      }

      class="kw">public void setUiTypeIcon(String var1) {
         this.uiTypeIcon = var1;
      }

      class="kw">public Boolean getUiEditorIgnore() {
         class="kw">return this.uiEditorIgnore;
      }

      class="kw">public void setUiEditorIgnore(Boolean var1) {
         this.uiEditorIgnore = var1;
      }

      class="kw">public Boolean getAllowEmptyObject() {
         class="kw">return this.allowEmptyObject;
      }

      class="kw">public void setAllowEmptyObject(Boolean var1) {
         this.allowEmptyObject = var1;
      }

      class="kw">public String getUiPropertyTitle() {
         class="kw">return this.uiPropertyTitle;
      }

      class="kw">public void setUiPropertyTitle(String var1) {
         this.uiPropertyTitle = var1;
      }

      class="kw">public String getUiSectionStart() {
         class="kw">return this.uiSectionStart;
      }

      class="kw">public void setUiSectionStart(String var1) {
         this.uiSectionStart = var1;
      }

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

      class="kw">public void setInheritsProperty(boolean var1) {
         this.inheritsProperty = var1;
      }

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

      class="kw">public void setMergesProperties(boolean var1) {
         this.mergesProperties = var1;
      }

      class="kw">public UIRebuildCaches.ClientCache[] getUiRebuildCaches() {
         class="kw">return this.uiRebuildCaches;
      }

      class="kw">public void setUiRebuildCaches(UIRebuildCaches.ClientCache[] var1) {
         this.uiRebuildCaches = var1;
      }

      class="kw">public Boolean getUiRebuildCachesForChildProperties() {
         class="kw">return this.uiRebuildCachesForChildProperties;
      }

      class="kw">public void setUiRebuildCachesForChildProperties(Boolean var1) {
         this.uiRebuildCachesForChildProperties = var1;
      }

      class="kw">public UIButton[] getUiSidebarButtons() {
         class="kw">return this.uiSidebarButtons;
      }

      class="kw">public void setUiSidebarButtons(UIButton[] var1) {
         this.uiSidebarButtons = var1;
      }

      class="kw">public Boolean getUiCollapsedByDefault() {
         class="kw">return this.uiCollapsedByDefault;
      }

      class="kw">public void setUiCollapsedByDefault(Boolean var1) {
         this.uiCollapsedByDefault = var1;
      }

      class="kw">public UIButton[] getUiCreateButtons() {
         class="kw">return this.uiCreateButtons;
      }

      class="kw">public void setUiCreateButtons(UIButton[] var1) {
         this.uiCreateButtons = var1;
      }

      @Override
      class="kw">public boolean equals(@Nullable Object var1) {
         if (this == var1) {
            class="kw">return true;
         }

         if (var1 != null && this.getClass() == var1.getClass()) {
            Schema.HytaleMetadata var2 = (Schema.HytaleMetadata)var1;
            if (this.type != null ? this.type.equals(var2.type) : var2.type == null) {
               if (this.path != null ? this.path.equals(var2.path) : var2.path == null) {
                  if (this.virtualPath != null ? this.virtualPath.equals(var2.virtualPath) : var2.virtualPath == null) {
                     if (this.extension != null ? this.extension.equals(var2.extension) : var2.extension == null) {
                        if (this.idProvider != null ? this.idProvider.equals(var2.idProvider) : var2.idProvider == null) {
                           if (!Arrays.equals(this.internalKeys, var2.internalKeys)) {
                              class="kw">return false;
                           }

                           if (this.inheritsProperty != null ? this.inheritsProperty.equals(var2.inheritsProperty) : var2.inheritsProperty == null) {
                              if (this.mergesProperties != null ? this.mergesProperties.equals(var2.mergesProperties) : var2.mergesProperties == null) {
                                 if (!Arrays.equals(this.uiEditorFeatures, var2.uiEditorFeatures)) {
                                    class="kw">return false;
                                 }

                                 if (this.uiEditorPreview != var2.uiEditorPreview) {
                                    class="kw">return false;
                                 }

                                 if (this.uiTypeIcon != null ? this.uiTypeIcon.equals(var2.uiTypeIcon) : var2.uiTypeIcon == null) {
                                    if (this.uiEditorIgnore != null ? this.uiEditorIgnore.equals(var2.uiEditorIgnore) : var2.uiEditorIgnore == null) {
                                       if (this.allowEmptyObject != null ? this.allowEmptyObject.equals(var2.allowEmptyObject) : var2.allowEmptyObject == null) {
                                          if (this.uiDisplayMode != var2.uiDisplayMode) {
                                             class="kw">return false;
                                          }

                                          if (this.uiEditorComponent != null
                                             ? this.uiEditorComponent.equals(var2.uiEditorComponent)
                                             : var2.uiEditorComponent == null) {
                                             if (this.uiPropertyTitle != null
                                                ? this.uiPropertyTitle.equals(var2.uiPropertyTitle)
                                                : var2.uiPropertyTitle == null) {
                                                if (this.uiSectionStart != null ? this.uiSectionStart.equals(var2.uiSectionStart) : var2.uiSectionStart == null
                                                   )
                                                 {
                                                   if (!Arrays.equals(this.uiRebuildCaches, var2.uiRebuildCaches)) {
                                                      class="kw">return false;
                                                   }

                                                   if (this.uiRebuildCachesForChildProperties != null
                                                      ? this.uiRebuildCachesForChildProperties.equals(var2.uiRebuildCachesForChildProperties)
                                                      : var2.uiRebuildCachesForChildProperties == null) {
                                                      if (!Arrays.equals(this.uiSidebarButtons, var2.uiSidebarButtons)) {
                                                         class="kw">return false;
                                                      } else {
                                                         class="kw">return (
                                                               this.uiCollapsedByDefault != null
                                                                  ? this.uiCollapsedByDefault.equals(var2.uiCollapsedByDefault)
                                                                  : var2.uiCollapsedByDefault == null
                                                            )
                                                            ? Arrays.equals(this.uiCreateButtons, var2.uiCreateButtons)
                                                            : false;
                                                      }
                                                   } else {
                                                      class="kw">return false;
                                                   }
                                                } else {
                                                   class="kw">return false;
                                                }
                                             } else {
                                                class="kw">return false;
                                             }
                                          } else {
                                             class="kw">return false;
                                          }
                                       } else {
                                          class="kw">return false;
                                       }
                                    } else {
                                       class="kw">return false;
                                    }
                                 } else {
                                    class="kw">return false;
                                 }
                              } else {
                                 class="kw">return false;
                              }
                           } else {
                              class="kw">return false;
                           }
                        } else {
                           class="kw">return false;
                        }
                     } else {
                        class="kw">return false;
                     }
                  } else {
                     class="kw">return false;
                  }
               } else {
                  class="kw">return false;
               }
            } else {
               class="kw">return false;
            }
         } else {
            class="kw">return false;
         }
      }

      @Override
      class="kw">public int hashCode() {
         int var1 = this.type != null ? this.type.hashCode() : 0;
         var1 = 31 * var1 + (this.path != null ? this.path.hashCode() : 0);
         var1 = 31 * var1 + (this.virtualPath != null ? this.virtualPath.hashCode() : 0);
         var1 = 31 * var1 + (this.extension != null ? this.extension.hashCode() : 0);
         var1 = 31 * var1 + (this.idProvider != null ? this.idProvider.hashCode() : 0);
         var1 = 31 * var1 + Arrays.hashCode(this.internalKeys);
         var1 = 31 * var1 + (this.inheritsProperty != null ? this.inheritsProperty.hashCode() : 0);
         var1 = 31 * var1 + (this.mergesProperties != null ? this.mergesProperties.hashCode() : 0);
         var1 = 31 * var1 + Arrays.hashCode(this.uiEditorFeatures);
         var1 = 31 * var1 + (this.uiEditorPreview != null ? this.uiEditorPreview.hashCode() : 0);
         var1 = 31 * var1 + (this.uiTypeIcon != null ? this.uiTypeIcon.hashCode() : 0);
         var1 = 31 * var1 + (this.uiEditorIgnore != null ? this.uiEditorIgnore.hashCode() : 0);
         var1 = 31 * var1 + (this.allowEmptyObject != null ? this.allowEmptyObject.hashCode() : 0);
         var1 = 31 * var1 + (this.uiDisplayMode != null ? this.uiDisplayMode.hashCode() : 0);
         var1 = 31 * var1 + (this.uiEditorComponent != null ? this.uiEditorComponent.hashCode() : 0);
         var1 = 31 * var1 + (this.uiPropertyTitle != null ? this.uiPropertyTitle.hashCode() : 0);
         var1 = 31 * var1 + (this.uiSectionStart != null ? this.uiSectionStart.hashCode() : 0);
         var1 = 31 * var1 + Arrays.hashCode(this.uiRebuildCaches);
         var1 = 31 * var1 + (this.uiRebuildCachesForChildProperties != null ? this.uiRebuildCachesForChildProperties.hashCode() : 0);
         var1 = 31 * var1 + Arrays.hashCode(this.uiSidebarButtons);
         var1 = 31 * var1 + (this.uiCollapsedByDefault != null ? this.uiCollapsedByDefault.hashCode() : 0);
         class="kw">return 31 * var1 + Arrays.hashCode(this.uiCreateButtons);
      }
   }

   class="kw">public class="kw">static class InheritSettings {
      class="kw">public class="kw">static class="kw">final BuilderCodec<Schema.InheritSettings> CODEC = BuilderCodec.builder(Schema.InheritSettings.class, Schema.InheritSettings::new)
         .append(new KeyedCodec<>("type", Codec.STRING, false, true), (var0, var1) -> var0.type = var1, var0 -> var0.type)
         .add()
         .append(new KeyedCodec<>("mapKey", Codec.STRING, false, true), (var0, var1) -> var0.mapKey = var1, var0 -> var0.mapKey)
         .add()
         .append(new KeyedCodec<>("mapKeyValue", Codec.STRING, false, true), (var0, var1) -> var0.mapKeyValue = var1, var0 -> var0.mapKeyValue)
         .add()
         .build();
      class="kw">private String type;
      class="kw">private String mapKey;
      class="kw">private String mapKeyValue;

      class="kw">public InheritSettings(String var1) {
         this.type = var1;
      }

      class="kw">protected InheritSettings() {
      }

      class="kw">public String getType() {
         class="kw">return this.type;
      }

      class="kw">public void setType(String var1) {
         this.type = var1;
      }

      class="kw">public String getMapKey() {
         class="kw">return this.mapKey;
      }

      class="kw">public void setMapKey(String var1) {
         this.mapKey = var1;
      }

      class="kw">public String getMapKeyValue() {
         class="kw">return this.mapKeyValue;
      }

      class="kw">public void setMapKeyValue(String var1) {
         this.mapKeyValue = var1;
      }

      @Override
      class="kw">public boolean equals(@Nullable Object var1) {
         if (this == var1) {
            class="kw">return true;
         }

         if (var1 != null && this.getClass() == var1.getClass()) {
            Schema.InheritSettings var2 = (Schema.InheritSettings)var1;
            if (this.type != null ? this.type.equals(var2.type) : var2.type == null) {
               if (this.mapKey != null ? this.mapKey.equals(var2.mapKey) : var2.mapKey == null) {
                  class="kw">return this.mapKeyValue != null ? this.mapKeyValue.equals(var2.mapKeyValue) : var2.mapKeyValue == null;
               } else {
                  class="kw">return false;
               }
            } else {
               class="kw">return false;
            }
         } else {
            class="kw">return false;
         }
      }

      @Override
      class="kw">public int hashCode() {
         int var1 = this.type != null ? this.type.hashCode() : 0;
         var1 = 31 * var1 + (this.mapKey != null ? this.mapKey.hashCode() : 0);
         class="kw">return 31 * var1 + (this.mapKeyValue != null ? this.mapKeyValue.hashCode() : 0);
      }
   }

   class="kw">public class="kw">static class SchemaTypeField {
      class="kw">public class="kw">static class="kw">final BuilderCodec<Schema.SchemaTypeField> CODEC = BuilderCodec.builder(Schema.SchemaTypeField.class, Schema.SchemaTypeField::new)
         .append(new KeyedCodec<>("property", Codec.STRING, false, true), (var0, var1) -> var0.property = var1, var0 -> var0.property)
         .add()
         .append(new KeyedCodec<>("defaultValue", Codec.STRING, false, true), (var0, var1) -> var0.defaultValue = var1, var0 -> var0.defaultValue)
         .add()
         .append(new KeyedCodec<>("values", Codec.STRING_ARRAY, false, true), (var0, var1) -> var0.values = var1, var0 -> var0.values)
         .add()
         .append(
            new KeyedCodec<>("parentPropertyKey", Codec.STRING, false, true), (var0, var1) -> var0.parentPropertyKey = var1, var0 -> var0.parentPropertyKey
         )
         .add()
         .build();
      class="kw">private String property;
      class="kw">private String defaultValue;
      class="kw">private String[] values;
      class="kw">private String parentPropertyKey;

      class="kw">public SchemaTypeField(String var1, String var2, String... var3) {
         this.property = var1;
         this.defaultValue = var2;
         this.values = var3;
      }

      class="kw">protected SchemaTypeField() {
      }

      class="kw">public String getProperty() {
         class="kw">return this.property;
      }

      class="kw">public String getDefaultValue() {
         class="kw">return this.defaultValue;
      }

      class="kw">public String[] getValues() {
         class="kw">return this.values;
      }

      class="kw">public String getParentPropertyKey() {
         class="kw">return this.parentPropertyKey;
      }

      class="kw">public void setParentPropertyKey(String var1) {
         this.parentPropertyKey = var1;
      }

      @Override
      class="kw">public boolean equals(Object var1) {
         if (var1 != null && this.getClass() == var1.getClass()) {
            Schema.SchemaTypeField var2 = (Schema.SchemaTypeField)var1;
            class="kw">return Objects.equals(this.property, var2.property)
               && Objects.equals(this.defaultValue, var2.defaultValue)
               && Arrays.deepEquals(this.values, var2.values)
               && Objects.equals(this.parentPropertyKey, var2.parentPropertyKey);
         } else {
            class="kw">return false;
         }
      }

      @Override
      class="kw">public int hashCode() {
         int var1 = Objects.hashCode(this.property);
         var1 = 31 * var1 + Objects.hashCode(this.defaultValue);
         var1 = 31 * var1 + Arrays.hashCode(this.values);
         class="kw">return 31 * var1 + Objects.hashCode(this.parentPropertyKey);
      }
   }

   @Deprecated
   class="kw">private class="kw">static class StringOrBlank class="kw">implements Codec<String> {
      class="kw">private StringOrBlank() {
      }

      class="kw">public String decode(@Nonnull BsonValue var1, ExtraInfo var2) {
         if (var1.isString()) {
            class="kw">return Codec.STRING.decode(var1, var2);
         }

         if (var1.isArray()) {
            BsonArray var3 = var1.asArray();

            for (int var4 = 0; var4 < var3.size(); var4++) {
               BsonValue var5 = var3.get(var4);
               if (!var5.asString().getValue().equals("null")) {
                  class="kw">return Codec.STRING.decode(var5, var2);
               }
            }

            throw new IllegalArgumentException("Unknown type (in array)");
         } else {
            class="kw">return "";
         }
      }

      @Nonnull
      class="kw">public BsonValue encode(@Nonnull String var1, ExtraInfo var2) {
         class="kw">return Codec.STRING.encode(var1, var2);
      }

      @Nonnull
      @Override
      class="kw">public Schema toSchema(@Nonnull SchemaContext var1) {
         class="kw">return Schema.anyOf(new ArraySchema(), new StringSchema());
      }
   }
}