为了添加药水效果到你的模组中,你需要:
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
来测试你的药水效果了。