🇧🇷 Português (Portuguese - Brazil)
🇧🇷 Português (Portuguese - Brazil)
Aparência
🇧🇷 Português (Portuguese - Brazil)
🇧🇷 Português (Portuguese - Brazil)
Aparência
This page is written for version:
1.20.4
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.
Neste tutorial adicionaremos um novo efeito personalizado chamado Tater, que lhe dará um ponto de experiência a cada tick do jogo.
StatusEffect Vamos criar uma classe de efeito personalizado estendendo StatusEffect, sendo uma classe base para todos os efeitos.
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 boolean applyUpdateEffect(ServerWorld world, LivingEntity entity, int amplifier) {
		if (entity instanceof PlayerEntity) {
			((PlayerEntity) entity).addExperience(1 << amplifier); // Higher amplifier gives you experience faster
		}
		return super.applyUpdateEffect(world, entity, amplifier);
	}
}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.
public class ExampleModEffects implements ModInitializer {
	public static final RegistryEntry<StatusEffect> TATER =
			Registry.registerReference(Registries.STATUS_EFFECT, Identifier.of(ExampleMod.MOD_ID, "tater"), new TaterEffect());
	@Override
	public void onInitialize() {
		// ...
	}
}Você pode atribuir um nome ao seu efeito e providenciar uma textura de ícone que aparecerá na tela de inventário do jogador.
O ícone de textura é um PNG de 18x18. Coloque seu ícone personalizado em:
resources/assets/example-mod/textures/mob_effect/tater.png
Assim como outras traduções, você pode adicionar uma entrada com o formato de ID "effect.example-mod.<effect-identifier>": "Value" ao arquivo de idioma.
{
  "effect.example-mod.tater": "Tater"
}Uso o comando /effect give @p example-mod:tater para dar ao jogador nosso efeito Tater. Use /effect clear @p example-mod:tater para remover o efeito.
INFO
Para criar uma poção que utiliza este efeito, consulte o guia de Poções.