Piglins are ponified \0/

This commit is contained in:
Sollace 2020-03-22 18:27:51 +02:00
parent 83d0544959
commit f2016efcc4
4 changed files with 43 additions and 19 deletions

View file

@ -2,40 +2,59 @@ package com.minelittlepony.client.model.entity;
import net.minecraft.entity.mob.HostileEntity;
import net.minecraft.entity.mob.PiglinEntity;
import net.minecraft.util.math.MathHelper;
import com.minelittlepony.client.model.entity.race.AlicornModel;
import com.minelittlepony.client.render.EquineRenderManager;
import com.minelittlepony.pony.IPony;
public class PiglinPonyModel extends AlicornModel<HostileEntity> {
public class PiglinPonyModel extends ZomponyModel<HostileEntity> {
private boolean isPegasus;
public PiglinPonyModel() {
super(false);
}
private PiglinEntity.Activity activity;
@Override
public void animateModel(HostileEntity entity, float move, float swing, float ticks) {
isPegasus = entity.getUuid().getLeastSignificantBits() % 30 == 0;
public void updateLivingState(HostileEntity entity, IPony pony, EquineRenderManager.Mode mode) {
super.updateLivingState(entity, pony, mode);
leftArmPose = ArmPose.EMPTY;
rightArmPose = entity.getMainHandStack().isEmpty() ? ArmPose.EMPTY : ArmPose.ITEM;
if (entity instanceof PiglinEntity) {
PiglinEntity piglinEntity = (PiglinEntity)entity;
PiglinEntity.Activity activity = piglinEntity.getActivity();
leftArmPose = ArmPose.EMPTY;
rightArmPose = ArmPose.EMPTY;
activity = piglinEntity.getActivity();
if (activity == PiglinEntity.Activity.CROSSBOW_HOLD) {
rightArmPose = ArmPose.CROSSBOW_HOLD;
} else if (activity == PiglinEntity.Activity.CROSSBOW_CHARGE) {
rightArmPose = ArmPose.BOW_AND_ARROW;
rightArmPose = ArmPose.CROSSBOW_CHARGE;
} else if (activity == PiglinEntity.Activity.ADMIRING_ITEM) {
leftArmPose = ArmPose.ITEM;
}
} else {
activity = PiglinEntity.Activity.DEFAULT;
}
}
@Override
public boolean canFly() {
return isPegasus;
public void setAngles(HostileEntity entity, float move, float swing, float ticks, float headYaw, float headPitch) {
super.setAngles(entity, move, swing, ticks, headYaw, headPitch);
if (activity == PiglinEntity.Activity.ADMIRING_ITEM) {
leftArm.yaw = 0.5F;
leftArm.pitch = -1.9F;
leftArm.pivotY += 4;
leftArm.pivotZ += 3;
leftArm.pivotX += 2;
head.pitch = MathHelper.sin(ticks / 12) / 6 + 0.5F;
head.yaw = 0;
head.roll = MathHelper.sin(ticks / 10) / 3F;
helmet.copyPositionAndRotation(head);
}
}
@Override
protected boolean isZombified(HostileEntity entity) {
return !(entity instanceof PiglinEntity);
}
}

View file

@ -17,6 +17,7 @@ public class ZomponyModel<Zombie extends HostileEntity> extends AlicornModel<Zom
@Override
public void animateModel(Zombie entity, float move, float swing, float ticks) {
super.animateModel(entity, move, swing, ticks);
isPegasus = entity.getUuid().getLeastSignificantBits() % 30 == 0;
}
@ -24,7 +25,7 @@ public class ZomponyModel<Zombie extends HostileEntity> extends AlicornModel<Zom
protected void rotateLegs(float move, float swing, float ticks, Zombie entity) {
super.rotateLegs(move, swing, ticks, entity);
if (rightArmPose == ArmPose.EMPTY) {
if (isZombified(entity)) {
if (islookAngleRight(move)) {
rotateArmHolding(rightArm, 1, getSwingAmount(), ticks);
((MsonPart)rightArm).shift(0.5F, 1.5F, 3);
@ -35,6 +36,10 @@ public class ZomponyModel<Zombie extends HostileEntity> extends AlicornModel<Zom
}
}
protected boolean isZombified(Zombie entity) {
return rightArmPose == ArmPose.EMPTY;
}
public boolean islookAngleRight(float move) {
return MathHelper.sin(move / 20) < 0;
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.9 KiB

After

Width:  |  Height:  |  Size: 2.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.9 KiB

After

Width:  |  Height:  |  Size: 4.4 KiB