Skip to content

Efeitos de Estado

Efeitos de estado, conhecidos como efeitos, são condições que podem afetar uma entidade. Eles podem ser de natureza positiva, negativa ou neutra. O jogo base aplica esses efeitos de vários modos, como comidas, poções, etc.

O comando /effect pode ser usado para aplicar efeitos numa entidade.

Efeitos Personalizados

Neste tutorial adicionaremos um novo efeito personalizado chamado Tater, que lhe dará um ponto de experiência a cada tick do jogo.

Estenda StatusEffect

Vamos criar uma classe de efeito personalizado estendendo StatusEffect, sendo uma classe base para todos os efeitos.

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

Registrando seu Efeito Personalizado

Similar a registração de blocos e itens, usamos Registry.register para registrar nosso efeito ao registro de STATUS_EFFECT. Isso pode ser feito no nosso 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);
	}
}

Traduções e Texturas

Você pode atribuir um nome ao seu efeito e providenciar uma textura de ícone que aparecerá na tela de inventário do jogador.

Textura

O ícone de textura é um PNG de 18x18. Coloque seu ícone personalizado em:

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

Efeito no inventário do jogador

Traduções

Assim como outras traduções, você pode adicionar uma entrada com o formato de ID "effect.<mod-id>.<effect-identifier>": "Value" ao arquivo de idioma.

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

Testando

Uso o comando /effect give @p fabric-docs-reference:tater para dar ao jogador nosso efeito Tater. Use /effect clear @p fabric-docs-reference:tater para remover o efeito.

INFO

Para criar uma poção que utiliza este efeito, consulte o guia de Poções.