package me.km.effects.passive; import me.km.KajetansMod; import me.km.api.Module; import me.km.api.ModuleListener; import me.km.api.Utils; import me.km.effects.Effect; import me.km.effects.EffectUtils; import me.km.events.PlayerHurtEvent; import me.km.events.ThrowableLaunchEvent; import net.minecraft.entity.Entity; import net.minecraft.entity.item.EntityEnderPearl; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.projectile.EntityPotion; import net.minecraft.entity.projectile.EntityThrowable; import net.minecraftforge.fml.common.eventhandler.SubscribeEvent; public class ThrowableEffects extends ModuleListener { public ThrowableEffects(Module m) { super(m); } @SubscribeEvent(receiveCanceled = false) public void preventEnderPearlDamage(PlayerHurtEvent e) { Entity ent = e.getSource().getImmediateSource(); if(ent != null && ent.getClass() == EntityEnderPearl.class && KajetansMod.worldManager.getWorldPreferences(ent.world).skills && EffectUtils.getEffectLevel(e.getEntityPlayer(), Effect.NO_ENDERPEARL_DAMAGE) >= 1) { e.setCanceled(true); } } @SubscribeEvent(receiveCanceled = false) public void useThrowableEvent(ThrowableLaunchEvent e) { if(!KajetansMod.worldManager.getWorldPreferences(e.getWorld()).skills) { return; } EntityThrowable ent = e.getEntityThrowable(); if(ent instanceof EntityEnderPearl) { EntityPlayer p = e.getEntityPlayer(); if(Utils.randomBoolean() && EffectUtils.getEffectLevel(p, Effect.PEARL_SAVER) >= 1) { p.getHeldItemMainhand().grow(1); } int speed = EffectUtils.getEffectLevel(p, Effect.FAST_ENDERPEARL_SHOOT); if(speed >= 1) { Utils.scaleVelocity(e.getEntityThrowable(), speed + 1); } } else if(ent instanceof EntityPotion) { EntityPlayer p = e.getEntityPlayer(); int saver = EffectUtils.getEffectLevel(p, Effect.POTION_SAVER); if(saver >= 1 && saver >= Utils.randomInt(1, 5)) { p.getHeldItemMainhand().grow(1); } } } }