监听器
在开发mod的时候,总有带着镣铐跳舞的感觉,但就是不能修改MC代码
你说气不气,气不气
一、监听器是什么?
是心慈手软,伟大无比,曾经折磨死你 的MinecraftForge团队为mod开发者们准备的可以在触发某事件(攻击,受伤,按下按键,左键空气…)时自动调用的方法体
二、制作监听器
1.引入库
代码如下(EventHandler):
package com.fenge.fmltutor.event;
import com.fenge.fmltutor.ExampleMod;
import com.google.common.collect.Sets;
import com.fenge.fmltutor.item.ItemDirtSword;
import net.minecraft.entity.Entity;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.ItemStack;
import net.minecraftforge.fml.common.Mod;
import net.minecraftforge.fml.common.eventhandler.SubscribeEvent;
import net.minecraftforge.fml.common.gameevent.TickEvent;
import java.util.Set;
//监听类,一定要加@Mod.EventBusSubscriber注解
@Mod.EventBusSubscriber(modid = ExampleMod.MODID)
public class EventHandler {
//监听器一定要有@SubscribeEvent注解,不加的话就跟普通方法一样
@SubscribeEvent //参数只有一个,类型决定了要监听时间
public void onPlayerEventTick(TickEvent.PlayerTickEvent event){
//再次补全方法体
}
}
2.常用监听器
监听类型如下:
Event | 当xxxx时触发此事件 |
---|---|
TickEvent.PlayerTickEvent | 每帧触发一次 |
PlayerInteractEvent.LeftClickEmpty | 每当玩家左键一下空气时调用 |
LivingHurtEvent | 生物被扣血时调用 |
LivingDeathEvent | 生物个屁时调用 |
InputEvent.KeyInputEvent | 按下按键时调用 |
LivingAttackEvent | 生物受伤时调用(触发受伤动画时调用) |
LivingDamageEvent | 当某生物被别的生物攻击时调用 |
更多监听器
IDAE:“有个叫做提示的好东西”
因为监听的事件名字与监听类型的名字几乎一样,所以只要会英语,就可以通过IDEA找出来