Izzy Axel Posted September 15, 2015 Share Posted September 15, 2015 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()); Quote Link to comment Share on other sites More sharing options...
Choonster Posted September 15, 2015 Share Posted September 15, 2015 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. Quote 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. Link to comment Share on other sites More sharing options...
Izzy Axel Posted September 15, 2015 Author Share Posted September 15, 2015 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 Quote Link to comment Share on other sites More sharing options...
Izzy Axel Posted September 18, 2015 Author Share Posted September 18, 2015 Bump. Still got no clue whats going on with the rendering interactions between mods, what am I doing wrong? Quote Link to comment Share on other sites More sharing options...
Izzy Axel Posted September 20, 2015 Author Share Posted September 20, 2015 Uh ok...for some reason it started working after I added an item renderer for a completely unrelated item...*shrugs* Quote Link to comment Share on other sites More sharing options...
dwinget2008 Posted December 17, 2016 Share Posted December 17, 2016 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? Quote Link to comment Share on other sites More sharing options...
Izzy Axel Posted December 18, 2016 Author Share Posted December 18, 2016 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 Quote Link to comment Share on other sites More sharing options...
dwinget2008 Posted December 20, 2016 Share Posted December 20, 2016 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. Quote Link to comment Share on other sites More sharing options...
Izzy Axel Posted December 20, 2016 Author Share Posted December 20, 2016 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. Quote Link to comment Share on other sites More sharing options...
dwinget2008 Posted December 21, 2016 Share Posted December 21, 2016 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 Quote Link to comment Share on other sites More sharing options...
dwinget2008 Posted December 21, 2016 Share Posted December 21, 2016 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 Quote Link to comment Share on other sites More sharing options...
Izzy Axel Posted December 21, 2016 Author Share Posted December 21, 2016 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. Quote Link to comment Share on other sites More sharing options...
Recommended Posts
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.