🇧🇷 Português (Portuguese - Brazil)
🇧🇷 Português (Portuguese - Brazil)
Appearance
🇧🇷 Português (Portuguese - Brazil)
🇧🇷 Português (Portuguese - Brazil)
Appearance
Poções são consumíveis que concedem efeitos a uma entidade. Um jogador pode preparar poções usando um Suporte de Poções ou obtê-las como itens através de várias outras mecânicas do jogo.
Adicionar uma poção é um processo similar ao de adicionar um item. Você criará uma instância de sua poção e a registrará chamando BrewingRecipeRegistry.registerPotionRecipe
.
INFO
Quando o Fabric API está presente, BrewingRecipeRegistry.registerPotionRecipe
se torna acessível através de um Acess Widener.
Vamos começar declarando um campo para armazenar sua instância de Potion
. Utilizaremos a classe inicializadora diretamente para segurar isso.
public static final Potion TATER_POTION =
Registry.register(
Registries.POTION,
new Identifier("fabric-docs-reference", "tater"),
new Potion(
new StatusEffectInstance(
FabricDocsReferenceEffects.TATER_EFFECT,
3600,
0)));
Passamos uma instância de StatusEffectInstance
, que leva 3 parâmetros:
StatusEffect type
- Um efeito. Usamos nosso efeito personalizado aqui. Você também pode acessar efeitos vanilla através de net.minecraft.entity.effect.StatusEffects
.int duration
- Duração do efeito em ticks do jogo.int amplifier
- Um amplificador para o efeito. Por exemplo, Pressa II teria um amplificador de 1.INFO
Para criar seu próprio efeito, consulte o guia de Efeitos.
No nosso inicializador, chamamos BrewingRecipeRegistry.registerPotionRecipe
.
BrewingRecipeRegistry.registerPotionRecipe(Potions.WATER, Items.POTATO, TATER_POTION);
registerPotionRecipe
leva 3 parâmetros:
Potion input
- A poção inicial. Normalmente isso pode ser uma Garrafa de Água ou uma Poção Estranha.Item item
- O item que é o ingrediente principal da poção.Potion output
- A poção resultante.Se você usa a Fabric API, o invocador de mixin não é necessário e uma chamada direta do BrewingRecipeRegistry.registerPotionRecipe
pode ser feita.
O exemplo completo:
public class FabricDocsReferencePotions implements ModInitializer {
public static final Potion TATER_POTION =
Registry.register(
Registries.POTION,
new Identifier("fabric-docs-reference", "tater"),
new Potion(
new StatusEffectInstance(
FabricDocsReferenceEffects.TATER_EFFECT,
3600,
0)));
@Override
public void onInitialize() {
BrewingRecipeRegistry.registerPotionRecipe(Potions.WATER, Items.POTATO, TATER_POTION);
// Use the mixin invoker if you are not using Fabric API
// BrewingRecipeRegistryInvoker.invokeRegisterPotionRecipe(Potions.WATER, Items.POTATO, TATER_POTION);
}
}
Assim que registrada, você pode preparar uma poção Tater usando uma batata.
Registrando Poções usando um Ingredient
Com ajuda do Fabric API, é possível registrar uma poção usando um Ingredient
em vez de um Item
usando net.fabricmc.fabric.api.registry.FabricBrewingRecipeRegistry
.
Sem o Fabric API, BrewingRecipeRegistry.registerPotionRecipe
será privado. Para acessar este método, use o seguinte invocador de mixin ou use um Acess Widener.
@Mixin(BrewingRecipeRegistry.class)
public interface BrewingRecipeRegistryInvoker {
@Invoker("registerPotionRecipe")
static void invokeRegisterPotionRecipe(Potion input, Item item, Potion output) {
throw new AssertionError();
}
}