===== Adding Status Effects =====
To add status effects to your mod, you'll need to:
* create a class that extends ''StatusEffect''
* add custom functionality
* register your status effect
* add translations and textures for your status effect
==== Creating Status Effect Class ====
We will add a new status effect that gives you EXP every tick.
public class ExpStatusEffect extends StatusEffect {
public ExpStatusEffect() {
super(
StatusEffectCategory.BENEFICIAL, // whether beneficial or harmful for entities
0x98D982); // color in RGB
}
// This method is called every tick to check whether it should apply the status effect or not
@Override
public boolean canApplyUpdateEffect(int duration, int amplifier) {
// In our case, we just make it return true so that it applies the status effect every tick.
return true;
}
// This method is called when it applies the status effect. We implement custom functionality here.
@Override
public void applyUpdateEffect(LivingEntity entity, int amplifier) {
if (entity instanceof PlayerEntity) {
((PlayerEntity) entity).addExperience(1 << amplifier); // Higher amplifier gives you EXP faster
}
}
}
==== Registering Status Effect ====
This registers our status effect.
public class ExampleMod implements ModInitializer {
public static final StatusEffect EXP = new ExpStatusEffect();
@Override
public void onInitialize() {
Registry.register(Registries.STATUS_EFFECT, new Identifier("tutorial", "exp"), EXP);
}
}
==== Adding Translations & Textures ====
You'll need to add a translation to your status effect. Head over to your [[tutorial:lang|mod lang file]] and add a new entry:
{
"effect.tutorial.exp": "Experience"
}
You'll need to add a texture as well. The direct path is:
.../resources/assets/tutorial/textures/mob_effect/exp.png
==== Testing ====
You can run a command ''/effect give @p tutorial:exp'' in game to test your status effect.