Difference between revisions of "Potions"

From Forge Community Wiki
(Inital Import dokuwiki)
 
m (Text replacement - "{{Colored box|title=Important|content=" to "{{Tip/Important|")
Line 9: Line 9:
 
Brewing Recipes can be added using <code>BrewingRecipeRegistry::addRecipe</code>. The most common constructor takes in an <code>Ingredient</code> input, an <code>Ingredient</code> reactant, and an <code>ItemStack</code> output. This can be registered during <code>FMLCommonSetupEvent</code>.
 
Brewing Recipes can be added using <code>BrewingRecipeRegistry::addRecipe</code>. The most common constructor takes in an <code>Ingredient</code> input, an <code>Ingredient</code> reactant, and an <code>ItemStack</code> output. This can be registered during <code>FMLCommonSetupEvent</code>.
  
{{Colored box|title=Important|content=If you want to use NBT information in your inputs (e.g. create a potion from another potion), you need to pass in an <code>NBTIngredient</code> instead.}}
+
{{Tip/Important|If you want to use NBT information in your inputs (e.g. create a potion from another potion), you need to pass in an <code>NBTIngredient</code> instead.}}
  
 
{{Colored box|title=Alert|content=<code>BrewingRecipeRegistry</code> is '''not''' thread-safe. It should be called within <code>enqueueWork</code> in the specified parallel dispatch event.}}
 
{{Colored box|title=Alert|content=<code>BrewingRecipeRegistry</code> is '''not''' thread-safe. It should be called within <code>enqueueWork</code> in the specified parallel dispatch event.}}

Revision as of 22:02, 20 December 2020

A Potion is simply a list of Effects to be applied when used. Each Potion gets applied to every Items#POTION, Items#SPLASH_POTION, Items#LINGERING_POTION, and Items#TIPPED_ARROW. Like effects, potions need to be registered.

Creating a Potion

A Potion requires a passed in list of EffectInstances to apply to the player when the potion is "consumed". There is also a nullable parameter called baseName that can be set if you would like to use the same name for multiple potions (e.g. a SWIFTNESS and LONG_SWIFTNESS entry can be both swiftness potions).

Adding a Brewing Recipe

Brewing Recipes can be added using BrewingRecipeRegistry::addRecipe. The most common constructor takes in an Ingredient input, an Ingredient reactant, and an ItemStack output. This can be registered during FMLCommonSetupEvent.

Important

If you want to use NBT information in your inputs (e.g. create a potion from another potion), you need to pass in an NBTIngredient instead.

Alert

BrewingRecipeRegistry is not thread-safe. It should be called within enqueueWork in the specified parallel dispatch event.