package net.minecraft.data.models.blockstates; import com.google.gson.JsonElement; import com.google.gson.JsonObject; import java.util.function.Function; public class VariantProperty { final String key; final Function serializer; public VariantProperty(String key, Function serializer) { this.key = key; this.serializer = serializer; } public VariantProperty.Value withValue(T value) { return new VariantProperty.Value(value); } public String toString() { return this.key; } public class Value { private final T value; public Value(final T value) { this.value = value; } public VariantProperty getKey() { return VariantProperty.this; } public void addToVariant(JsonObject jsonObject) { jsonObject.add(VariantProperty.this.key, (JsonElement)VariantProperty.this.serializer.apply(this.value)); } public String toString() { return VariantProperty.this.key + "=" + this.value; } } }