package net.minecraft.client.renderer.block.model; import com.mojang.math.Quadrant; import java.util.function.UnaryOperator; import net.fabricmc.api.EnvType; import net.fabricmc.api.Environment; import net.minecraft.resources.ResourceLocation; @FunctionalInterface @Environment(EnvType.CLIENT) public interface VariantMutator extends UnaryOperator { VariantMutator.VariantProperty X_ROT = Variant::withXRot; VariantMutator.VariantProperty Y_ROT = Variant::withYRot; VariantMutator.VariantProperty MODEL = Variant::withModel; VariantMutator.VariantProperty UV_LOCK = Variant::withUvLock; default VariantMutator then(VariantMutator variantMutator) { return variant -> (Variant)variantMutator.apply((Variant)this.apply(variant)); } @FunctionalInterface @Environment(EnvType.CLIENT) public interface VariantProperty { Variant apply(Variant variant, T object); default VariantMutator withValue(T object) { return variant -> this.apply(variant, object); } } }