Posted February 22, 20169 yr I'm currently working on my mods textures and I'm really annoyed with how inefficient this seems, both in terms of time used and file size created. I basically have a default texture for each tool and item, and then just apply coloring layers to that based on the material. What I would like to do is give it just the default textures instead, define the color values and masks in my code and have it parse all the textures during initialization. I know it has to be possible somehow (right?), but I just have no clue where to even start looking. I'd really appreciate some pointers in the right direction from the pros on here
February 22, 20169 yr in 1.8 there is ISmartItemModel that you can use, in 1.7.1 it was... IItemModel? Im not sure but there was a way to create dynamic textures on the fly
February 22, 20169 yr If you have a greyscale texture, you can override Item#getColorFromItemStack(ItemStack stack, int renderPass) to colour it at runtime. 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.
February 22, 20169 yr Author Thanks, that definitely looks very useful. Now if I only want to color part of a texture (like color only the tool head, and have the handle stay brown), is there a method for that as well or do I have to implement that myself?
February 22, 20169 yr Thanks, that definitely looks very useful. Now if I only want to color part of a texture (like color only the tool head, and have the handle stay brown), is there a method for that as well or do I have to implement that myself? Second argument is a render pass. In 1.7.10 items can have multiple passes (layers). For that, you have to override requiresMultipleRenderPasses and getRenderPassesCount (or something like that, forgot exact name). Then, in getIcon , use one with integer parameter, corresponding to pass/layer. Return icon based on that layer. And you already know what to do in getColorFromItemStack . Check out my mods: BTAM Armor sets Avoid Exploding Creepers Tools compressor Anti Id Conflict Key bindings overhaul Colourfull blocks Invisi Zones
February 22, 20169 yr You can try using a single texture with both greyscale and pre-coloured parts, but I'm not sure it would work properly (I don't know much about OpenGL). If that doesn't work, you'll need to separate the greyscale and pre-coloured parts into separate textures and render your item in multiple passes. Override the following methods: Item#requiresMultipleRenderPasses to return true Item#getRenderPasses to return the number of render passes you need (only if you need more than 2) Item#getIconFromDamageForRenderPass to return the appropriate IIcon for the render pass Item#getColorFromItemStack to return the appropriate colour for the render pass (or return the super method's result for no colour) 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.
February 22, 20169 yr Use multiple passes and several textures. That's how my artifacts mod does it. https://github.com/Draco18s/Artifacts/tree/master/main/java/com/draco18s/artifacts/ Apparently I'm a complete and utter jerk and come to this forum just like to make fun of people, be confrontational, and make your personal life miserable. If you think this is the case, JUST REPORT ME. Otherwise you're just going to get reported when you reply to my posts and point it out, because odds are, I was trying to be nice. Exception: If you do not understand Java, I WILL NOT HELP YOU and your thread will get locked. DO NOT PM ME WITH PROBLEMS. No help will be given.
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.