It is impossible without some hacky way,since rendering potion is hardcoded in the InventoryEffectRenderer.
EDIT:
Also the effect of jumping potion is hardcoded too, so you should implement it yourself if you want it.
But you can disable all the rendering of potion effects.
public class ServerProxy {
public void registerRenderInfo() {
RenderingRegistry.registerEntityRenderingHandler(EntityGreekFire.class, new RenderSnowball(ModItems.GreekFire));
}
}
What? you should not register an rendering class on Server! Move that line to the Client proxy.
Ah that was the problem! As minecraft does not automatically sync your field, you should sync it yourself.
@see TileEntity#onDataPacket(Receive) and TileEntity#getDescriptionPacket(Send)
So the position you are using is this:
position = (top + 1 + (size * i) - (this.scrollButtonY));
But it seems that the scrollButtonY field is the relative Y position of the scroll button.
I think you should scale the field, because scrolling length is proportional to the number of the elements.
+ I remember that GuiScrollingList supports custom scrolling button, maybe you can adopt that.
What do you mean? Are you using same datawatcher with the vanilla?
Or vanilla uses same datawatcher in 2 different ways?
For latter case, it is possible if the coder is well aware of the effect. There was Union concept, which is similar with this case.
That is not possible, there should be many model. But you can do it with only one Renderer class.
Wait, I can use the same renderer for multiple models?
Yes, and you can't have one model render multiple shapes, as far as I know.
You dont need to make different renderers for them. You can have multiple models for a renderer.
To change model via entity type, change the RenderLivingEntity#mainModel field.
You can store the model you want there to display before rendering.