123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384 |
- package me.km.events;
- import java.util.ArrayList;
- import me.km.utils.ReflectionUtils;
- import net.minecraft.entity.Entity;
- import net.minecraft.entity.player.EntityPlayer;
- import net.minecraft.entity.player.EntityPlayerMP;
- import net.minecraft.entity.projectile.EntityArrow;
- import net.minecraft.entity.projectile.EntityThrowable;
- import net.minecraftforge.common.MinecraftForge;
- import net.minecraftforge.event.entity.EntityJoinWorldEvent;
- import net.minecraftforge.event.entity.living.LivingHurtEvent;
- import net.minecraftforge.fml.common.eventhandler.SubscribeEvent;
- import net.minecraftforge.fml.common.gameevent.TickEvent;
- public class CustomEventCaller
- {
- private static final ArrayList<EntityArrow> ARROWS = new ArrayList<>();
-
- @SubscribeEvent
- public void onPlayerMove(TickEvent.PlayerTickEvent e)
- {
- if(e.phase == TickEvent.Phase.END)
- {
- EntityPlayer p = e.player;
- if(p.prevPosX != p.posX || p.prevPosY != p.posY || p.prevPosZ != p.posZ)
- {
- MinecraftForge.EVENT_BUS.post(new PlayerMoveEvent(p));
- }
- }
- }
-
- @SubscribeEvent
- public void onArrowLaunch(EntityJoinWorldEvent e)
- {
- Entity ent = e.getEntity();
- if(ent instanceof EntityArrow)
- {
- EntityArrow arrow = (EntityArrow) ent;
- if(arrow.shootingEntity instanceof EntityPlayer)
- {
- ARROWS.add(arrow);
- MinecraftForge.EVENT_BUS.post(new ArrowLaunchEvent((EntityPlayer) arrow.shootingEntity, arrow, e.getWorld()));
- }
- }
- else if(ent instanceof EntityThrowable)
- {
- EntityThrowable thrown = (EntityThrowable) ent;
- if(thrown.getThrower() instanceof EntityPlayer)
- {
- MinecraftForge.EVENT_BUS.post(new ThrowableLaunchEvent((EntityPlayer) thrown.getThrower(), thrown, e.getWorld()));
- }
- }
- }
-
- @SubscribeEvent
- public void tickServer(TickEvent.ServerTickEvent e)
- {
- if(e.phase == TickEvent.Phase.END)
- {
- ARROWS.removeIf(arrow ->
- {
- if(ReflectionUtils.getArrowTimeInGround(arrow) >= 1)
- {
- MinecraftForge.EVENT_BUS.post(new ArrowHitGroundEvent(arrow));
- return true;
- }
- return false;
- });
- }
- }
-
- @SubscribeEvent
- public void onPlayerHurt(LivingHurtEvent e)
- {
- if(e.getEntityLiving() instanceof EntityPlayerMP && !(e instanceof PlayerHurtEvent))
- {
- PlayerHurtEvent hurt = new PlayerHurtEvent((EntityPlayerMP) e.getEntityLiving(), e.getSource(), e.getAmount());
- MinecraftForge.EVENT_BUS.post(hurt);
- e.setAmount(hurt.getAmount());
- e.setCanceled(hurt.isCanceled());
- }
- }
- }
|