User Tools

Site Tools


zh_cn:tutorial:status_effects

添加药水效果

为了添加药水效果到你的模组中,你需要:

  • 创建一个继承 StatusEffect 的类
  • 添加自定义功能
  • 注册你的药水效果
  • 给你的药水效果添加翻译和材质

创建药水效果类型

这里,我们将添加一个每一 tick 给予你经验的药水效果。

public class ExpStatusEffect extends StatusEffect {
  public ExpStatusEffect() {
    super(
      StatusEffectCategory.BENEFICIAL, // 药水效果是有益的还是有害的
      0x98D982); // 显示的颜色
  }
 
  // 这个方法在每个 tick 都会调用,以检查是否应应用药水效果
  @Override
  public boolean canApplyUpdateEffect(int duration, int amplifier) {
    // 在我们的例子中,为了确保每一 tick 药水效果都会被应用,我们只要这个方法返回 true 就行了。
    return true;
  }
 
  // 这个方法在应用药水效果时会被调用,所以我们可以在这里实现自定义功能。
  @Override
  public void applyUpdateEffect(LivingEntity entity, int amplifier) {
    if (entity instanceof PlayerEntity) {
      ((PlayerEntity) entity).addExperience(1 << amplifier); // 更高的 amplifier 会加快给予经验的速度
    }
  }
}

注册药水效果

这段代码将会注册我们的药水效果。

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

添加翻译和材质

现在我们需要给药水效果添加翻译,转到 模组语言文件 添加:

{
  "effect.tutorial.exp": "经验+3"
}

我们也需要添加材质,其目录在:

.../resources/assets/tutorial/textures/mob_effect/exp.png

测试

现在,你可以在游戏中使用 /effect give @p tutorial:exp 来测试你的药水效果了。

zh_cn/tutorial/status_effects.txt · Last modified: 2023/01/12 07:08 by tao0lu