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 class ExampleModPotions implements ModInitializer {
public static final Potion TATER_POTION =
Registry.register(
BuiltInRegistries.POTION,
ResourceLocation.fromNamespaceAndPath(ExampleMod.MOD_ID, "tater"),
new Potion("tater",
new MobEffectInstance(
ExampleModEffects.TATER,
3600,
0)));1
2
3
4
5
6
7
8
9
10
2
3
4
5
6
7
8
9
10
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.StatusEffectszugreifen.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
public void onInitialize() {1
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 ExampleModPotions implements ModInitializer {
public static final Potion TATER_POTION =
Registry.register(
BuiltInRegistries.POTION,
ResourceLocation.fromNamespaceAndPath(ExampleMod.MOD_ID, "tater"),
new Potion("tater",
new MobEffectInstance(
ExampleModEffects.TATER,
3600,
0)));
@Override
public void onInitialize() {
FabricBrewingRecipeRegistryBuilder.BUILD.register(builder -> {
builder.addMix(
// Input potion.
Potions.WATER,
// Ingredient
Items.POTATO,
// Output potion.
BuiltInRegistries.POTION.wrapAsHolder(TATER_POTION)
);
});
}
}1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
Sobald der Trank registriert wurde, kannst du den Tater-Trank mit einer Kartoffel brauen.

Registrieren von Tränken mit Hilfe eines 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
Not Found: /home/runner/work/fabric-docs/fabric-docs/reference/latest/src/main/java/com/example/docs/mixin/potion/BrewingRecipeRegistryInvoker.java1


