package com.minelittlepony.client.model; import net.minecraft.client.model.Model; import net.minecraft.client.model.ModelPart; import net.minecraft.entity.LivingEntity; import net.minecraft.util.Identifier; import org.jetbrains.annotations.Nullable; import com.minelittlepony.api.model.IModel; import com.minelittlepony.client.model.armour.PonyArmourModel; import com.minelittlepony.mson.api.*; import java.util.function.*; public record PlayerModelKey ( ModelKey steveKey, ModelKey alexKey, MsonModel.Factory> armorFactory ) { PlayerModelKey(String name, BiFunction modelFactory, MsonModel.Factory> armorFactory) { this( new ModelKeyImpl<>(new Identifier("minelittlepony", "races/steve/" + name), tree -> modelFactory.apply(tree, false)), new ModelKeyImpl<>(new Identifier("minelittlepony", "races/alex/" + name), tree -> modelFactory.apply(tree, true)), armorFactory ); } public ModelKey getKey(boolean slimArms) { return slimArms ? alexKey : steveKey; } public ModelWrapper create(boolean slimArms) { return create(slimArms, null); } @SuppressWarnings({"rawtypes", "unchecked"}) public ModelWrapper create(boolean slimArms, @Nullable Consumer initializer) { return new ModelWrapper(this, slimArms, initializer); } }