From f0a5b5274ff4357fa4bc2a7d4d90911cc717f725 Mon Sep 17 00:00:00 2001 From: WayofTime Date: Thu, 15 Sep 2016 17:07:06 -0400 Subject: [PATCH] Added a temporary texture overlay (borrowed from the Faithful 32x texture pack, until a unique one is made) for the corrupted zombie. Generalized enough so that new mobs can have them added easily. --- .../render/entity/RenderCorruptedZombie.java | 30 ++------- .../client/render/entity/layer/LayerWill.java | 59 ++++++++++++++++++ .../item/sigil/ItemSigilDivination.java | 13 ++-- .../textures/entities/overlay/overlay_raw.png | Bin 0 -> 5132 bytes 4 files changed, 70 insertions(+), 32 deletions(-) create mode 100644 src/main/java/WayofTime/bloodmagic/client/render/entity/layer/LayerWill.java create mode 100644 src/main/resources/assets/bloodmagic/textures/entities/overlay/overlay_raw.png diff --git a/src/main/java/WayofTime/bloodmagic/client/render/entity/RenderCorruptedZombie.java b/src/main/java/WayofTime/bloodmagic/client/render/entity/RenderCorruptedZombie.java index 8c0dfd38..8c8ccb11 100644 --- a/src/main/java/WayofTime/bloodmagic/client/render/entity/RenderCorruptedZombie.java +++ b/src/main/java/WayofTime/bloodmagic/client/render/entity/RenderCorruptedZombie.java @@ -1,8 +1,6 @@ package WayofTime.bloodmagic.client.render.entity; -import java.util.List; - -import net.minecraft.client.model.ModelBiped; +import net.minecraft.client.model.ModelCreeper; import net.minecraft.client.model.ModelZombie; import net.minecraft.client.model.ModelZombieVillager; import net.minecraft.client.renderer.entity.RenderBiped; @@ -14,23 +12,19 @@ import net.minecraft.client.renderer.entity.layers.LayerRenderer; import net.minecraft.util.ResourceLocation; import net.minecraftforge.fml.relauncher.Side; import net.minecraftforge.fml.relauncher.SideOnly; +import WayofTime.bloodmagic.client.render.entity.layer.LayerWill; import WayofTime.bloodmagic.entity.mob.EntityCorruptedZombie; -import com.google.common.collect.Lists; - @SideOnly(Side.CLIENT) public class RenderCorruptedZombie extends RenderBiped { private static final ResourceLocation ZOMBIE_TEXTURES = new ResourceLocation("bloodmagic", "textures/entities/zombie_raw.png"); - private final ModelBiped defaultModel; private final ModelZombieVillager zombieVillagerModel; - private final List> defaultLayers; public RenderCorruptedZombie(RenderManager renderManagerIn) { super(renderManagerIn, new ModelZombie(), 0.5F, 1.0F); LayerRenderer layerrenderer = (LayerRenderer) this.layerRenderers.get(0); - this.defaultModel = this.modelBipedMain; this.zombieVillagerModel = new ModelZombieVillager(); this.addLayer(new LayerHeldItem(this)); LayerBipedArmor layerbipedarmor = new LayerBipedArmor(this) @@ -42,7 +36,6 @@ public class RenderCorruptedZombie extends RenderBiped } }; this.addLayer(layerbipedarmor); - this.defaultLayers = Lists.newArrayList(this.layerRenderers); if (layerrenderer instanceof LayerCustomHead) { @@ -51,6 +44,7 @@ public class RenderCorruptedZombie extends RenderBiped } this.removeLayer(layerbipedarmor); + this.addLayer(new LayerWill(this, new ModelZombie(1.2f, false))); } /** @@ -67,7 +61,6 @@ public class RenderCorruptedZombie extends RenderBiped */ public void doRender(EntityCorruptedZombie entity, double x, double y, double z, float entityYaw, float partialTicks) { - this.swapArmor(entity); super.doRender(entity, x, y, z, entityYaw, partialTicks); } @@ -77,26 +70,11 @@ public class RenderCorruptedZombie extends RenderBiped */ protected ResourceLocation getEntityTexture(EntityCorruptedZombie entity) { - - { - return ZOMBIE_TEXTURES; - } - } - - private void swapArmor(EntityCorruptedZombie zombie) - { - - { - this.mainModel = this.defaultModel; - this.layerRenderers = this.defaultLayers; - } - - this.modelBipedMain = (ModelBiped) this.mainModel; + return ZOMBIE_TEXTURES; } protected void rotateCorpse(EntityCorruptedZombie entityLiving, float p_77043_2_, float p_77043_3_, float partialTicks) { - super.rotateCorpse(entityLiving, p_77043_2_, p_77043_3_, partialTicks); } } \ No newline at end of file diff --git a/src/main/java/WayofTime/bloodmagic/client/render/entity/layer/LayerWill.java b/src/main/java/WayofTime/bloodmagic/client/render/entity/layer/LayerWill.java new file mode 100644 index 00000000..dab43af2 --- /dev/null +++ b/src/main/java/WayofTime/bloodmagic/client/render/entity/layer/LayerWill.java @@ -0,0 +1,59 @@ +package WayofTime.bloodmagic.client.render.entity.layer; + +import net.minecraft.client.model.ModelBase; +import net.minecraft.client.renderer.GlStateManager; +import net.minecraft.client.renderer.entity.RenderLiving; +import net.minecraft.client.renderer.entity.layers.LayerCreeperCharge; +import net.minecraft.client.renderer.entity.layers.LayerRenderer; +import net.minecraft.util.ResourceLocation; +import net.minecraftforge.fml.relauncher.Side; +import net.minecraftforge.fml.relauncher.SideOnly; +import WayofTime.bloodmagic.entity.mob.EntityDemonBase; + +@SideOnly(Side.CLIENT) +public class LayerWill implements LayerRenderer +{ + private static final ResourceLocation LIGHTNING_TEXTURE = new ResourceLocation("bloodmagic", "textures/entities/overlay/overlay_raw.png"); + private final RenderLiving renderer; + private final ModelBase model; + + public LayerWill(RenderLiving rendererIn, ModelBase model) + { + this.renderer = rendererIn; + this.model = model; + } + + @Override + public void doRenderLayer(EntityDemonBase entitylivingbaseIn, float limbSwing, float limbSwingAmount, float partialTicks, float ageInTicks, float netHeadYaw, float headPitch, float scale) + { +// if (entitylivingbaseIn.getPowered()) + { + boolean flag = entitylivingbaseIn.isInvisible(); + GlStateManager.depthMask(!flag); + this.renderer.bindTexture(LIGHTNING_TEXTURE); + GlStateManager.matrixMode(5890); + GlStateManager.loadIdentity(); + float f = (float) entitylivingbaseIn.ticksExisted + partialTicks; + GlStateManager.translate(f * 0.01F, f * 0.01F, 0.0F); + GlStateManager.matrixMode(5888); + GlStateManager.enableBlend(); + float f1 = 0.5F; + GlStateManager.color(0.5F, 0.5F, 0.5F, 1.0F); + GlStateManager.disableLighting(); + GlStateManager.blendFunc(GlStateManager.SourceFactor.ONE, GlStateManager.DestFactor.ONE); + this.model.setModelAttributes(this.renderer.getMainModel()); + this.model.render(entitylivingbaseIn, limbSwing, limbSwingAmount, ageInTicks, netHeadYaw, headPitch, scale); + GlStateManager.matrixMode(5890); + GlStateManager.loadIdentity(); + GlStateManager.matrixMode(5888); + GlStateManager.enableLighting(); + GlStateManager.disableBlend(); + GlStateManager.depthMask(flag); + } + } + + public boolean shouldCombineTextures() + { + return false; + } +} \ No newline at end of file diff --git a/src/main/java/WayofTime/bloodmagic/item/sigil/ItemSigilDivination.java b/src/main/java/WayofTime/bloodmagic/item/sigil/ItemSigilDivination.java index c45d9882..0c492c69 100644 --- a/src/main/java/WayofTime/bloodmagic/item/sigil/ItemSigilDivination.java +++ b/src/main/java/WayofTime/bloodmagic/item/sigil/ItemSigilDivination.java @@ -16,6 +16,7 @@ import WayofTime.bloodmagic.api.altar.IBloodAltar; import WayofTime.bloodmagic.api.iface.IAltarReader; import WayofTime.bloodmagic.api.util.helper.NetworkHelper; import WayofTime.bloodmagic.api.util.helper.PlayerHelper; +import WayofTime.bloodmagic.entity.mob.EntityCorruptedZombie; import WayofTime.bloodmagic.tile.TileIncenseAltar; import WayofTime.bloodmagic.tile.TileInversionPillar; import WayofTime.bloodmagic.util.ChatUtil; @@ -39,12 +40,12 @@ public class ItemSigilDivination extends ItemSigilBase implements IAltarReader // DungeonTester.testDungeonElementWithOutput((WorldServer) world, player.getPosition()); // } -// if (!world.isRemote) -// { -// EntityCorruptedZombie fred = new EntityCorruptedZombie(world); -// fred.setPosition(player.posX, player.posY, player.posZ); -// world.spawnEntityInWorld(fred); -// } + if (!world.isRemote) + { + EntityCorruptedZombie fred = new EntityCorruptedZombie(world); + fred.setPosition(player.posX, player.posY, player.posZ); + world.spawnEntityInWorld(fred); + } if (!world.isRemote) { diff --git a/src/main/resources/assets/bloodmagic/textures/entities/overlay/overlay_raw.png b/src/main/resources/assets/bloodmagic/textures/entities/overlay/overlay_raw.png new file mode 100644 index 0000000000000000000000000000000000000000..c2f9110e53a2215f9f3a833d962fa0ef696cc811 GIT binary patch literal 5132 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 literal 0 HcmV?d00001