Jump to content

[1.16.5] Creating a potion with a custom colour?


lerrific

Recommended Posts

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 shouldRendershouldRenderInvText, 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 :)

Edited by lerrific
Found a solution
Link to comment
Share on other sites

1 hour ago, lerrific said:

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?

Use the PotionColorCalculationEvent, check whether the effects of the event match those of your potion,
if this is the case you can set the color in the event

Link to comment
Share on other sites

11 hours ago, Luis_ST said:

Use the PotionColorCalculationEvent, check whether the effects of the event match those of your potion,
if this is the case you can set the color in the event

that's only for when you drink a potion, and it changes the particle effects, no? I want to be able to set the colour of the potion bottle, the splash potion, and the tipped arrows

Edited by lerrific
Link to comment
Share on other sites

1 hour ago, lerrific said:

that's only for when you drink a potion, and it changes the particle effects, no? I want to be able to set the colour of the potion bottle, the splash potion, and the tipped arrows

then I have no idea

Edit: I will look at the whole thing again as soon as possible, i will find a usable solution for your problem, i hope.

Edited by Luis_ST
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.

Guest
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.

Announcements



×
×
  • Create New...

Important Information

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