===== 添加药水效果 =====
为了添加药水效果到你的模组中,你需要:
* 创建一个继承 ''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);
}
}
==== 添加翻译和材质 ====
现在我们需要给药水效果添加翻译,转到 [[zh_cn:tutorial:lang|模组语言文件]] 添加:
{
"effect.tutorial.exp": "经验+3"
}
我们也需要添加材质,其目录在:
.../resources/assets/tutorial/textures/mob_effect/exp.png
==== 测试 ====
现在,你可以在游戏中使用 ''/effect give @p tutorial:exp'' 来测试你的药水效果了。