【MineCraft】-- 学习我的世界Mod制作引雷附魔书与事件

基于前面搭建的环境继续。

下面完成一个附魔书制作,并且附魔武器后有雷击效果。


 

一、监听事件两种情况

成员函数

对象构造时AddToEventBus

如:

函数开头上一行加@SubscribeEvent

如:

静态函数

类开头@Mod.EventBusSubscriber(括号里可写可不写)

如:

函数开头@SubScribeEvent

如:

 

二、事件共同用法

事件可以设置优先级@SubscribeEvent(priority = EventPriority.Low);

部分事件有“结果”,如生成生物、暴击;

部分事件可以取消,如造成伤害;

部分事件只能监听,如生物跳跃;

不是所有的事情都有事件。

常用事件

1、ItemTooltipEvent:给物品、方块加描述。

方法名前需要加上@SideOnly(Side.CLIENT)

2、AnvilUpdateEvent:设计铁砧配方

3、LivingHurtEvent:生物被攻击事件

4、LivingEvent.LivingUpdateEvent:每秒20次,所有生物

TickEvent.PlayerTickEvent:每秒20次,所有玩家

TickEvent.WorldTickEvent:每秒20次,世界

5、LivingDeathEvent:生物死亡

6、PlayerEvent.PlayerLoggedInEvent:玩家登录

二、引雷附魔书

在ModEnchangtmentInit类添加

    public static final ModEnchantmentBase THUNDER = new ModEnchantmentBase("dawnbreakforest.thunder", Enchantment.Rarity.COMMON, EnumEnchantmentType.WEAPON,  mainHand);

en_us.lang添加

enchantment.dawnbreakforest.thunder=Thunder

zh_cn.lang添加

enchantment.dawnbreakforest.thunder=中苏之力

至此有了附魔书,但是这个附魔书没有实际作用。

三、附魔书添加实际效果

新建ModEnchantmentEvents类

在enchantments/events下新建

 

@Mod.EventBusSubscriber(modid = IdlFramework.MODID)
public class ModEnchantmentEvents {
    @SubscribeEvent
    public static void onHit(LivingHurtEvent event){
        EntityLivingBase hurtOne = event.getEntityLiving();//获取被打生物
        World world = hurtOne.world;//获取你的世界
        if(event.isCanceled()||world.isRemote){//没打中或者本地段不执行
            return;
        }
        Entity attacker = event.getSource().getTrueSource();//获取真正攻击者,排除淹死情况
        if(attacker instanceof EntityLivingBase){//攻击者存在,并且是生物
            EntityLivingBase trueAttacker = (EntityLivingBase) attacker;//将攻击者类型转化为生物
            if(ModEnchantmentInit.THUNDER.getLevelOnCreature(trueAttacker) > 0){//攻击附加雷击
                world.addWeatherEffect(new EntityLightningBolt(world,hurtOne.posX,hurtOne.posY,hurtOne.posZ,true));//召唤雷
            }
        }
    }
}

至此完成附魔书雷击效果。


  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

四月天行健

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值