mod dev compatibility/dependency feature request
I'm not actually sure what to describe this request as, but I've started working on a mod and I've hit a problem where a lot of vivecraft's custom rendering code is within Mixin classes, which means as a mod dev using vivecraft as a dependency, I cannot directly mixin to any of the modified rendering code of vivecraft without the use of MixinSquared, which discourages using itself for projects that are openly maintained
which part exactly do you need to modify?
the ItemInHandRendererVRMixin is the one I'm focused on right now
hm, we could extract that yeah
ok, thank you, that would be very helpful! thanks for the quick responding!
hm, looking a bit closer at it I can't just move it out. what exactly do you want to do with it?
I would like to be able to disable the rendering of a specific item so that I can render it a bit differently in a way where I need to be able to use info (world-space positions/player entity positions/hand positions) that is available in the held item render code, but that the item rendering code isn't told about.
I think looking at the mixin, I'm assuming the difficult part about extracting the methods is "this"? you would probably just make it a parameter for the extracted methods and refer to it as "instance" or something in the new code? I could try making a pull request to change it if that's ok?
is ther any reason why you can't just mixin into VivecraftItemRendering.applyThirdPersonItemTransforms / VivecraftItemRendering.applyFirstPersonItemTransforms?
But if that is something more people would want to do, we can add something to override positions per item to the upcomming API
is ther any reason why you can't just mixin into
VivecraftItemRendering.applyThirdPersonItemTransforms/VivecraftItemRendering.applyFirstPersonItemTransforms?
actually, this might work for me, thanks! though it's probably still worth having a way to override what renders, I happen to want to just render the item model with different transforms, but I could see other people wanting to render a different model (or models) entirely
After some discussion in Discord, the thought is to reasonably maximize the amount of options mod devs have.
- For static transforms, the hope is to add a value to
ItemDisplayContext, so mod developers can specify the VR-specific transforms as they do others. - For more dynamic transformations, we'd add to the API (depends on #255). There would be several interfaces that allow for both replacing individual item's rendering and the rendering of any item as a whole. Each of those would support either just replacing the transform or taking over rendering entirely.
- For example, the "rendering of any item + taking over rendering" could have a method signature of something like
@Nullable ItemStack customItemInHandRender(PoseStack poseStack, ItemStack inputItem). Returning anItemStackwould move onto the next renderer or just directly to Vivecraft to render thatItemStack(whether it was the same or different as the input one) whilenullwould stop further renderers. The body of the method would be used to both determine whether to overwrite and just any custom rendering logic.
- For example, the "rendering of any item + taking over rendering" could have a method signature of something like