From ad1e5d555ab8df6197cbd637cffd92a8e2abab91 Mon Sep 17 00:00:00 2001 From: WinDanesz <31292708+WinDanesz@users.noreply.github.com> Date: Wed, 22 Jun 2022 22:24:30 +0200 Subject: [PATCH] feat: Reworked the Oakflesh, Ironflesh and Diamondflesh spells --- .../wizardry/client/ClientProxy.java | 3 ++ .../renderer/entity/layers/LayerDiamond.java | 47 ++++++++++++++++++ .../renderer/entity/layers/LayerIron.java | 47 ++++++++++++++++++ .../renderer/entity/layers/LayerOak.java | 47 ++++++++++++++++++ .../wizardry/potion/PotionDiamondflesh.java | 28 +++++++++++ .../wizardry/potion/PotionIronflesh.java | 28 +++++++++++ .../wizardry/potion/PotionOakflesh.java | 28 +++++++++++ .../electroblob/wizardry/registry/Spells.java | 6 +-- .../wizardry/registry/WizardryPotions.java | 7 +++ .../assets/ebwizardry/lang/en_us.lang | 7 ++- .../ebwizardry/spells/diamondflesh.json | 4 +- .../spells/empowering_presence.json | 4 +- .../assets/ebwizardry/spells/ironflesh.json | 4 +- .../assets/ebwizardry/spells/oakflesh.json | 4 +- .../gui/potion_icons/diamondflesh.png | Bin 0 -> 2941 bytes .../textures/gui/potion_icons/ironflesh.png | Bin 0 -> 2979 bytes .../textures/gui/potion_icons/oakflesh.png | Bin 0 -> 2962 bytes 17 files changed, 251 insertions(+), 13 deletions(-) create mode 100644 src/main/java/electroblob/wizardry/client/renderer/entity/layers/LayerDiamond.java create mode 100644 src/main/java/electroblob/wizardry/client/renderer/entity/layers/LayerIron.java create mode 100644 src/main/java/electroblob/wizardry/client/renderer/entity/layers/LayerOak.java create mode 100644 src/main/java/electroblob/wizardry/potion/PotionDiamondflesh.java create mode 100644 src/main/java/electroblob/wizardry/potion/PotionIronflesh.java create mode 100644 src/main/java/electroblob/wizardry/potion/PotionOakflesh.java create mode 100644 src/main/resources/assets/ebwizardry/textures/gui/potion_icons/diamondflesh.png create mode 100644 src/main/resources/assets/ebwizardry/textures/gui/potion_icons/ironflesh.png create mode 100644 src/main/resources/assets/ebwizardry/textures/gui/potion_icons/oakflesh.png diff --git a/src/main/java/electroblob/wizardry/client/ClientProxy.java b/src/main/java/electroblob/wizardry/client/ClientProxy.java index 65c614de..5e3a2bc1 100644 --- a/src/main/java/electroblob/wizardry/client/ClientProxy.java +++ b/src/main/java/electroblob/wizardry/client/ClientProxy.java @@ -728,6 +728,9 @@ public class ClientProxy extends CommonProxy { LayerTiledOverlay.initialiseLayers(LayerMindControl::new); LayerTiledOverlay.initialiseLayers(LayerSummonAnimation::new); LayerTiledOverlay.initialiseLayers(LayerDisintegrateAnimation::new); + LayerTiledOverlay.initialiseLayers(LayerOak::new); + LayerTiledOverlay.initialiseLayers(LayerIron::new); + LayerTiledOverlay.initialiseLayers(LayerDiamond::new); } @Override diff --git a/src/main/java/electroblob/wizardry/client/renderer/entity/layers/LayerDiamond.java b/src/main/java/electroblob/wizardry/client/renderer/entity/layers/LayerDiamond.java new file mode 100644 index 00000000..964b9694 --- /dev/null +++ b/src/main/java/electroblob/wizardry/client/renderer/entity/layers/LayerDiamond.java @@ -0,0 +1,47 @@ +package electroblob.wizardry.client.renderer.entity.layers; + +import electroblob.wizardry.registry.WizardryPotions; +import net.minecraft.client.renderer.GlStateManager; +import net.minecraft.client.renderer.GlStateManager.DestFactor; +import net.minecraft.client.renderer.GlStateManager.SourceFactor; +import net.minecraft.client.renderer.entity.RenderLivingBase; +import net.minecraft.entity.EntityLivingBase; +import net.minecraft.util.ResourceLocation; + +/** + * Layer used to render the diamondflesh texture on creatures with the diamondflesh effect. + * + * @author WinDanesz + * @since Wizardry 4.3.7 + */ +public class LayerDiamond extends LayerTiledOverlay { + + private static final ResourceLocation TEXTURE = new ResourceLocation("textures/blocks/diamond_block.png"); + + public LayerDiamond(RenderLivingBase renderer){ + super(renderer); + } + + @Override + public boolean shouldRender(EntityLivingBase entity, float partialTicks){ + return !entity.isInvisible() && entity.isPotionActive(WizardryPotions.diamondflesh); + } + + @Override + public ResourceLocation getTexture(EntityLivingBase entity, float partialTicks){ + return TEXTURE; + } + + @Override + public void doRenderLayer(EntityLivingBase entity, float limbSwing, float limbSwingAmount, float partialTicks, + float ageInTicks, float netHeadYaw, float headPitch, float scale){ + + GlStateManager.enableBlend(); + GlStateManager.blendFunc(SourceFactor.SRC_ALPHA, DestFactor.ONE_MINUS_SRC_ALPHA); + + super.doRenderLayer(entity, limbSwing, limbSwingAmount, partialTicks, ageInTicks, netHeadYaw, headPitch, scale); + + GlStateManager.disableBlend(); + } + +} \ No newline at end of file diff --git a/src/main/java/electroblob/wizardry/client/renderer/entity/layers/LayerIron.java b/src/main/java/electroblob/wizardry/client/renderer/entity/layers/LayerIron.java new file mode 100644 index 00000000..f7e6b3bd --- /dev/null +++ b/src/main/java/electroblob/wizardry/client/renderer/entity/layers/LayerIron.java @@ -0,0 +1,47 @@ +package electroblob.wizardry.client.renderer.entity.layers; + +import electroblob.wizardry.registry.WizardryPotions; +import net.minecraft.client.renderer.GlStateManager; +import net.minecraft.client.renderer.GlStateManager.DestFactor; +import net.minecraft.client.renderer.GlStateManager.SourceFactor; +import net.minecraft.client.renderer.entity.RenderLivingBase; +import net.minecraft.entity.EntityLivingBase; +import net.minecraft.util.ResourceLocation; + +/** + * Layer used to render the ironflesh texture on creatures with the ironflesh effect. + * + * @author WinDanesz + * @since Wizardry 4.3.7 + */ +public class LayerIron extends LayerTiledOverlay { + + private static final ResourceLocation TEXTURE = new ResourceLocation("textures/blocks/iron_block.png"); + + public LayerIron(RenderLivingBase renderer){ + super(renderer); + } + + @Override + public boolean shouldRender(EntityLivingBase entity, float partialTicks){ + return !entity.isInvisible() && entity.isPotionActive(WizardryPotions.ironflesh); + } + + @Override + public ResourceLocation getTexture(EntityLivingBase entity, float partialTicks){ + return TEXTURE; + } + + @Override + public void doRenderLayer(EntityLivingBase entity, float limbSwing, float limbSwingAmount, float partialTicks, + float ageInTicks, float netHeadYaw, float headPitch, float scale){ + + GlStateManager.enableBlend(); + GlStateManager.blendFunc(SourceFactor.SRC_ALPHA, DestFactor.ONE_MINUS_SRC_ALPHA); + + super.doRenderLayer(entity, limbSwing, limbSwingAmount, partialTicks, ageInTicks, netHeadYaw, headPitch, scale); + + GlStateManager.disableBlend(); + } + +} \ No newline at end of file diff --git a/src/main/java/electroblob/wizardry/client/renderer/entity/layers/LayerOak.java b/src/main/java/electroblob/wizardry/client/renderer/entity/layers/LayerOak.java new file mode 100644 index 00000000..111b3217 --- /dev/null +++ b/src/main/java/electroblob/wizardry/client/renderer/entity/layers/LayerOak.java @@ -0,0 +1,47 @@ +package electroblob.wizardry.client.renderer.entity.layers; + +import electroblob.wizardry.registry.WizardryPotions; +import net.minecraft.client.renderer.GlStateManager; +import net.minecraft.client.renderer.GlStateManager.DestFactor; +import net.minecraft.client.renderer.GlStateManager.SourceFactor; +import net.minecraft.client.renderer.entity.RenderLivingBase; +import net.minecraft.entity.EntityLivingBase; +import net.minecraft.util.ResourceLocation; + +/** + * Layer used to render the oakflesh texture on creatures with the oakflesh effect. + * + * @author WinDanesz + * @since Wizardry 4.3.7 + */ +public class LayerOak extends LayerTiledOverlay { + + private static final ResourceLocation TEXTURE = new ResourceLocation("textures/blocks/log_oak.png"); + + public LayerOak(RenderLivingBase renderer){ + super(renderer); + } + + @Override + public boolean shouldRender(EntityLivingBase entity, float partialTicks){ + return !entity.isInvisible() && entity.isPotionActive(WizardryPotions.oakflesh); + } + + @Override + public ResourceLocation getTexture(EntityLivingBase entity, float partialTicks){ + return TEXTURE; + } + + @Override + public void doRenderLayer(EntityLivingBase entity, float limbSwing, float limbSwingAmount, float partialTicks, + float ageInTicks, float netHeadYaw, float headPitch, float scale){ + + GlStateManager.enableBlend(); + GlStateManager.blendFunc(SourceFactor.SRC_ALPHA, DestFactor.ONE_MINUS_SRC_ALPHA); + + super.doRenderLayer(entity, limbSwing, limbSwingAmount, partialTicks, ageInTicks, netHeadYaw, headPitch, scale); + + GlStateManager.disableBlend(); + } + +} \ No newline at end of file diff --git a/src/main/java/electroblob/wizardry/potion/PotionDiamondflesh.java b/src/main/java/electroblob/wizardry/potion/PotionDiamondflesh.java new file mode 100644 index 00000000..3773ddbf --- /dev/null +++ b/src/main/java/electroblob/wizardry/potion/PotionDiamondflesh.java @@ -0,0 +1,28 @@ +package electroblob.wizardry.potion; + +import electroblob.wizardry.Wizardry; +import electroblob.wizardry.util.EntityUtils; +import net.minecraft.entity.SharedMonsterAttributes; +import net.minecraft.util.ResourceLocation; +import net.minecraftforge.fml.common.Mod; + +@Mod.EventBusSubscriber +public class PotionDiamondflesh extends PotionMagicEffect { + + public PotionDiamondflesh(boolean isBadEffect, int liquidColour) { + super(isBadEffect, liquidColour, new ResourceLocation(Wizardry.MODID, "textures/gui/potion_icons/diamondflesh.png")); + // This needs to be here because registerPotionAttributeModifier doesn't like it if the potion has no name yet. + this.setPotionName("potion." + Wizardry.MODID + ":ironflesh"); + this.registerPotionAttributeModifier(SharedMonsterAttributes.MOVEMENT_SPEED, + "158a8af2-6db0-4340-a01c-a7b60d10ddf4", -0.1f, EntityUtils.Operations.MULTIPLY_CUMULATIVE); + this.registerPotionAttributeModifier(SharedMonsterAttributes.ARMOR_TOUGHNESS, + "a68d4532-5847-426c-9b03-d541b113cec2", 3.0f, EntityUtils.Operations.ADD); + this.registerPotionAttributeModifier(SharedMonsterAttributes.ARMOR, + "46a095be-82dd-43fd-8b67-13f51591eb8e", 4.0f, EntityUtils.Operations.ADD); + } + + @Override + public boolean isReady(int duration, int amplifier) { + return true; + } +} diff --git a/src/main/java/electroblob/wizardry/potion/PotionIronflesh.java b/src/main/java/electroblob/wizardry/potion/PotionIronflesh.java new file mode 100644 index 00000000..3152fab8 --- /dev/null +++ b/src/main/java/electroblob/wizardry/potion/PotionIronflesh.java @@ -0,0 +1,28 @@ +package electroblob.wizardry.potion; + +import electroblob.wizardry.Wizardry; +import electroblob.wizardry.util.EntityUtils; +import net.minecraft.entity.SharedMonsterAttributes; +import net.minecraft.util.ResourceLocation; +import net.minecraftforge.fml.common.Mod; + +@Mod.EventBusSubscriber +public class PotionIronflesh extends PotionMagicEffect { + + public PotionIronflesh(boolean isBadEffect, int liquidColour) { + super(isBadEffect, liquidColour, new ResourceLocation(Wizardry.MODID, "textures/gui/potion_icons/ironflesh.png")); + // This needs to be here because registerPotionAttributeModifier doesn't like it if the potion has no name yet. + this.setPotionName("potion." + Wizardry.MODID + ":ironflesh"); + this.registerPotionAttributeModifier(SharedMonsterAttributes.MOVEMENT_SPEED, + "fe607d55-50e3-4f4f-a959-6571503f92f4", -0.1f, EntityUtils.Operations.MULTIPLY_CUMULATIVE); + this.registerPotionAttributeModifier(SharedMonsterAttributes.KNOCKBACK_RESISTANCE, + "6f78206e-8dd4-4d44-9792-d7a882111951", 0.3f, EntityUtils.Operations.ADD); + this.registerPotionAttributeModifier(SharedMonsterAttributes.ARMOR, + "e1adff1e-8510-4a09-96ed-ef677cad20c1", 4.0f, EntityUtils.Operations.ADD); + } + + @Override + public boolean isReady(int duration, int amplifier) { + return true; + } +} diff --git a/src/main/java/electroblob/wizardry/potion/PotionOakflesh.java b/src/main/java/electroblob/wizardry/potion/PotionOakflesh.java new file mode 100644 index 00000000..a273b845 --- /dev/null +++ b/src/main/java/electroblob/wizardry/potion/PotionOakflesh.java @@ -0,0 +1,28 @@ +package electroblob.wizardry.potion; + +import electroblob.wizardry.Wizardry; +import electroblob.wizardry.util.EntityUtils; +import net.minecraft.entity.SharedMonsterAttributes; +import net.minecraft.util.ResourceLocation; +import net.minecraftforge.fml.common.Mod; + +@Mod.EventBusSubscriber +public class PotionOakflesh extends PotionMagicEffect { + + public PotionOakflesh(boolean isBadEffect, int liquidColour) { + super(isBadEffect, liquidColour, new ResourceLocation(Wizardry.MODID, "textures/gui/potion_icons/oakflesh.png")); + // This needs to be here because registerPotionAttributeModifier doesn't like it if the potion has no name yet. + this.setPotionName("potion." + Wizardry.MODID + ":ironflesh"); + this.registerPotionAttributeModifier(SharedMonsterAttributes.MOVEMENT_SPEED, + "98b4ba66-7c50-4a4c-9f3f-40bcb37313b5", -0.1f, EntityUtils.Operations.MULTIPLY_CUMULATIVE); + this.registerPotionAttributeModifier(SharedMonsterAttributes.MAX_HEALTH, + "ed9d0423-60f4-4998-bd8d-dc7c33bd45b8", 0.2f, EntityUtils.Operations.MULTIPLY_FLAT); + this.registerPotionAttributeModifier(SharedMonsterAttributes.ARMOR, + "0b607c3f-fb14-43d7-96b5-1c1b6f6da242", 3.0f, EntityUtils.Operations.ADD); + } + + @Override + public boolean isReady(int duration, int amplifier) { + return true; + } +} diff --git a/src/main/java/electroblob/wizardry/registry/Spells.java b/src/main/java/electroblob/wizardry/registry/Spells.java index 3f1afe3e..2e7a544b 100644 --- a/src/main/java/electroblob/wizardry/registry/Spells.java +++ b/src/main/java/electroblob/wizardry/registry/Spells.java @@ -359,7 +359,7 @@ public final class Spells { registry.register(new GreaterHeal()); registry.register(new SpellConstruct<>("healing_aura", SpellActions.POINT_DOWN, EntityHealAura::new, false).addProperties(Spell.EFFECT_RADIUS, Spell.DAMAGE, Spell.HEALTH)); registry.register(new Forcefield()); - registry.register(new SpellBuff("ironflesh", 0.4f, 0.5f, 0.6f, () -> MobEffects.RESISTANCE).soundValues(0.7f, 1.2f, 0.4f)); + registry.register(new SpellBuff("ironflesh", 0.4f, 0.5f, 0.6f, () -> WizardryPotions.ironflesh).soundValues(0.7f, 1.2f, 0.4f)); registry.register(new Transience()); registry.register(new Meteor()); @@ -380,7 +380,7 @@ public final class Spells { registry.register(new Shockwave()); registry.register(new SummonIronGolem()); registry.register(new ArrowRain()); - registry.register(new SpellBuff("diamondflesh", 0.1f, 0.7f, 1, () -> MobEffects.RESISTANCE).soundValues(0.7f, 1.2f, 0.4f)); + registry.register(new SpellBuff("diamondflesh", 0.1f, 0.7f, 1, () -> WizardryPotions.diamondflesh).soundValues(0.7f, 1.2f, 0.4f)); registry.register(new SpellBuff("font_of_vitality", 1, 0.8f, 0.3f, () -> MobEffects.ABSORPTION, () -> MobEffects.REGENERATION).soundValues(0.7f, 1.2f, 0.4f)); // Wizardry 1.1 spells @@ -398,7 +398,7 @@ public final class Spells { registry.register(new PocketWorkbench()); registry.register(new ImbueWeapon()); registry.register(new InvigoratingPresence()); - registry.register(new SpellBuff("oakflesh", 0.6f, 0.5f, 0.4f, () -> MobEffects.RESISTANCE).soundValues(0.7f, 1.2f, 0.4f)); + registry.register(new SpellBuff("oakflesh", 0.6f, 0.5f, 0.4f, () -> WizardryPotions.oakflesh).soundValues(0.7f, 1.2f, 0.4f)); registry.register(new SpellProjectile<>("greater_fireball", EntityLargeMagicFireball::new).addProperties(Spell.DAMAGE, EntityLargeMagicFireball.EXPLOSION_POWER));//new GreaterFireball()); registry.register(new FlamingWeapon()); diff --git a/src/main/java/electroblob/wizardry/registry/WizardryPotions.java b/src/main/java/electroblob/wizardry/registry/WizardryPotions.java index 75535e1a..a4fd9662 100644 --- a/src/main/java/electroblob/wizardry/registry/WizardryPotions.java +++ b/src/main/java/electroblob/wizardry/registry/WizardryPotions.java @@ -57,6 +57,9 @@ public final class WizardryPotions { public static final Potion frost_step = placeholder(); public static final Potion mark_of_sacrifice = placeholder(); public static final Potion mirage = placeholder(); + public static final Potion oakflesh = placeholder(); + public static final Potion ironflesh = placeholder(); + public static final Potion diamondflesh = placeholder(); /** * Sets both the registry and unlocalised names of the given potion, then registers it with the given registry. Use @@ -201,6 +204,10 @@ public final class WizardryPotions { public void spawnCustomParticle(World world, double x, double y, double z){} // We only want the syncing }.setBeneficial()); + registerPotion(registry, "oakflesh", new PotionOakflesh(false, 0).setBeneficial()); + registerPotion(registry, "ironflesh", new PotionIronflesh(false, 0).setBeneficial()); + registerPotion(registry, "diamondflesh", new PotionDiamondflesh(false, 0).setBeneficial()); + } } \ No newline at end of file diff --git a/src/main/resources/assets/ebwizardry/lang/en_us.lang b/src/main/resources/assets/ebwizardry/lang/en_us.lang index 7821d9fc..01b96ce0 100644 --- a/src/main/resources/assets/ebwizardry/lang/en_us.lang +++ b/src/main/resources/assets/ebwizardry/lang/en_us.lang @@ -1203,7 +1203,7 @@ spell.ebwizardry\:intimidate.desc=Emits an intimidating growl which causes nearb spell.ebwizardry\:invigorating_presence.desc=Grants the caster and all nearby allies increased strength for 45 seconds. spell.ebwizardry\:invisibility.desc=Makes the caster invisible for 30 seconds. spell.ebwizardry\:invoke_weather.desc=Changes the weather in the world. -spell.ebwizardry\:ironflesh.desc=Greatly improves the caster's damage resistance for 30 seconds. +spell.ebwizardry\:ironflesh.desc=Greatly improves the caster's armor and knockback resistance for 30 seconds. spell.ebwizardry\:leap.desc=Causes the caster to jump upwards several blocks and slightly forward. spell.ebwizardry\:levitation.desc=Raises the caster upwards while the use item button is held. Will also negate fall damage if used before hitting the ground. spell.ebwizardry\:life_drain.desc=Creates a stream of withering energy in the direction you are pointing which drains the life of the target and uses it to gradually regenerate your health. @@ -1226,7 +1226,7 @@ spell.ebwizardry\:mine.desc=Breaks the block the caster is looking at. Potency w spell.ebwizardry\:mirage.desc=Creates an illusion where the caster appears to be a few blocks away from their actual position, blinking around every few seconds. The illusion lasts for 20 seconds. spell.ebwizardry\:muffle.desc=Silences any sounds made by the caster for 30 seconds. When muffled, mobs can only detect you when looking towards you. spell.ebwizardry\:none.desc=To get a spell book with the /give command, use id\: /give [player] ebwizardry\:spell_book 1 [spell id] (if you found this book in a chest, some other mod has messed things up). -spell.ebwizardry\:oakflesh.desc=Improves the caster's damage resistance for 30 seconds. +spell.ebwizardry\:oakflesh.desc=Slightly improves the caster's vitality and damage resistance for 30 seconds. spell.ebwizardry\:paralysis.desc=Delivers a powerful lightning bolt that paralyses targets for 5 seconds. Paralysed creatures cannot move and will still take damage - but too much will snap the creature out of paralysis. spell.ebwizardry\:permafrost.desc=Spreads a layer of slippery ice on the ground where you are pointing, the extreme cold of which causes creatures to slowly take damage. spell.ebwizardry\:petrify.desc=Turns the target to stone until broken out, with a chance for it to break out when it is dark. The target cannot move or do anything while petrified but is also impervious to all damage. @@ -1400,6 +1400,9 @@ potion.ebwizardry\:containment=Containment potion.ebwizardry\:frost_step=Frost Step potion.ebwizardry\:mark_of_sacrifice=Mark of Sacrifice potion.ebwizardry\:mirage=Mirage +potion.ebwizardry\:oakflesh=Oakflesh +potion.ebwizardry\:ironflesh=Ironflesh +potion.ebwizardry\:diamondflesh=Diamondflesh enchantment.ebwizardry\:magic_sword=Imbuement enchantment.ebwizardry\:magic_bow=Imbuement diff --git a/src/main/resources/assets/ebwizardry/spells/diamondflesh.json b/src/main/resources/assets/ebwizardry/spells/diamondflesh.json index 2867ca12..59e33be7 100644 --- a/src/main/resources/assets/ebwizardry/spells/diamondflesh.json +++ b/src/main/resources/assets/ebwizardry/spells/diamondflesh.json @@ -17,7 +17,7 @@ "chargeup": 25, "cooldown": 300, "base_properties": { - "resistance_duration": 600, - "resistance_strength": 2 + "diamondflesh_duration": 600, + "diamondflesh_strength": 0 } } \ No newline at end of file diff --git a/src/main/resources/assets/ebwizardry/spells/empowering_presence.json b/src/main/resources/assets/ebwizardry/spells/empowering_presence.json index 3165ecc7..43305a8d 100644 --- a/src/main/resources/assets/ebwizardry/spells/empowering_presence.json +++ b/src/main/resources/assets/ebwizardry/spells/empowering_presence.json @@ -14,12 +14,12 @@ "element": "healing", "type": "buff", "cost": 30, - "chargeup": 0, + "chargeup": 20, "cooldown": 60, "base_properties": { "effect_radius": 5, "effect_duration": 900, - "effect_strength": 1, + "effect_strength": 0, "potency_per_level": 0.15 } } \ No newline at end of file diff --git a/src/main/resources/assets/ebwizardry/spells/ironflesh.json b/src/main/resources/assets/ebwizardry/spells/ironflesh.json index 089f63bd..02a6ab45 100644 --- a/src/main/resources/assets/ebwizardry/spells/ironflesh.json +++ b/src/main/resources/assets/ebwizardry/spells/ironflesh.json @@ -17,7 +17,7 @@ "chargeup": 15, "cooldown": 100, "base_properties": { - "resistance_duration": 600, - "resistance_strength": 1 + "ironflesh_duration": 600, + "ironflesh_strength": 0 } } \ No newline at end of file diff --git a/src/main/resources/assets/ebwizardry/spells/oakflesh.json b/src/main/resources/assets/ebwizardry/spells/oakflesh.json index d62278ba..c3e2406a 100644 --- a/src/main/resources/assets/ebwizardry/spells/oakflesh.json +++ b/src/main/resources/assets/ebwizardry/spells/oakflesh.json @@ -17,7 +17,7 @@ "chargeup": 0, "cooldown": 50, "base_properties": { - "resistance_duration": 600, - "resistance_strength": 0 + "oakflesh_duration": 600, + "oakflesh_strength": 0 } } \ No newline at end of file diff --git a/src/main/resources/assets/ebwizardry/textures/gui/potion_icons/diamondflesh.png b/src/main/resources/assets/ebwizardry/textures/gui/potion_icons/diamondflesh.png new file mode 100644 index 0000000000000000000000000000000000000000..a57fdbaa5b6364ac0af98eaa43898de3e9fa3e3a GIT binary patch literal 2941 zcmeAS@N?(olHy`uVBq!ia0y~yU=RXf4mJh`hOl#e;S3B6oCO|{#S9GG!XV7ZFl&wk z0|S?Trn7TEKt_H^esM;Afr6*AvqC{pep+TuDg#5st+~PJA;B-jY`@?8;^f`YFvUAR zNR&e%$f>(QWTKjuBBy{?hvLGUqJakmU0qqEPb}zQ?(1vl5e?Mg>EgP<{zP$6U-ROQ zu2a7sRxi%Jw&(k^v;VeUw|lQz`~GlIyvbvLx3(rf_nY4%M1;3f6T0AWQd-kD9X5C zB7=f(YKIF$hBd>Q^I=`C3=swlB5B@7EE#U-G8lMT#JFBV&*2Bohp{DjnN#sh3w(sdU6`)JjJy| z%o3RrXF2E{s+=il)M�PV*|l=S%D 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�PV*|l=S%D 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 Mp00i_>zopr0RGK_NdN!< literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/ebwizardry/textures/gui/potion_icons/oakflesh.png b/src/main/resources/assets/ebwizardry/textures/gui/potion_icons/oakflesh.png new file mode 100644 index 0000000000000000000000000000000000000000..126450b186ca33063c3e41c1d1ea3b02a782dae6 GIT binary patch literal 2962 zcmeAS@N?(olHy`uVBq!ia0y~yU=RXf4mJh`hOl#e;S3B6oCO|{#S9GG!XV7ZFl&wk z0|S?Trn7TEKt_H^esM;Afr6*AvqC{pep+TuDg#5st+~PJA;B-jY`@?8;^f`YFvUAR zNR&e%$f>(QWTKjuBBy{?hvLGUqJakmU0qqEPb}zQ?(1vl5e?Mg>EgP<{zP$6U-ROQ zu2a7sRxi%Jw&(k^v;VeUw|lQz`~GlIyvbvLx3(rf_nY4%M1;3f6T0AWQd-kD9X5C zB7=f(YKIF$hBd>Q^I=`C3=swlB5B@7EE#U-G8lMT#JFBV&*2Bohp{DjnN#sh3w(sdU6`)JjJy| z%o3RrXF2E{s+=il)M�PV*|l=S%D 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 literal 0 HcmV?d00001