Updated the hp/damage/etc logic of the corrupted mobs in general, and made it so the sheep will cast resistance on hurt allies when nearby on a cooldown.

Added an alchemy array layer (WIP) for the sheep when it is casting a "spell".
This commit is contained in:
WayofTime 2016-09-18 18:44:18 -04:00
parent cbd2609fe2
commit d6c1d59e5d
11 changed files with 652 additions and 31 deletions

View file

@ -5,6 +5,7 @@ import net.minecraft.client.renderer.entity.RenderManager;
import net.minecraft.util.ResourceLocation;
import net.minecraftforge.fml.relauncher.Side;
import net.minecraftforge.fml.relauncher.SideOnly;
import WayofTime.bloodmagic.client.render.entity.layer.LayerAlchemyCircle;
import WayofTime.bloodmagic.client.render.entity.layer.LayerCorruptedSheepWool;
import WayofTime.bloodmagic.client.render.entity.layer.LayerWill;
import WayofTime.bloodmagic.client.render.model.ModelCorruptedSheep;
@ -22,6 +23,7 @@ public class RenderCorruptedSheep extends RenderLiving<EntityCorruptedSheep>
this.addLayer(new LayerCorruptedSheepWool(this));
this.addLayer(new LayerWill<EntityCorruptedSheep>(this, new ModelCorruptedSheep(1.1f)));
this.addLayer(new LayerWill<EntityCorruptedSheep>(this, new ModelCorruptedSheep2(1.1f)));
this.addLayer(new LayerAlchemyCircle<EntityCorruptedSheep>());
}
@Override

View file

@ -0,0 +1,87 @@
package WayofTime.bloodmagic.client.render.entity.layer;
import net.minecraft.client.Minecraft;
import net.minecraft.client.renderer.GlStateManager;
import net.minecraft.client.renderer.Tessellator;
import net.minecraft.client.renderer.VertexBuffer;
import net.minecraft.client.renderer.entity.layers.LayerRenderer;
import net.minecraft.client.renderer.vertex.DefaultVertexFormats;
import net.minecraft.util.ResourceLocation;
import net.minecraftforge.fml.relauncher.Side;
import net.minecraftforge.fml.relauncher.SideOnly;
import WayofTime.bloodmagic.entity.mob.EntityCorruptedSheep;
@SideOnly(Side.CLIENT)
public class LayerAlchemyCircle<T extends EntityCorruptedSheep> implements LayerRenderer<T>
{
private static final ResourceLocation ARRAY_TEXTURE = new ResourceLocation("bloodmagic", "textures/models/AlchemyArrays/FastMinerSigil.png");
float rotationspeed = 10;
public LayerAlchemyCircle()
{
}
@Override
public void doRenderLayer(EntityCorruptedSheep demon, float limbSwing, float limbSwingAmount, float partialTicks, float ageInTicks, float netHeadYaw, float headPitch, float scale)
{
if (demon.getCastTimer() <= 0)
{
return;
}
Tessellator tessellator = Tessellator.getInstance();
VertexBuffer wr = tessellator.getBuffer();
GlStateManager.pushMatrix();
float rot = (float) this.rotationspeed * (partialTicks + demon.ticksExisted);
float secondaryRot = 0;
float size = 3.0F;
// Bind the texture to the circle
Minecraft.getMinecraft().renderEngine.bindTexture(ARRAY_TEXTURE);
GlStateManager.disableCull();
GlStateManager.enableBlend();
GlStateManager.blendFunc(770, 1);
GlStateManager.translate(0, 1.5, 0);
GlStateManager.rotate(90.0f, 1, 0, 0);
GlStateManager.pushMatrix();
// GlStateManager.translate(0, 0.5f, 0);
GlStateManager.pushMatrix();
GlStateManager.rotate(rot, 0, 0, 1);
GlStateManager.rotate(secondaryRot, 1, 0, 0);
GlStateManager.rotate(secondaryRot * 0.45812f, 0, 0, 1);
double var31 = 0.0D;
double var33 = 1.0D;
double var35 = 0;
double var37 = 1;
GlStateManager.color(1f, 1f, 1f, 1f);
wr.begin(7, DefaultVertexFormats.POSITION_TEX);
// wr.setBrightness(200);
wr.pos(size / 2f, size / 2f, 0.0D).tex(var33, var37).endVertex();
wr.pos(size / 2f, -size / 2f, 0.0D).tex(var33, var35).endVertex();
wr.pos(-size / 2f, -size / 2f, 0.0D).tex(var31, var35).endVertex();
wr.pos(-size / 2f, size / 2f, 0.0D).tex(var31, var37).endVertex();
tessellator.draw();
GlStateManager.popMatrix();
GlStateManager.disableBlend();
GlStateManager.enableCull();
GlStateManager.popMatrix();
GlStateManager.popMatrix();
}
@Override
public boolean shouldCombineTextures()
{
return false;
}
}