From 0ac2b788039eef7d52ff3b42b5e7651d75efc0f9 Mon Sep 17 00:00:00 2001 From: WayofTime Date: Sun, 10 Jul 2016 12:46:03 -0400 Subject: [PATCH] WIP work on the Demon Aura rendering (Halp, Yulife!) --- .../client/hud/HUDElementDemonWillAura.java | 92 ++++++++++++++++++ .../bloodmagic/proxy/ClientProxy.java | 46 +++++---- .../textures/gui/DefaultCrystal.png | Bin 0 -> 740 bytes .../bloodmagic/textures/gui/demonWillBar.png | Bin 0 -> 3596 bytes 4 files changed, 118 insertions(+), 20 deletions(-) create mode 100644 src/main/java/WayofTime/bloodmagic/client/hud/HUDElementDemonWillAura.java create mode 100644 src/main/resources/assets/bloodmagic/textures/gui/DefaultCrystal.png create mode 100644 src/main/resources/assets/bloodmagic/textures/gui/demonWillBar.png diff --git a/src/main/java/WayofTime/bloodmagic/client/hud/HUDElementDemonWillAura.java b/src/main/java/WayofTime/bloodmagic/client/hud/HUDElementDemonWillAura.java new file mode 100644 index 00000000..b7ec0050 --- /dev/null +++ b/src/main/java/WayofTime/bloodmagic/client/hud/HUDElementDemonWillAura.java @@ -0,0 +1,92 @@ +package WayofTime.bloodmagic.client.hud; + +import java.util.HashMap; +import java.util.Map; + +import net.minecraft.client.Minecraft; +import net.minecraft.client.gui.Gui; +import net.minecraft.client.gui.ScaledResolution; +import net.minecraft.client.renderer.GlStateManager; +import net.minecraft.client.renderer.Tessellator; +import net.minecraft.client.renderer.VertexBuffer; +import net.minecraft.client.renderer.vertex.DefaultVertexFormats; +import net.minecraft.util.ResourceLocation; +import net.minecraftforge.client.event.RenderGameOverlayEvent; +import WayofTime.bloodmagic.api.Constants; +import WayofTime.bloodmagic.api.soul.EnumDemonWillType; + +public class HUDElementDemonWillAura extends HUDElement +{ + protected Map crystalTextures = new HashMap(); + + private double maxBarSize = 54; + + public HUDElementDemonWillAura() + { + super(5, 5, RenderGameOverlayEvent.ElementType.HOTBAR); + crystalTextures.put(EnumDemonWillType.DEFAULT, new ResourceLocation(Constants.Mod.MODID, "textures/models/DefaultCrystal.png")); + crystalTextures.put(EnumDemonWillType.CORROSIVE, new ResourceLocation(Constants.Mod.MODID, "textures/models/CorrosiveCrystal.png")); + crystalTextures.put(EnumDemonWillType.DESTRUCTIVE, new ResourceLocation(Constants.Mod.MODID, "textures/models/DestructiveCrystal.png")); + crystalTextures.put(EnumDemonWillType.VENGEFUL, new ResourceLocation(Constants.Mod.MODID, "textures/models/VengefulCrystal.png")); + crystalTextures.put(EnumDemonWillType.STEADFAST, new ResourceLocation(Constants.Mod.MODID, "textures/models/SteadfastCrystal.png")); + } + + @Override + public void render(Minecraft minecraft, ScaledResolution resolution, float partialTicks) + { +// ItemStack sigilHolding = minecraft.thePlayer.getHeldItemMainhand(); +// // TODO - Clean this mess +// // Check mainhand for Sigil of Holding +// if (sigilHolding == null) +// return; +// if (!(sigilHolding.getItem() == ModItems.sigilHolding)) +// sigilHolding = minecraft.thePlayer.getHeldItemOffhand(); +// // Check offhand for Sigil of Holding +// if (sigilHolding == null) +// return; +// if (!(sigilHolding.getItem() == ModItems.sigilHolding)) +// return; + + Gui ingameGui = minecraft.ingameGUI; + Tessellator tessellator = Tessellator.getInstance(); + VertexBuffer vertexBuffer = tessellator.getBuffer(); + + minecraft.getTextureManager().bindTexture(new ResourceLocation(Constants.Mod.MODID, "textures/gui/demonWillBar.png")); + GlStateManager.color(1.0F, 1.0F, 1.0F); + this.drawTexturedModalRect(getXOffset(), getYOffset(), 45, 0, 45, 65); + +// GlStateManager.pushMatrix(); + + double maxAmount = 100; + + for (EnumDemonWillType type : EnumDemonWillType.values()) + { + minecraft.getTextureManager().bindTexture(crystalTextures.get(type)); + + double amount = 10 + type.ordinal() * 15; + double ratio = Math.max(Math.min(amount / maxAmount, 1), 0); + + double x = getXOffset() + 8 + type.ordinal() * 6; + double y = getYOffset() + 5 + (1 - ratio) * maxBarSize; + double height = maxBarSize * ratio; + double width = 5; + + vertexBuffer.begin(7, DefaultVertexFormats.POSITION_TEX); + vertexBuffer.pos((double) (x), (double) (y + height), 0).tex(0, 1).endVertex(); + vertexBuffer.pos((double) (x + width), (double) (y + height), 0).tex(1d / 8d, 1).endVertex(); + vertexBuffer.pos((double) (x + width), (double) (y), 0).tex(1d / 8d, 1 - ratio).endVertex(); + vertexBuffer.pos((double) (x), (double) (y), 0).tex(0, 1 - ratio).endVertex(); + tessellator.draw(); + } + + minecraft.getTextureManager().bindTexture(new ResourceLocation(Constants.Mod.MODID, "textures/gui/demonWillBar.png")); + GlStateManager.color(1.0F, 1.0F, 1.0F); + this.drawTexturedModalRect(getXOffset(), getYOffset(), 0, 0, 45, 65); + } + + @Override + public boolean shouldRender(Minecraft minecraft) + { + return true; + } +} diff --git a/src/main/java/WayofTime/bloodmagic/proxy/ClientProxy.java b/src/main/java/WayofTime/bloodmagic/proxy/ClientProxy.java index 67ebd01a..72795412 100644 --- a/src/main/java/WayofTime/bloodmagic/proxy/ClientProxy.java +++ b/src/main/java/WayofTime/bloodmagic/proxy/ClientProxy.java @@ -1,12 +1,36 @@ package WayofTime.bloodmagic.proxy; +import java.awt.Color; + +import net.minecraft.block.Block; +import net.minecraft.client.Minecraft; +import net.minecraft.client.renderer.block.model.ModelResourceLocation; +import net.minecraft.client.renderer.color.IItemColor; +import net.minecraft.client.renderer.entity.RenderManager; +import net.minecraft.client.renderer.entity.RenderPlayer; +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; +import net.minecraft.util.ResourceLocation; +import net.minecraftforge.client.model.ModelLoader; +import net.minecraftforge.client.model.obj.OBJLoader; +import net.minecraftforge.fml.client.registry.ClientRegistry; +import net.minecraftforge.fml.client.registry.RenderingRegistry; +import net.minecraftforge.fml.common.ObfuscationReflectionHelper; + +import org.apache.commons.lang3.tuple.Pair; + import WayofTime.bloodmagic.BloodMagic; import WayofTime.bloodmagic.api.Constants; import WayofTime.bloodmagic.client.IMeshProvider; import WayofTime.bloodmagic.client.IVariantProvider; import WayofTime.bloodmagic.client.helper.ShaderHelper; +import WayofTime.bloodmagic.client.hud.HUDElementDemonWillAura; import WayofTime.bloodmagic.client.hud.HUDElementHolding; -import WayofTime.bloodmagic.client.render.*; +import WayofTime.bloodmagic.client.render.LayerBloodElytra; +import WayofTime.bloodmagic.client.render.RenderAlchemyArray; +import WayofTime.bloodmagic.client.render.RenderAltar; +import WayofTime.bloodmagic.client.render.RenderDemonCrucible; +import WayofTime.bloodmagic.client.render.RenderItemRoutingNode; import WayofTime.bloodmagic.client.render.entity.BloodLightRenderFactory; import WayofTime.bloodmagic.client.render.entity.SentientArrowRenderFactory; import WayofTime.bloodmagic.client.render.entity.SoulSnareRenderFactory; @@ -19,27 +43,8 @@ import WayofTime.bloodmagic.tile.TileAlchemyArray; import WayofTime.bloodmagic.tile.TileAltar; import WayofTime.bloodmagic.tile.TileDemonCrucible; import WayofTime.bloodmagic.tile.routing.TileRoutingNode; -import WayofTime.bloodmagic.util.handler.event.ClientHandler; import WayofTime.bloodmagic.util.helper.InventoryRenderHelper; import WayofTime.bloodmagic.util.helper.InventoryRenderHelperV2; -import net.minecraft.block.Block; -import net.minecraft.client.Minecraft; -import net.minecraft.client.renderer.block.model.ModelResourceLocation; -import net.minecraft.client.renderer.color.IItemColor; -import net.minecraft.client.renderer.entity.RenderManager; -import net.minecraft.client.renderer.entity.RenderPlayer; -import net.minecraft.item.Item; -import net.minecraft.item.ItemStack; -import net.minecraft.util.ResourceLocation; -import net.minecraftforge.client.model.ModelLoader; -import net.minecraftforge.client.model.obj.OBJLoader; -import net.minecraftforge.common.MinecraftForge; -import net.minecraftforge.fml.client.registry.ClientRegistry; -import net.minecraftforge.fml.client.registry.RenderingRegistry; -import net.minecraftforge.fml.common.ObfuscationReflectionHelper; -import org.apache.commons.lang3.tuple.Pair; - -import java.awt.*; public class ClientProxy extends CommonProxy { @@ -115,6 +120,7 @@ public class ClientProxy extends CommonProxy public void postInit() { new HUDElementHolding(); + new HUDElementDemonWillAura(); } @Override diff --git a/src/main/resources/assets/bloodmagic/textures/gui/DefaultCrystal.png b/src/main/resources/assets/bloodmagic/textures/gui/DefaultCrystal.png new file mode 100644 index 0000000000000000000000000000000000000000..cbdab181995c9257248ebb0207981c5eb3eb6f4f GIT binary patch literal 740 zcmVD+r9>D>_X;f1H000McNliru-~t&FGB&a6CYAsI0&z)1 zK~y-)EznDH+%^l!25|zWm`9TOr&xm#$aOPI!wpOn5 zq&UIf7v7w~cI#M=lhzue1iTac;4#MFdc*ZbZ5?ABXX})%e7!AHlx{(4SI%1KU77AP z){iV>px27?o`T^_7seR&oLI)d`p=G7!8pN|l$ou=IY)C2V+@Mn<^#?-YOPo&h_y`4 z@%OrMXyf5WW)vHoCB{h8j#H)giq%dAk}899s4BI0j4IPH5WD zR>*lL<%ranxJ>4DdvL^^H!lc|qgS+6O3e(~puv?+V%}+S<=R(rJdn?y-KV00001Gm8x2iYo+#Xtr`)vTVhnJx3-{al)AQvQAAOp zHBuu~keJ1_SA1i(N%76S-ygq^$M-Mzp2y>T-sij??=v6g@qC}xrpEf*XRe$90Dv22 zpo0JaHdd1jIK|0w_Wot=EXVl>uCD_`0rr3ls#eE>rJVLNun7QwvzPuhHXu9qGD`#n z!i;o5v!F8<Obs|x`4{oNi0y19yncm_Te*M}LIx+=JV zSWElCbncmlPHax2&CP>EiS$9;le}lmE^OYrKWwX3yj^=uvoxuBv8QsHP!Wp%9eJ#p1#2!`Zvc7WmM*c4Y{rk^MVt3&CO{?PdvH>-%9IAy?EL- zu&R6%yR}FRp&cF)+B8CFm;GzQDT^hC1y6{-21iYIh9Bf6d&rMhbl zW2jz_cs8KMz-5)J?llR}+O#o&%))%gBv;3&$1O=z4-?&ti@!&#FY)~0qacD@iQbY? z7>S9lX1|;A@nt0ZVR9#`H>Id}81xpSyd67-DYB@pZpcIO;pX)#-rd!JgvBe}^7fB} zk!xL4Dyqsez}&6miD)Wra^qLiE2ksX*#TE08j3NwB)Dmtzr8U!#(qy6bo4=xeeotS z%O+=<^ZDDA>oCOR<&Ld&CDv?1-|V5kwj0e)JXE+Qe7xd}J#7MtsHr2|JkV^kU|B}% zr8W}J>}cv-`^X=5W&188GbSOJ+Y&I`22Xb7JLBph;eCi4soXzK1?7 zW0ZkqdzW7j>7KatZ$HCZkE1P+yaLFxp}6hRoL6wnD%nE>`fO@`P_@YEI|#$Ox54kd z6`;l~lDQtF#|Gc~XlCVKz!4-K` zlDUPU?c{R!Y3SuScrhMkmJsAqujiFe8X>*_ZsmbfmUp1Wtc(3>HL?pA1xEVEJD zfAuaSR#PnG&2RkPn?Mqvr3B?|x#ZP;9)8K|#E1cYl*LVxM@ zJCmx(8YglP{>xwY2k_V`g0%`!Vz=kdZw&(cVhB5?-RmBQNui`HCrmi$$TCtB3lY6Y z4yLvhRJG(ym6evB!+@vL8iqET8sP3_`1dhHqOIgo8k`? z-Z{%nhmGKFMyDTkaN2=7dKDjuCeOMn1hV@N)G6rMmNx7JR? zEP9_#xhz%~cL5LTo8f6U>pmbc$PavC-T(j}5Y;XVpq7Ds+-0N?hW_yD#K9Zm8jc;} z4|Pz@R{Ob@aD&Zd7Z@iO;njfytj{TZ??H)nv z8AH2`cK3vzq}85APx(VMm%SBEmz)4D;Q89+j(=Bqzzo5F8{o|bnDoq+?r_@oBPe@c zZ|`qaGeTI0eUs}_($WT)h^jl{Fxhbj7pZQ26>OH=L4lmgU%hqH{<%uXD6q`jhb*Xz zmHcIQN+PMxVg94ZeOvLi$j?QD5^&J^#E^XE!E|6j)2%Iy3gACaX-Yk$wKg<62)-(W zVzh!+n}@967$|cFWJIZ@EqB5&>iI}ggk9UX49qYg85yiZkq>~5Vwjb75mXXgAVT5A zr-uyn`QmY_x1T#1eT!dygYpaSvqyoA!XMRLg)P0lR05v9eUv1%HI{mbLijmwWt~%U zGiNS(OBOvR1tb4ePAT2Zg`Are7Y)oIUAN9C&uGGuV!NO9E*1*^xHBpVP}ukSC^d{s5Nv5@c^?O;$t@Q#Up!^OSL+* zRv41^V}a_Mp+%H)XC@p{X#%8Zw1QbF)MRBohj`@)U9s1}y%l=&Xno1wF)t|K+kw~4 zyQW{npJ`>BWdQKPjibhQQrh-lmFb%(dDmt}mzvJkevc{O*$HtU63D9&4fMjLl5X@= zK}3Uz-o6mpSkzd0Vad{Bcwv^yGfrMRwao1lxGCGom&|{T@gsDhZ$M?XUs03P*S$N! zF|9FX=ap0G(u%=V*UHL5oDIoexk(4lGm@(glXvKqIXI2I-2PhBmSe-nby-<*DL!yB zE)_Dox#wxEAni0WoL*E}{~P6SRv5Uj&ld%rKF<7J!a|YVrH-2!6cKlqOOvWL#B*Zm zH(-W;H2T_Ee;8&wN?E8P?L3PDb=wNi>t84O_t6E}Itln$ex)&MlcxTU-K-GZEk8}I zvGc%A_nx9g?%eg0m1){{H)@Sd-@RMWyfs2)3vcV2=xOOB8ej(29v`-STzEe&@iSrA zpQyrxwJTYTAa4%Q(Lui2-pLRsbx<|`Q^0#cpUO6S<12YSOP{R1h_~|qiJBKa9)WW4 z?CtD>0+$yv5KoKiv7c;PdajOc*NJwS?WZE`&D=~$2M@U$&;_5C zwYB&R7Lbsr-)nGZ%))A7v>1PgIz~zaf1!&@$cGdwN9Cu6`OZX3h`L#jL!% zD!{AH)z$P@NBf#Xv{)QP1jm(*)jPYe$pTSlv}{v`W}YPC6wyOg5rb?a!pYyH*r1$y#e4JMcJ9VtJkQ}&A&`NO>sqlwzr9WB|I5lV#jwunY# zD!6smY=^01=T4E5&vixDRZ9@hTUc=LYRu91x`z+A$_^L?(nUa<$VbUV9&-S=f<2K^ zbbnO3GOJ)$A4Y!Jvk8WAbXhRA2l|j0<=}ye`U?k=DjpQ>dC65BT!E4cj!8KTZ*MMe zYf&AFP%|~PA9Z~l9yuS8KN!|WryLIqb=$Awx@rR~o4Tf$`s;dsz7{EL?V7NEG`!Y1 zVJ!L2PvVOpM){_ES9(!Vku?nQ#IqP&9`Hyg<2c+DvkP}K`l>Mu9mp>C@=EeTbt%FS z+F{;!#*seO1cjVf4w`0c^&eqeRW0%bs>bFTP&?#GB|5?1-T~PvWEZgUb`n3Sr=Rt? zn==RgVu)wW=xiN!bMF?Mbr#X;y0bfB9cG0EQidT>X$V%1%1Z-*GTqW1T8(=jZ