package com.minelittlepony.hdskins.gui; import com.minelittlepony.MineLittlePony; import com.minelittlepony.model.AbstractPonyModel; import com.minelittlepony.model.BodyPart; import com.minelittlepony.model.ModelWrapper; import com.minelittlepony.model.components.PonyElytra; import com.minelittlepony.pony.data.Pony; import com.minelittlepony.render.layer.AbstractPonyLayer; import com.voxelmodpack.hdskins.gui.RenderPlayerModel; import net.minecraft.client.model.ModelPlayer; import net.minecraft.client.renderer.GlStateManager; import net.minecraft.client.renderer.entity.RenderManager; import net.minecraft.client.renderer.entity.layers.LayerRenderer; import net.minecraft.entity.EntityLivingBase; import net.minecraft.init.Items; import net.minecraft.inventory.EntityEquipmentSlot; import net.minecraft.item.ItemStack; import net.minecraft.util.ResourceLocation; /** * Renderer used for the dummy pony model when selecting a skin. */ public class RenderPonyModel extends RenderPlayerModel<EntityPonyModel> { public RenderPonyModel(RenderManager renderer) { super(renderer); } @Override public ModelPlayer getEntityModel(EntityPonyModel playermodel) { ResourceLocation loc = getEntityTexture(playermodel); if (loc == null) { return super.getEntityModel(playermodel); } Pony thePony = MineLittlePony.getInstance().getManager().getPony(loc, playermodel.profile.getId()); ModelWrapper pm = thePony.getModel(true); pm.apply(thePony.getMetadata()); return pm.getModel(); } @Override protected LayerRenderer<EntityLivingBase> getElytraLayer() { final LayerRenderer<EntityLivingBase> elytra = super.getElytraLayer(); final PonyElytra modelElytra = new PonyElytra(); return new AbstractPonyLayer<EntityLivingBase>(this, elytra) { @Override public void doPonyRender(EntityLivingBase entityBase, float swing, float swingAmount, float ticks, float age, float yaw, float head, float scale) { EntityPonyModel entity = (EntityPonyModel) entityBase; ItemStack itemstack = entity.getItemStackFromSlot(EntityEquipmentSlot.CHEST); if (itemstack.getItem() == Items.ELYTRA) { GlStateManager.color(1.0F, 1.0F, 1.0F, 1.0F); bindTexture(entity.getElytraTexture()); GlStateManager.pushMatrix(); GlStateManager.translate(0.0F, 0.25F, 0.125F); ((AbstractPonyModel) mainModel).transform(BodyPart.BODY); modelElytra.setRotationAngles(swing, swingAmount, age, yaw, head, scale, entity); modelElytra.render(entity, swing, swingAmount, age, yaw, head, scale); GlStateManager.popMatrix(); } } }; } }