Jump to content

[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 comment
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.
Note: Your post will require moderator approval before it will be visible.

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.


  • Create New...

Important Information

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