Posted January 10, 20169 yr So, I need to render my custom model (a backpack) on the player when my item is in my custom slot. I know how to check for my item there, I am just not sure how to render it. I know it requires me to use this new system in 1.8, but I have no clue where to start. If someone could point me to a tutorial, some docs, or give me some examples on how to accomplish this, it would be great. I am not a cat. I know my profile picture is sexy and amazing beyond anything you could imagine but my cat like features only persist in my fierce eyes. I might be a cat.
January 10, 20169 yr Author Bump I am not a cat. I know my profile picture is sexy and amazing beyond anything you could imagine but my cat like features only persist in my fierce eyes. I might be a cat.
January 10, 20169 yr Author So, I actually got some progress done on this (looking through the system). And, the model renders, but with two problems: first is MAJOR FPS drop (150 to 3). I am guessing it is because I add the layer in my event constantly, but I am not sure. Secondly, the model scale is incorrect, as shown here (it's rendered too small, just below the body which is where it needs to be): My classes: Layer renderer base (for ease when I need to render different backpack models): package com.happykiller.weightlimit.client.renderer; import com.happykiller.weightlimit.main.ModReference; import com.happykiller.weightlimit.render.models.ModelMediumBackpack; import net.minecraft.client.model.ModelBase; import net.minecraft.client.renderer.GlStateManager; import net.minecraft.client.renderer.entity.RendererLivingEntity; import net.minecraft.client.renderer.entity.layers.LayerRenderer; import net.minecraft.entity.EntityLivingBase; import net.minecraft.util.ResourceLocation; public abstract class LayerBackpackBase<T extends ModelBase> implements LayerRenderer<EntityLivingBase> { protected T field_177186_d; private final RendererLivingEntity<?> renderer; private float alpha = 1.0F; private float colorR = 1.0F; private float colorG = 1.0F; private float colorB = 1.0F; public LayerBackpackBase(RendererLivingEntity<?> rendererIn) { this.renderer = rendererIn; this.initBackpack(); } public void doRenderLayer(EntityLivingBase entitylivingbaseIn, float p_177141_2_, float p_177141_3_, float partialTicks, float p_177141_5_, float p_177141_6_, float p_177141_7_, float scale) { renderLayer(entitylivingbaseIn, p_177141_2_, p_177141_3_, partialTicks, p_177141_5_, p_177141_6_, p_177141_7_, scale); } private void renderLayer(EntityLivingBase entitylivingbaseIn, float f1, float f2, float partialTicks, float p_177182_5_, float p_177182_6_, float p_177182_7_, float scale) { T t = this.field_177186_d; t.setModelAttributes(this.renderer.getMainModel()); t.setLivingAnimations(entitylivingbaseIn, f1, f2, partialTicks); t = (T)new ModelMediumBackpack(6.0F); this.setShownLayer(t); this.renderer.bindTexture(new ResourceLocation(ModReference.MOD_RL + "/models/backpack/MediumBackpack.png")); GlStateManager.color(this.colorR, this.colorG, this.colorB, this.alpha); t.render(entitylivingbaseIn, f1, f2, p_177182_5_, p_177182_6_, p_177182_7_, scale); } public boolean shouldCombineTextures() { return false; } public abstract void initBackpack(); protected abstract void setShownLayer(T model); } LayerBipedBackpack (the layer I add): package com.happykiller.weightlimit.client.renderer; import net.minecraft.client.model.ModelBiped; import net.minecraft.client.renderer.entity.RendererLivingEntity; import net.minecraft.entity.EntityLivingBase; import net.minecraftforge.fml.relauncher.Side; import net.minecraftforge.fml.relauncher.SideOnly; @SideOnly(Side.CLIENT) public class LayerBipedBackpack extends LayerBackpackBase<ModelBiped> { public LayerBipedBackpack(RendererLivingEntity<?> rendererIn) { super(rendererIn); } public void initBackpack() { this.field_177186_d = new ModelBiped(0.5F); } protected void setShownLayer(ModelBiped model) { model.bipedBody.showModel = true; } } My Event: @SubscribeEvent public void onRenderEntity(RenderLivingEvent.Post<EntityPlayer> event) { //System.out.println("Render Event Called"); if(event.entity instanceof EntityPlayer) { EntityPlayer player = (EntityPlayer)event.entity; event.renderer.addLayer(new LayerBipedBackpack(event.renderer)); LogHelper.logInfo("Layer Added"); } } I hope someone can help me here, I don't understand this plague of the new layer system. It seems no one ever has a clue on what to do here. I am not a cat. I know my profile picture is sexy and amazing beyond anything you could imagine but my cat like features only persist in my fierce eyes. I might be a cat.
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.