Skip to content

Statuseffekte

Statuseffekte, auch Effekte genannt, sind ein Zustand, der eine Entität beeinflussen kann. Sie können positiver, negativer oder neutraler Natur sein. Das Basisspiel wendet diese Effekte auf verschiedene Weise an, zum Beispiel durch Nahrung, Tränke usw.

Der Befehl /effect kann verwendet werden, um Effekte auf eine Entität anzuwenden.

Benutzerdefinierte Statuseffekte

In diesem Tutorial fügen wir einen neuen benutzerdefinierten Effekt namens Tater hinzu, der dir einen Erfahrungspunkt pro Spieltick gibt.

StatusEffect erweitern

Lasst uns eine benutzerdefinierte Effektklasse erstellen, indem wir StatusEffect erweitern, die die Basisklasse für alle Effekte ist.

java
public class TaterEffect extends StatusEffect {
	protected TaterEffect() {
		// category: StatusEffectCategory - describes if the effect is helpful (BENEFICIAL), harmful (HARMFUL) or useless (NEUTRAL)
		// color: int - Color is the color assigned to the effect (in RGB)
		super(StatusEffectCategory.BENEFICIAL, 0xe9b8b3);
	}

	// Called every tick to check if the effect can be applied or not
	@Override
	public boolean canApplyUpdateEffect(int duration, int amplifier) {
		// In our case, we just make it return true so that it applies the effect every tick
		return true;
	}

	// Called when the effect is applied
	@Override
	public void applyUpdateEffect(LivingEntity entity, int amplifier) {
		if (entity instanceof PlayerEntity) {
			((PlayerEntity) entity).addExperience(1 << amplifier); // Higher amplifier gives you experience faster
		}
	}
}

Deinen benutzerdefinierten Effekt registrieren

Ähnlich wie bei der Registrierung von Blöcken und Items verwenden wir Registry.register, um unseren benutzerdefinierten Effekt in der STATUS_EFFECT-Registry zu registrieren. Dies kann in unserem Initialisierer geschehen.

java
public class FabricDocsReferenceEffects implements ModInitializer {
	public static final StatusEffect TATER_EFFECT = new TaterEffect();

	@Override
	public void onInitialize() {
		Registry.register(Registries.STATUS_EFFECT, new Identifier("fabric-docs-reference", "tater"), TATER_EFFECT);
	}
}

Übersetzungen und Texturen

Du kannst deinem Statuseffekt einen Namen geben und ein Textursymbol erstellen, das in der Inventaroberfläche des Spielers angezeigt wird.

Texturen

Das Statuseffekt-Symbol ist ein 18x18 PNG. Platziere dein eigenes Icon in:

resources/assets/fabric-docs-reference/textures/mob_effect/tater.png

Effekt im Inventar eines Spielers

Übersetzungen

Wie jede andere Übersetzung kannst du einen Eintrag mit dem ID-Format "effect.<mod-id>.<effect-identifier>": "Wert" zur Sprachdatei hinzufügen.

json
{
  "effect.fabric-docs-reference.tater": "Tater"
}

Testen

Benutze den Befehl /effect give @p fabric-docs-reference:tater, um dem Spieler unseren Tater-Effekt zu geben. Verwende /effect clear um den Effekt zu entfernen.

Um einen Trank zu erstellen, der diesen Effekt nutzt, lies bitte die Anleitung Tränke.