2016-11-17 05:45:04 +01:00
|
|
|
package com.minelittlepony.renderer.layer;
|
2015-08-02 00:36:33 +02:00
|
|
|
|
2016-11-17 05:45:04 +01:00
|
|
|
import com.minelittlepony.ducks.IRenderPony;
|
|
|
|
import com.minelittlepony.model.BodyPart;
|
|
|
|
import com.minelittlepony.model.PlayerModel;
|
2015-08-13 00:22:21 +02:00
|
|
|
import net.minecraft.client.entity.AbstractClientPlayer;
|
2016-05-04 03:23:57 +02:00
|
|
|
import net.minecraft.client.renderer.entity.RenderLivingBase;
|
2015-08-13 00:22:21 +02:00
|
|
|
import net.minecraft.client.renderer.entity.RenderPlayer;
|
|
|
|
import net.minecraft.client.renderer.entity.layers.LayerCape;
|
|
|
|
import net.minecraft.entity.player.EnumPlayerModelParts;
|
2016-12-29 09:06:25 +01:00
|
|
|
import net.minecraft.init.Items;
|
|
|
|
import net.minecraft.inventory.EntityEquipmentSlot;
|
2016-05-04 03:23:57 +02:00
|
|
|
import net.minecraft.util.math.MathHelper;
|
2015-08-02 00:36:33 +02:00
|
|
|
|
2016-12-29 09:06:25 +01:00
|
|
|
import javax.annotation.Nonnull;
|
|
|
|
|
2016-11-25 05:40:19 +01:00
|
|
|
import static net.minecraft.client.renderer.GlStateManager.*;
|
|
|
|
|
2017-06-13 05:55:50 +02:00
|
|
|
public class LayerPonyCape extends AbstractPonyLayer<AbstractClientPlayer> {
|
2015-08-02 00:36:33 +02:00
|
|
|
|
2016-05-04 03:23:57 +02:00
|
|
|
public LayerPonyCape(RenderLivingBase<? extends AbstractClientPlayer> entity) {
|
2017-06-13 05:55:50 +02:00
|
|
|
super(entity, new LayerCape((RenderPlayer) entity));
|
2015-08-02 00:36:33 +02:00
|
|
|
}
|
|
|
|
|
2016-04-07 04:13:05 +02:00
|
|
|
@Override
|
2017-06-13 05:55:50 +02:00
|
|
|
public void doPonyRender(@Nonnull AbstractClientPlayer clientPlayer, float p2, float p3, float ticks, float p5, float p6, float p7, float scale) {
|
2018-04-24 14:55:32 +02:00
|
|
|
PlayerModel model = ((IRenderPony) getRenderer()).getPlayerModel();
|
2017-06-13 05:55:50 +02:00
|
|
|
if (clientPlayer.hasPlayerInfo() && !clientPlayer.isInvisible()
|
2016-12-29 09:06:25 +01:00
|
|
|
&& clientPlayer.isWearing(EnumPlayerModelParts.CAPE) && clientPlayer.getLocationCape() != null
|
|
|
|
&& clientPlayer.getItemStackFromSlot(EntityEquipmentSlot.CHEST).getItem() != Items.ELYTRA) {
|
2015-08-13 00:22:21 +02:00
|
|
|
pushMatrix();
|
2016-04-03 07:05:31 +02:00
|
|
|
model.getModel().transform(BodyPart.BODY);
|
2015-08-13 00:22:21 +02:00
|
|
|
translate(0.0F, 0.24F, 0.0F);
|
2016-04-09 08:24:15 +02:00
|
|
|
model.getModel().bipedBody.postRender(scale);
|
2015-08-13 00:22:21 +02:00
|
|
|
|
2016-12-29 09:06:25 +01:00
|
|
|
double d = clientPlayer.prevChasingPosX + (clientPlayer.chasingPosX - clientPlayer.prevChasingPosX) * scale - (clientPlayer.prevPosX + (clientPlayer.posX - clientPlayer.prevPosX) * scale);
|
|
|
|
double d1 = clientPlayer.prevChasingPosY + (clientPlayer.chasingPosY - clientPlayer.prevChasingPosY) * scale - (clientPlayer.prevPosY + (clientPlayer.posY - clientPlayer.prevPosY) * scale);
|
|
|
|
double d2 = clientPlayer.prevChasingPosZ + (clientPlayer.chasingPosZ - clientPlayer.prevChasingPosZ) * scale - (clientPlayer.prevPosZ + (clientPlayer.posZ - clientPlayer.prevPosZ) * scale);
|
|
|
|
float f10 = clientPlayer.prevRenderYawOffset + (clientPlayer.renderYawOffset - clientPlayer.prevRenderYawOffset) * scale;
|
2015-08-13 00:22:21 +02:00
|
|
|
double d3 = MathHelper.sin(f10 * 3.1415927F / 180.0F);
|
|
|
|
double d4 = (-MathHelper.cos(f10 * 3.1415927F / 180.0F));
|
|
|
|
float f12 = (float) d1 * 10.0F;
|
|
|
|
if (f12 < -6.0F) {
|
|
|
|
f12 = -6.0F;
|
|
|
|
}
|
|
|
|
|
|
|
|
if (f12 > 32.0F) {
|
|
|
|
f12 = 32.0F;
|
|
|
|
}
|
|
|
|
|
|
|
|
float f13 = (float) (d * d3 + d2 * d4) * 100.0F;
|
|
|
|
float f14 = (float) (d * d4 - d2 * d3) * 100.0F;
|
|
|
|
if (f13 < 0.0F) {
|
|
|
|
f13 = 0.0F;
|
|
|
|
}
|
|
|
|
|
|
|
|
float f15 = clientPlayer.prevCameraYaw + (clientPlayer.cameraYaw - clientPlayer.prevCameraYaw) * scale;
|
2016-12-29 09:06:25 +01:00
|
|
|
f12 += MathHelper.sin((clientPlayer.prevDistanceWalkedModified + (clientPlayer.distanceWalkedModified - clientPlayer.prevDistanceWalkedModified) * scale) * 6.0F) * 32.0F * f15;
|
2015-08-13 00:22:21 +02:00
|
|
|
|
|
|
|
rotate(2.0F + f13 / 12.0F + f12, 1.0F, 0.0F, 0.0F);
|
|
|
|
rotate(f14 / 2.0F, 0.0F, 0.0F, 1.0F);
|
|
|
|
rotate(-f14 / 2.0F, 0.0F, 1.0F, 0.0F);
|
|
|
|
rotate(180.0F, 0.0F, 0.0F, 1.0F);
|
|
|
|
rotate(90.0F, 1.0F, 0.0F, 0.0F);
|
2017-06-13 05:55:50 +02:00
|
|
|
this.getRenderer().bindTexture(clientPlayer.getLocationCape());
|
2015-12-09 04:14:42 +01:00
|
|
|
model.getModel().renderCape(0.0625F);
|
2015-08-13 00:22:21 +02:00
|
|
|
popMatrix();
|
|
|
|
}
|
2015-08-02 00:36:33 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
@Override
|
|
|
|
public boolean shouldCombineTextures() {
|
|
|
|
return false;
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|