Skip to content

Efectos de Estado

Los efectos de estado, o simplemente estados, son una condición que puede afectar a una entidad. Pueden ser positivos, negativos o neutrales en naturaleza. El juego base aplica estos efectos de varias maneras como comida, pociones, etc.

El comando /effect puede ser usado para aplicar efectos en una entidad.

Efectos de Estado Personalizados

En este tutorial añadiremos un nuevo efecto de estado personalizado llamado Tater, el cual te da un punto de experiencia por cada tick del juego.

Extiende StatusEffect

Vamos a crear una para nuestro efecto de estado personalizado extendiendo la clase StatusEffect, el cual es la clase base para todos los efectos.

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
		}
	}
}

Registrar tu Efecto Personalizado

Similar a la registración de bloques e items, usamos Registry.register para registrar nuestro efecto personalizado en el registro de STATUS_EFFECT. Esto se puede hacer en nuestro inicializador.

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);
	}
}

Traducciones y Texturas

Puedes asignar un nombre a tu efecto de estado y proveer una textura de ícono para que aparezca en la pantalla de inventario.

Textura

El ícono del efecto de estado es una imagen PNG de 18x18 pixeles. Coloca tu ícono personalizado en:

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

Efecto en el inventario del jugador

Traducciones

Como cualquier otra traducción, puedes agregar una entrada con el formato de ID "effect.<mod-id>.<effect-identifier>": "Valor" al archivo de idioma.

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

Probando

Usa el comando /effect give @p fabric-docs-reference:tater para darle al jugador nuestro efecto Tater. Usa el comando /effect clear para remover el efecto.

INFO

Para crear una poción que use este efecto, por favor visita la guía sobre Pociones.