===== 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.