Pozioni
Le pozioni sono oggetti consumabili che conferiscono un effetto ad un'entità. Un giocatore può preparare delle pozioni usando l'Alambicco oppure ottenerle come oggetti attraverso varie meccaniche di gioco.
Pozioni Personalizzate
Aggiungere una pozione segue un percorso simile a quello per aggiungere un oggetto. Dovrai creare un'istanza della tua pozione e registrarla chiamando BrewingRecipeRegistry.registerPotionRecipe
.
INFO
Quando Fabric API è presente, BrewingRecipeRegistry.registerPotionRecipe
è reso disponibile attraverso un Access Widener.
Creare la Pozione
Iniziamo dichiarando un attributo per conservare la tua istanza Potion
. Utilizzeremo direttamente la classe dell'initializer per conservarla.
java
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)));
Passiamo una istanza di StatusEffectInstance
, che prende 3 parametri:
StatusEffect type
- Un effetto. Qui usiamo il nostro effetto personalizzato. In alternativa puoi accedere agli effetti vanilla attraversonet.minecraft.entity.effect.StatusEffects
.int duration
- Durata dell'effetto espressa in tick di gioco.int amplifier
- Un amplificatore per l'effetto. Per esempio, Sollecitudine II avrebbe un amplificatore di 1.
INFO
Per creare il tuo effetto personalizzato, per favore guarda la guida Effetti.
Registrare la Pozione
Nel nostro initializer, chiamiamo BrewingRecipeRegistry.registerPotionRecipe
.
java
BrewingRecipeRegistry.registerPotionRecipe(Potions.WATER, Items.POTATO, TATER_POTION);
registerPotionRecipe
prende 3 parametri:
Potion input
- La pozione iniziale. Solitamente questa può essere una Ampolla d'Acqua o una Pozione Strana.Item item
- L'oggetto che rappresenta l'ingrediente principale della pozione.Potion output
- La pozione risultante.
Se utilizzi l'API di Fabric, l'invoker mixin non è necessario e si può effettuare una chiamata diretta a BrewingRecipeRegistry.registerPotionRecipe
.
L'esempio per intero:
java
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);
}
}
Una volta registrato, puoi distillare una pozione Tater usando una patata.
INFO
Registering Potions Using an Ingredient
Con l'aiuto dell'API di Fabric, è possibile registrare una pozione usando un Ingrediente
anziché un Item
usando net.fabricmc.fabric.api.registry.FabricBrewingRecipeRegistry
.
Registrare la Pozione senza l'API di Fabric
Senza l'API di Fabric, BrewingRecipeRegistry.registerPotionRecipe
sarà privato. Per accedere a questo metodo usa il seguente invoker mixin o usa un Access Widener.
java
@Mixin(BrewingRecipeRegistry.class)
public interface BrewingRecipeRegistryInvoker {
@Invoker("registerPotionRecipe")
static void invokeRegisterPotionRecipe(Potion input, Item item, Potion output) {
throw new AssertionError();
}
}