|
|
|
@ -10,15 +10,22 @@ import cpw.mods.fml.common.IFuelHandler;
|
|
|
|
import cpw.mods.fml.common.eventhandler.SubscribeEvent;
|
|
|
|
import cpw.mods.fml.common.eventhandler.SubscribeEvent;
|
|
|
|
import cpw.mods.fml.common.gameevent.TickEvent;
|
|
|
|
import cpw.mods.fml.common.gameevent.TickEvent;
|
|
|
|
import cpw.mods.fml.common.registry.GameRegistry;
|
|
|
|
import cpw.mods.fml.common.registry.GameRegistry;
|
|
|
|
|
|
|
|
import lotr.common.LOTRAchievement;
|
|
|
|
|
|
|
|
import lotr.common.LOTRLevelData;
|
|
|
|
import lotr.common.LOTRMod;
|
|
|
|
import lotr.common.LOTRMod;
|
|
|
|
import lotr.common.LOTRDimension;
|
|
|
|
import lotr.common.LOTRDimension;
|
|
|
|
import lotr.common.enchant.LOTREnchantment;
|
|
|
|
import lotr.common.enchant.LOTREnchantment;
|
|
|
|
import lotr.common.enchant.LOTREnchantmentHelper;
|
|
|
|
import lotr.common.enchant.LOTREnchantmentHelper;
|
|
|
|
import lotr.common.entity.npc.LOTREntityOrc;
|
|
|
|
import lotr.common.entity.npc.LOTREntityOrc;
|
|
|
|
|
|
|
|
import lotr.common.entity.projectile.LOTREntityCrossbowBolt;
|
|
|
|
|
|
|
|
import lotr.common.entity.projectile.LOTREntityDart;
|
|
|
|
|
|
|
|
import lotr.common.entity.projectile.LOTREntitySpear;
|
|
|
|
import lotr.common.item.*;
|
|
|
|
import lotr.common.item.*;
|
|
|
|
import net.minecraft.entity.Entity;
|
|
|
|
import net.minecraft.entity.Entity;
|
|
|
|
import net.minecraft.entity.EntityLivingBase;
|
|
|
|
import net.minecraft.entity.EntityLivingBase;
|
|
|
|
|
|
|
|
import net.minecraft.entity.player.EntityPlayer;
|
|
|
|
import net.minecraft.entity.player.EntityPlayerMP;
|
|
|
|
import net.minecraft.entity.player.EntityPlayerMP;
|
|
|
|
|
|
|
|
import net.minecraft.entity.projectile.EntityArrow;
|
|
|
|
import net.minecraft.item.*;
|
|
|
|
import net.minecraft.item.*;
|
|
|
|
import net.minecraft.nbt.NBTTagCompound;
|
|
|
|
import net.minecraft.nbt.NBTTagCompound;
|
|
|
|
import net.minecraft.nbt.NBTTagList;
|
|
|
|
import net.minecraft.nbt.NBTTagList;
|
|
|
|
@ -27,6 +34,7 @@ import net.minecraft.potion.Potion;
|
|
|
|
import net.minecraft.potion.PotionEffect;
|
|
|
|
import net.minecraft.potion.PotionEffect;
|
|
|
|
import net.minecraft.util.ChatComponentText;
|
|
|
|
import net.minecraft.util.ChatComponentText;
|
|
|
|
import net.minecraft.util.DamageSource;
|
|
|
|
import net.minecraft.util.DamageSource;
|
|
|
|
|
|
|
|
import net.minecraft.util.EntityDamageSourceIndirect;
|
|
|
|
import net.minecraft.util.EnumChatFormatting;
|
|
|
|
import net.minecraft.util.EnumChatFormatting;
|
|
|
|
import net.minecraft.world.World;
|
|
|
|
import net.minecraft.world.World;
|
|
|
|
import net.minecraftforge.common.DimensionManager;
|
|
|
|
import net.minecraftforge.common.DimensionManager;
|
|
|
|
@ -84,7 +92,41 @@ public class CinderEventHandler implements IFuelHandler {
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
@SubscribeEvent
|
|
|
|
|
|
|
|
public void onLivingAttacked(LivingAttackEvent event) {
|
|
|
|
|
|
|
|
EntityLivingBase entity = event.entityLiving;
|
|
|
|
|
|
|
|
EntityLivingBase attacker = event.source.getEntity() instanceof EntityLivingBase ? (EntityLivingBase)event.source.getEntity() : null;
|
|
|
|
|
|
|
|
World world = entity.worldObj;
|
|
|
|
|
|
|
|
if (event.source instanceof EntityDamageSourceIndirect) {
|
|
|
|
|
|
|
|
ItemStack chestplate;
|
|
|
|
|
|
|
|
Entity projectile = event.source.getSourceOfDamage();
|
|
|
|
|
|
|
|
if (projectile instanceof EntityArrow || projectile instanceof LOTREntityCrossbowBolt || projectile instanceof LOTREntityDart) {
|
|
|
|
|
|
|
|
boolean wearingAllGalvorn = true;
|
|
|
|
|
|
|
|
for (int i = 0; i < 4; ++i) {
|
|
|
|
|
|
|
|
ItemStack armour = entity.getEquipmentInSlot(i + 1);
|
|
|
|
|
|
|
|
if (armour != null && armour.getItem() instanceof ItemArmor && ((ItemArmor)armour.getItem()).getArmorMaterial() == LOTRMaterial.GALVORN.toArmorMaterial()) continue;
|
|
|
|
|
|
|
|
wearingAllGalvorn = false;
|
|
|
|
|
|
|
|
break;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
if (wearingAllGalvorn) {
|
|
|
|
|
|
|
|
if (!world.isRemote && entity instanceof EntityPlayer) {
|
|
|
|
|
|
|
|
((EntityPlayer)entity).inventory.damageArmor(event.ammount);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
this.cancelAttackEvent(event);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
if (!world.isRemote && entity instanceof EntityPlayer && attacker instanceof LOTREntityOrc && projectile instanceof LOTREntitySpear && (chestplate = entity.getEquipmentInSlot(3)) != null && chestplate.getItem() == LOTRMod.bodyMithril) {
|
|
|
|
|
|
|
|
LOTRLevelData.getData((EntityPlayer)entity).addAchievement(LOTRAchievement.hitByOrcSpear);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
private void cancelAttackEvent(LivingAttackEvent event) {
|
|
|
|
|
|
|
|
event.setCanceled(true);
|
|
|
|
|
|
|
|
DamageSource source = event.source;
|
|
|
|
|
|
|
|
if (source instanceof EntityDamageSourceIndirect) {
|
|
|
|
|
|
|
|
Entity entity = source.getSourceOfDamage();
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
@SubscribeEvent
|
|
|
|
@SubscribeEvent
|
|
|
|
public void onLivingAttack(LivingAttackEvent event) {
|
|
|
|
public void onLivingAttack(LivingAttackEvent event) {
|
|
|
|
Entity attacker = event.source.getEntity();
|
|
|
|
Entity attacker = event.source.getEntity();
|
|
|
|
|