• 【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下新建

     

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

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


  • 相关阅读:
    软件的界面测试是什么?怎么设计的?
    [附源码]计算机毕业设计JAVAjsp网上购物商城
    (刘二大人)PyTorch深度学习实践-卷积网络(基础篇)
    Go-Excelize API源码阅读(四十)——SetCellRichText
    手把手教你部署nginx+php —— k8s从入门到高并发系列教程 (一)
    抗旱稳粮保秋收 国稻种芯-绥阳县:组织了93名农技人员指导
    Node 安装 Vuex
    小谈设计模式(25)—职责链模式
    代码随想录算法训练营第23期day14|二叉树层序遍历、226.翻转二叉树、101. 对称二叉树
    OSI模型与数据的封装
  • 原文地址:https://blog.csdn.net/Tir_zhang/article/details/126293017