[Minecraft]基于Forge的1.8.9MOD开发教程——第五讲:物品篇(食物·下)

本教程详细介绍了如何在Minecraft 1.8.9中使用Forge开发一个具有实际效果的钻石苹果MOD。内容包括将钻石苹果转化为真正的食物,设置恢复饥饿值和饱和度,以及添加药水效果,如伤害吸收。通过源代码示例,讲解了ItemFood类的使用和PotionEffect的添加方法。
摘要由CSDN通过智能技术生成

一个真正的食物

目前的钻石苹果只是一个普通的物品,只能看不能吃,这就非常蛋疼了。所以我们要将他变成一个真正的食物
——知识点1————————————————————
在MC中,并不是所有物品的父类都是Item。一般工具继承自ItemTool类,护甲继承自ItemArmor类,自然食物要继承ItemFood。(事实上,不管是ItemFood还是ItemArmor都派生自Item类)
当上一讲中,Item的构造方法是没有参数的。而ItemFood类则有三个:

super(amount, saturation, isWolfFood);
  • 参数一 amount:int类型。该食物所恢复的饥饿值
  • 参数二 saturation:单精度浮点。增加饱和度,2 * amount * saturation(不知道饱和度是什么请自行百度)
  • 参数三 isWolfFood:boolean。狼是否能食用

——————————————————————————
打开DiamondApple.java,修改一下:

嗯,真香~

添加药水效果

——知识点1————————————————————
作为一个钻石苹果,当然要自带Buff啦
Forge为我们提供了这样一个方法:

setPotionEffect(Potion.XXX.id, duration, amplifier, probability);
  • 参数一:药水类型。在MC中一共有二十三种类型,可以翻看net.minecraft.potion.Potion类
  • 参数二 duration:int,作用时间。单位:s
  • 参数三 amplifier:int,对应的药水等级。注意:Java是零基的!!
  • 参数四 probability:float,触发几率。1.0为百分之百

算了,我还是把各种Potion ID列一下吧:

  1. 速度:moveSpeed
  2. 缓慢:moveSlowdown
  3. 急迫:digSpeed
  4. 挖掘疲劳:digSlowDown
  5. 力量:damageBoost
  6. 瞬间治疗:heal
  7. 瞬间伤害:harm
  8. 跳跃提升:jump
  9. 反胃:confusion
  10. 生命恢复:regeneration
  11. 抗性提升:resistance
  12. 防火:fireResistance
  13. 水下呼吸:waterBreathing
  14. 隐身:invisibility
  15. 失明:blindness
  16. 夜视:nightVision
  17. 饥饿:hunger
  18. 虚弱:weakness
  19. 中毒:poison
  20. 凋零:wither
  21. 生命提升:healthBoost
  22. 伤害吸收:absorption
  23. 饱和:saturation

在满饥饿值时食用,Forge默认不会同意的。我们可以添加语句,保证任何时候都可以吃:

this.setAlwaysEdible();

——————————————————————————
添加如下代码,我这里是伤害吸收:

赶紧运行一下试试!!
——知识点2————————————————————
一些读者可能会意识到,像金苹果这样的食物光一个setPotionEffect方法是实现不了的。这里我们就要用到ItemFood类里的onFoodEaten方法
原方法如下(摘自ItemFood类):

protected void onFoodEaten(ItemStack stack, World worldIn, EntityPlayer player)
    {
    
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值