From f3b9eb394a16c96742f793c2b36fdb26e54331c3 Mon Sep 17 00:00:00 2001 From: Vos Date: Tue, 10 Mar 2026 21:06:04 -0500 Subject: [PATCH] Plate carrier --- .../models/item/sovs_plate_carrier.json | 68 ++++++++++++++++++ .../sovs_plate_carrier_amethyst_trim.json | 7 ++ .../item/sovs_plate_carrier_copper_trim.json | 7 ++ .../item/sovs_plate_carrier_diamond_trim.json | 7 ++ .../item/sovs_plate_carrier_emerald_trim.json | 7 ++ .../item/sovs_plate_carrier_gold_trim.json | 7 ++ .../item/sovs_plate_carrier_iron_trim.json | 7 ++ .../item/sovs_plate_carrier_lapis_trim.json | 7 ++ .../sovs_plate_carrier_netherite_trim.json | 7 ++ .../item/sovs_plate_carrier_quartz_trim.json | 7 ++ .../sovs_plate_carrier_redstone_trim.json | 7 ++ .../minecraft/tags/item/trimmable_armor.json | 4 +- .../java/com/acethewildfire/acesbs/TODO.txt | 2 +- .../acesbs/datagen/ModItemTagProvider.java | 4 +- .../acesbs/datagen/ModModelProvider.java | 1 + .../acesbs/item/ModArmorMaterials.java | 12 +++- .../acesbs/item/ModItemGroups.java | 1 + .../acethewildfire/acesbs/item/ModItems.java | 18 +++++ .../custom/SovsPlateCarrierArmorItem.java | 27 +++++++ .../acesbs/mixin/ItemStackMixin.java | 35 +++++++++ .../acesbs/mixin/LivingEntityMixin.java | 40 +++++++++++ src/main/resources/acesbs.mixins.json | 2 + .../resources/assets/acesbs/lang/en_us.json | 6 ++ .../textures/item/sovs_plate_carrier.png | Bin 0 -> 197 bytes .../acesbs/textures/item/wildfire_boots.png | Bin 173 -> 368 bytes .../textures/models/armor/plates_layer_1.png | Bin 0 -> 424 bytes .../models/armor/wildfire_layer_1.png | Bin 467 -> 295 bytes 27 files changed, 286 insertions(+), 4 deletions(-) create mode 100644 src/main/generated/assets/acesbs/models/item/sovs_plate_carrier.json create mode 100644 src/main/generated/assets/acesbs/models/item/sovs_plate_carrier_amethyst_trim.json create mode 100644 src/main/generated/assets/acesbs/models/item/sovs_plate_carrier_copper_trim.json create mode 100644 src/main/generated/assets/acesbs/models/item/sovs_plate_carrier_diamond_trim.json create mode 100644 src/main/generated/assets/acesbs/models/item/sovs_plate_carrier_emerald_trim.json create mode 100644 src/main/generated/assets/acesbs/models/item/sovs_plate_carrier_gold_trim.json create mode 100644 src/main/generated/assets/acesbs/models/item/sovs_plate_carrier_iron_trim.json create mode 100644 src/main/generated/assets/acesbs/models/item/sovs_plate_carrier_lapis_trim.json create mode 100644 src/main/generated/assets/acesbs/models/item/sovs_plate_carrier_netherite_trim.json create mode 100644 src/main/generated/assets/acesbs/models/item/sovs_plate_carrier_quartz_trim.json create mode 100644 src/main/generated/assets/acesbs/models/item/sovs_plate_carrier_redstone_trim.json create mode 100644 src/main/java/com/acethewildfire/acesbs/item/custom/SovsPlateCarrierArmorItem.java create mode 100644 src/main/java/com/acethewildfire/acesbs/mixin/ItemStackMixin.java create mode 100644 src/main/java/com/acethewildfire/acesbs/mixin/LivingEntityMixin.java create mode 100644 src/main/resources/assets/acesbs/textures/item/sovs_plate_carrier.png create mode 100644 src/main/resources/assets/acesbs/textures/models/armor/plates_layer_1.png diff --git a/src/main/generated/assets/acesbs/models/item/sovs_plate_carrier.json b/src/main/generated/assets/acesbs/models/item/sovs_plate_carrier.json new file mode 100644 index 0000000..43d6b21 --- /dev/null +++ b/src/main/generated/assets/acesbs/models/item/sovs_plate_carrier.json @@ -0,0 +1,68 @@ +{ + "parent": "minecraft:item/generated", + "overrides": [ + { + "model": "acesbs:item/sovs_plate_carrier_quartz_trim", + "predicate": { + "trim_type": 0.1 + } + }, + { + "model": "acesbs:item/sovs_plate_carrier_iron_trim", + "predicate": { + "trim_type": 0.2 + } + }, + { + "model": "acesbs:item/sovs_plate_carrier_netherite_trim", + "predicate": { + "trim_type": 0.3 + } + }, + { + "model": "acesbs:item/sovs_plate_carrier_redstone_trim", + "predicate": { + "trim_type": 0.4 + } + }, + { + "model": "acesbs:item/sovs_plate_carrier_copper_trim", + "predicate": { + "trim_type": 0.5 + } + }, + { + "model": "acesbs:item/sovs_plate_carrier_gold_trim", + "predicate": { + "trim_type": 0.6 + } + }, + { + "model": "acesbs:item/sovs_plate_carrier_emerald_trim", + "predicate": { + "trim_type": 0.7 + } + }, + { + "model": "acesbs:item/sovs_plate_carrier_diamond_trim", + "predicate": { + "trim_type": 0.8 + } + }, + { + "model": "acesbs:item/sovs_plate_carrier_lapis_trim", + "predicate": { + "trim_type": 0.9 + } + }, + { + "model": "acesbs:item/sovs_plate_carrier_amethyst_trim", + "predicate": { + "trim_type": 1.0 + } + } + ], + "textures": { + "layer0": "acesbs:item/sovs_plate_carrier" + } +} \ No newline at end of file diff --git a/src/main/generated/assets/acesbs/models/item/sovs_plate_carrier_amethyst_trim.json b/src/main/generated/assets/acesbs/models/item/sovs_plate_carrier_amethyst_trim.json new file mode 100644 index 0000000..7aa3987 --- /dev/null +++ b/src/main/generated/assets/acesbs/models/item/sovs_plate_carrier_amethyst_trim.json @@ -0,0 +1,7 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "acesbs:item/sovs_plate_carrier", + "layer1": "minecraft:trims/items/chestplate_trim_amethyst" + } +} \ No newline at end of file diff --git a/src/main/generated/assets/acesbs/models/item/sovs_plate_carrier_copper_trim.json b/src/main/generated/assets/acesbs/models/item/sovs_plate_carrier_copper_trim.json new file mode 100644 index 0000000..42edef3 --- /dev/null +++ b/src/main/generated/assets/acesbs/models/item/sovs_plate_carrier_copper_trim.json @@ -0,0 +1,7 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "acesbs:item/sovs_plate_carrier", + "layer1": "minecraft:trims/items/chestplate_trim_copper" + } +} \ No newline at end of file diff --git a/src/main/generated/assets/acesbs/models/item/sovs_plate_carrier_diamond_trim.json b/src/main/generated/assets/acesbs/models/item/sovs_plate_carrier_diamond_trim.json new file mode 100644 index 0000000..641b583 --- /dev/null +++ b/src/main/generated/assets/acesbs/models/item/sovs_plate_carrier_diamond_trim.json @@ -0,0 +1,7 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "acesbs:item/sovs_plate_carrier", + "layer1": "minecraft:trims/items/chestplate_trim_diamond" + } +} \ No newline at end of file diff --git a/src/main/generated/assets/acesbs/models/item/sovs_plate_carrier_emerald_trim.json b/src/main/generated/assets/acesbs/models/item/sovs_plate_carrier_emerald_trim.json new file mode 100644 index 0000000..c0baf40 --- /dev/null +++ b/src/main/generated/assets/acesbs/models/item/sovs_plate_carrier_emerald_trim.json @@ -0,0 +1,7 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "acesbs:item/sovs_plate_carrier", + "layer1": "minecraft:trims/items/chestplate_trim_emerald" + } +} \ No newline at end of file diff --git a/src/main/generated/assets/acesbs/models/item/sovs_plate_carrier_gold_trim.json b/src/main/generated/assets/acesbs/models/item/sovs_plate_carrier_gold_trim.json new file mode 100644 index 0000000..07102d8 --- /dev/null +++ b/src/main/generated/assets/acesbs/models/item/sovs_plate_carrier_gold_trim.json @@ -0,0 +1,7 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "acesbs:item/sovs_plate_carrier", + "layer1": "minecraft:trims/items/chestplate_trim_gold" + } +} \ No newline at end of file diff --git a/src/main/generated/assets/acesbs/models/item/sovs_plate_carrier_iron_trim.json b/src/main/generated/assets/acesbs/models/item/sovs_plate_carrier_iron_trim.json new file mode 100644 index 0000000..4b9967d --- /dev/null +++ b/src/main/generated/assets/acesbs/models/item/sovs_plate_carrier_iron_trim.json @@ -0,0 +1,7 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "acesbs:item/sovs_plate_carrier", + "layer1": "minecraft:trims/items/chestplate_trim_iron" + } +} \ No newline at end of file diff --git a/src/main/generated/assets/acesbs/models/item/sovs_plate_carrier_lapis_trim.json b/src/main/generated/assets/acesbs/models/item/sovs_plate_carrier_lapis_trim.json new file mode 100644 index 0000000..a7453fe --- /dev/null +++ b/src/main/generated/assets/acesbs/models/item/sovs_plate_carrier_lapis_trim.json @@ -0,0 +1,7 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "acesbs:item/sovs_plate_carrier", + "layer1": "minecraft:trims/items/chestplate_trim_lapis" + } +} \ No newline at end of file diff --git a/src/main/generated/assets/acesbs/models/item/sovs_plate_carrier_netherite_trim.json b/src/main/generated/assets/acesbs/models/item/sovs_plate_carrier_netherite_trim.json new file mode 100644 index 0000000..7c6a8ae --- /dev/null +++ b/src/main/generated/assets/acesbs/models/item/sovs_plate_carrier_netherite_trim.json @@ -0,0 +1,7 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "acesbs:item/sovs_plate_carrier", + "layer1": "minecraft:trims/items/chestplate_trim_netherite" + } +} \ No newline at end of file diff --git a/src/main/generated/assets/acesbs/models/item/sovs_plate_carrier_quartz_trim.json b/src/main/generated/assets/acesbs/models/item/sovs_plate_carrier_quartz_trim.json new file mode 100644 index 0000000..f3d9232 --- /dev/null +++ b/src/main/generated/assets/acesbs/models/item/sovs_plate_carrier_quartz_trim.json @@ -0,0 +1,7 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "acesbs:item/sovs_plate_carrier", + "layer1": "minecraft:trims/items/chestplate_trim_quartz" + } +} \ No newline at end of file diff --git a/src/main/generated/assets/acesbs/models/item/sovs_plate_carrier_redstone_trim.json b/src/main/generated/assets/acesbs/models/item/sovs_plate_carrier_redstone_trim.json new file mode 100644 index 0000000..ca0ada0 --- /dev/null +++ b/src/main/generated/assets/acesbs/models/item/sovs_plate_carrier_redstone_trim.json @@ -0,0 +1,7 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "acesbs:item/sovs_plate_carrier", + "layer1": "minecraft:trims/items/chestplate_trim_redstone" + } +} \ No newline at end of file diff --git a/src/main/generated/data/minecraft/tags/item/trimmable_armor.json b/src/main/generated/data/minecraft/tags/item/trimmable_armor.json index 64f37a9..4211054 100644 --- a/src/main/generated/data/minecraft/tags/item/trimmable_armor.json +++ b/src/main/generated/data/minecraft/tags/item/trimmable_armor.json @@ -4,6 +4,8 @@ "acesbs:prisma_steel_chestplate", "acesbs:prisma_steel_leggings", "acesbs:prisma_steel_boots", - "acesbs:berserkers_pauldron" + "acesbs:berserkers_pauldron", + "acesbs:wildfire_boots", + "acesbs:sovs_plate_carrier" ] } \ No newline at end of file diff --git a/src/main/java/com/acethewildfire/acesbs/TODO.txt b/src/main/java/com/acethewildfire/acesbs/TODO.txt index 9640cf8..9a3ddec 100644 --- a/src/main/java/com/acethewildfire/acesbs/TODO.txt +++ b/src/main/java/com/acethewildfire/acesbs/TODO.txt @@ -40,7 +40,7 @@ Items Armor X Beserker Pauldron (Special: Skeleton hurt sound) -- Wildfire Boots (Special: Rainbow ember) +X Wildfire Boots (Special: Rainbow ember) - Fireskip Boots (Infernal Fire effect on water) - Sov's Plate Carrier - (Headlamp Armors using Everburn Gold) diff --git a/src/main/java/com/acethewildfire/acesbs/datagen/ModItemTagProvider.java b/src/main/java/com/acethewildfire/acesbs/datagen/ModItemTagProvider.java index fc631de..7638183 100644 --- a/src/main/java/com/acethewildfire/acesbs/datagen/ModItemTagProvider.java +++ b/src/main/java/com/acethewildfire/acesbs/datagen/ModItemTagProvider.java @@ -48,7 +48,9 @@ public class ModItemTagProvider extends FabricTagProvider.ItemTagProvider { .add(PrismaSteelItems.PRISMA_STEEL_CHESTPLATE) .add(PrismaSteelItems.PRISMA_STEEL_LEGGINGS) .add(PrismaSteelItems.PRISMA_STEEL_BOOTS) - .add(ModItems.BERSERKERS_PAULDRON); + .add(ModItems.BERSERKERS_PAULDRON) + .add(ModItems.WILDFIRE_BOOTS) + .add(ModItems.SOVS_PLATE_CARRIER); getOrCreateTagBuilder(ItemTags.TRIM_MATERIALS) .add(PrismaSteelItems.PRISMA_STEEL); getOrCreateTagBuilder(ItemTags.TRIM_TEMPLATES) diff --git a/src/main/java/com/acethewildfire/acesbs/datagen/ModModelProvider.java b/src/main/java/com/acethewildfire/acesbs/datagen/ModModelProvider.java index 6c162d0..8a911fa 100644 --- a/src/main/java/com/acethewildfire/acesbs/datagen/ModModelProvider.java +++ b/src/main/java/com/acethewildfire/acesbs/datagen/ModModelProvider.java @@ -106,6 +106,7 @@ public class ModModelProvider extends FabricModelProvider { itemModelGenerator.registerArmor((ArmorItem) ModItems.BERSERKERS_PAULDRON); itemModelGenerator.registerArmor((ArmorItem) ModItems.WILDFIRE_BOOTS); + itemModelGenerator.registerArmor((ArmorItem) ModItems.SOVS_PLATE_CARRIER); itemModelGenerator.register(ModItems.FREN_SPAWN_EGG, new Model(Optional.of(Identifier.of("item/template_spawn_egg")), Optional.empty())); diff --git a/src/main/java/com/acethewildfire/acesbs/item/ModArmorMaterials.java b/src/main/java/com/acethewildfire/acesbs/item/ModArmorMaterials.java index 059fee1..9880f0c 100644 --- a/src/main/java/com/acethewildfire/acesbs/item/ModArmorMaterials.java +++ b/src/main/java/com/acethewildfire/acesbs/item/ModArmorMaterials.java @@ -35,9 +35,19 @@ public class ModArmorMaterials { map.put(ArmorItem.Type.CHESTPLATE, 8); map.put(ArmorItem.Type.HELMET, 3); map.put(ArmorItem.Type.BODY, 11); - }), 20, SoundEvents.ITEM_ARMOR_EQUIP_NETHERITE, () -> Ingredient.ofItems(ModItems.INFERNAL_ASHES), + }), 20, SoundEvents.ITEM_ARMOR_EQUIP_LEATHER, () -> Ingredient.ofItems(ModItems.INFERNAL_ASHES), List.of(new ArmorMaterial.Layer(Identifier.of(AcesBS.MOD_ID, "wildfire"))), 0, 0)); + public static final RegistryEntry PLATES = registerArmorMaterial("plates", + () -> new ArmorMaterial(Util.make(new EnumMap<>(ArmorItem.Type.class), map -> { + map.put(ArmorItem.Type.BOOTS, 0); + map.put(ArmorItem.Type.LEGGINGS, 0); + map.put(ArmorItem.Type.CHESTPLATE, 0); + map.put(ArmorItem.Type.HELMET, 0); + map.put(ArmorItem.Type.BODY, 0); + }), 20, SoundEvents.ITEM_ARMOR_EQUIP_NETHERITE, () -> Ingredient.ofItems(PrismaSteelItems.PRISMA_STEEL), + List.of(new ArmorMaterial.Layer(Identifier.of(AcesBS.MOD_ID, "plates"))), 0, 0)); + public static final RegistryEntry BERSERKERS = registerArmorMaterial("berserkers", () -> new ArmorMaterial(Util.make(new EnumMap<>(ArmorItem.Type.class), map -> { map.put(ArmorItem.Type.BOOTS, 2); diff --git a/src/main/java/com/acethewildfire/acesbs/item/ModItemGroups.java b/src/main/java/com/acethewildfire/acesbs/item/ModItemGroups.java index 01fd35b..ece2e1a 100644 --- a/src/main/java/com/acethewildfire/acesbs/item/ModItemGroups.java +++ b/src/main/java/com/acethewildfire/acesbs/item/ModItemGroups.java @@ -105,6 +105,7 @@ public class ModItemGroups { entries.add(ModItems.COMBUSTIBLE_LEMON); entries.add(ModItems.BERSERKERS_PAULDRON); entries.add(ModItems.WILDFIRE_BOOTS); + entries.add(ModItems.SOVS_PLATE_CARRIER); }) diff --git a/src/main/java/com/acethewildfire/acesbs/item/ModItems.java b/src/main/java/com/acethewildfire/acesbs/item/ModItems.java index efb1c28..49c32d2 100644 --- a/src/main/java/com/acethewildfire/acesbs/item/ModItems.java +++ b/src/main/java/com/acethewildfire/acesbs/item/ModItems.java @@ -144,6 +144,24 @@ public class ModItems { } ); + public static final Item SOVS_PLATE_CARRIER = ModItems.registerItem("sovs_plate_carrier", + new SovsPlateCarrierArmorItem(ModArmorMaterials.PLATES, ArmorItem.Type.CHESTPLATE, new Item.Settings() + .maxDamage(6)){ + @Override + public void appendTooltip(ItemStack stack, TooltipContext context, List tooltip, TooltipType type) { + if(!Screen.hasShiftDown()){ + tooltip.add(Text.translatable("tooltip.acesbs.sovs_plate_carrier_desc")); + tooltip.add(Text.translatable("tooltip.acesbs.generic.shift_more")); + } + else { + tooltip.add(Text.translatable("tooltip.acesbs.sovs_plate_carrier_thanks")); + tooltip.add(Text.translatable("tooltip.acesbs.sovs_plate_carrier_desc2")); + tooltip.add(Text.translatable("tooltip.acesbs.sovs_plate_carrier_desc3")); + } + super.appendTooltip(stack, context, tooltip, type); + } + }); + public static final Item WILDFIRE_BOOTS = registerItem("wildfire_boots", new WildfireArmorItem(ModArmorMaterials.WILDFIRE_ARMOR_MATERIAL, ArmorItem.Type.BOOTS, new Item.Settings() .maxDamage(ArmorItem.Type.BOOTS.getMaxDamage(15))){ diff --git a/src/main/java/com/acethewildfire/acesbs/item/custom/SovsPlateCarrierArmorItem.java b/src/main/java/com/acethewildfire/acesbs/item/custom/SovsPlateCarrierArmorItem.java new file mode 100644 index 0000000..f2c9344 --- /dev/null +++ b/src/main/java/com/acethewildfire/acesbs/item/custom/SovsPlateCarrierArmorItem.java @@ -0,0 +1,27 @@ +package com.acethewildfire.acesbs.item.custom; + +import net.minecraft.entity.Entity; +import net.minecraft.entity.EquipmentSlot; +import net.minecraft.entity.LivingEntity; +import net.minecraft.item.ArmorItem; +import net.minecraft.item.ArmorMaterial; +import net.minecraft.item.ItemStack; +import net.minecraft.registry.entry.RegistryEntry; +import net.minecraft.world.World; + +public class SovsPlateCarrierArmorItem extends ArmorItem { + public SovsPlateCarrierArmorItem(RegistryEntry material, Type type, Settings settings) { + super(material, type, settings); + } + + + + public static float getDamageMultiplier(ItemStack stack) { + float durabilityRatio = + (float)(stack.getMaxDamage() - stack.getDamage()) / stack.getMaxDamage(); + + // 0 durability → 1.0x damage + // full durability → 0.01x damage (99% reduction) + return 1.0f - (durabilityRatio * 0.99f); + } +} diff --git a/src/main/java/com/acethewildfire/acesbs/mixin/ItemStackMixin.java b/src/main/java/com/acethewildfire/acesbs/mixin/ItemStackMixin.java new file mode 100644 index 0000000..12b534c --- /dev/null +++ b/src/main/java/com/acethewildfire/acesbs/mixin/ItemStackMixin.java @@ -0,0 +1,35 @@ +package com.acethewildfire.acesbs.mixin; + +import com.acethewildfire.acesbs.item.custom.SovsPlateCarrierArmorItem; +import net.minecraft.entity.EquipmentSlot; +import net.minecraft.entity.LivingEntity; +import net.minecraft.item.ItemStack; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; + +@Mixin(ItemStack.class) +public abstract class ItemStackMixin { + + @Inject(method = "damage*", at = @At("HEAD"), cancellable = true) + private void preventChestplateBreak( + int amount, + LivingEntity entity, + EquipmentSlot slot, + CallbackInfo cir + ) { + ItemStack stack = (ItemStack)(Object)this; + + if (stack.getItem() instanceof SovsPlateCarrierArmorItem) { + + int newDamage = stack.getDamage() + amount; + + if (newDamage >= stack.getMaxDamage()) { + stack.setDamage(stack.getMaxDamage()); + cir.cancel(); // cancel breaking + } + } + } +} diff --git a/src/main/java/com/acethewildfire/acesbs/mixin/LivingEntityMixin.java b/src/main/java/com/acethewildfire/acesbs/mixin/LivingEntityMixin.java new file mode 100644 index 0000000..05d2ba5 --- /dev/null +++ b/src/main/java/com/acethewildfire/acesbs/mixin/LivingEntityMixin.java @@ -0,0 +1,40 @@ +package com.acethewildfire.acesbs.mixin; + +import com.acethewildfire.acesbs.item.custom.SovsPlateCarrierArmorItem; +import net.minecraft.entity.EquipmentSlot; +import net.minecraft.entity.LivingEntity; +import net.minecraft.entity.damage.DamageSource; +import net.minecraft.entity.player.PlayerEntity; +import net.minecraft.item.ItemStack; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.ModifyVariable; + +@Mixin(LivingEntity.class) +public abstract class LivingEntityMixin { + + @ModifyVariable( + method = "damage", + at = @At("HEAD"), + argsOnly = true + ) + private float modifyDamage(float amount) { + + LivingEntity entity = (LivingEntity)(Object)this; + + if (entity instanceof PlayerEntity player) { + + ItemStack chest = player.getEquippedStack(EquipmentSlot.CHEST); + + if (chest.getItem() instanceof SovsPlateCarrierArmorItem) { + + float multiplier = + SovsPlateCarrierArmorItem.getDamageMultiplier(chest); + + amount *= multiplier; + } + } + + return amount; + } +} diff --git a/src/main/resources/acesbs.mixins.json b/src/main/resources/acesbs.mixins.json index aed3c4d..7b0f6ce 100644 --- a/src/main/resources/acesbs.mixins.json +++ b/src/main/resources/acesbs.mixins.json @@ -7,6 +7,8 @@ "CreeperTickMixin", "CreeperTransformStateMixin", "EntityMixin", + "LivingEntityMixin", + "ItemStackMixin", "ExampleMixin" ], "injectors": { diff --git a/src/main/resources/assets/acesbs/lang/en_us.json b/src/main/resources/assets/acesbs/lang/en_us.json index 5b3c2e1..f51a58b 100644 --- a/src/main/resources/assets/acesbs/lang/en_us.json +++ b/src/main/resources/assets/acesbs/lang/en_us.json @@ -43,6 +43,7 @@ "item.acesbs.berserkers_pauldron": "Berserker's Pauldron", "item.acesbs.wildfire_boots": "Wildfire Boots", + "item.acesbs.sovs_plate_carrier": "Sov's Plate Carrier", "item.acesbs.kaupen_bow": "Kaupen Bow", @@ -165,6 +166,11 @@ "tooltip.acesbs.wildfire_boots_desc": "§c§oThere are no walls.§r", "tooltip.acesbs.wildfire_boots_thanks": "§7§oProgrammed with <3 by/for AceTheWildfire§r", + "tooltip.acesbs.sovs_plate_carrier_desc": "§c§oProtection from Ace... hopefully§r", + "tooltip.acesbs.sovs_plate_carrier_desc2": "Damage reduction scales with item durability.", + "tooltip.acesbs.sovs_plate_carrier_desc3": "Repair with Ballistic Plates.", + "tooltip.acesbs.sovs_plate_carrier_thanks": "§7§oProgrammed with <3 for Sovaeris§r", + "tooltip.acesbs.thanks_sov": "§7§oTextures by Sovaeris§r", "tooltip.acesbs.combustible_lemon1": "§7§oDo you know who I am?§r", diff --git a/src/main/resources/assets/acesbs/textures/item/sovs_plate_carrier.png b/src/main/resources/assets/acesbs/textures/item/sovs_plate_carrier.png new file mode 100644 index 0000000000000000000000000000000000000000..bab56132b9b0b0f83aadc5f7038b72baf72c85eb GIT binary patch literal 197 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`J)SO(Ar`%7Ctl<{pupp@yUp2R z=5LEh#yfhS*2Z{d2VL6F#@Dm6+QX(VK4fjF?bnme&Sx#JODMCn$Vu@Ay#Jf_;LO~w zISjl4ZjK_`ip4KP?e3{smC{`C;U2@%DXkJNj-35}Zs!;L6m!eFz_f)~|IFv$1`o}K v?S-wu41e3ybq!edI0hwhf1JWqzgAdoLDE*X8w~e>?qcwC^>bP0l+XkKY8px= literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/acesbs/textures/item/wildfire_boots.png b/src/main/resources/assets/acesbs/textures/item/wildfire_boots.png index ec4183ed782bce5bc7b48d36bdee8bcd2a1bd070..d05bcb050fbf47899bcb438834cf379c1413aa67 100644 GIT binary patch delta 341 zcmV-b0jmD30q_ElB!2;OQb$4o*~u(_00004XF*Lt006O%3;baP0000WV@Og>004R> z004l5008;`004mK004C`008P>0026e000+ooVrmw00009a7bBm000XU000XU0RWnu z7ytkO2XskIMF;8w3jhujZ}XOB0002SNkl6 zU2wwFyjIP*MgV{v=h)a+>l^YOX#@bM$rnb;IH7IoM9eXxWl)nZ06>tCZ{fU63^+zy zqh%0OkmEl=TuwXA5L66(7ii6@OrJnl+tl%(YVzMBlGu5h6>}5k?ZQOlrd)21L`>N4 nfRg^4|NHrRU)+P$0o#iY6MS9yV}s+800000NkvXXu0mjf>d1mH delta 145 zcmV;C0B-;A0<8g%B!6^CL_t(I%VS^|UcgX8R!uY4@P-_fLVj#!kWRxYaF=n`o+qGol>bM@iXvo{2W}hghhx|Db#1p z%D}+Oz`b+g4}czvfbVEi1ax~KMF1k$(jvk_qyd0iP}Nk-EuRcM?A7Oqy|}?Z&`)-m z6?a=8IEd%B>n?(mcjx2_4@o|*Ng{-Sm#=G2-?l0S+UkGN4I5{9s&)gY+-%)$sx#&Z zaSg=y>P?b7)ut(~-$k+hykkkxeyOJ4E22n#s+h^l?n2cE*~<$t(&RpjRJ1-CIn#Cw zB8Z0wG6OX0IcJM@3?nWca-(7Nl(I1Dq}jsLuLUoB%HT!dPOfS;H;ZF4nNusx;P)w{)8o}uZPZ#2p3oBt7v(MI^~EBpXFPH3W* S+I?~W0000007)cL_t(|oa~k{4#F@DMSoF{Qi*}FBL`sQ z6pS2{ky9{ofQ~r;5|%)Kl8QE6~KsYJ@!pREQZ@X6wLbC)vy;OQ|nx3n9K=|)s+BtR@%sTt=huhH|W|&E`%&V>Kx)EOP}wCGk;L1WPJ^@V3sM$Vh zMssZ#RZ~D0s=RrcD`~VTq@DnXVA9*oOao%2)WuEiHvJD+Rd@-QF#wvL<1Xnz0PtUM zXnK)kgX8zl7=Q4RD}YF@SBxcO4R8>QzE>#F&i|csdh8 zMu8u(h#wKxVmv!#ypRc_q2T%hacM@QWuCX_J@6?(B;$%A@MZ4}TKj(AAe=OBba_hX z!i^S;@_Aa80P}OV%GZTzKdA!0bHUXpn#H1xHhQPju0HnxVC*V1)>we9z4a)P1E8^Q v&y8(t+nI!2v*6`uhsI*7E=)t`!)N&iID}