===== 添加药水效果 ===== 为了添加药水效果到你的模组中,你需要: * 创建一个继承 ''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'' 来测试你的药水效果了。