From 330e4f89fa4bedb7ee91e2771029d7d2465835f3 Mon Sep 17 00:00:00 2001 From: Ellpeck Date: Sat, 1 Dec 2018 18:56:05 +0100 Subject: [PATCH] added botanist's armor --- .../java/de/ellpeck/naturesaura/Helper.java | 17 ++-- .../de/ellpeck/naturesaura/NaturesAura.java | 3 + .../api/aura/item/IAuraRecharge.java | 2 +- .../naturesaura/items/ItemAuraCache.java | 15 ++- .../items/ItemShockwaveCreator.java | 7 ++ .../ellpeck/naturesaura/items/ModItems.java | 27 +++-- .../naturesaura/items/tools/ItemArmorNA.java | 96 ++++++++++++++++++ .../naturesaura/items/tools/ItemAxeNA.java | 2 +- .../naturesaura/items/tools/ItemHoeNA.java | 3 +- .../items/tools/ItemPickaxeNA.java | 2 +- .../naturesaura/items/tools/ItemShovelNA.java | 2 +- .../naturesaura/items/tools/ItemSwordNA.java | 2 +- .../assets/naturesaura/lang/en_US.lang | 4 + .../models/item/infused_iron_chest.json | 6 ++ .../models/item/infused_iron_helmet.json | 6 ++ .../models/item/infused_iron_pants.json | 6 ++ .../models/item/infused_iron_shoes.json | 6 ++ .../entries/items/infused_iron_armor.json | 26 +++++ .../entries/items/infused_iron_tools.json | 2 +- .../naturesaura/recipes/infused_chest.json | 19 ++++ .../naturesaura/recipes/infused_helmet.json | 18 ++++ .../naturesaura/recipes/infused_pants.json | 16 +++ .../naturesaura/recipes/infused_shoes.json | 15 +++ .../textures/items/infused_iron_chest.png | Bin 0 -> 772 bytes .../textures/items/infused_iron_helmet.png | Bin 0 -> 270 bytes .../textures/items/infused_iron_pants.png | Bin 0 -> 772 bytes .../textures/items/infused_iron_shoes.png | Bin 0 -> 740 bytes .../models/armor/infused_iron_layer_1.png | Bin 0 -> 1181 bytes .../models/armor/infused_iron_layer_2.png | Bin 0 -> 803 bytes 29 files changed, 274 insertions(+), 28 deletions(-) create mode 100644 src/main/java/de/ellpeck/naturesaura/items/tools/ItemArmorNA.java create mode 100644 src/main/resources/assets/naturesaura/models/item/infused_iron_chest.json create mode 100644 src/main/resources/assets/naturesaura/models/item/infused_iron_helmet.json create mode 100644 src/main/resources/assets/naturesaura/models/item/infused_iron_pants.json create mode 100644 src/main/resources/assets/naturesaura/models/item/infused_iron_shoes.json create mode 100644 src/main/resources/assets/naturesaura/patchouli_books/book/en_us/entries/items/infused_iron_armor.json create mode 100644 src/main/resources/assets/naturesaura/recipes/infused_chest.json create mode 100644 src/main/resources/assets/naturesaura/recipes/infused_helmet.json create mode 100644 src/main/resources/assets/naturesaura/recipes/infused_pants.json create mode 100644 src/main/resources/assets/naturesaura/recipes/infused_shoes.json create mode 100644 src/main/resources/assets/naturesaura/textures/items/infused_iron_chest.png create mode 100644 src/main/resources/assets/naturesaura/textures/items/infused_iron_helmet.png create mode 100644 src/main/resources/assets/naturesaura/textures/items/infused_iron_pants.png create mode 100644 src/main/resources/assets/naturesaura/textures/items/infused_iron_shoes.png create mode 100644 src/main/resources/assets/naturesaura/textures/models/armor/infused_iron_layer_1.png create mode 100644 src/main/resources/assets/naturesaura/textures/models/armor/infused_iron_layer_2.png diff --git a/src/main/java/de/ellpeck/naturesaura/Helper.java b/src/main/java/de/ellpeck/naturesaura/Helper.java index 0dd43ee6..3dcc984a 100644 --- a/src/main/java/de/ellpeck/naturesaura/Helper.java +++ b/src/main/java/de/ellpeck/naturesaura/Helper.java @@ -2,7 +2,6 @@ package de.ellpeck.naturesaura; import de.ellpeck.naturesaura.api.NaturesAuraAPI; import de.ellpeck.naturesaura.api.aura.item.IAuraRecharge; -import de.ellpeck.naturesaura.api.recipes.ing.NBTIngredient; import de.ellpeck.naturesaura.blocks.tiles.TileEntityImpl; import net.minecraft.block.Block; import net.minecraft.block.properties.IProperty; @@ -156,14 +155,18 @@ public final class Helper { return false; } - public static ICapabilityProvider makeRechargeProvider(ItemStack stack) { + public static ICapabilityProvider makeRechargeProvider(ItemStack stack, boolean needsSelected) { return new ICapabilityProvider() { - private final IAuraRecharge recharge = container -> { - int toDrain = 3; - if (stack.getItemDamage() > 0 && container.drainAura(toDrain, true) >= toDrain) { - stack.setItemDamage(stack.getItemDamage() - 1); - container.drainAura(toDrain, false); + private final IAuraRecharge recharge = (container, containerSlot, itemSlot, isSelected) -> { + if (isSelected || !needsSelected) { + int toDrain = 3; + if (stack.getItemDamage() > 0 && container.drainAura(toDrain, true) >= toDrain) { + stack.setItemDamage(stack.getItemDamage() - 1); + container.drainAura(toDrain, false); + return true; + } } + return false; }; @Override diff --git a/src/main/java/de/ellpeck/naturesaura/NaturesAura.java b/src/main/java/de/ellpeck/naturesaura/NaturesAura.java index f7401491..de830c5f 100644 --- a/src/main/java/de/ellpeck/naturesaura/NaturesAura.java +++ b/src/main/java/de/ellpeck/naturesaura/NaturesAura.java @@ -30,10 +30,13 @@ import net.minecraftforge.fml.common.event.FMLServerStartingEvent; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; +import java.util.Locale; + @Mod(modid = NaturesAura.MOD_ID, name = NaturesAura.MOD_NAME, version = NaturesAura.VERSION, dependencies = NaturesAura.DEPS) public final class NaturesAura { public static final String MOD_ID = NaturesAuraAPI.MOD_ID; + public static final String MOD_ID_UPPER = MOD_ID.toUpperCase(Locale.ROOT); public static final String PROXY_LOCATION = "de.ellpeck." + MOD_ID + ".proxy."; public static final String MOD_NAME = "Nature's Aura"; public static final String VERSION = "@VERSION@"; diff --git a/src/main/java/de/ellpeck/naturesaura/api/aura/item/IAuraRecharge.java b/src/main/java/de/ellpeck/naturesaura/api/aura/item/IAuraRecharge.java index 42f15628..4956cb5b 100644 --- a/src/main/java/de/ellpeck/naturesaura/api/aura/item/IAuraRecharge.java +++ b/src/main/java/de/ellpeck/naturesaura/api/aura/item/IAuraRecharge.java @@ -4,6 +4,6 @@ import de.ellpeck.naturesaura.api.aura.container.IAuraContainer; public interface IAuraRecharge { - void rechargeFromContainer(IAuraContainer container); + boolean rechargeFromContainer(IAuraContainer container, int containerSlot, int itemSlot, boolean isSelected); } diff --git a/src/main/java/de/ellpeck/naturesaura/items/ItemAuraCache.java b/src/main/java/de/ellpeck/naturesaura/items/ItemAuraCache.java index 9a43d975..6f04ec1d 100644 --- a/src/main/java/de/ellpeck/naturesaura/items/ItemAuraCache.java +++ b/src/main/java/de/ellpeck/naturesaura/items/ItemAuraCache.java @@ -4,6 +4,7 @@ import de.ellpeck.naturesaura.Helper; import de.ellpeck.naturesaura.api.NaturesAuraAPI; import de.ellpeck.naturesaura.api.aura.container.IAuraContainer; import de.ellpeck.naturesaura.api.aura.container.ItemAuraContainer; +import de.ellpeck.naturesaura.api.aura.item.IAuraRecharge; import de.ellpeck.naturesaura.api.render.ITrinketItem; import net.minecraft.client.renderer.GlStateManager; import net.minecraft.creativetab.CreativeTabs; @@ -35,10 +36,16 @@ public class ItemAuraCache extends ItemImpl implements ITrinketItem { if (!worldIn.isRemote && entityIn instanceof EntityPlayer) { EntityPlayer player = (EntityPlayer) entityIn; if (player.isSneaking()) { - ItemStack stack = player.getHeldItemMainhand(); - if (stack.hasCapability(NaturesAuraAPI.capAuraRecharge, null)) { - IAuraContainer container = stackIn.getCapability(NaturesAuraAPI.capAuraContainer, null); - stack.getCapability(NaturesAuraAPI.capAuraRecharge, null).rechargeFromContainer(container); + IAuraContainer container = stackIn.getCapability(NaturesAuraAPI.capAuraContainer, null); + if (container.getStoredAura() <= 0) + return; + for (int i = 0; i < player.inventory.getSizeInventory(); i++) { + ItemStack stack = player.inventory.getStackInSlot(i); + if (stack.hasCapability(NaturesAuraAPI.capAuraRecharge, null)) { + IAuraRecharge recharge = stack.getCapability(NaturesAuraAPI.capAuraRecharge, null); + if (recharge.rechargeFromContainer(container, itemSlot, i, player.inventory.currentItem == i)) + break; + } } } } diff --git a/src/main/java/de/ellpeck/naturesaura/items/ItemShockwaveCreator.java b/src/main/java/de/ellpeck/naturesaura/items/ItemShockwaveCreator.java index 93a8019b..f25b8861 100644 --- a/src/main/java/de/ellpeck/naturesaura/items/ItemShockwaveCreator.java +++ b/src/main/java/de/ellpeck/naturesaura/items/ItemShockwaveCreator.java @@ -3,6 +3,7 @@ package de.ellpeck.naturesaura.items; import de.ellpeck.naturesaura.NaturesAura; import de.ellpeck.naturesaura.api.NaturesAuraAPI; import de.ellpeck.naturesaura.api.render.ITrinketItem; +import de.ellpeck.naturesaura.items.tools.ItemArmorNA; import de.ellpeck.naturesaura.packet.PacketHandler; import de.ellpeck.naturesaura.packet.PacketParticles; import net.minecraft.block.Block; @@ -16,9 +17,11 @@ import net.minecraft.client.renderer.RenderHelper; import net.minecraft.entity.Entity; import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.init.MobEffects; import net.minecraft.inventory.EntityEquipmentSlot; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.potion.PotionEffect; import net.minecraft.util.DamageSource; import net.minecraft.util.EnumParticleTypes; import net.minecraft.util.ResourceLocation; @@ -78,6 +81,7 @@ public class ItemShockwaveCreator extends ItemImpl implements ITrinketItem { source = DamageSource.causePlayerDamage((EntityPlayer) living); else source = DamageSource.MAGIC; + boolean infusedSet = ItemArmorNA.isFullSetEquipped(living, 0); int range = 5; List mobs = worldIn.getEntitiesWithinAABB(EntityLivingBase.class, new AxisAlignedBB( @@ -91,6 +95,9 @@ public class ItemShockwaveCreator extends ItemImpl implements ITrinketItem { if (living instanceof EntityPlayer && !NaturesAuraAPI.instance().extractAuraFromPlayer((EntityPlayer) living, 5, false)) break; mob.attackEntityFrom(source, 4F); + + if (infusedSet) + mob.addPotionEffect(new PotionEffect(MobEffects.WITHER, 120)); } BlockPos pos = living.getPosition(); diff --git a/src/main/java/de/ellpeck/naturesaura/items/ModItems.java b/src/main/java/de/ellpeck/naturesaura/items/ModItems.java index fe6503d7..866de6ee 100644 --- a/src/main/java/de/ellpeck/naturesaura/items/ModItems.java +++ b/src/main/java/de/ellpeck/naturesaura/items/ModItems.java @@ -2,20 +2,29 @@ package de.ellpeck.naturesaura.items; import de.ellpeck.naturesaura.NaturesAura; import de.ellpeck.naturesaura.items.tools.*; +import net.minecraft.init.SoundEvents; +import net.minecraft.inventory.EntityEquipmentSlot; import net.minecraft.item.Item; +import net.minecraft.item.Item.ToolMaterial; +import net.minecraft.item.ItemArmor.ArmorMaterial; import net.minecraftforge.common.util.EnumHelper; -import java.util.Locale; - public final class ModItems { - public static final Item.ToolMaterial TOOL_MATERIAL_INFUSED_IRON = - EnumHelper.addToolMaterial(NaturesAura.MOD_ID.toUpperCase(Locale.ROOT) + "_INFUSED_IRON", 3, 300, 6.25F, 2.25F, 16); - public static final Item INFUSED_PICKAXE = new ItemPickaxeNA("infused_iron_pickaxe", TOOL_MATERIAL_INFUSED_IRON); - public static final Item INFUSED_AXE = new ItemAxeNA("infused_iron_axe", TOOL_MATERIAL_INFUSED_IRON, 8.25F, -3.2F); - public static final Item INFUSED_SHOVEL = new ItemShovelNA("infused_iron_shovel", TOOL_MATERIAL_INFUSED_IRON); - public static final Item INFUSED_HOE = new ItemHoeNA("infused_iron_hoe", TOOL_MATERIAL_INFUSED_IRON); - public static final Item INFUSED_SWORD = new ItemSwordNA("infused_iron_sword", TOOL_MATERIAL_INFUSED_IRON); + public static final ToolMaterial TOOL_INFUSED = EnumHelper.addToolMaterial( + NaturesAura.MOD_ID_UPPER + "_INFUSED_IRON", 3, 300, 6.25F, 2.25F, 16); + public static final Item INFUSED_PICKAXE = new ItemPickaxeNA("infused_iron_pickaxe", TOOL_INFUSED); + public static final Item INFUSED_AXE = new ItemAxeNA("infused_iron_axe", TOOL_INFUSED, 8.25F, -3.2F); + public static final Item INFUSED_SHOVEL = new ItemShovelNA("infused_iron_shovel", TOOL_INFUSED); + public static final Item INFUSED_HOE = new ItemHoeNA("infused_iron_hoe", TOOL_INFUSED); + public static final Item INFUSED_SWORD = new ItemSwordNA("infused_iron_sword", TOOL_INFUSED); + public static final ArmorMaterial ARMOR_INFUSED = EnumHelper.addArmorMaterial( + NaturesAura.MOD_ID_UPPER + "INFUSED_IRON", NaturesAura.MOD_ID + ":infused_iron", + 19, new int[]{2, 5, 6, 2}, 16, SoundEvents.ITEM_ARMOR_EQUIP_GENERIC, 0F); + public static final Item INFUSED_HELMET = new ItemArmorNA("infused_iron_helmet", ARMOR_INFUSED, EntityEquipmentSlot.HEAD); + public static final Item INFUSED_CHEST = new ItemArmorNA("infused_iron_chest", ARMOR_INFUSED, EntityEquipmentSlot.CHEST); + public static final Item INFUSED_PANTS = new ItemArmorNA("infused_iron_pants", ARMOR_INFUSED, EntityEquipmentSlot.LEGS); + public static final Item INFUSED_SHOES = new ItemArmorNA("infused_iron_shoes", ARMOR_INFUSED, EntityEquipmentSlot.FEET); public static final Item EYE = new ItemEye(); public static final Item GOLD_FIBER = new ItemGoldFiber(); diff --git a/src/main/java/de/ellpeck/naturesaura/items/tools/ItemArmorNA.java b/src/main/java/de/ellpeck/naturesaura/items/tools/ItemArmorNA.java new file mode 100644 index 00000000..371d6748 --- /dev/null +++ b/src/main/java/de/ellpeck/naturesaura/items/tools/ItemArmorNA.java @@ -0,0 +1,96 @@ +package de.ellpeck.naturesaura.items.tools; + +import de.ellpeck.naturesaura.Helper; +import de.ellpeck.naturesaura.items.ModItems; +import de.ellpeck.naturesaura.reg.ICreativeItem; +import de.ellpeck.naturesaura.reg.IModItem; +import de.ellpeck.naturesaura.reg.IModelProvider; +import de.ellpeck.naturesaura.reg.ModRegistry; +import net.minecraft.entity.Entity; +import net.minecraft.entity.EntityLivingBase; +import net.minecraft.init.MobEffects; +import net.minecraft.inventory.EntityEquipmentSlot; +import net.minecraft.item.Item; +import net.minecraft.item.ItemArmor; +import net.minecraft.item.ItemStack; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.potion.PotionEffect; +import net.minecraftforge.common.MinecraftForge; +import net.minecraftforge.common.capabilities.ICapabilityProvider; +import net.minecraftforge.event.entity.living.LivingAttackEvent; +import net.minecraftforge.fml.common.event.FMLInitializationEvent; +import net.minecraftforge.fml.common.event.FMLPostInitializationEvent; +import net.minecraftforge.fml.common.event.FMLPreInitializationEvent; +import net.minecraftforge.fml.common.eventhandler.SubscribeEvent; + +import javax.annotation.Nullable; +import java.util.ArrayList; +import java.util.List; + +public class ItemArmorNA extends ItemArmor implements IModItem, ICreativeItem, IModelProvider { + + private static List sets; + private final String baseName; + + public ItemArmorNA(String baseName, ArmorMaterial materialIn, EntityEquipmentSlot equipmentSlotIn) { + super(materialIn, 0, equipmentSlotIn); + this.baseName = baseName; + ModRegistry.add(this); + + MinecraftForge.EVENT_BUS.register(this); + } + + @SubscribeEvent + public void onAttack(LivingAttackEvent event) { + EntityLivingBase entity = event.getEntityLiving(); + if (!entity.world.isRemote) { + if (!isFullSetEquipped(entity, 0)) + return; + Entity source = event.getSource().getTrueSource(); + if (source instanceof EntityLivingBase) + ((EntityLivingBase) source).addPotionEffect(new PotionEffect(MobEffects.WITHER, 40)); + } + } + + @Override + public String getBaseName() { + return this.baseName; + } + + @Override + public void onPreInit(FMLPreInitializationEvent event) { + + } + + @Override + public void onInit(FMLInitializationEvent event) { + + } + + @Override + public void onPostInit(FMLPostInitializationEvent event) { + + } + + @Nullable + @Override + public ICapabilityProvider initCapabilities(ItemStack stack, @Nullable NBTTagCompound nbt) { + return Helper.makeRechargeProvider(stack, false); + } + + public static boolean isFullSetEquipped(EntityLivingBase entity, int setIndex) { + if (sets == null) { + sets = new ArrayList<>(); + sets.add(new Item[]{ModItems.INFUSED_SHOES, ModItems.INFUSED_PANTS, ModItems.INFUSED_CHEST, ModItems.INFUSED_HELMET}); + } + + Item[] set = sets.get(setIndex); + for (int i = 0; i < 4; i++) { + EntityEquipmentSlot slot = EntityEquipmentSlot.values()[i + 2]; + ItemStack stack = entity.getItemStackFromSlot(slot); + if (stack.isEmpty() || stack.getItem() != set[i]) + return false; + } + return true; + } +} diff --git a/src/main/java/de/ellpeck/naturesaura/items/tools/ItemAxeNA.java b/src/main/java/de/ellpeck/naturesaura/items/tools/ItemAxeNA.java index 271fa393..1bd6ab52 100644 --- a/src/main/java/de/ellpeck/naturesaura/items/tools/ItemAxeNA.java +++ b/src/main/java/de/ellpeck/naturesaura/items/tools/ItemAxeNA.java @@ -59,7 +59,7 @@ public class ItemAxeNA extends ItemAxe implements IModItem, ICreativeItem, IMode @Override public ICapabilityProvider initCapabilities(ItemStack stack, @Nullable NBTTagCompound nbt) { if (this == ModItems.INFUSED_AXE) - return Helper.makeRechargeProvider(stack); + return Helper.makeRechargeProvider(stack, true); else return null; } } diff --git a/src/main/java/de/ellpeck/naturesaura/items/tools/ItemHoeNA.java b/src/main/java/de/ellpeck/naturesaura/items/tools/ItemHoeNA.java index f3bea9a9..fd230c61 100644 --- a/src/main/java/de/ellpeck/naturesaura/items/tools/ItemHoeNA.java +++ b/src/main/java/de/ellpeck/naturesaura/items/tools/ItemHoeNA.java @@ -1,6 +1,5 @@ package de.ellpeck.naturesaura.items.tools; -import crafttweaker.api.creativetabs.ICreativeTab; import de.ellpeck.naturesaura.Helper; import de.ellpeck.naturesaura.items.ModItems; import de.ellpeck.naturesaura.reg.ICreativeItem; @@ -87,7 +86,7 @@ public class ItemHoeNA extends ItemHoe implements IModItem, ICreativeItem, IMode @Override public ICapabilityProvider initCapabilities(ItemStack stack, @Nullable NBTTagCompound nbt) { if (this == ModItems.INFUSED_HOE) - return Helper.makeRechargeProvider(stack); + return Helper.makeRechargeProvider(stack, true); else return null; } } diff --git a/src/main/java/de/ellpeck/naturesaura/items/tools/ItemPickaxeNA.java b/src/main/java/de/ellpeck/naturesaura/items/tools/ItemPickaxeNA.java index f75eee45..5b970656 100644 --- a/src/main/java/de/ellpeck/naturesaura/items/tools/ItemPickaxeNA.java +++ b/src/main/java/de/ellpeck/naturesaura/items/tools/ItemPickaxeNA.java @@ -76,7 +76,7 @@ public class ItemPickaxeNA extends ItemPickaxe implements IModItem, ICreativeIte @Override public ICapabilityProvider initCapabilities(ItemStack stack, @Nullable NBTTagCompound nbt) { if (this == ModItems.INFUSED_PICKAXE) - return Helper.makeRechargeProvider(stack); + return Helper.makeRechargeProvider(stack, true); else return null; } } diff --git a/src/main/java/de/ellpeck/naturesaura/items/tools/ItemShovelNA.java b/src/main/java/de/ellpeck/naturesaura/items/tools/ItemShovelNA.java index 9be063f4..98dcbc8c 100644 --- a/src/main/java/de/ellpeck/naturesaura/items/tools/ItemShovelNA.java +++ b/src/main/java/de/ellpeck/naturesaura/items/tools/ItemShovelNA.java @@ -100,7 +100,7 @@ public class ItemShovelNA extends ItemSpade implements IModItem, ICreativeItem, @Override public ICapabilityProvider initCapabilities(ItemStack stack, @Nullable NBTTagCompound nbt) { if (this == ModItems.INFUSED_SHOVEL) - return Helper.makeRechargeProvider(stack); + return Helper.makeRechargeProvider(stack, true); else return null; } } diff --git a/src/main/java/de/ellpeck/naturesaura/items/tools/ItemSwordNA.java b/src/main/java/de/ellpeck/naturesaura/items/tools/ItemSwordNA.java index 6a7d1c5b..78c06798 100644 --- a/src/main/java/de/ellpeck/naturesaura/items/tools/ItemSwordNA.java +++ b/src/main/java/de/ellpeck/naturesaura/items/tools/ItemSwordNA.java @@ -59,7 +59,7 @@ public class ItemSwordNA extends ItemSword implements IModItem, ICreativeItem, I @Override public ICapabilityProvider initCapabilities(ItemStack stack, @Nullable NBTTagCompound nbt) { if (this == ModItems.INFUSED_SWORD) - return Helper.makeRechargeProvider(stack); + return Helper.makeRechargeProvider(stack, true); else return null; } } diff --git a/src/main/resources/assets/naturesaura/lang/en_US.lang b/src/main/resources/assets/naturesaura/lang/en_US.lang index 28e77510..44c85040 100644 --- a/src/main/resources/assets/naturesaura/lang/en_US.lang +++ b/src/main/resources/assets/naturesaura/lang/en_US.lang @@ -59,6 +59,10 @@ item.naturesaura.farming_stencil.name=Farming Stencil item.naturesaura.bottle_two_the_rebottling.name=Bottle and Cork item.naturesaura.sky_ingot.name=Ingot of the Skies item.naturesaura.calling_spirit.name=Spirit of Calling +item.naturesaura.infused_iron_helmet.name=Botanist's Headwear +item.naturesaura.infused_iron_chest.name=Botanist's Chestplate +item.naturesaura.infused_iron_pants.name=Botanist's Leggings +item.naturesaura.infused_iron_shoes.name=Botanist's Shoes container.naturesaura.tree_ritual.name=Ritual of the Forest container.naturesaura.altar.name=Natural Altar Infusion diff --git a/src/main/resources/assets/naturesaura/models/item/infused_iron_chest.json b/src/main/resources/assets/naturesaura/models/item/infused_iron_chest.json new file mode 100644 index 00000000..cd178570 --- /dev/null +++ b/src/main/resources/assets/naturesaura/models/item/infused_iron_chest.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "naturesaura:items/infused_iron_chest" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/naturesaura/models/item/infused_iron_helmet.json b/src/main/resources/assets/naturesaura/models/item/infused_iron_helmet.json new file mode 100644 index 00000000..e6a6c147 --- /dev/null +++ b/src/main/resources/assets/naturesaura/models/item/infused_iron_helmet.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "naturesaura:items/infused_iron_helmet" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/naturesaura/models/item/infused_iron_pants.json b/src/main/resources/assets/naturesaura/models/item/infused_iron_pants.json new file mode 100644 index 00000000..1407f12b --- /dev/null +++ b/src/main/resources/assets/naturesaura/models/item/infused_iron_pants.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "naturesaura:items/infused_iron_pants" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/naturesaura/models/item/infused_iron_shoes.json b/src/main/resources/assets/naturesaura/models/item/infused_iron_shoes.json new file mode 100644 index 00000000..57acbc5f --- /dev/null +++ b/src/main/resources/assets/naturesaura/models/item/infused_iron_shoes.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "naturesaura:items/infused_iron_shoes" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/naturesaura/patchouli_books/book/en_us/entries/items/infused_iron_armor.json b/src/main/resources/assets/naturesaura/patchouli_books/book/en_us/entries/items/infused_iron_armor.json new file mode 100644 index 00000000..fa78b657 --- /dev/null +++ b/src/main/resources/assets/naturesaura/patchouli_books/book/en_us/entries/items/infused_iron_armor.json @@ -0,0 +1,26 @@ +{ + "name": "Botanist's Armor", + "icon": "naturesaura:infused_iron_chest", + "category": "items", + "advancement": "naturesaura:infused_materials", + "pages": [ + { + "type": "text", + "text": "Additionally to their $(l:items/infused_iron_tools)tools$(), a botanist can gain protection through armor, specifically $(item)Botanist's Armor$(). Along with being about as protective as iron armor, it can have its lost durability recharged by sneaking while posessing an $(l:items/aura_cache)Aura Cache$(), similarly to the tools of the same kind. Additionally, however, the armor also has a $(thing)set bonus$() which is applied when the full armor set is worn at once." + }, + { + "type": "text", + "text": "Then, when a mob attacks the wearer, it will be inflicted with a short $(item)Withering$() effect, hurting it in a similar way to the Thorns enchantment.$(br)Additionally, using an $(l:items/shockwave_creator)Amulet of Wrath$() while the full set is equipped will also inflict the Withering effect onto any mobs that are hit by its effect for a short amount of time." + }, + { + "type": "crafting", + "recipe": "naturesaura:infused_helmet", + "recipe2": "naturesaura:infused_chest" + }, + { + "type": "crafting", + "recipe": "naturesaura:infused_pants", + "recipe2": "naturesaura:infused_shoes" + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/naturesaura/patchouli_books/book/en_us/entries/items/infused_iron_tools.json b/src/main/resources/assets/naturesaura/patchouli_books/book/en_us/entries/items/infused_iron_tools.json index d645bb2e..f018ba35 100644 --- a/src/main/resources/assets/naturesaura/patchouli_books/book/en_us/entries/items/infused_iron_tools.json +++ b/src/main/resources/assets/naturesaura/patchouli_books/book/en_us/entries/items/infused_iron_tools.json @@ -10,7 +10,7 @@ }, { "type": "text", - "text": "On top of that, when taking an $(l:naturesaura:items/aura_cache)Aura Cache$() with you, the tools will be able to use the $(aura) that it has stored to regenerate their durability, significantly increasing their lifespan. For this, one simply needs to hold still and sneak, and the tool in one's hand will slowly recharge." + "text": "On top of that, when taking an $(l:items/aura_cache)Aura Cache$() with you, the tools will be able to use the $(aura) that it has stored to regenerate their durability, significantly increasing their lifespan. For this, one simply needs to hold still and sneak, and the tool in one's hand will slowly recharge." }, { "type": "crafting", diff --git a/src/main/resources/assets/naturesaura/recipes/infused_chest.json b/src/main/resources/assets/naturesaura/recipes/infused_chest.json new file mode 100644 index 00000000..0141d18c --- /dev/null +++ b/src/main/resources/assets/naturesaura/recipes/infused_chest.json @@ -0,0 +1,19 @@ +{ + "type": "forge:ore_shaped", + "pattern": [ + "ASA", + "AAA", + "AAA" + ], + "key": { + "A": { + "item": "naturesaura:infused_iron" + }, + "S": { + "item": "naturesaura:ancient_stick" + } + }, + "result": { + "item": "naturesaura:infused_iron_chest" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/naturesaura/recipes/infused_helmet.json b/src/main/resources/assets/naturesaura/recipes/infused_helmet.json new file mode 100644 index 00000000..f638d4e4 --- /dev/null +++ b/src/main/resources/assets/naturesaura/recipes/infused_helmet.json @@ -0,0 +1,18 @@ +{ + "type": "forge:ore_shaped", + "pattern": [ + "AAA", + "ASA" + ], + "key": { + "A": { + "item": "naturesaura:infused_iron" + }, + "S": { + "item": "naturesaura:ancient_stick" + } + }, + "result": { + "item": "naturesaura:infused_iron_helmet" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/naturesaura/recipes/infused_pants.json b/src/main/resources/assets/naturesaura/recipes/infused_pants.json new file mode 100644 index 00000000..b08e19f5 --- /dev/null +++ b/src/main/resources/assets/naturesaura/recipes/infused_pants.json @@ -0,0 +1,16 @@ +{ + "type": "forge:ore_shaped", + "pattern": [ + "AAA", + "A A", + "A A" + ], + "key": { + "A": { + "item": "naturesaura:infused_iron" + } + }, + "result": { + "item": "naturesaura:infused_iron_pants" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/naturesaura/recipes/infused_shoes.json b/src/main/resources/assets/naturesaura/recipes/infused_shoes.json new file mode 100644 index 00000000..0bc1c0ce --- /dev/null +++ b/src/main/resources/assets/naturesaura/recipes/infused_shoes.json @@ -0,0 +1,15 @@ +{ + "type": "forge:ore_shaped", + "pattern": [ + "A A", + "A A" + ], + "key": { + "A": { + "item": "naturesaura:infused_iron" + } + }, + "result": { + "item": "naturesaura:infused_iron_shoes" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/naturesaura/textures/items/infused_iron_chest.png b/src/main/resources/assets/naturesaura/textures/items/infused_iron_chest.png new file mode 100644 index 0000000000000000000000000000000000000000..701f6039cc514be7f46f46ef4f406b67f74aca5f GIT binary patch literal 772 zcmV+f1N;1mP)N2bZe?^J zG%hhNG!sB*!~g&Sf=NU{R5(vnQ*BSvP!zsx*YY~MZbMA;lZg!2)^=UDwsa#XA58pp z`oTmLrcSIgLk6N>O~4=a_?){T;Uu@cJ+IGs&Z$yHN!dy%)3o^1pLb#`juulXOMHyE zk7dhEe^VSP__CRbekEfOWzmIKLmNd*Q7MUErplu4LQE<}Q&Lask5N6WK*unzNhilP zR4p$7bIWLAOADlp-_kK?UJej`TXm&M3joX^8N9glLi?xM1*?h{4o-h_RA*FinRX zXa*&NsmfUm!Phq0V;`NO4}X#&I?oZ#*b-5+iySSYY`qJy+ON&wiXA)w29HH?!f}3%~_7baeM`XsrqvKe5$tt~dWYZkGXG5e{1NfI2 z8Y3Tm!6a;J|yYLP$)|{1&2l>}vwI--K8WxgYmMAS@PwS*raiM;J38 z#r9E)!7+B$I1QNGtA(u4J;dqy7OHTk#5!5ywLS0000!lvI6;>1s;*b z3=DjSK$uZf!>a)(C{f}XQ4*Y=R#Ki=l*&+$n3-3imzP?iV4`QJXCmy7aRjKQ$J50z z#KJ#WVwuAY*EjojuK8A<&bs)2+$ypEQ(cz)Z$7f%(ho+Dg*WAX|F4_1?f>J_yZ_T? zvi&ii68JxV!=Xp^`&$+2oD*ir%KuC-bts>w3FNRztlxgjfMLl@4Q7W~iEIrflT#Tw zo=tkfmd%nVAiZQ_3iAX*Pqqe;iKz@64Lk>zaj3WjeC}Z3;bGX(UHdt+j0flm1_n=8 KKbLh*2~7YXZeL0O literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/naturesaura/textures/items/infused_iron_pants.png b/src/main/resources/assets/naturesaura/textures/items/infused_iron_pants.png new file mode 100644 index 0000000000000000000000000000000000000000..ac6f2af30c037403e52e0e0babffe6a5025dd095 GIT binary patch literal 772 zcmV+f1N;1mP)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D02p*dSaefwW^{L9 za%BK;VQFr3E^cLXAT%y9E;JKBXv6>j0(D75K~y+TMN`{u(?Aeid+oKIrY@-vzkt-H zaqL_i+liaD@ReMJ1XL9d4N_@Eis%auydd#6RJk0^tcw_BFPWXonKNUhlu-_ME5=pI z@s;v;QtSBg!sYP4>nYb7ijDnovlnijQrdM@L42L!6to>e>kZlIKq#L4#vNpqyBk<;oT|5-%hxW(Z8OfxGgbWo*_735UGWP z7&$c~$|>Qz{1K|(XDEI!z_P~R@)Z3=f&P~olj|DUO^((ehSH{iEtECPHsV(;jPK^i zt}8mvppOj9Ai!ubM|xQ!`A{NALL#73>%pm!CW?Q|5^f0na}AyBKy-r8E%q6tKzcrb zdl*2>rL&IzKnVG>VrGv~Ea&K6&0(^LP}wT3U=$<2snB~nM3@qRjF+1L)#jf@~nY~+@pL4qh*QgQvt6_wkh%+v;WD*F_Kq9nBFdIQjWRsKtd&y zjj5tp2l@9L{fimAKFJbXY<5&eNX{#aUZh0OhD-8XdN=|>91XLGYG=BO?CKfP_v}K- zY2=3{p>^3t_f3iek{I+uXlbJ$w@^fc0RGXO1HTu;KjH`riK6s~VAz347?44Or{utG z>b3}^Rjv)^H$Asca}%BttWib+vw?bJbtiQP?nlO#Isb0000Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D02p*dSaefwW^{L9 za%BK;VQFr3E^cLXAT%y9E;JKBXv6>j0#!*wK~y+TRa5O!(@+rIBuy

9_CTs7Nhn zOH%p)Q^1#$5kzOe8GkCHFg{i#x%YT>Q*_+P&F0?SJ$rUJc^Rr|$-Mb34WGYmP>inxpz|t@;>UXE?ZO+qG+e5UcoyQ&pY*HW3ua7Zg=G}`C+D9E&Y|QJ^I-|O@@*ZA( z&ar#Bz_Y6{db1R?Dgc|u>q(|PG_wKHMVH7lu+Siid5uc5Cfc~}a+{^K(Hf`pV~;9= z+LDm{(p}vy#)Kc643${D3S|b9NS=s3wqnafo7yW(;^`e!SH=`%^T?(0HL2P92U2yVBFJ7ncuZ@Gn7!QuLbMgm3 WlPgfK4%WH=0000N2bZe?^J zG%hhNG!sB*!~g&U8%ab#RA@uxnaOe!F%X9H5Zr*8?9OIqbyf_dpo%IE6mP(d19ys@ zu!gXNHDRl~tI*fZZxp+27>Fm^;V(-)Elu~|EvYr`$+D~?`ks_RcE2xN8?A+n)tli~ z^?H~-Qwsf0M}j?b#vCQM!W1K~Dq-Pkt%ZQ<)=C(7HhOXiD8HMvEbzu0CAh*A?Fg8B zUk%xv?D!MVyH*NwUzS@4nEtqMGWGyceev7*76Oo+m`!kgyLAa5n|M2O{0U&EC(;XN z$HR^Cm2h=vG4!80U61~w!DB$cgZ{ue2ie+iD6LoQc(Wb;@sOdkUTz^^@cCFEJBD72 zH^5kahhI*F?BPJj?#4}$-#AC}czfR=AkYdOc6q?Mp8dRJ=?!pF&zqOP)Q5R<42Lyd zE1U5cB|99Wii90=ILwAd^ey$Hb3`BK(=^3!bAGpvZe#hxY=BH010nz!WHu83 zS-eAY9Ta+Sk|=@fUT<52LI``{=>QxiW7s#8AsnS10qA&h6bV!Kxt0as<5 zKo1>&vk-tjb7>5KFi05Pm^308FH-D6#>H)S2{8_MPN#5%c>v28i_sXN48SS-Hn6o~ z&(qr>avVjMw5G4r7dhZ>Quu%23iF`b8Q{HhKVcs|Nv--7_IKOP{J4oJY7{}Fp8EE= zE5geFIe#QF0H=8I%Fk7c2oa*s9p2W|?acc21t<1#fIbdrQ)3Kr#zP3k%OR0KbQN(N zN1rwX)OIeLo-&1BBP{tC(=FIB#>;pqZCJ-pr6X-cgf@i9SR(38iX2A-vV*x@-3W+a zUdSWUcn_p{y88{g><}S9+7eMBhr>h)a(IRlwkG4!AUn|Ql%hnKCBghGD^KSzp#Jyw v?(sn+>IRn$5TIiQ5LrbFc~Md795 literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/naturesaura/textures/models/armor/infused_iron_layer_2.png b/src/main/resources/assets/naturesaura/textures/models/armor/infused_iron_layer_2.png new file mode 100644 index 0000000000000000000000000000000000000000..0b32d874acf4d393d0f062b20c400f99dbee43d4 GIT binary patch literal 803 zcmeAS@N?(olHy`uVBq!ia0vp^4nVBH!3HE3&8=$zQY`6?zK#qG8~eHcB(eheoCO|{ z#S9F52SJ!|$HeTnKtYKT*NBqf{Irtt#G+J&g2c?c61}|C5(N`ILp>8=hm0c(3``3> zT^vI)oS#mM4xVf%(DvEC>T!qClw`{&KV5|dkNb;`Fh39skzo-{{V{#@`LaV6FRL$m z9&X)PvFxVrzV*NJ$|mcZNcFCocy87NqL8D(=4jWW6Pio-nz%NpXtl}wlDYg|d`;=6 z3u1QbZ+yC5>is-8WP)m-;gbu`XZ+of@_GKPYkTjQPMUab`3eQ^MM)t5-*SHLmfkE6m~H{NJ@YngY|fnhb3?}4&3)hPbsK)HEdP9u zZF2te8sE19*-$voG# zpWl_YoN=04=LtmxCdaw+t@Zlmrr+6n=d)pfLel1Gt0HXge@Ty+&lVx2s?_e_x%qZS z+IPX8UWZ%EH*#H!@7rYEJl5~dchZAdr&nmAv%`sN?~j{X_h}qqPI_4@bjT*1dGGzz z6JqW4FEMy8c6lNo;M1=>Y0@z@&HuOF*s;r9@QkuzE|MeXJ6sp)12O|&Jg%Vl2J%v zw^zW&BkpJRirdOJ3dtPY);B$W-r;3k5$CNpD1UTYn6*Oh+Joh5C5}J8oZj$#^@8@! z5