Tränke
Tränke sind Verbrauchsmaterialien, die Wesen (Entities) Status-Effekte geben können. Spieler können Tränke erlangen, indem sie diese mit einem Braustand brauen oder sie durch andere Spielmechaniken erhalten.
Benutzerdefinierte Tränke
Das Hinzufügen eines Trankes ist vergleichbar mit dem Hinzufügen eines Items. Erstelle eine Instanz des Trankes und registriere es mit BrewingRecipeRegistry.registerPotionRecipe
.
INFO
Falls die Fabric API vorhanden ist, kann auf BrewingRecipeRegistry.registerPotionRecipe
durch einen "Access Widener" zugegriffen werden.
Erstellen eines Trankes
Als Erstes wird die Potion
Instanz in einer Variable deklariert. Dabei wird die Initialisierungsklasse benutzt, um die Variable zu belegen.
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)));
Es wird eine Instanz der StatusEffectInstance
benutzt, die drei Parameter besitzt:
StatusEffect type
- Ein Effekttyp. Hier wird der benutzerdefinierter Effekttyp benutzt. Ansonsten können auch schon existierende Typen, mitnet.minecraft.entity.effect.StatusEffects
, verwendet werden.int duration
- Länge des Effekts in Spiel-Ticks.int amplifier
- Die Stärke des Effekts. Beispielsweise entspricht Eile II demamplifier
-Wert 1.
INFO
Das Erstellen eines neuen Effekts kann im Beitrag über Status-Effekte nachgelesen werden.
Registrieren des Tranks
In unsere Klasse, die für das Initialisieren zuständig ist, wird dann die BrewingRecipeRegistry.registerPotionRecipe
Methode aufgerufen.
Die registerPotionRecipe
Methode besitzt 3 Parameter:
Potion input
- Der Starttrank. In den meisten Fällen ist das eine Wasserflasche oder ein "Seltsamer Trank".Item item
- Der Gegenstand, der die Hauptzutat bildet.Potion output
- Der fertiggestellte Trank.
Wenn die Fabric API benutzt wird, wird der Mixin Invoker nicht gebraucht und die BrewingRecipeRegistry.registerPotionRecipe
Methode kann direkt aufgerufen werden.
Das vollständige Beispiel:
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);
}
}
Sobald der Trank registriert wurde, kann der Tater Trank mit Kartoffeln gebraut werden.
INFO
Registering Potions Using an Ingredient
Mit der Hilfe der Fabric API kann bei dem Erstellen des Rezepts Ingredient
statt Item
, mithilfe der net.fabricmc.fabric.api.registry.FabricBrewingRecipeRegistry
Methode, benutzt werden.
Registrieren des Tranks ohne der Fabric API
Ohne der Fabric API ist der Zugriff auf die BrewingRecipeRegistry.registerPotionRecipe
Methode privat. Um dennoch Zugriff auf die Methode zu gewehren, muss der folgende Mixin Invoker oder ein "Access Widener" benutzt werden.