Posted September 15, 201510 yr I've been looking into this for a while now, but the other threads asking about this either got no answers, got answers that didn't explain much and seemed to be outdated (the getArmorModel function in ItemArmor doesn't exist in 1.7.10?), or pointed to mod sources that just confused me more than when I started (iChun's hat mod, Botania, etc). So, what's the best way to render an IModelCustom on the player? I already have IEEP and a player tick handler set up to tell when the armor is being worn, and the armor is finished, so all that's left is rendering. Armor Item I tried this and many different things in it, but it did absolutely nothing every time: IItemRender with this in main mod class: MinecraftForgeClient.registerItemRenderer(AAItems.crownOfIris, new IrisRender());
September 15, 201510 yr getArmorModel is a method of Item in 1.7.10 (though for some reason it's only called if the Item is an instance of ItemArmor ). It expects a ModelBiped , though; so you'd either have to convert your models to Java models or create an adapter class that extends ModelBiped but renders an OBJ model. I don't know much about the rendering system, so I can't help much more than that. Please don't PM me to ask for help. Asking your question in a public thread preserves it for people who are having the same problem in the future.
September 15, 201510 yr Author That would be why I didn't see getArmorModel. An adapter doesn't seem hard, but this isn't working and gives no errors, so I'm not sure what to do now: ItemCrownOfIris: public class ItemCrownOfIris extends ItemArmor implements ISpecialArmor { public ItemCrownOfIris(ArmorMaterial armormat, int renderIndex, int slot) { super(armormat, renderIndex, slot); this.setUnlocalizedName("crownOfIris"); this.setTextureName(AAReference.MODID + ":" + getUnlocalizedName().substring(5)); this.setMaxStackSize(1); this.setCreativeTab(AACreativeTab.aaTab); AAUtils.AADespawn.registerItemToNeverDespawn(this); MinecraftForge.EVENT_BUS.register(this); } @SideOnly(Side.CLIENT) @Override public ModelBiped getArmorModel(EntityLivingBase entityLiving, ItemStack itemStack, int armorSlot) { return new IrisRender(); } @Override public String getArmorTexture(ItemStack stack, Entity entity, int slot, String type) { return AAReference.MODID + ":textures/models/armor/crownOfIrisInvis.png"; } @Override public void damageArmor(EntityLivingBase entity, ItemStack stack, DamageSource source, int damage, int slot) {} @Override public ArmorProperties getProperties(EntityLivingBase player, ItemStack armor, DamageSource source, double damage, int slot) { return new ArmorProperties(1000, 1000, 1000); } @Override public int getArmorDisplay(EntityPlayer player, ItemStack armor, int slot) { return 0; } @SubscribeEvent(receiveCanceled = true) public void onDamage(LivingHurtEvent event) { if(event.entityLiving instanceof EntityPlayer) { EntityPlayer player = (EntityPlayer)event.entityLiving; AAExtendedPlayer props = (AAExtendedPlayer)player.getExtendedProperties(AAExtendedPlayer.EEPName); if(props.hasCrown()) { for(int i = 0; i < (int)event.ammount * 4; i++) { if(!event.entity.worldObj.isRemote) { ArcaneArtificing.snw.sendToAllAround(new MessageDoParticles(AAReference.CrownRainbowFX, player.posX + ((itemRand.nextInt(3) - 1) * itemRand.nextFloat()), player.posY + 1.5 + ((itemRand.nextInt(3) - 1) * itemRand.nextFloat()), player.posZ + ((itemRand.nextInt(3) - 1) * itemRand.nextFloat()), 0, 0, 0, 40f, 20), new NetworkRegistry.TargetPoint(player.dimension, player.posX, player.posY, player.posZ, 256)); } } event.ammount = 0; } } } } IrisRender: public class IrisRender extends ModelBiped { IModelCustom CrownOfIris; ResourceLocation CrownTexture; public IrisRender() { super(); this.CrownOfIris = AdvancedModelLoader.loadModel(new ResourceLocation(AAReference.MODID, "models/CrownOfIris.obj")); this.CrownTexture = new ResourceLocation(AAReference.MODID, "textures/models/armor/crownOfIris.png"); } @Override public void render(Entity entity, float time, float armsLegs, float headAngleY, float headAngleX, float p_78088_6_, float p_78088_7_) { if(entity instanceof EntityPlayer) { GL11.glPushMatrix(); GL11.glTranslatef(0.0F, 0.5F, 0.0F); this.CrownOfIris.renderAll(); GL11.glPopMatrix(); } } } Edit: Imma derp Imma derp Imma derp derp derp! Never bound a texture to it. I'm not sure where else to get access to the TextureManager, so this might not work on server/may be bad practice, but this works on SSP: public class IrisRender extends ModelBiped { IModelCustom CrownOfIris = AdvancedModelLoader.loadModel(new ResourceLocation(AAReference.MODID, "models/CrownOfIris.obj")); ResourceLocation CrownTexture = new ResourceLocation(AAReference.MODID, "textures/models/armor/crownOfIris.png"); @Override public void render(Entity entity, float time, float armsLegs, float headAngleY, float headAngleX, float p_78088_6_, float p_78088_7_) { if(entity instanceof EntityPlayer) { GL11.glPushMatrix(); Minecraft.getMinecraft().getTextureManager().bindTexture(this.CrownTexture); GL11.glRotatef(time, 0.0f, 1.0f, 0.0f); GL11.glTranslatef(0.0F, 16.0F * p_78088_7_, 0.0F); this.CrownOfIris.renderAll(); GL11.glPopMatrix(); } } } Edit 2: It isn't working on a server with other mods, it is working on a server with only my mod, and it's overwriting all other mod's armor rendering, (though not vanilla) so we got a problem
September 18, 201510 yr Author Bump. Still got no clue whats going on with the rendering interactions between mods, what am I doing wrong?
September 20, 201510 yr Author Uh ok...for some reason it started working after I added an item renderer for a completely unrelated item...*shrugs*
December 17, 20168 yr I know that this is very old. But I was wondering if this has been done or figured out for 1.10.2. Is this different for 1.10.2?
December 18, 20168 yr Author I know that this is very old. But I was wondering if this has been done or figured out for 1.10.2. Is this different for 1.10.2? Eventually I'll rewrite my OBJ reader/renderer for 1.10+, but from what I heard, Forge added OBJ support to the vanilla model system, can that not be used for armor? PS your inbox is full
December 20, 20168 yr I have looked into this a lot and talked to people on the irc channel, the obj was added for blocks and items but not armor. I still am working on figuring out how to get a custom renderer for the armors. I am testing out the one that you have posted here for 1.7.10 to see how that one works. When I load in a model for a helmet the the model is huge and in the wrong place. Do I need to include a json file in 1.7.10 for the examples above? I really want to figure this out so that I can move forward with my mod idea.
December 20, 20168 yr Author I have looked into this a lot and talked to people on the irc channel, the obj was added for blocks and items but not armor. I still am working on figuring out how to get a custom renderer for the armors. I am testing out the one that you have posted here for 1.7.10 to see how that one works. When I load in a model for a helmet the the model is huge and in the wrong place. Do I need to include a json file in 1.7.10 for the examples above? I really want to figure this out so that I can move forward with my mod idea. You need to use OpenGL to fix its scale and position then. 1.7.10 didn't use JSON files. This currently uses my own loader/renderer but it's a drop-in replacement for the AdvancedModelLoader: IrisRender Edit: actually you can also fix its scale and position by scaling/positioning it in your 3D modeling program too. In Maya (the program I use) 1 cubic unit = 1 block in MC, which makes it very easy to position/scale the model file, so not much OpenGL is required.
December 21, 20168 yr I am trying to use that Jade API, I try to load it into 1.7.10 and it wont work, the Read me says that it is a 1.10.2 API but when I load it there it says that the API needs 1.7.10
December 21, 20168 yr I am trying to use that Jade API, I try to load it into 1.7.10 and it wont work, the Read me says that it is a 1.10.2 API but when I load it there it says that the API needs 1.7.10 I got this to work but I had to tweak the API a little to do so
December 21, 20168 yr Author I am trying to use that Jade API, I try to load it into 1.7.10 and it wont work, the Read me says that it is a 1.10.2 API but when I load it there it says that the API needs 1.7.10 I got this to work but I had to tweak the API a little to do so There's no point in trying to use Jade if you're trying to make armor OBJ models for 1.7.10, it does the same thing as the Forge OBJ loader, the only difference is that it's faster, never discards faces, and respects normal angles. The version on my github is a very early start to the 1.10.2 version iirc, I don't think I ever pushed a 1.7.10 version. Whatever happened, I'm pretty sure it's not in a fully functional state for either version. I haven't been working on anything MC or even Java related in a while, I'm off in C/C++ land at least until I finish the projects I'm working on atm.
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.