Tränke
Tränke sind Verbrauchsmaterialien, die Entitäten Statuseffekte 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 ihn 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 verwenden wir unseren benutzerdefinierten Effekt. Alternativ kannst du auf Vanilla-Effekte übernet.minecraft.entity.effect.StatusEffects
zugreifen.int duration
- Länge des Effekts in Spielticks.int amplifier
- Die Stärke des Effekts. Zum Beispiel hätte Eile II einen Verstärker-Wert von 1.
INFO
Um deinen eigenen Effekt zu erstellen, schau bitte in den Leitfaden Effekte.
Registrieren des Tranks
In unsere Klasse, die für das Initialisieren zuständig ist, wird dann die BrewingRecipeRegistry.registerPotionRecipe
Methode aufgerufen.
java
BrewingRecipeRegistry.registerPotionRecipe(Potions.WATER, Items.POTATO, TATER_POTION);
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 benötigt 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, kannst du den Tater-Trank mit einer Kartoffel brauen.
INFO
Registering Potions Using an Ingredient
Mit der Hilfe der Fabric API kann beim 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 de Fabric API ist die Methode BrewingRecipeRegistry.registerPotionRecipe
privat. Um auf diese Methode zuzugreifen, verwende den folgenden Mixin Invoker oder verwende einen "Access Widener".
java
@Mixin(BrewingRecipeRegistry.class)
public interface BrewingRecipeRegistryInvoker {
@Invoker("registerPotionRecipe")
static void invokeRegisterPotionRecipe(Potion input, Item item, Potion output) {
throw new AssertionError();
}
}