Jump to content
Search In
  • More options...
Find results that contain...
Find results in...

[1.16] Separating Rendering Code


Recommended Posts

I am putting together a spellcasting system, and the spells will have visual effects.

I have a Capability which holds the player's active Spell, as well as whichever passive Spells may still be causing residual effects. I would like to access these Spells through a rendering event (I was thinking RenderWorldLastEvent), and perform the relevant rendering.

The problem is that I would like to define these rendering methods in a neat way, rather than dumping them willy-nilly into the event class, especially as there are potentially many Spells, each with potentially different rendering specifications. That would get horrible quite quickly, and I'd have to check each Spell to find the appropriate rendering method. As an alternative, I was thinking of having Spell#render methods which could easily be called from the render event, and would be overridden by extensions of the base class.

These methods, though, would crash a dedicated server when the given Spell was loaded, if I understand things correctly, even though they would never be called.

Looking at the Item class, it seems a solution to a similar problem is accomplished with @OnlyIn, which I think would work here too, but the Documentation says "Only use it if you are overriding a vanilla method that already has @OnlyIn defined. In most other cases ..., use DistExecutor instead."

I've heard some dissuasion around DistExecutor, though, too (and I'm less sure how it works). What would be an appropriate way of separating this code, without producing a mess?

Fancy 3D Graphing Calculator mod, with many different coordinate systems.

Lightweight 3D/2D position/vector transformations library, also with support for different coordinate systems.

Link to post
Share on other sites

The best way would probably to have a client-side registry (like Minecraft has for entity renderers) which map your spells to their respective renderers. All this code is then completely client side and only used from the render events.

  • Thanks 1
Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
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.



×
×
  • Create New...

Important Information

By using this site, you agree to our Privacy Policy.