From e3fcfa04210cdbb0ae484751c120bdac3639f0fd Mon Sep 17 00:00:00 2001 From: DisasterMoo Date: Thu, 1 Aug 2019 16:16:27 -0300 Subject: [PATCH] Added damage resistance calculation by interface implementation and capability --- .../tfc/api/capability/damage/DamageType.java | 10 ++++++++- .../tfc/objects/ArmorMaterialTFC.java | 22 +++++++++---------- src/main/resources/assets | 2 +- 3 files changed, 21 insertions(+), 13 deletions(-) diff --git a/src/main/java/net/dries007/tfc/api/capability/damage/DamageType.java b/src/main/java/net/dries007/tfc/api/capability/damage/DamageType.java index 12f8865719..317abcb22b 100644 --- a/src/main/java/net/dries007/tfc/api/capability/damage/DamageType.java +++ b/src/main/java/net/dries007/tfc/api/capability/damage/DamageType.java @@ -46,7 +46,15 @@ public static float getModifier(DamageSource source, EntityLivingBase entityUnde { for (ItemStack stack : entityUnderAttack.getArmorInventoryList()) { - IDamageResistance resist = stack.getCapability(CapabilityDamageResistance.CAPABILITY, null); + IDamageResistance resist = null; + if (stack.getItem() instanceof IDamageResistance) + { + resist = (IDamageResistance) stack.getItem(); + } + else + { + resist = stack.getCapability(CapabilityDamageResistance.CAPABILITY, null); + } resistance += type.getModifier(resist); } } diff --git a/src/main/java/net/dries007/tfc/objects/ArmorMaterialTFC.java b/src/main/java/net/dries007/tfc/objects/ArmorMaterialTFC.java index b0878c354b..e495d10a2a 100644 --- a/src/main/java/net/dries007/tfc/objects/ArmorMaterialTFC.java +++ b/src/main/java/net/dries007/tfc/objects/ArmorMaterialTFC.java @@ -17,17 +17,17 @@ */ public enum ArmorMaterialTFC { - //todo tweak durability, "base" reduction(vanilla mechanic) and toughness - - COPPER(EnumHelper.addArmorMaterial("copper", MOD_ID + ":copper", 21, new int[] {3, 6, 8, 3}, 7, SoundEvents.ITEM_ARMOR_EQUIP_IRON, 1.0F), 0.5f, 0.5f, 0.5f), - BISMUTH_BRONZE(EnumHelper.addArmorMaterial("bismuth_bronze", MOD_ID + ":bismuth_bronze", 21, new int[] {3, 6, 8, 3}, 7, SoundEvents.ITEM_ARMOR_EQUIP_IRON, 1.0F), 0.5f, 0.5f, 0.5f), - BLACK_BRONZE(EnumHelper.addArmorMaterial("black_bronze", MOD_ID + ":black_bronze", 21, new int[] {3, 6, 8, 3}, 7, SoundEvents.ITEM_ARMOR_EQUIP_IRON, 1.0F), 0.5f, 0.5f, 0.5f), - BRONZE(EnumHelper.addArmorMaterial("bronze", MOD_ID + ":bronze", 21, new int[] {3, 6, 8, 3}, 7, SoundEvents.ITEM_ARMOR_EQUIP_IRON, 1.0F), 0.5f, 0.5f, 0.5f), - WROUGHT_IRON(EnumHelper.addArmorMaterial("wrought_iron", MOD_ID + ":wrought_iron", 21, new int[] {3, 6, 8, 3}, 7, SoundEvents.ITEM_ARMOR_EQUIP_IRON, 1.0F), 0.5f, 0.5f, 0.5f), - STEEL(EnumHelper.addArmorMaterial("steel", MOD_ID + ":steel", 21, new int[] {3, 6, 8, 3}, 7, SoundEvents.ITEM_ARMOR_EQUIP_IRON, 1.0F), 0.5f, 0.5f, 0.5f), - BLACK_STEEL(EnumHelper.addArmorMaterial("black_steel", MOD_ID + ":black_steel", 21, new int[] {3, 6, 8, 3}, 7, SoundEvents.ITEM_ARMOR_EQUIP_IRON, 1.0F), 0.5f, 0.5f, 0.5f), - BLUE_STEEL(EnumHelper.addArmorMaterial("blue_steel", MOD_ID + ":blue_steel", 21, new int[] {3, 6, 8, 3}, 7, SoundEvents.ITEM_ARMOR_EQUIP_IRON, 1.0F), 0.5f, 0.5f, 0.5f), - RED_STEEL(EnumHelper.addArmorMaterial("red_steel", MOD_ID + ":red_steel", 21, new int[] {3, 6, 8, 3}, 7, SoundEvents.ITEM_ARMOR_EQUIP_IRON, 1.0F), 0.5f, 0.5f, 0.5f); + //todo tweak all these values + + COPPER(EnumHelper.addArmorMaterial("copper", MOD_ID + ":copper", 21, new int[] {3, 6, 8, 3}, 7, SoundEvents.ITEM_ARMOR_EQUIP_IRON, 1.0F), 10, 10, 10), + BISMUTH_BRONZE(EnumHelper.addArmorMaterial("bismuth_bronze", MOD_ID + ":bismuth_bronze", 21, new int[] {3, 6, 8, 3}, 7, SoundEvents.ITEM_ARMOR_EQUIP_IRON, 1.0F), 10, 10, 10), + BLACK_BRONZE(EnumHelper.addArmorMaterial("black_bronze", MOD_ID + ":black_bronze", 21, new int[] {3, 6, 8, 3}, 7, SoundEvents.ITEM_ARMOR_EQUIP_IRON, 1.0F), 10, 10, 10), + BRONZE(EnumHelper.addArmorMaterial("bronze", MOD_ID + ":bronze", 21, new int[] {3, 6, 8, 3}, 7, SoundEvents.ITEM_ARMOR_EQUIP_IRON, 1.0F), 10, 10, 10), + WROUGHT_IRON(EnumHelper.addArmorMaterial("wrought_iron", MOD_ID + ":wrought_iron", 21, new int[] {3, 6, 8, 3}, 7, SoundEvents.ITEM_ARMOR_EQUIP_IRON, 1.0F), 10, 10, 10), + STEEL(EnumHelper.addArmorMaterial("steel", MOD_ID + ":steel", 21, new int[] {3, 6, 8, 3}, 7, SoundEvents.ITEM_ARMOR_EQUIP_IRON, 1.0F), 10, 10, 10), + BLACK_STEEL(EnumHelper.addArmorMaterial("black_steel", MOD_ID + ":black_steel", 21, new int[] {3, 6, 8, 3}, 7, SoundEvents.ITEM_ARMOR_EQUIP_IRON, 1.0F), 10, 10, 10), + BLUE_STEEL(EnumHelper.addArmorMaterial("blue_steel", MOD_ID + ":blue_steel", 15, new int[] {2, 5, 6, 2}, 9, SoundEvents.ITEM_ARMOR_EQUIP_IRON, 0.0F), 50, 50, 50), + RED_STEEL(EnumHelper.addArmorMaterial("red_steel", MOD_ID + ":red_steel", 21, new int[] {3, 6, 8, 3}, 7, SoundEvents.ITEM_ARMOR_EQUIP_IRON, 1.0F), 10, 10, 10); private final float crushingRes, slashingRes, piercingRes; private final ArmorMaterial material; diff --git a/src/main/resources/assets b/src/main/resources/assets index 6cc32fa187..49d5469ceb 160000 --- a/src/main/resources/assets +++ b/src/main/resources/assets @@ -1 +1 @@ -Subproject commit 6cc32fa18788d1c8cb56af71f09141bb64130f43 +Subproject commit 49d5469ceb3b7fbadf4460049e824bd4005fc3dd