Jump to content

Recommended Posts

Posted

OK.  I have a greyscale texture, and an RGB value.  At startup, I would like to create an item with the texture recoloured with the RGB value.  It is a pretty simple item otherwise.  Not armor, not a tool, no durability.

 

Right now I'm using IItemColor, and it's working just fine.  BUT, I'm feeling a lot of guilt over using it, as it is called every frame, and the colour really is fixed at startup.  It is not dynamic based on conditions (biome, phase of the moon, whatever).  If it is blue now, it's going to be blue later too.  As such, I'd really like to colour the item once, at startup, and be done with it, all without feeling like I am contributing to a drop in framerate -- however slight -- unnecessarily.

 

The closest I've found to achieve this is the forge dynamic bucket, but that seems to be well more than what I'm looking for.  Maybe I'm mistaken here.

 

I COULD just recolour it manually in an image editor and get on with my day, but I'd very much like to be able to tweak the RGB values without manually recolouring the textures each time I do so.

 

Any suggestions?  Is there a simpler example than the forge bucket that I can use to light my way?  Thanks.

Posted

I don't think you need to feel guilty about the performance impact. With a modern computer, the GPU is capable of probably billions of such calculations. I assume that your item will be reasonably rare (a lot of the time probably not even rendering the item at all), and remember that only the items being rendered (i.e. in field of view) would even have an impact. So at most you're probably going to have a couple itemstacks in an inventory (and when viewing inventory frame rate isn't really as much of an issue even if performance dips), or maybe a couple items thrown on the ground. 

 

With modern programming (assuming you're using a full computer and not some resource-strapped embedded processor) it is best to use the proper logic and only deal with perf issues when they actually are an issue. I.e. profile the code and see if there is an actual problem. Of course you should not do stupid things like big loops, recursion, and such unless necessary. But otherwise you should just code for clean, well-structured code that uses the intended interfaces. Bug-free, maintainable code is the first priority.

  • Thanks 1

Check out my tutorials here: http://jabelarminecraft.blogspot.com/

Posted
1 hour ago, Ommina said:

Any suggestionsIs there a simpler example than the forge bucket that I can use to light my way?  Thanks.

No, there is not a simpler way to do this, though your overall code will look much simpler than forges dynamic bucket because you will only need to have one TextureAtlasSprite that applies the color to the texture. But I do agree with jabelar, it would be fine to just let the texture be generated every frame. And if it were to become a problem you could very easily switch over to the TextureAtlasSprite method.

VANILLA MINECRAFT CLASSES ARE THE BEST RESOURCES WHEN MODDING

I will be posting 1.15.2 modding tutorials on this channel. If you want to be notified of it do the normal YouTube stuff like subscribing, ect.

Forge and vanilla BlockState generator.

Posted

Its likely just a vertex color operation that changes the color. Vertex color is super cheap. It's used for particle systems with hundreds of thousands of particles and it runs just fine, one or a dozen items, easy peasy.

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.

Guest
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Announcements



×
×
  • Create New...

Important Information

By using this site, you agree to our Terms of Use.