diff --git a/src/main/java/WayofTime/alchemicalWizardry/AlchemicalWizardry.java b/src/main/java/WayofTime/alchemicalWizardry/AlchemicalWizardry.java index b01f006f..d3bd740f 100644 --- a/src/main/java/WayofTime/alchemicalWizardry/AlchemicalWizardry.java +++ b/src/main/java/WayofTime/alchemicalWizardry/AlchemicalWizardry.java @@ -72,6 +72,11 @@ import WayofTime.alchemicalWizardry.common.demonVillage.demonHoard.DemonPacketRe import WayofTime.alchemicalWizardry.common.demonVillage.demonHoard.demon.EntityMinorDemonGrunt; import WayofTime.alchemicalWizardry.common.demonVillage.demonHoard.demon.EntityMinorDemonGruntEarth; import WayofTime.alchemicalWizardry.common.demonVillage.demonHoard.demon.EntityMinorDemonGruntFire; +import WayofTime.alchemicalWizardry.common.demonVillage.demonHoard.demon.EntityMinorDemonGruntGuardian; +import WayofTime.alchemicalWizardry.common.demonVillage.demonHoard.demon.EntityMinorDemonGruntGuardianEarth; +import WayofTime.alchemicalWizardry.common.demonVillage.demonHoard.demon.EntityMinorDemonGruntGuardianFire; +import WayofTime.alchemicalWizardry.common.demonVillage.demonHoard.demon.EntityMinorDemonGruntGuardianIce; +import WayofTime.alchemicalWizardry.common.demonVillage.demonHoard.demon.EntityMinorDemonGruntGuardianWind; import WayofTime.alchemicalWizardry.common.demonVillage.demonHoard.demon.EntityMinorDemonGruntIce; import WayofTime.alchemicalWizardry.common.demonVillage.demonHoard.demon.EntityMinorDemonGruntWind; import WayofTime.alchemicalWizardry.common.demonVillage.loot.DemonVillageLootRegistry; @@ -400,7 +405,11 @@ public class AlchemicalWizardry public static String entityMinorDemonGruntWindID = "AW017"; public static String entityMinorDemonGruntIceID = "AW018"; public static String entityMinorDemonGruntEarthID = "AW019"; - + public static String entityMinorDemonGruntGuardianID = "AW020"; + public static String entityMinorDemonGruntGuardianFireID = "AW021"; + public static String entityMinorDemonGruntGuardianWindID = "AW022"; + public static String entityMinorDemonGruntGuardianIceID = "AW023"; + public static String entityMinorDemonGruntGuardianEarthID = "AW024"; public static Fluid lifeEssenceFluid; @@ -412,6 +421,7 @@ public class AlchemicalWizardry @SidedProxy(clientSide = "WayofTime.alchemicalWizardry.client.ClientProxy", serverSide = "WayofTime.alchemicalWizardry.common.CommonProxy") public static CommonProxy proxy; + @EventHandler public void preInit(FMLPreInitializationEvent event) { @@ -863,6 +873,12 @@ public class AlchemicalWizardry EntityRegistry.registerModEntity(EntityMinorDemonGruntWind.class, "MinorDemonGruntWind", 36, this, 80, 3, true); EntityRegistry.registerModEntity(EntityMinorDemonGruntIce.class, "MinorDemonGruntIce", 37, this, 80, 3, true); EntityRegistry.registerModEntity(EntityMinorDemonGruntEarth.class, "MinorDemonGruntEarth", 38, this, 80, 3, true); + EntityRegistry.registerModEntity(EntityMinorDemonGruntGuardian.class, "MinorDemonGruntGuardian", 39, this, 80, 3, true); + EntityRegistry.registerModEntity(EntityMinorDemonGruntGuardianFire.class, "MinorDemonGruntGuardianFire", 40, this, 80, 3, true); + EntityRegistry.registerModEntity(EntityMinorDemonGruntGuardianWind.class, "MinorDemonGruntGuardianWind", 41, this, 80, 3, true); + EntityRegistry.registerModEntity(EntityMinorDemonGruntGuardianIce.class, "MinorDemonGruntGuardianIce", 42, this, 80, 3, true); + EntityRegistry.registerModEntity(EntityMinorDemonGruntGuardianEarth.class, "MinorDemonGruntGuardianEarth", 43, this, 80, 3, true); + ChestGenHooks.getInfo(ChestGenHooks.DUNGEON_CHEST).addItem(new WeightedRandomChestContent(new ItemStack(ModItems.standardBindingAgent), 1, 3, this.standardBindingAgentDungeonChance / 5)); diff --git a/src/main/java/WayofTime/alchemicalWizardry/BloodMagicConfiguration.java b/src/main/java/WayofTime/alchemicalWizardry/BloodMagicConfiguration.java index dee7dc16..66d13256 100644 --- a/src/main/java/WayofTime/alchemicalWizardry/BloodMagicConfiguration.java +++ b/src/main/java/WayofTime/alchemicalWizardry/BloodMagicConfiguration.java @@ -137,14 +137,14 @@ public class BloodMagicConfiguration AlchemicalWizardry.ritualDisabledFullStomach = config.get("Ritual Blacklist", "Requiem of the Satiated Stomach", false).getBoolean(false); String tempDemonConfigs = "Temp Demon Configs [2]"; - TEDemonPortal.buildingGridDelay = config.get(tempDemonConfigs, "Building Grid Delay", 25).getInt(); - TEDemonPortal.roadGridDelay = config.get(tempDemonConfigs, "Road Grid Delay", 10).getInt(); - TEDemonPortal.demonHoardDelay = config.get(tempDemonConfigs, "Demon Hoard Delay", 40).getInt(); - TEDemonPortal.demonRoadChance = (float)(config.get(tempDemonConfigs, "Demon Road Chance", 0.3f).getDouble()); - TEDemonPortal.demonHouseChance = (float)(config.get(tempDemonConfigs, "Demon House Chance", 0.6f).getDouble()); - TEDemonPortal.demonPortalChance = (float)(config.get(tempDemonConfigs, "Demon Portal Chance", 0.5f).getDouble()); - TEDemonPortal.demonHoardChance = (float)(config.get(tempDemonConfigs, "Demon Hoard Chance", 0.8f).getDouble()); - TEDemonPortal.portalTickRate = (float)(config.get(tempDemonConfigs, "Portal Tick Rate", 0.1f).getDouble()); +// TEDemonPortal.buildingGridDelay = config.get(tempDemonConfigs, "Building Grid Delay", 25).getInt(); +// TEDemonPortal.roadGridDelay = config.get(tempDemonConfigs, "Road Grid Delay", 10).getInt(); +// TEDemonPortal.demonHoardDelay = config.get(tempDemonConfigs, "Demon Hoard Delay", 40).getInt(); +// TEDemonPortal.demonRoadChance = (float)(config.get(tempDemonConfigs, "Demon Road Chance", 0.3f).getDouble()); +// TEDemonPortal.demonHouseChance = (float)(config.get(tempDemonConfigs, "Demon House Chance", 0.6f).getDouble()); +// TEDemonPortal.demonPortalChance = (float)(config.get(tempDemonConfigs, "Demon Portal Chance", 0.5f).getDouble()); +// TEDemonPortal.demonHoardChance = (float)(config.get(tempDemonConfigs, "Demon Hoard Chance", 0.8f).getDouble()); +// TEDemonPortal.portalTickRate = (float)(config.get(tempDemonConfigs, "Portal Tick Rate", 0.1f).getDouble()); DemonVillagePath.canGoDown = config.get(tempDemonConfigs, "canRoadGoDown", true).getBoolean(); DemonVillagePath.tunnelIfObstructed = config.get(tempDemonConfigs, "tunnelIfObstructed", false).getBoolean(); diff --git a/src/main/java/WayofTime/alchemicalWizardry/client/ClientProxy.java b/src/main/java/WayofTime/alchemicalWizardry/client/ClientProxy.java index 4f32f78b..02464f00 100644 --- a/src/main/java/WayofTime/alchemicalWizardry/client/ClientProxy.java +++ b/src/main/java/WayofTime/alchemicalWizardry/client/ClientProxy.java @@ -9,6 +9,11 @@ import WayofTime.alchemicalWizardry.common.CommonProxy; import WayofTime.alchemicalWizardry.common.demonVillage.demonHoard.demon.EntityMinorDemonGrunt; import WayofTime.alchemicalWizardry.common.demonVillage.demonHoard.demon.EntityMinorDemonGruntEarth; import WayofTime.alchemicalWizardry.common.demonVillage.demonHoard.demon.EntityMinorDemonGruntFire; +import WayofTime.alchemicalWizardry.common.demonVillage.demonHoard.demon.EntityMinorDemonGruntGuardian; +import WayofTime.alchemicalWizardry.common.demonVillage.demonHoard.demon.EntityMinorDemonGruntGuardianEarth; +import WayofTime.alchemicalWizardry.common.demonVillage.demonHoard.demon.EntityMinorDemonGruntGuardianFire; +import WayofTime.alchemicalWizardry.common.demonVillage.demonHoard.demon.EntityMinorDemonGruntGuardianIce; +import WayofTime.alchemicalWizardry.common.demonVillage.demonHoard.demon.EntityMinorDemonGruntGuardianWind; import WayofTime.alchemicalWizardry.common.demonVillage.demonHoard.demon.EntityMinorDemonGruntIce; import WayofTime.alchemicalWizardry.common.demonVillage.demonHoard.demon.EntityMinorDemonGruntWind; import WayofTime.alchemicalWizardry.common.entity.mob.EntityAirElemental; @@ -58,6 +63,7 @@ import WayofTime.alchemicalWizardry.common.renderer.mob.RenderFallenAngel; import WayofTime.alchemicalWizardry.common.renderer.mob.RenderIceDemon; import WayofTime.alchemicalWizardry.common.renderer.mob.RenderLowerGuardian; import WayofTime.alchemicalWizardry.common.renderer.mob.RenderMinorDemonGrunt; +import WayofTime.alchemicalWizardry.common.renderer.mob.RenderMinorDemonGruntGuardian; import WayofTime.alchemicalWizardry.common.renderer.mob.RenderShade; import WayofTime.alchemicalWizardry.common.renderer.mob.RenderSmallEarthGolem; import WayofTime.alchemicalWizardry.common.renderer.mob.RenderWingedFireDemon; @@ -68,6 +74,7 @@ import WayofTime.alchemicalWizardry.common.renderer.model.ModelFallenAngel; import WayofTime.alchemicalWizardry.common.renderer.model.ModelIceDemon; import WayofTime.alchemicalWizardry.common.renderer.model.ModelLowerGuardian; import WayofTime.alchemicalWizardry.common.renderer.model.ModelMinorDemonGrunt; +import WayofTime.alchemicalWizardry.common.renderer.model.ModelMinorDemonGruntGuardian; import WayofTime.alchemicalWizardry.common.renderer.model.ModelShade; import WayofTime.alchemicalWizardry.common.renderer.model.ModelSmallEarthGolem; import WayofTime.alchemicalWizardry.common.renderer.model.ModelWingedFireDemon; @@ -124,6 +131,12 @@ public class ClientProxy extends CommonProxy RenderingRegistry.registerEntityRenderingHandler(EntityMinorDemonGruntIce.class, new RenderMinorDemonGrunt(new ModelMinorDemonGrunt(), 0.5F)); RenderingRegistry.registerEntityRenderingHandler(EntityMinorDemonGruntWind.class, new RenderMinorDemonGrunt(new ModelMinorDemonGrunt(), 0.5F)); RenderingRegistry.registerEntityRenderingHandler(EntityMinorDemonGruntEarth.class, new RenderMinorDemonGrunt(new ModelMinorDemonGrunt(), 0.5F)); + RenderingRegistry.registerEntityRenderingHandler(EntityMinorDemonGruntGuardian.class, new RenderMinorDemonGruntGuardian(new ModelMinorDemonGruntGuardian(), 0.5F)); + RenderingRegistry.registerEntityRenderingHandler(EntityMinorDemonGruntGuardianFire.class, new RenderMinorDemonGruntGuardian(new ModelMinorDemonGruntGuardian(), 0.5F)); + RenderingRegistry.registerEntityRenderingHandler(EntityMinorDemonGruntGuardianIce.class, new RenderMinorDemonGruntGuardian(new ModelMinorDemonGruntGuardian(), 0.5F)); + RenderingRegistry.registerEntityRenderingHandler(EntityMinorDemonGruntGuardianEarth.class, new RenderMinorDemonGruntGuardian(new ModelMinorDemonGruntGuardian(), 0.5F)); + RenderingRegistry.registerEntityRenderingHandler(EntityMinorDemonGruntGuardianWind.class, new RenderMinorDemonGruntGuardian(new ModelMinorDemonGruntGuardian(), 0.5F)); + ClientRegistry.bindTileEntitySpecialRenderer(TEAltar.class, new TEAltarRenderer()); ClientRegistry.bindTileEntitySpecialRenderer(TEPedestal.class, new RenderPedestal()); diff --git a/src/main/java/WayofTime/alchemicalWizardry/client/renderer/RenderHelper.java b/src/main/java/WayofTime/alchemicalWizardry/client/renderer/RenderHelper.java index 3607fdfd..d3b5d728 100644 --- a/src/main/java/WayofTime/alchemicalWizardry/client/renderer/RenderHelper.java +++ b/src/main/java/WayofTime/alchemicalWizardry/client/renderer/RenderHelper.java @@ -22,6 +22,7 @@ import WayofTime.alchemicalWizardry.api.alchemy.energy.IReagentHandler; import WayofTime.alchemicalWizardry.api.alchemy.energy.Reagent; import WayofTime.alchemicalWizardry.api.alchemy.energy.ReagentContainerInfo; import WayofTime.alchemicalWizardry.api.alchemy.energy.ReagentRegistry; +import WayofTime.alchemicalWizardry.api.alchemy.energy.ReagentStack; import WayofTime.alchemicalWizardry.common.spell.complex.effect.SpellHelper; public class RenderHelper @@ -61,10 +62,16 @@ public class RenderHelper GL11.glColor4f(1.0f, 1.0f, 1.0f, 1.0f); scaledResolution = new ScaledResolution(mc, mc.displayWidth, mc.displayHeight); displayArmorStatus(mc); - renderTestHUD(mc); GL11.glColor4f(1.0f, 1.0f, 1.0f, 1.0f); } - + + ReagentStack reagentStack = new ReagentStack(ReagentRegistry.sanctusReagent, 1000); + int maxAmount = 3000; + + if(reagentStack != null && reagentStack.amount > 0) + { + renderTestHUD(mc, reagentStack, maxAmount); + } } return true; @@ -164,22 +171,24 @@ public class RenderHelper tessellator.draw(); } - private static void renderTestHUD(Minecraft mc) + private static void renderTestHUD(Minecraft mc, ReagentStack reagentStack, int maxAmount) { - Reagent reagent = ReagentRegistry.incendiumReagent; + Reagent reagent = reagentStack.reagent; int xSize = 32; int ySize = 32; - int x = (10 - xSize) / 2 * 8; + int amount = 256 * (maxAmount - reagentStack.amount) / maxAmount; + + int x = (16 - xSize) / 2 * 8; int y = (150 - ySize) / 2 * 8; ResourceLocation test2 = new ResourceLocation("alchemicalwizardry", "textures/gui/container1.png"); - GL11.glColor4f(reagent.getColourRed(), reagent.getColourGreen(), reagent.getColourBlue(), 0.5F); + GL11.glColor4f(reagent.getColourRed(), reagent.getColourGreen(), reagent.getColourBlue(), 1.0F); mc.getTextureManager().bindTexture(test2); GL11.glScalef(1f/8f, 1f/8f, 1f/8f); - drawTexturedModalRect(x, y, 0, 0, 256, 256); + drawTexturedModalRect(x, y + amount, 0, amount, 256, 256 - amount); ResourceLocation test = new ResourceLocation("alchemicalwizardry", "textures/gui/container.png"); GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); diff --git a/src/main/java/WayofTime/alchemicalWizardry/common/demonVillage/demonHoard/DemonPacketMinorGrunt.java b/src/main/java/WayofTime/alchemicalWizardry/common/demonVillage/demonHoard/DemonPacketMinorGrunt.java index 1aa75da8..cfd0ade8 100644 --- a/src/main/java/WayofTime/alchemicalWizardry/common/demonVillage/demonHoard/DemonPacketMinorGrunt.java +++ b/src/main/java/WayofTime/alchemicalWizardry/common/demonVillage/demonHoard/DemonPacketMinorGrunt.java @@ -4,6 +4,11 @@ import net.minecraft.world.World; import WayofTime.alchemicalWizardry.common.demonVillage.demonHoard.demon.EntityMinorDemonGrunt; import WayofTime.alchemicalWizardry.common.demonVillage.demonHoard.demon.EntityMinorDemonGruntEarth; import WayofTime.alchemicalWizardry.common.demonVillage.demonHoard.demon.EntityMinorDemonGruntFire; +import WayofTime.alchemicalWizardry.common.demonVillage.demonHoard.demon.EntityMinorDemonGruntGuardian; +import WayofTime.alchemicalWizardry.common.demonVillage.demonHoard.demon.EntityMinorDemonGruntGuardianEarth; +import WayofTime.alchemicalWizardry.common.demonVillage.demonHoard.demon.EntityMinorDemonGruntGuardianFire; +import WayofTime.alchemicalWizardry.common.demonVillage.demonHoard.demon.EntityMinorDemonGruntGuardianIce; +import WayofTime.alchemicalWizardry.common.demonVillage.demonHoard.demon.EntityMinorDemonGruntGuardianWind; import WayofTime.alchemicalWizardry.common.demonVillage.demonHoard.demon.EntityMinorDemonGruntIce; import WayofTime.alchemicalWizardry.common.demonVillage.demonHoard.demon.EntityMinorDemonGruntWind; import WayofTime.alchemicalWizardry.common.demonVillage.tileEntity.TEDemonPortal; @@ -26,26 +31,58 @@ public class DemonPacketMinorGrunt extends DemonHoardPacket public int summonDemons(TEDemonPortal teDemonPortal, World world, int x, int y, int z, DemonType type, int tier, boolean spawnGuardian) { EntityMinorDemonGrunt entity; - - switch(type) + { - case FIRE: - entity = new EntityMinorDemonGruntFire(world); - break; - case ICE: - entity = new EntityMinorDemonGruntIce(world); - break; - case WATER: - entity = new EntityMinorDemonGruntEarth(world); - break; - case WIND: - entity = new EntityMinorDemonGruntWind(world); - break; - case NORMAL: - default: - entity = new EntityMinorDemonGrunt(world); - break; - + switch(type) + { + case FIRE: + if(spawnGuardian) + { + entity = new EntityMinorDemonGruntGuardianFire(world); + }else + { + entity = new EntityMinorDemonGruntFire(world); + } + break; + case ICE: + if(spawnGuardian) + { + entity = new EntityMinorDemonGruntGuardianIce(world); + }else + { + entity = new EntityMinorDemonGruntIce(world); + } + break; + case EARTH: + if(spawnGuardian) + { + entity = new EntityMinorDemonGruntGuardianEarth(world); + }else + { + entity = new EntityMinorDemonGruntEarth(world); + } + break; + case WIND: + if(spawnGuardian) + { + entity = new EntityMinorDemonGruntGuardianWind(world); + }else + { + entity = new EntityMinorDemonGruntWind(world); + } + break; + case NORMAL: + default: + if(spawnGuardian) + { + entity = new EntityMinorDemonGruntGuardian(world); + }else + { + entity = new EntityMinorDemonGrunt(world); + } + break; + + } } entity.setPosition(x, y, z); diff --git a/src/main/java/WayofTime/alchemicalWizardry/common/demonVillage/demonHoard/DemonType.java b/src/main/java/WayofTime/alchemicalWizardry/common/demonVillage/demonHoard/DemonType.java index 4db1ec7a..75c5aed4 100644 --- a/src/main/java/WayofTime/alchemicalWizardry/common/demonVillage/demonHoard/DemonType.java +++ b/src/main/java/WayofTime/alchemicalWizardry/common/demonVillage/demonHoard/DemonType.java @@ -4,7 +4,7 @@ public enum DemonType { NORMAL, FIRE, - WATER, + EARTH, ICE, WIND } diff --git a/src/main/java/WayofTime/alchemicalWizardry/common/demonVillage/demonHoard/demon/EntityMinorDemonGruntGuardian.java b/src/main/java/WayofTime/alchemicalWizardry/common/demonVillage/demonHoard/demon/EntityMinorDemonGruntGuardian.java new file mode 100644 index 00000000..65874cba --- /dev/null +++ b/src/main/java/WayofTime/alchemicalWizardry/common/demonVillage/demonHoard/demon/EntityMinorDemonGruntGuardian.java @@ -0,0 +1,47 @@ +package WayofTime.alchemicalWizardry.common.demonVillage.demonHoard.demon; + +import WayofTime.alchemicalWizardry.AlchemicalWizardry; +import WayofTime.alchemicalWizardry.common.entity.projectile.HolyProjectile; +import net.minecraft.entity.Entity; +import net.minecraft.entity.EntityLivingBase; +import net.minecraft.util.DamageSource; +import net.minecraft.world.World; + +public class EntityMinorDemonGruntGuardian extends EntityMinorDemonGrunt +{ + public EntityMinorDemonGruntGuardian(World par1World) + { + super(par1World); + this.setDemonID(AlchemicalWizardry.entityMinorDemonGruntGuardianID); + } + + @Override + public boolean attackEntityAsMob(Entity par1Entity) + { + int i = this.isTamed() ? 25 : 25; + + if(par1Entity instanceof IHoardDemon && ((IHoardDemon) par1Entity).isSamePortal(this)) + { + return false; + } + + return par1Entity.attackEntityFrom(DamageSource.causeMobDamage(this), (float) i); + } + + /** + * Attack the specified entity using a ranged attack. + */ + @Override + public void attackEntityWithRangedAttack(EntityLivingBase par1EntityLivingBase, float par2) + { + if(par1EntityLivingBase instanceof IHoardDemon && ((IHoardDemon) par1EntityLivingBase).isSamePortal(this)) + { + return; + } + double xCoord; + double yCoord; + double zCoord; + HolyProjectile hol = new HolyProjectile(worldObj, this, par1EntityLivingBase, 1.8f, 0f, 20, 600); + this.worldObj.spawnEntityInWorld(hol); + } +} diff --git a/src/main/java/WayofTime/alchemicalWizardry/common/demonVillage/demonHoard/demon/EntityMinorDemonGruntGuardianEarth.java b/src/main/java/WayofTime/alchemicalWizardry/common/demonVillage/demonHoard/demon/EntityMinorDemonGruntGuardianEarth.java new file mode 100644 index 00000000..84940ddd --- /dev/null +++ b/src/main/java/WayofTime/alchemicalWizardry/common/demonVillage/demonHoard/demon/EntityMinorDemonGruntGuardianEarth.java @@ -0,0 +1,54 @@ +package WayofTime.alchemicalWizardry.common.demonVillage.demonHoard.demon; + +import net.minecraft.entity.Entity; +import net.minecraft.entity.EntityLivingBase; +import net.minecraft.potion.Potion; +import net.minecraft.potion.PotionEffect; +import net.minecraft.util.DamageSource; +import net.minecraft.world.World; +import WayofTime.alchemicalWizardry.AlchemicalWizardry; +import WayofTime.alchemicalWizardry.common.entity.projectile.ExplosionProjectile; + +public class EntityMinorDemonGruntGuardianEarth extends EntityMinorDemonGruntGuardian +{ + public EntityMinorDemonGruntGuardianEarth(World par1World) + { + super(par1World); + this.setDemonID(AlchemicalWizardry.entityMinorDemonGruntGuardianEarthID); + } + + @Override + public boolean attackEntityAsMob(Entity par1Entity) + { + int i = this.isTamed() ? 25 : 25; + + if(par1Entity instanceof IHoardDemon && ((IHoardDemon) par1Entity).isSamePortal(this)) + { + return false; + } + + if(par1Entity instanceof EntityLivingBase) + { + ((EntityLivingBase) par1Entity).addPotionEffect(new PotionEffect(Potion.moveSlowdown.id, 200, 4)); + } + + return par1Entity.attackEntityFrom(DamageSource.causeMobDamage(this), (float) i); + } + + /** + * Attack the specified entity using a ranged attack. + */ + @Override + public void attackEntityWithRangedAttack(EntityLivingBase par1EntityLivingBase, float par2) + { + if(par1EntityLivingBase instanceof IHoardDemon && ((IHoardDemon) par1EntityLivingBase).isSamePortal(this)) + { + return; + } + double xCoord; + double yCoord; + double zCoord; + ExplosionProjectile hol = new ExplosionProjectile(worldObj, this, par1EntityLivingBase, 1.8f, 0f, 20, 600, false); + this.worldObj.spawnEntityInWorld(hol); + } +} diff --git a/src/main/java/WayofTime/alchemicalWizardry/common/demonVillage/demonHoard/demon/EntityMinorDemonGruntGuardianFire.java b/src/main/java/WayofTime/alchemicalWizardry/common/demonVillage/demonHoard/demon/EntityMinorDemonGruntGuardianFire.java new file mode 100644 index 00000000..ef2187cd --- /dev/null +++ b/src/main/java/WayofTime/alchemicalWizardry/common/demonVillage/demonHoard/demon/EntityMinorDemonGruntGuardianFire.java @@ -0,0 +1,50 @@ +package WayofTime.alchemicalWizardry.common.demonVillage.demonHoard.demon; + +import net.minecraft.entity.Entity; +import net.minecraft.entity.EntityLivingBase; +import net.minecraft.util.DamageSource; +import net.minecraft.world.World; +import WayofTime.alchemicalWizardry.AlchemicalWizardry; +import WayofTime.alchemicalWizardry.common.entity.projectile.FireProjectile; + +public class EntityMinorDemonGruntGuardianFire extends EntityMinorDemonGruntGuardian +{ + public EntityMinorDemonGruntGuardianFire(World par1World) + { + super(par1World); + this.setDemonID(AlchemicalWizardry.entityMinorDemonGruntGuardianFireID); + this.isImmuneToFire = true; + } + + @Override + public boolean attackEntityAsMob(Entity par1Entity) + { + int i = this.isTamed() ? 25 : 25; + + if(par1Entity instanceof IHoardDemon && ((IHoardDemon) par1Entity).isSamePortal(this)) + { + return false; + } + + par1Entity.setFire(15); + + return par1Entity.attackEntityFrom(DamageSource.causeMobDamage(this), (float) i); + } + + /** + * Attack the specified entity using a ranged attack. + */ + @Override + public void attackEntityWithRangedAttack(EntityLivingBase par1EntityLivingBase, float par2) + { + if(par1EntityLivingBase instanceof IHoardDemon && ((IHoardDemon) par1EntityLivingBase).isSamePortal(this)) + { + return; + } + double xCoord; + double yCoord; + double zCoord; + FireProjectile hol = new FireProjectile(worldObj, this, par1EntityLivingBase, 1.8f, 0f, 20, 600); + this.worldObj.spawnEntityInWorld(hol); + } +} diff --git a/src/main/java/WayofTime/alchemicalWizardry/common/demonVillage/demonHoard/demon/EntityMinorDemonGruntGuardianIce.java b/src/main/java/WayofTime/alchemicalWizardry/common/demonVillage/demonHoard/demon/EntityMinorDemonGruntGuardianIce.java new file mode 100644 index 00000000..3a77ae69 --- /dev/null +++ b/src/main/java/WayofTime/alchemicalWizardry/common/demonVillage/demonHoard/demon/EntityMinorDemonGruntGuardianIce.java @@ -0,0 +1,47 @@ +package WayofTime.alchemicalWizardry.common.demonVillage.demonHoard.demon; + +import net.minecraft.entity.Entity; +import net.minecraft.entity.EntityLivingBase; +import net.minecraft.util.DamageSource; +import net.minecraft.world.World; +import WayofTime.alchemicalWizardry.AlchemicalWizardry; +import WayofTime.alchemicalWizardry.common.entity.projectile.IceProjectile; + +public class EntityMinorDemonGruntGuardianIce extends EntityMinorDemonGruntGuardian +{ + public EntityMinorDemonGruntGuardianIce(World par1World) + { + super(par1World); + this.setDemonID(AlchemicalWizardry.entityMinorDemonGruntGuardianIceID); + } + + @Override + public boolean attackEntityAsMob(Entity par1Entity) + { + int i = this.isTamed() ? 25 : 25; + + if(par1Entity instanceof IHoardDemon && ((IHoardDemon) par1Entity).isSamePortal(this)) + { + return false; + } + + return par1Entity.attackEntityFrom(DamageSource.causeMobDamage(this), (float) i); + } + + /** + * Attack the specified entity using a ranged attack. + */ + @Override + public void attackEntityWithRangedAttack(EntityLivingBase par1EntityLivingBase, float par2) + { + if(par1EntityLivingBase instanceof IHoardDemon && ((IHoardDemon) par1EntityLivingBase).isSamePortal(this)) + { + return; + } + double xCoord; + double yCoord; + double zCoord; + IceProjectile hol = new IceProjectile(worldObj, this, par1EntityLivingBase, 1.8f, 0f, 20, 600); + this.worldObj.spawnEntityInWorld(hol); + } +} diff --git a/src/main/java/WayofTime/alchemicalWizardry/common/demonVillage/demonHoard/demon/EntityMinorDemonGruntGuardianWind.java b/src/main/java/WayofTime/alchemicalWizardry/common/demonVillage/demonHoard/demon/EntityMinorDemonGruntGuardianWind.java new file mode 100644 index 00000000..0f267859 --- /dev/null +++ b/src/main/java/WayofTime/alchemicalWizardry/common/demonVillage/demonHoard/demon/EntityMinorDemonGruntGuardianWind.java @@ -0,0 +1,64 @@ +package WayofTime.alchemicalWizardry.common.demonVillage.demonHoard.demon; + +import net.minecraft.entity.Entity; +import net.minecraft.entity.EntityLivingBase; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.util.DamageSource; +import net.minecraft.world.World; +import WayofTime.alchemicalWizardry.AlchemicalWizardry; +import WayofTime.alchemicalWizardry.common.entity.projectile.WindGustProjectile; +import WayofTime.alchemicalWizardry.common.spell.complex.effect.SpellHelper; + +public class EntityMinorDemonGruntGuardianWind extends EntityMinorDemonGruntGuardian +{ + public EntityMinorDemonGruntGuardianWind(World par1World) + { + super(par1World); + this.setDemonID(AlchemicalWizardry.entityMinorDemonGruntGuardianWindID); + } + + @Override + public boolean attackEntityAsMob(Entity par1Entity) + { + int i = this.isTamed() ? 25 : 25; + + if(par1Entity instanceof IHoardDemon && ((IHoardDemon) par1Entity).isSamePortal(this)) + { + return false; + } + + if (par1Entity instanceof EntityPlayer) + { + SpellHelper.setPlayerSpeedFromServer((EntityPlayer) par1Entity, par1Entity.motionX, par1Entity.motionY + 4, par1Entity.motionZ); + } else if (par1Entity instanceof EntityLivingBase) + { + ((EntityLivingBase) par1Entity).motionY += 4.0D; + } + + return par1Entity.attackEntityFrom(DamageSource.causeMobDamage(this), (float) i); + } + + @Override + public void onLivingUpdate() + { + super.onLivingUpdate(); + this.fallDistance = 0; + } + + /** + * Attack the specified entity using a ranged attack. + */ + @Override + public void attackEntityWithRangedAttack(EntityLivingBase par1EntityLivingBase, float par2) + { + if(par1EntityLivingBase instanceof IHoardDemon && ((IHoardDemon) par1EntityLivingBase).isSamePortal(this)) + { + return; + } + double xCoord; + double yCoord; + double zCoord; + WindGustProjectile hol = new WindGustProjectile(worldObj, this, par1EntityLivingBase, 1.8f, 0f, 20, 600); + this.worldObj.spawnEntityInWorld(hol); + } +} diff --git a/src/main/java/WayofTime/alchemicalWizardry/common/demonVillage/tileEntity/TEDemonPortal.java b/src/main/java/WayofTime/alchemicalWizardry/common/demonVillage/tileEntity/TEDemonPortal.java index 1fa12fff..fd150940 100644 --- a/src/main/java/WayofTime/alchemicalWizardry/common/demonVillage/tileEntity/TEDemonPortal.java +++ b/src/main/java/WayofTime/alchemicalWizardry/common/demonVillage/tileEntity/TEDemonPortal.java @@ -46,7 +46,7 @@ public class TEDemonPortal extends TileEntity { public DemonType type = DemonType.FIRE; - public static boolean printDebug = false; + public static boolean printDebug = true; public static int limit = 100; @@ -576,6 +576,9 @@ public class TEDemonPortal extends TileEntity return 0; } + if(TEDemonPortal.printDebug) + System.out.println("Spawning Demons"); + return DemonPacketRegistry.spawnDemons(teDemonPortal, worldObj, xCoord + road.xCoord * 5, road.yCoord + 1, zCoord + road.zCoord * 5, type, tier, spawnGuardian); } diff --git a/src/main/java/WayofTime/alchemicalWizardry/common/renderer/mob/RenderGrunt.java b/src/main/java/WayofTime/alchemicalWizardry/common/renderer/mob/RenderGrunt.java deleted file mode 100644 index 21ebbcfc..00000000 --- a/src/main/java/WayofTime/alchemicalWizardry/common/renderer/mob/RenderGrunt.java +++ /dev/null @@ -1,27 +0,0 @@ -package WayofTime.alchemicalWizardry.common.renderer.mob; - -import net.minecraft.client.model.ModelBase; -import net.minecraft.client.renderer.entity.RenderLiving; -import net.minecraft.entity.Entity; -import net.minecraft.util.ResourceLocation; -import WayofTime.alchemicalWizardry.common.demonVillage.demonHoard.demon.EntityMinorDemonGrunt; - -public class RenderGrunt extends RenderLiving -{ - private static final ResourceLocation field_110833_a = new ResourceLocation("alchemicalwizardry", "textures/models/ShadeMob.png"); - - public RenderGrunt(ModelBase par1ModelBase, float par2) - { - super(par1ModelBase, par2); - } - - public ResourceLocation func_110832_a(EntityMinorDemonGrunt par1EntityShade) - { - return field_110833_a; - } - - public ResourceLocation getEntityTexture(Entity par1Entity) - { - return this.func_110832_a((EntityMinorDemonGrunt) par1Entity); - } -} \ No newline at end of file diff --git a/src/main/java/WayofTime/alchemicalWizardry/common/renderer/mob/RenderMinorDemonGruntGuardian.java b/src/main/java/WayofTime/alchemicalWizardry/common/renderer/mob/RenderMinorDemonGruntGuardian.java new file mode 100644 index 00000000..a2a70bb3 --- /dev/null +++ b/src/main/java/WayofTime/alchemicalWizardry/common/renderer/mob/RenderMinorDemonGruntGuardian.java @@ -0,0 +1,49 @@ +package WayofTime.alchemicalWizardry.common.renderer.mob; + +import net.minecraft.client.model.ModelBase; +import net.minecraft.client.renderer.entity.RenderLiving; +import net.minecraft.entity.Entity; +import net.minecraft.util.ResourceLocation; +import WayofTime.alchemicalWizardry.common.demonVillage.demonHoard.demon.EntityMinorDemonGruntGuardian; +import WayofTime.alchemicalWizardry.common.demonVillage.demonHoard.demon.EntityMinorDemonGruntGuardianEarth; +import WayofTime.alchemicalWizardry.common.demonVillage.demonHoard.demon.EntityMinorDemonGruntGuardianFire; +import WayofTime.alchemicalWizardry.common.demonVillage.demonHoard.demon.EntityMinorDemonGruntGuardianIce; +import WayofTime.alchemicalWizardry.common.demonVillage.demonHoard.demon.EntityMinorDemonGruntGuardianWind; + +public class RenderMinorDemonGruntGuardian extends RenderLiving +{ + private static final ResourceLocation normalTexture = new ResourceLocation("alchemicalwizardry", "textures/models/MinorDemonGruntGuardian_normal.png"); + private static final ResourceLocation fireTexture = new ResourceLocation("alchemicalwizardry", "textures/models/MinorDemonGruntGuardian_fire.png"); + private static final ResourceLocation iceTexture = new ResourceLocation("alchemicalwizardry", "textures/models/MinorDemonGruntGuardian_ice.png"); + private static final ResourceLocation windTexture = new ResourceLocation("alchemicalwizardry", "textures/models/MinorDemonGruntGuardian_wind.png"); + private static final ResourceLocation earthTexture = new ResourceLocation("alchemicalwizardry", "textures/models/MinorDemonGruntGuardian_earth.png"); + + public RenderMinorDemonGruntGuardian(ModelBase par1ModelBase, float par2) + { + super(par1ModelBase, par2); + } + + public ResourceLocation func_110832_a(EntityMinorDemonGruntGuardian entity) + { + if(entity instanceof EntityMinorDemonGruntGuardianFire) + { + return fireTexture; + }else if(entity instanceof EntityMinorDemonGruntGuardianWind) + { + return windTexture; + }else if(entity instanceof EntityMinorDemonGruntGuardianIce) + { + return iceTexture; + }else if(entity instanceof EntityMinorDemonGruntGuardianEarth) + { + return earthTexture; + } + + return normalTexture; + } + + public ResourceLocation getEntityTexture(Entity entity) + { + return this.func_110832_a((EntityMinorDemonGruntGuardian) entity); + } +} \ No newline at end of file diff --git a/src/main/java/WayofTime/alchemicalWizardry/common/renderer/model/ModelMinorDemonGruntGuardian.java b/src/main/java/WayofTime/alchemicalWizardry/common/renderer/model/ModelMinorDemonGruntGuardian.java new file mode 100644 index 00000000..663d5db1 --- /dev/null +++ b/src/main/java/WayofTime/alchemicalWizardry/common/renderer/model/ModelMinorDemonGruntGuardian.java @@ -0,0 +1,181 @@ +package WayofTime.alchemicalWizardry.common.renderer.model; + +import net.minecraft.client.model.ModelBase; +import net.minecraft.client.model.ModelRenderer; +import net.minecraft.entity.Entity; +import net.minecraft.util.MathHelper; + +public class ModelMinorDemonGruntGuardian extends ModelBase +{ + //fields + ModelRenderer head; + ModelRenderer chest; + ModelRenderer midrift; + ModelRenderer rightarm; + ModelRenderer leftarm; + ModelRenderer rightleg; + ModelRenderer leftleg; + ModelRenderer middle; + ModelRenderer helmet; + ModelRenderer leftClaw; + ModelRenderer rightClaw; + ModelRenderer leftShoulder; + ModelRenderer rightShoulder; + ModelRenderer bar1; + ModelRenderer bar2; + + public ModelMinorDemonGruntGuardian() + { + textureWidth = 128; + textureHeight = 64; + + head = new ModelRenderer(this, 0, 0); + head.addBox(-4F, -8F, -4F, 8, 8, 8); + head.setRotationPoint(0F, 0F, 0F); + head.setTextureSize(128, 64); + head.mirror = true; + setRotation(head, 0F, 0F, 0F); + chest = new ModelRenderer(this, 16, 16); + chest.addBox(-5F, 0F, -3.5F, 10, 7, 7); + chest.setRotationPoint(0F, 0F, 0F); + chest.setTextureSize(128, 64); + chest.mirror = true; + setRotation(chest, 0F, 0F, 0F); + midrift = new ModelRenderer(this, 16, 33); + midrift.addBox(-4F, 7F, -2F, 8, 5, 4); + midrift.setRotationPoint(0F, 0F, 0F); + midrift.setTextureSize(128, 64); + midrift.mirror = true; + setRotation(midrift, 0F, 0F, 0F); + rightarm = new ModelRenderer(this, 50, 16); + rightarm.mirror = true; + rightarm.addBox(-3F, -2F, -2F, 4, 12, 4); + rightarm.setRotationPoint(-6F, 2F, 0F); + rightarm.setTextureSize(128, 64); + rightarm.mirror = true; + setRotation(rightarm, 0F, 0F, 0F); + rightarm.mirror = false; + leftarm = new ModelRenderer(this, 50, 16); + leftarm.addBox(-1F, -2F, -2F, 4, 12, 4); + leftarm.setRotationPoint(6F, 2F, 0F); + leftarm.setTextureSize(128, 64); + leftarm.mirror = true; + setRotation(leftarm, 0F, 0F, 0F); + rightleg = new ModelRenderer(this, 0, 16); + rightleg.mirror = true; + rightleg.addBox(-2F, 0F, -2F, 4, 12, 4); + rightleg.setRotationPoint(-2F, 12F, 0F); + rightleg.setTextureSize(128, 64); + rightleg.mirror = true; + setRotation(rightleg, 0F, 0F, 0F); + rightleg.mirror = false; + leftleg = new ModelRenderer(this, 0, 16); + leftleg.addBox(-2F, 0F, -2F, 4, 12, 4); + leftleg.setRotationPoint(2F, 12F, 0F); + leftleg.setTextureSize(128, 64); + leftleg.mirror = true; + setRotation(leftleg, 0F, 0F, 0F); + middle = new ModelRenderer(this, 16, 43); + middle.addBox(-2F, 7F, -3F, 4, 3, 1); + middle.setRotationPoint(0F, 0F, 0F); + middle.setTextureSize(128, 64); + middle.mirror = true; + setRotation(middle, 0F, 0F, 0F); + helmet = new ModelRenderer(this, 67, 0); + helmet.addBox(-4.5F, -8.5F, -4.5F, 9, 9, 9); + helmet.setRotationPoint(0F, 0F, 0F); + helmet.setTextureSize(128, 64); + helmet.mirror = true; + setRotation(helmet, 0F, 0F, 0F); + leftClaw = new ModelRenderer(this, 67, 23); + leftClaw.addBox(1.5F, 6F, -2.5F, 2, 6, 5); + leftClaw.setRotationPoint(6F, 2F, 0F); + leftClaw.setTextureSize(128, 64); + leftClaw.mirror = true; + setRotation(leftClaw, 0F, 0F, 0F); + rightClaw = new ModelRenderer(this, 67, 23); + rightClaw.mirror = true; + rightClaw.addBox(-3.5F, 6F, -2.5F, 2, 6, 5); + rightClaw.setRotationPoint(-6F, 2F, 0F); + rightClaw.setTextureSize(128, 64); + rightClaw.mirror = true; + setRotation(rightClaw, 0F, 0F, 0F); + rightClaw.mirror = false; + leftShoulder = new ModelRenderer(this, 67, 35); + leftShoulder.addBox(-1F, -2.5F, -2.5F, 5, 4, 5); + leftShoulder.setRotationPoint(6F, 2F, 0F); + leftShoulder.setTextureSize(128, 64); + leftShoulder.mirror = true; + setRotation(leftShoulder, 0F, 0F, 0F); + rightShoulder = new ModelRenderer(this, 67, 35); + rightShoulder.mirror = true; + rightShoulder.addBox(-4F, -2.5F, -2.5F, 5, 4, 5); + rightShoulder.setRotationPoint(-6F, 2F, 0F); + rightShoulder.setTextureSize(128, 64); + rightShoulder.mirror = true; + setRotation(rightShoulder, 0F, 0F, 0F); + rightShoulder.mirror = false; + bar1 = new ModelRenderer(this, 67, 20); + bar1.addBox(-3F, 3F, 4F, 14, 1, 1); + bar1.setRotationPoint(0F, 0F, 0F); + bar1.setTextureSize(128, 64); + bar1.mirror = true; + setRotation(bar1, 0F, 0F, 0.7853982F); + bar2 = new ModelRenderer(this, 67, 20); + bar2.addBox(-11F, 3F, 4F, 14, 1, 1); + bar2.setRotationPoint(0F, 0F, 0F); + bar2.setTextureSize(128, 64); + bar2.mirror = true; + setRotation(bar2, 0F, 0F, -0.7853982F); + } + + public void render(Entity entity, float f, float f1, float f2, float f3, float f4, float f5) + { + super.render(entity, f, f1, f2, f3, f4, f5); + setRotationAngles(f, f1, f2, f3, f4, f5, entity); + head.render(f5); + chest.render(f5); + midrift.render(f5); + rightarm.render(f5); + leftarm.render(f5); + rightleg.render(f5); + leftleg.render(f5); + middle.render(f5); + helmet.render(f5); + leftClaw.render(f5); + rightClaw.render(f5); + leftShoulder.render(f5); + rightShoulder.render(f5); + bar1.render(f5); + bar2.render(f5); + } + + private void setRotation(ModelRenderer model, float x, float y, float z) + { + model.rotateAngleX = x; + model.rotateAngleY = y; + model.rotateAngleZ = z; + } + + public void setRotationAngles(float f, float f1, float f2, float f3, float f4, float f5, Entity entity) + { + super.setRotationAngles(f, f1, f2, f3, f4, f5, entity); + + this.head.rotateAngleX = f4 / (180F / (float) Math.PI); + this.head.rotateAngleY = f3 / (180F / (float) Math.PI); + + this.helmet.rotateAngleX = this.head.rotateAngleX; + this.helmet.rotateAngleY = this.head.rotateAngleY; + + this.leftleg.rotateAngleX = MathHelper.cos(f * 0.6662F) * 1.4F * f1; + this.rightleg.rotateAngleX = MathHelper.cos(f * 0.6662F + (float) Math.PI) * 1.0F * f1; + this.rightarm.rotateAngleX = MathHelper.cos(f * 0.6662F + (float) Math.PI) * 1.0F * f1; + this.leftarm.rotateAngleX = MathHelper.cos(f * 0.6662F) * 1.4F * f1; + + this.leftClaw.rotateAngleX = this.leftarm.rotateAngleX; + this.leftShoulder.rotateAngleX = this.leftarm.rotateAngleX; + + this.rightClaw.rotateAngleX = this.rightarm.rotateAngleX; + this.rightShoulder.rotateAngleX = this.rightarm.rotateAngleX; + } +} \ No newline at end of file diff --git a/src/main/resources/assets/alchemicalwizardry/lang/en_US.lang b/src/main/resources/assets/alchemicalwizardry/lang/en_US.lang index 75a4c551..869bf546 100644 --- a/src/main/resources/assets/alchemicalwizardry/lang/en_US.lang +++ b/src/main/resources/assets/alchemicalwizardry/lang/en_US.lang @@ -221,4 +221,14 @@ entity.AWWayofTime.SmallEarthGolem.name=Small Earth Golem entity.AWWayofTime.WingedFireDemon.name=Winged Fire Demon entity.AWWayofTime.BileDemon.name=Bile Demon entity.AWWayofTime.LowerGuardian.name=Lower Guardian -entity.AWWayofTime.FallenAngel.name=Fallen Angel \ No newline at end of file +entity.AWWayofTime.FallenAngel.name=Fallen Angel +entity.AWWayofTime.MinorDemonGruntGuardian.name=Demon Grunt Guardian +entity.AWWayofTime.MinorDemonGruntGuardianWind.name=Wind Demon Grunt Guardian +entity.AWWayofTime.MinorDemonGruntGuardianFire.name=Fire Demon Grunt Guardian +entity.AWWayofTime.MinorDemonGruntGuardianIce.name=Ice Demon Grunt Guardian +entity.AWWayofTime.MinorDemonGruntGuardianEarth.name=Earth Demon Grunt Guardian +entity.AWWayofTime.MinorDemonGruntWind.name=Wind Demon Grunt +entity.AWWayofTime.MinorDemonGruntFire.name=Fire Demon Grunt +entity.AWWayofTime.MinorDemonGruntIce.name=Ice Demon Grunt +entity.AWWayofTime.MinorDemonGruntEarth.name=Earth Demon Grunt +entity.AWWayofTime.MinorDemonGrunt.name=Demon Grunt \ No newline at end of file diff --git a/src/main/resources/assets/alchemicalwizardry/textures/gui/container.png b/src/main/resources/assets/alchemicalwizardry/textures/gui/container.png index 6691bfe9..742d7b69 100644 Binary files a/src/main/resources/assets/alchemicalwizardry/textures/gui/container.png and b/src/main/resources/assets/alchemicalwizardry/textures/gui/container.png differ diff --git a/src/main/resources/assets/alchemicalwizardry/textures/gui/container1.png b/src/main/resources/assets/alchemicalwizardry/textures/gui/container1.png index a62229e0..5834e853 100644 Binary files a/src/main/resources/assets/alchemicalwizardry/textures/gui/container1.png and b/src/main/resources/assets/alchemicalwizardry/textures/gui/container1.png differ diff --git a/src/main/resources/assets/alchemicalwizardry/textures/models/MinorDemonGruntGuardian_earth.png b/src/main/resources/assets/alchemicalwizardry/textures/models/MinorDemonGruntGuardian_earth.png new file mode 100644 index 00000000..2291a4df Binary files /dev/null and b/src/main/resources/assets/alchemicalwizardry/textures/models/MinorDemonGruntGuardian_earth.png differ diff --git a/src/main/resources/assets/alchemicalwizardry/textures/models/MinorDemonGruntGuardian_fire.png b/src/main/resources/assets/alchemicalwizardry/textures/models/MinorDemonGruntGuardian_fire.png new file mode 100644 index 00000000..de542b68 Binary files /dev/null and b/src/main/resources/assets/alchemicalwizardry/textures/models/MinorDemonGruntGuardian_fire.png differ diff --git a/src/main/resources/assets/alchemicalwizardry/textures/models/MinorDemonGruntGuardian_ice.png b/src/main/resources/assets/alchemicalwizardry/textures/models/MinorDemonGruntGuardian_ice.png new file mode 100644 index 00000000..237947df Binary files /dev/null and b/src/main/resources/assets/alchemicalwizardry/textures/models/MinorDemonGruntGuardian_ice.png differ diff --git a/src/main/resources/assets/alchemicalwizardry/textures/models/MinorDemonGruntGuardian_normal.png b/src/main/resources/assets/alchemicalwizardry/textures/models/MinorDemonGruntGuardian_normal.png new file mode 100644 index 00000000..03ed5904 Binary files /dev/null and b/src/main/resources/assets/alchemicalwizardry/textures/models/MinorDemonGruntGuardian_normal.png differ diff --git a/src/main/resources/assets/alchemicalwizardry/textures/models/MinorDemonGruntGuardian_wind.png b/src/main/resources/assets/alchemicalwizardry/textures/models/MinorDemonGruntGuardian_wind.png new file mode 100644 index 00000000..9d713d0f Binary files /dev/null and b/src/main/resources/assets/alchemicalwizardry/textures/models/MinorDemonGruntGuardian_wind.png differ