Skip to content
This repository has been archived by the owner on Mar 12, 2023. It is now read-only.

Issues with Galacticraft. #4

Open
dj3520 opened this issue Feb 22, 2016 · 4 comments
Open

Issues with Galacticraft. #4

dj3520 opened this issue Feb 22, 2016 · 4 comments

Comments

@dj3520
Copy link

dj3520 commented Feb 22, 2016

Galacticraft replaces the standard user model with it's own to allow for things like oxygen tanks to be added to the player's back. Seems like this conflicts with Emotes a considerable amount.

With only Galacticraft and Emotes installed, Emotes doesn't even show as if it's working. The /emotes command does not output anything to chat or perform the animation while Galacticraft is present unless PlayerAPI and RenderPlayerAPI from Smart Moving are also installed. I'm not familiar with what these two mods do, however they fix a considerable amount of undesirable effects when Galacticraft is loaded as seen here. Galacticraft also has a "Smart Moving" compatible mode that is activated by detecting SmartMoving itself. I'm not sure when/where it happens to trigger, though @radfast would be the guy to talk to. Though from what I can guess from the picture below the problem might lie deeper than one might think.
image

Ironically, this behavior is a bit backwards from what was seen in GC's issue 1963, but something along the same lines is probably going on behind the scenes.

@radfast
Copy link

radfast commented Feb 22, 2016

Hi, I was notified of this.

Galacticraft (GC) requires the biped model to move 2 types of armor in addition to the vanilla Minecraft armor. The striped texture is one of the GC armors. The glass helmet and oxygen equipment is another. The screenshot shows that at least one of the Galacticraft armors is not being moved correctly with the limbs. Normally - with other mods - that Galacticraft armor should be moved in conjunction with the player limbs, due to the way we implement RenderPlayerAPI (if present) or SmartRender (if present).

In other words, Galacticraft should be compatible with both of these combinations:
PlayerAPI + RenderPlayerAPI
PlayerAPI + RenderPlayerAPI + SmartRender

(Compatibility with these APIs is the only way we have to fix cross-mod issues relating to the player model. Without these APIs being present, it is expected behaviour for other mods which also change the player model not to work properly... so no surprise there.)

From the screenshot it appears that Emotes may not be fully implementing RenderPlayerAPI or SmartRender - I'm not sure which one was being used in the screenshot.

@dj3520 you should say which (relevant) mods were in use when you took that screenshot.

@radfast
Copy link

radfast commented Feb 22, 2016

hmm: https://github.com/Vazkii/Emotes/blob/master/MODSRC/vazkii/emotes/client/asm/ClassTransformer.java

Instead of patching our code, you could ask us to include a call to the Emotes class ... our codebase has probably changed a lot since 2 years ago, and more importantly, our codebase uses 3 different code paths to render the biped model, depending on whether RenderPlayerAPI, or RenderPlayerAPI + SmartRender, are present or not.

It looks like Emotes is not implementing RenderPlayerAPI at all. By far the best solution would be for Emotes to implement RenderPlayerAPI. It's a day of work to do it, but once it's done you have compatibility with most other mods. Approximately all you have to do is extend api.player.model.ModelPlayerBase like this and then register your model with the API like this.

To get more fancy, you can implement SmartRender as well like this.

@dj3520
Copy link
Author

dj3520 commented Feb 22, 2016 via email

@radfast
Copy link

radfast commented Feb 22, 2016

I think the best solution is for Emotes to implement RenderPlayerAPI.

Thinking about it further, I'm not willing to call Emotes code from inside Galacticraft models, because that might mess up our compatibility with other mods which do use the RenderPlayerAPI or SmartRender systems.

If @Vazkii wants to re-work his ClassTransformer that's up to him, but the better + futureproof approach is to use RenderPlayerAPI.

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants