2019-06-24 11:25:39 +02:00
|
|
|
package com.minelittlepony.client.model;
|
2019-05-27 17:59:15 +02:00
|
|
|
|
2019-11-22 19:24:22 +02:00
|
|
|
import net.minecraft.client.model.ModelPart;
|
2019-11-30 17:19:16 +02:00
|
|
|
import net.minecraft.client.render.entity.model.BipedEntityModel;
|
2021-02-06 16:52:06 +02:00
|
|
|
import net.minecraft.client.render.entity.model.ModelWithArms;
|
2019-11-23 19:28:42 +02:00
|
|
|
import net.minecraft.client.util.math.MatrixStack;
|
2019-05-27 17:59:15 +02:00
|
|
|
import net.minecraft.entity.LivingEntity;
|
2019-07-20 20:16:54 +02:00
|
|
|
import net.minecraft.util.Arm;
|
2019-05-27 17:59:15 +02:00
|
|
|
|
2021-02-06 16:52:06 +02:00
|
|
|
import com.minelittlepony.api.model.BodyPart;
|
|
|
|
import com.minelittlepony.api.model.IUnicorn;
|
|
|
|
import com.minelittlepony.api.model.ModelAttributes;
|
2020-04-03 23:54:12 +02:00
|
|
|
import com.minelittlepony.api.pony.IPony;
|
|
|
|
import com.minelittlepony.api.pony.IPonyData;
|
|
|
|
import com.minelittlepony.api.pony.meta.Size;
|
2023-03-20 01:30:46 +00:00
|
|
|
import com.minelittlepony.mson.api.ModelView;
|
2019-11-29 16:40:02 +02:00
|
|
|
import com.minelittlepony.mson.api.model.BoxBuilder.RenderLayerSetter;
|
2019-05-27 17:59:15 +02:00
|
|
|
|
2021-02-06 16:52:06 +02:00
|
|
|
public interface IPonyMixinModel<T extends LivingEntity, M extends IPonyModel<T>> extends IPonyModel<T>, ModelWithArms {
|
2019-05-27 17:59:15 +02:00
|
|
|
|
|
|
|
M mixin();
|
|
|
|
|
2019-11-25 17:49:20 +02:00
|
|
|
@Override
|
2023-03-20 01:30:46 +00:00
|
|
|
default void init(ModelView context) {
|
2019-11-25 17:49:20 +02:00
|
|
|
mixin().init(context);
|
2019-11-29 16:40:02 +02:00
|
|
|
if (mixin() instanceof RenderLayerSetter && this instanceof RenderLayerSetter) {
|
|
|
|
((RenderLayerSetter)this).setRenderLayerFactory(((RenderLayerSetter)mixin()).getRenderLayerFactory());
|
|
|
|
}
|
2019-11-25 17:49:20 +02:00
|
|
|
}
|
|
|
|
|
2019-07-03 13:17:11 +02:00
|
|
|
@Override
|
2021-02-06 16:52:06 +02:00
|
|
|
default void updateLivingState(T entity, IPony pony, ModelAttributes.Mode mode) {
|
2019-11-30 12:14:52 +02:00
|
|
|
mixin().updateLivingState(entity, pony, mode);
|
2019-07-03 13:17:11 +02:00
|
|
|
}
|
|
|
|
|
2019-11-30 17:19:16 +02:00
|
|
|
@Override
|
|
|
|
default void copyAttributes(BipedEntityModel<T> other) {
|
|
|
|
mixin().copyAttributes(other);
|
|
|
|
}
|
|
|
|
|
2019-05-27 17:59:15 +02:00
|
|
|
@Override
|
2019-11-23 19:28:42 +02:00
|
|
|
default void transform(BodyPart part, MatrixStack stack) {
|
|
|
|
mixin().transform(part, stack);
|
2019-05-27 17:59:15 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
@Override
|
2021-02-06 16:52:06 +02:00
|
|
|
default ModelAttributes getAttributes() {
|
2019-06-24 11:25:39 +02:00
|
|
|
return mixin().getAttributes();
|
2019-05-27 17:59:15 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
@Override
|
|
|
|
default Size getSize() {
|
|
|
|
return mixin().getSize();
|
|
|
|
}
|
|
|
|
|
|
|
|
@Override
|
2021-02-06 16:52:06 +02:00
|
|
|
default void setMetadata(IPonyData meta) {
|
|
|
|
mixin().setMetadata(meta);
|
2019-05-27 17:59:15 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
@Override
|
|
|
|
default float getSwingAmount() {
|
|
|
|
return mixin().getSwingAmount();
|
|
|
|
}
|
|
|
|
|
|
|
|
@Override
|
|
|
|
default float getWobbleAmount() {
|
|
|
|
return mixin().getWobbleAmount();
|
|
|
|
}
|
|
|
|
|
|
|
|
@Override
|
|
|
|
default float getRiderYOffset() {
|
|
|
|
return mixin().getRiderYOffset();
|
|
|
|
}
|
|
|
|
|
|
|
|
@Override
|
2019-11-23 19:28:42 +02:00
|
|
|
default void setArmAngle(Arm arm, MatrixStack stack) {
|
2021-02-06 16:52:06 +02:00
|
|
|
if (mixin() instanceof ModelWithArms) {
|
|
|
|
((ModelWithArms)mixin()).setArmAngle(arm, stack);
|
|
|
|
}
|
2019-05-27 17:59:15 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
@Override
|
2019-11-22 19:24:22 +02:00
|
|
|
default ModelPart getHead() {
|
2019-05-27 17:59:15 +02:00
|
|
|
return mixin().getHead();
|
|
|
|
}
|
|
|
|
|
|
|
|
@Override
|
2019-11-22 19:24:22 +02:00
|
|
|
default ModelPart getBodyPart(BodyPart part) {
|
2019-05-27 17:59:15 +02:00
|
|
|
return mixin().getBodyPart(part);
|
|
|
|
}
|
|
|
|
|
2021-06-20 02:25:06 +02:00
|
|
|
interface Caster<T extends LivingEntity, M extends IPonyModel<T> & IUnicorn, ArmModel> extends IPonyMixinModel<T, M>, IUnicorn {
|
2019-05-27 17:59:15 +02:00
|
|
|
@Override
|
|
|
|
default boolean isCasting() {
|
|
|
|
return mixin().isCasting();
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|