package com.minelittlepony.client.model; import net.minecraft.client.model.Model; import net.minecraft.util.Identifier; import com.minelittlepony.mson.api.ModelKey; import com.minelittlepony.mson.api.Mson; import com.minelittlepony.mson.api.MsonModel; import java.util.function.Function; public class PlayerModelKey { private final ModelKey key; private boolean slim; public final ModelKey steveKey; public final ModelKey alexKey; PlayerModelKey(Identifier id, Function factory) { this.key = Mson.getInstance().registerModel(id, () -> factory.apply(slim)); steveKey = new Key(false); alexKey = new Key(true); } public T createModel(boolean slimArms) { return (slimArms ? alexKey : steveKey).createModel(); } private class Key implements ModelKey { private final boolean slim; public Key(boolean slim) { this.slim = slim; } @Override public Identifier getId() { return key.getId(); } @Override public T createModel() { PlayerModelKey.this.slim = this.slim; return key.createModel(); } } }