I have a potion that has two vanilla effects, and in PotionUtils#getColor (mcp mappings) you can see that all the potion effects colours are combined together to get the resulting colour for the bottle, tipped arrow, etc. Is there a way to override that somehow? There's also a CustomPotionColor nbt tag, but I don't know how to set that on initialization?
EDIT: I believe I finally found a hack-y work around, I created my own class extending Effect and overrode shouldRender, shouldRenderInvText, and shouldRenderHUD to false. Then I added a new EffectInstance to my potion with said custom effect, setting the duration to whatever the highest of the other effects are, and making the amplifier some big number like 100. PotionUtils#getPotionColorFromEffectList calculates the resulting colour based on each potions own colour + the amplifier, so setting the amplifier very high forces the colour to be your effects liquid colour. Finally I got rid of the potion tooltip line with the ItemTooltipEvent:
@SubscribeEvent
public static void hideToolTip(ItemTooltipEvent event) {
CompoundNBT tag = event.getItemStack().getTag();
if (tag != null && tag.getString("Potion").contains("your_potion_id")) {
event.getToolTip().removeIf(textComponent -> textComponent.getString().contains("your_effect_id"));
}
}
Hopefully this helps someone who had the same problem as me