From 5aa2bedd562f5787b3bf7a74853f010fb5874979 Mon Sep 17 00:00:00 2001 From: KeyLime17 Date: Sat, 17 May 2025 22:26:04 -0400 Subject: [PATCH] Gilded Galvorn, should hopefully now work as intended --- .../cinder_loe/CinderEventHandler.java | 63 +++++++++---------- .../com/zivilon/cinder_loe/CinderLoE.java | 9 +-- 2 files changed, 34 insertions(+), 38 deletions(-) diff --git a/src/main/java/com/zivilon/cinder_loe/CinderEventHandler.java b/src/main/java/com/zivilon/cinder_loe/CinderEventHandler.java index 9d924a7..29a234a 100644 --- a/src/main/java/com/zivilon/cinder_loe/CinderEventHandler.java +++ b/src/main/java/com/zivilon/cinder_loe/CinderEventHandler.java @@ -10,8 +10,6 @@ import cpw.mods.fml.common.IFuelHandler; import cpw.mods.fml.common.eventhandler.SubscribeEvent; import cpw.mods.fml.common.gameevent.TickEvent; import cpw.mods.fml.common.registry.GameRegistry; -import lotr.common.LOTRAchievement; -import lotr.common.LOTRLevelData; import lotr.common.LOTRMod; import lotr.common.LOTRDimension; import lotr.common.enchant.LOTREnchantment; @@ -19,7 +17,6 @@ import lotr.common.enchant.LOTREnchantmentHelper; 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 net.minecraft.entity.Entity; import net.minecraft.entity.EntityLivingBase; @@ -45,7 +42,13 @@ import net.minecraftforge.event.entity.player.ArrowLooseEvent; import java.util.Random; +import static com.zivilon.cinder_loe.CinderLoE.getLOTRMaterialByName; + public class CinderEventHandler implements IFuelHandler { + + private static final ItemArmor.ArmorMaterial MATERIAL_GILDEDGALVORN = + getLOTRMaterialByName("GILDEDGALVORN").toArmorMaterial(); + private static final Random random = new Random(); public CinderEventHandler() { FMLCommonHandler.instance().bus().register(this); @@ -92,34 +95,7 @@ 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; @@ -129,8 +105,31 @@ public class CinderEventHandler implements IFuelHandler { } @SubscribeEvent public void onLivingAttack(LivingAttackEvent event) { - Entity attacker = event.source.getEntity(); + EntityLivingBase entity = event.entityLiving; + EntityLivingBase attacker = event.source.getEntity() instanceof EntityLivingBase ? (EntityLivingBase)event.source.getEntity() : null; + World world = entity.worldObj; + if (event.entityLiving.worldObj.isRemote) return; + + DamageSource src = event.source; + if (!(event.source instanceof EntityDamageSourceIndirect)) return; + Entity projectile = event.source.getSourceOfDamage(); + if (!(projectile instanceof EntityArrow + || projectile instanceof LOTREntityCrossbowBolt + || projectile instanceof LOTREntityDart)) { + boolean wearingAllGalvorn = true; + for (int slot = 1; slot <= 4; slot++) { + ItemStack armour = entity.getEquipmentInSlot(slot); + if (armour != null && armour.getItem() instanceof ItemArmor && ((ItemArmor)armour.getItem()).getArmorMaterial() == MATERIAL_GILDEDGALVORN) continue; + wearingAllGalvorn = false; + } + if (wearingAllGalvorn) { + if (!world.isRemote && entity instanceof EntityPlayer) { + ((EntityPlayer)entity).inventory.damageArmor(event.ammount); + } + this.cancelAttackEvent(event); + } + } if (!(attacker instanceof EntityPlayerMP player)) return; ItemStack weapon = player.getHeldItem(); diff --git a/src/main/java/com/zivilon/cinder_loe/CinderLoE.java b/src/main/java/com/zivilon/cinder_loe/CinderLoE.java index 50ad809..f6eab5a 100644 --- a/src/main/java/com/zivilon/cinder_loe/CinderLoE.java +++ b/src/main/java/com/zivilon/cinder_loe/CinderLoE.java @@ -588,9 +588,9 @@ public class CinderLoE { dough = new LOTRItemFood(1,0.0f, false).setPotionEffect(Potion.hunger.id, 5,0,100).setUnlocalizedName("lotr:dough").setTextureName("lotr:dough"); pasta = new LOTRItemFood(2,0.0f, false).setPotionEffect(Potion.hunger.id, 5,0,100).setUnlocalizedName("lotr:pasta").setTextureName("lotr:pasta"); pretzel = new LOTRItemFood(4,1.0f, false).setUnlocalizedName("lotr:pretzel").setTextureName("lotr:pretzel"); - halva = new LOTRItemFood (7, 4.0f, false).setUnlocalizedName("lotr:halva").setTextureName("lotr:halva"); - doner_kebab = new LOTRItemFood (6, 6.0f, false).setUnlocalizedName("lotr:doner_kebab").setTextureName("lotr:doner_kebab"); - flatbread = new LOTRItemFood (3, 8.0f, false).setUnlocalizedName("lotr:flatbread").setTextureName("lotr:flatbread"); + halva = new LOTRItemFood (7, 3.0f, false).setUnlocalizedName("lotr:halva").setTextureName("lotr:halva"); + doner_kebab = new LOTRItemFood (6, 3.0f, false).setUnlocalizedName("lotr:doner_kebab").setTextureName("lotr:doner_kebab"); + flatbread = new LOTRItemFood (3, 4.0f, false).setUnlocalizedName("lotr:flatbread").setTextureName("lotr:flatbread"); // honey = new LOTRItemFood(3, 0.4f, false).setPotionEffect(Potion.regeneration.id, 5, 0, 100).setUnlocalizedName("lotr:honey").setTextureName("lotr:honey"); spiceElven = new Item().setUnlocalizedName("lotr:spice_elven").setTextureName("lotr:spice_elven"); spiceHuman = new Item().setUnlocalizedName("lotr:spice_human").setTextureName("lotr:spice_human"); @@ -756,9 +756,6 @@ public class CinderLoE { ItemRegistration.register(warDart,"warDart",6111); ItemRegistration.register(warDartHeads,"warDartHeads",6500); - //Override Galvorn Helmet with new model texture - LOTRMod.helmetGalvorn = new LOTRItemArmor(LOTRMaterial.GALVORN, 0, "helmet").setUnlocalizedName("lotr:helmetGalvorn"); - //ASH MATERIAL_ASH = getLOTRMaterialByName("ASH"); ingotAsh = new Item().setUnlocalizedName("lotr:ingotAsh").setTextureName("lotr:ingotAsh").setCreativeTab((CreativeTabs) materials);