From fde5935adcf9b1b21c8b7c5f0f4bf8f5843d087d Mon Sep 17 00:00:00 2001 From: Electroblob <35599699+Electroblob77@users.noreply.github.com> Date: Sun, 24 Jun 2018 19:11:59 +0100 Subject: [PATCH] Add visual first person blink effect --- .../client/WizardryClientEventHandler.java | 142 +++++++++++------- .../electroblob/wizardry/spell/Banish.java | 4 + .../electroblob/wizardry/spell/Blink.java | 3 + .../electroblob/wizardry/spell/PhaseStep.java | 3 + .../ebwizardry/textures/gui/blink_overlay.png | Bin 0 -> 25925 bytes 5 files changed, 97 insertions(+), 55 deletions(-) create mode 100644 src/main/resources/assets/ebwizardry/textures/gui/blink_overlay.png diff --git a/src/main/java/electroblob/wizardry/client/WizardryClientEventHandler.java b/src/main/java/electroblob/wizardry/client/WizardryClientEventHandler.java index ce053d6c..39cf3b92 100644 --- a/src/main/java/electroblob/wizardry/client/WizardryClientEventHandler.java +++ b/src/main/java/electroblob/wizardry/client/WizardryClientEventHandler.java @@ -44,6 +44,7 @@ import net.minecraftforge.client.event.RenderLivingEvent; import net.minecraftforge.client.event.RenderPlayerEvent; import net.minecraftforge.client.event.RenderWorldLastEvent; import net.minecraftforge.client.event.TextureStitchEvent; +import net.minecraftforge.event.entity.living.LivingEvent.LivingUpdateEvent; import net.minecraftforge.fml.common.Mod; import net.minecraftforge.fml.common.eventhandler.SubscribeEvent; import net.minecraftforge.fml.common.network.simpleimpl.IMessage; @@ -66,9 +67,29 @@ public final class WizardryClientEventHandler { private static final ResourceLocation sixthSenseTexture = new ResourceLocation(Wizardry.MODID, "textures/entity/sixth_sense.png"); private static final ResourceLocation sixthSenseOverlayTexture = new ResourceLocation(Wizardry.MODID, "textures/gui/sixth_sense_overlay.png"); private static final ResourceLocation frostOverlayTexture = new ResourceLocation(Wizardry.MODID, "textures/gui/frost_overlay.png"); + private static final ResourceLocation blinkOverlayTexture = new ResourceLocation(Wizardry.MODID, "textures/gui/blink_overlay.png"); private static final ResourceLocation pointerTexture = new ResourceLocation(Wizardry.MODID, "textures/entity/pointer.png"); private static final ResourceLocation targetPointerTexture = new ResourceLocation(Wizardry.MODID, "textures/entity/target_pointer.png"); + /** The remaining time for which the blink screen overlay effect will be displayed in first-person. Since this is + * only for the first-person player (the instance of which is itself stored in a static variable), this can simply + * be stored statically here, rather than needing to be in {@code WizardData}. */ + private static int blinkEffectTimer; + /** The number of ticks the blink effect lasts for. */ + private static final int BLINK_EFFECT_DURATION = 8; + + /** Starts the first person blink overlay effect. */ + public static void playBlinkEffect(){ + blinkEffectTimer = BLINK_EFFECT_DURATION; + } + + @SubscribeEvent + public static void onLivingUpdateEvent(LivingUpdateEvent event){ + if(event.getEntity() == Minecraft.getMinecraft().player){ + if(blinkEffectTimer > 0) blinkEffectTimer--; + } + } + @SubscribeEvent public static void onTextureStitchEvent(TextureStitchEvent.Pre event){ @@ -129,6 +150,11 @@ public final class WizardryClientEventHandler { event.setNewfov(event.getFov() * 1.0F - maxUseSeconds * 0.15F); } + + if(blinkEffectTimer > 0){ + float f = ((float)Math.max(blinkEffectTimer - 2, 0))/BLINK_EFFECT_DURATION; + event.setNewfov(event.getFov() + f * f * 0.7f); + } } // Brute-force fix for crystals not showing up when a wizard is given a spell book in the trade GUI. @@ -354,66 +380,72 @@ public final class WizardryClientEventHandler { @SubscribeEvent public static void onRenderGameOverlayEvent(RenderGameOverlayEvent.Post event){ - if(event.getType() == RenderGameOverlayEvent.ElementType.HELMET - && Minecraft.getMinecraft().player.isPotionActive(WizardryPotions.sixth_sense)){ - - GlStateManager.pushMatrix(); - - GlStateManager.disableDepth(); - GlStateManager.depthMask(false); - OpenGlHelper.glBlendFunc(770, 771, 1, 0); - GlStateManager.color(1.0F, 1.0F, 1.0F, 1.0F); - GlStateManager.disableAlpha(); - Minecraft.getMinecraft().renderEngine.bindTexture(sixthSenseOverlayTexture); - - Tessellator tessellator = Tessellator.getInstance(); - BufferBuilder buffer = tessellator.getBuffer(); - - buffer.begin(GL11.GL_QUADS, DefaultVertexFormats.POSITION_TEX); - buffer.pos(0.0D, (double)event.getResolution().getScaledHeight(), -90.0D).tex(0.0D, 1.0D).endVertex(); - buffer.pos((double)event.getResolution().getScaledWidth(), (double)event.getResolution().getScaledHeight(), -90.0D).tex(1.0D, 1.0D) - .endVertex(); - buffer.pos((double)event.getResolution().getScaledWidth(), 0.0D, -90.0D).tex(1.0D, 0.0D).endVertex(); - buffer.pos(0.0D, 0.0D, -90.0D).tex(0.0D, 0.0D).endVertex(); - tessellator.draw(); - - GlStateManager.depthMask(true); - GlStateManager.enableDepth(); - GlStateManager.enableAlpha(); - GlStateManager.color(1.0F, 1.0F, 1.0F, 1.0F); - - GlStateManager.popMatrix(); + if(event.getType() == RenderGameOverlayEvent.ElementType.HELMET){ + + if(Minecraft.getMinecraft().player.isPotionActive(WizardryPotions.sixth_sense)){ + + OpenGlHelper.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA, GL11.GL_ONE, GL11.GL_ZERO); + GlStateManager.color(1, 1, 1, 1); + GlStateManager.disableAlpha(); + + renderScreenOverlay(event, sixthSenseOverlayTexture); + + GlStateManager.enableAlpha(); + GlStateManager.color(1, 1, 1, 1); + } + + if(Minecraft.getMinecraft().player.isPotionActive(WizardryPotions.frost)){ + + OpenGlHelper.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA, GL11.GL_ONE, GL11.GL_ZERO); + GlStateManager.color(1, 1, 1, 1); + GlStateManager.disableAlpha(); + + renderScreenOverlay(event, frostOverlayTexture); + + GlStateManager.enableAlpha(); + GlStateManager.color(1, 1, 1, 1); + } + + if(blinkEffectTimer > 0){ + + float alpha = ((float)blinkEffectTimer)/BLINK_EFFECT_DURATION; + + OpenGlHelper.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE, GL11.GL_ONE, GL11.GL_ZERO); + GlStateManager.color(1, 1, 1, alpha); + GlStateManager.disableAlpha(); + + renderScreenOverlay(event, blinkOverlayTexture); + + GlStateManager.enableAlpha(); + GlStateManager.color(1, 1, 1, 1); + } } + } + + private static void renderScreenOverlay(RenderGameOverlayEvent.Post event, ResourceLocation texture){ + + GlStateManager.pushMatrix(); - if(event.getType() == RenderGameOverlayEvent.ElementType.HELMET && Minecraft.getMinecraft().player.isPotionActive(WizardryPotions.frost)){ + GlStateManager.disableDepth(); + GlStateManager.depthMask(false); + + Minecraft.getMinecraft().renderEngine.bindTexture(texture); - GlStateManager.pushMatrix(); + Tessellator tessellator = Tessellator.getInstance(); + BufferBuilder buffer = tessellator.getBuffer(); - GlStateManager.disableDepth(); - GlStateManager.depthMask(false); - OpenGlHelper.glBlendFunc(770, 771, 1, 0); - GlStateManager.color(1.0F, 1.0F, 1.0F, 1.0F); - GlStateManager.disableAlpha(); - Minecraft.getMinecraft().renderEngine.bindTexture(frostOverlayTexture); + buffer.begin(GL11.GL_QUADS, DefaultVertexFormats.POSITION_TEX); + buffer.pos(0.0D, (double)event.getResolution().getScaledHeight(), -90.0D).tex(0.0D, 1.0D).endVertex(); + buffer.pos((double)event.getResolution().getScaledWidth(), (double)event.getResolution().getScaledHeight(), -90.0D).tex(1.0D, 1.0D) + .endVertex(); + buffer.pos((double)event.getResolution().getScaledWidth(), 0.0D, -90.0D).tex(1.0D, 0.0D).endVertex(); + buffer.pos(0.0D, 0.0D, -90.0D).tex(0.0D, 0.0D).endVertex(); + tessellator.draw(); + + GlStateManager.depthMask(true); + GlStateManager.enableDepth(); - Tessellator tessellator = Tessellator.getInstance(); - BufferBuilder buffer = tessellator.getBuffer(); - - buffer.begin(GL11.GL_QUADS, DefaultVertexFormats.POSITION_TEX); - buffer.pos(0.0D, (double)event.getResolution().getScaledHeight(), -90.0D).tex(0.0D, 1.0D).endVertex(); - buffer.pos((double)event.getResolution().getScaledWidth(), (double)event.getResolution().getScaledHeight(), -90.0D).tex(1.0D, 1.0D) - .endVertex(); - buffer.pos((double)event.getResolution().getScaledWidth(), 0.0D, -90.0D).tex(1.0D, 0.0D).endVertex(); - buffer.pos(0.0D, 0.0D, -90.0D).tex(0.0D, 0.0D).endVertex(); - - tessellator.draw(); - GlStateManager.depthMask(true); - GlStateManager.enableDepth(); - GlStateManager.enableAlpha(); - GlStateManager.color(1.0F, 1.0F, 1.0F, 1.0F); - - GlStateManager.popMatrix(); - } + GlStateManager.popMatrix(); } // FIXME: Something in here is making the first person shadow ward rather translucent. diff --git a/src/main/java/electroblob/wizardry/spell/Banish.java b/src/main/java/electroblob/wizardry/spell/Banish.java index efec3bcf..469334a2 100644 --- a/src/main/java/electroblob/wizardry/spell/Banish.java +++ b/src/main/java/electroblob/wizardry/spell/Banish.java @@ -46,6 +46,10 @@ public class Banish extends SpellRay { world.spawnParticle(EnumParticleTypes.PORTAL, dx1, dy1, dz1, world.rand.nextDouble() - 0.5, world.rand.nextDouble() - 0.5, world.rand.nextDouble() - 0.5); } + + // Can't be bothered to route this through the proxies! + if(entity == net.minecraft.client.Minecraft.getMinecraft().player) + electroblob.wizardry.client.WizardryClientEventHandler.playBlinkEffect(); } if(y > -1){ diff --git a/src/main/java/electroblob/wizardry/spell/Blink.java b/src/main/java/electroblob/wizardry/spell/Blink.java index 1668f32b..8aacc347 100644 --- a/src/main/java/electroblob/wizardry/spell/Blink.java +++ b/src/main/java/electroblob/wizardry/spell/Blink.java @@ -43,6 +43,9 @@ public class Blink extends Spell { world.spawnParticle(EnumParticleTypes.PORTAL, dx, dy, dz, world.rand.nextDouble() - 0.5, world.rand.nextDouble() - 0.5, world.rand.nextDouble() - 0.5); } + + // Can't be bothered to route this through the proxies! + electroblob.wizardry.client.WizardryClientEventHandler.playBlinkEffect(); } if(rayTrace != null && rayTrace.typeOfHit == RayTraceResult.Type.BLOCK){ diff --git a/src/main/java/electroblob/wizardry/spell/PhaseStep.java b/src/main/java/electroblob/wizardry/spell/PhaseStep.java index 2a7ad268..05f9a9f1 100644 --- a/src/main/java/electroblob/wizardry/spell/PhaseStep.java +++ b/src/main/java/electroblob/wizardry/spell/PhaseStep.java @@ -76,6 +76,9 @@ public class PhaseStep extends Spell { world.spawnParticle(EnumParticleTypes.PORTAL, dx1, dy1, dz1, world.rand.nextDouble() - 0.5, world.rand.nextDouble() - 0.5, world.rand.nextDouble() - 0.5); } + + // Can't be bothered to route this through the proxies! + electroblob.wizardry.client.WizardryClientEventHandler.playBlinkEffect(); } return false; diff --git a/src/main/resources/assets/ebwizardry/textures/gui/blink_overlay.png b/src/main/resources/assets/ebwizardry/textures/gui/blink_overlay.png new file mode 100644 index 0000000000000000000000000000000000000000..d71610b635b18261696047000a3e984c91a9d58b GIT binary patch literal 25925 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 literal 0 HcmV?d00001