From 8ae7967bbc0a5ccdf26972242e2a7a6845f769a3 Mon Sep 17 00:00:00 2001 From: LordMZTE Date: Wed, 30 Nov 2022 14:47:49 +0100 Subject: [PATCH] feat: add crystallizer --- .../net/anvilcraft/thaummach/ClientProxy.java | 5 +- .../render/tile/TileCrystallizerRenderer.java | 141 ++++++++++++++++++ .../thaummach/textures/models/crystal.png | Bin 0 -> 1204 bytes .../thaummach/textures/models/crystalb.png | Bin 0 -> 1191 bytes .../thaummach/textures/models/crystalg.png | Bin 0 -> 1145 bytes .../thaummach/textures/models/crystalr.png | Bin 0 -> 1089 bytes .../thaummach/textures/models/crystaly.png | Bin 0 -> 1155 bytes 7 files changed, 145 insertions(+), 1 deletion(-) create mode 100644 src/main/java/net/anvilcraft/thaummach/render/tile/TileCrystallizerRenderer.java create mode 100644 src/main/resources/assets/thaummach/textures/models/crystal.png create mode 100644 src/main/resources/assets/thaummach/textures/models/crystalb.png create mode 100644 src/main/resources/assets/thaummach/textures/models/crystalg.png create mode 100644 src/main/resources/assets/thaummach/textures/models/crystalr.png create mode 100644 src/main/resources/assets/thaummach/textures/models/crystaly.png diff --git a/src/main/java/net/anvilcraft/thaummach/ClientProxy.java b/src/main/java/net/anvilcraft/thaummach/ClientProxy.java index 121184a..bb5deba 100644 --- a/src/main/java/net/anvilcraft/thaummach/ClientProxy.java +++ b/src/main/java/net/anvilcraft/thaummach/ClientProxy.java @@ -5,6 +5,7 @@ import cpw.mods.fml.client.registry.RenderingRegistry; import cpw.mods.fml.common.registry.GameRegistry; import net.anvilcraft.thaummach.render.BlockApparatusRenderer; import net.anvilcraft.thaummach.render.tile.TileConduitPumpRenderer; +import net.anvilcraft.thaummach.render.tile.TileCrystallizerRenderer; import net.anvilcraft.thaummach.tiles.TileConduit; import net.anvilcraft.thaummach.tiles.TileConduitPump; import net.anvilcraft.thaummach.tiles.TileConduitTank; @@ -33,12 +34,14 @@ public class ClientProxy extends CommonProxy { TileConduitValveAdvanced.class, "conduit_valve_advanced" ); GameRegistry.registerTileEntity(TileCrucible.class, "crucible"); - GameRegistry.registerTileEntity(TileCrystallizer.class, "crystallizer"); GameRegistry.registerTileEntity(TileFilter.class, "filter"); GameRegistry.registerTileEntity(TilePurifier.class, "purifier"); ClientRegistry.registerTileEntity( TileConduitPump.class, "conduit_pump", new TileConduitPumpRenderer() ); + ClientRegistry.registerTileEntity( + TileCrystallizer.class, "crystallizer", new TileCrystallizerRenderer() + ); } } diff --git a/src/main/java/net/anvilcraft/thaummach/render/tile/TileCrystallizerRenderer.java b/src/main/java/net/anvilcraft/thaummach/render/tile/TileCrystallizerRenderer.java new file mode 100644 index 0000000..2efae04 --- /dev/null +++ b/src/main/java/net/anvilcraft/thaummach/render/tile/TileCrystallizerRenderer.java @@ -0,0 +1,141 @@ +package net.anvilcraft.thaummach.render.tile; + +import net.anvilcraft.thaummach.tiles.TileCrystallizer; +import net.minecraft.client.Minecraft; +import net.minecraft.client.renderer.Tessellator; +import net.minecraft.client.renderer.tileentity.TileEntitySpecialRenderer; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.ResourceLocation; +import org.lwjgl.opengl.GL11; +import thaumcraft.client.renderers.models.ModelCrystal; +import thaumcraft.codechicken.lib.math.MathHelper; + +public class TileCrystallizerRenderer extends TileEntitySpecialRenderer { + private ModelCrystal model = new ModelCrystal(); + + private void drawCrystal(float x, float y, float z, float a1, float a2, float b) { + GL11.glEnable(2977); + GL11.glEnable(3042); + GL11.glPushMatrix(); + GL11.glEnable(32826); + GL11.glBlendFunc(770, 771); + Tessellator tessellator = Tessellator.instance; + tessellator.setBrightness(220); + GL11.glTranslatef(x, y, z); + GL11.glRotatef(a1, 0.0F, 1.0F, 0.0F); + GL11.glRotatef(a2, 1.0F, 0.0F, 0.0F); + GL11.glPushMatrix(); + GL11.glColor4f(b, b, b, 1.0F); + GL11.glScalef(0.15F, 0.45F, 0.15F); + this.model.render(); + GL11.glScalef(1.0F, 1.0F, 1.0F); + GL11.glPopMatrix(); + GL11.glDisable(32826); + GL11.glPopMatrix(); + GL11.glDisable(3042); + GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); + } + + public void + renderEntityAt(TileCrystallizer cr, double x, double y, double z, float fq) { + Minecraft mc = Minecraft.getMinecraft(); + int count = mc.thePlayer.ticksExisted; + float bob = 0.0F; + float angleS = 45.0F; + float angleI = 90.0F; + if (cr.hasUpgrade((byte) 3)) { + angleS = 36.0F; + angleI = 72.0F; + } + + if (cr.isCooking()) { + angleS += (float) (count % 360); + bob = (float) MathHelper.sin((float) count / 5.0F) * 0.15F + 0.15F; + } + + this.bindTexture(new ResourceLocation("thaummach", "textures/models/crystal.png") + ); + this.drawCrystal( + (float) x + 0.5F, + (float) y + 0.25F, + (float) z + 0.5F, + angleS, + 0.0F, + 1.0F - bob + ); + this.bindTexture(new ResourceLocation("thaummach", "textures/models/crystaly.png") + ); + this.drawCrystal( + (float) x + 0.5F, + (float) y + 0.25F, + (float) z + 0.5F, + angleS, + 25.0F, + 1.0F - bob + ); + angleS += angleI; + this.bindTexture(new ResourceLocation("thaummach", "textures/models/crystalb.png") + ); + this.drawCrystal( + (float) x + 0.5F, + (float) y + 0.25F, + (float) z + 0.5F, + angleS, + 25.0F, + 1.0F - bob + ); + angleS += angleI; + this.bindTexture(new ResourceLocation("thaummach", "textures/models/crystalg.png") + ); + this.drawCrystal( + (float) x + 0.5F, + (float) y + 0.25F, + (float) z + 0.5F, + angleS, + 25.0F, + 1.0F - bob + ); + angleS += angleI; + this.bindTexture(new ResourceLocation("thaummach", "textures/models/crystalr.png") + ); + this.drawCrystal( + (float) x + 0.5F, + (float) y + 0.25F, + (float) z + 0.5F, + angleS, + 25.0F, + 1.0F - bob + ); + if (cr.hasUpgrade((byte) 3)) { + angleS += angleI; + this.bindTexture( + new ResourceLocation("thaummach", "textures/models/crystal.png") + ); + this.drawCrystal( + (float) x + 0.5F, + (float) y + 0.25F, + (float) z + 0.5F, + angleS, + 25.0F, + 0.4F - bob + ); + } + } + + public void + renderTileEntityAt(TileEntity te, double d, double d1, double d2, float f) { + // TODO: WTF + //double var10002 = (double) te.xCoord + 0.5; + //double var10003 = (double) te.yCoord + 0.5; + //double var10004 = (double) te.zCoord; + //if (ThaumCraftCore.isVisibleTo( + // 1.15F, + // ModLoader.getMinecraftInstance().thePlayer, + // var10002, + // var10003, + // var10004 + 0.5 + // )) { + this.renderEntityAt((TileCrystallizer) te, d, d1, d2, f); + //} + } +} diff --git a/src/main/resources/assets/thaummach/textures/models/crystal.png b/src/main/resources/assets/thaummach/textures/models/crystal.png new file mode 100644 index 0000000000000000000000000000000000000000..3bc557777f63a5b604e3e89fefe7508acb1d7347 GIT binary patch literal 1204 zcmV;l1WWsgP)GT3QLa){n^kBV7@6a`|7Lo-XK*gQOSI`+sBU_^RG*})s z2XY=?=yn(!n?;d7%at@KQ???jh)qH}tpALPM*rcVzZ`IFZG zEZDx&@@uDU5uruk%IiCeI?w`D0t;MuC+~qG5zjQU(wBnux8uF?yA4pOmP~osXnAIV zSm1#_GkziSrFc?}m1RGxQF(3U?|7DH55Btr#2X@_h^|6bh)t>(KQH{bV=eL(;7`I@ z6cwC!zx>Wa{ge)>#=~nPPC1z3xSEFt_NaVToIbqwa5EsA7t})qN(|;HT`f2(=)3dU ze3RHRE)TxD0fYle;}MjN=06RN-Mn02sA6IVC>Tlky|60aad=8;#8O^m{r9j#U&Wmm*IDvY7MM7o{F3p%cV=RjKGHk-v;H$GW6_S!t(17A!zp?a$z z;`PA{wy>{-5#oJ``4d{{c(mE6_dM^#X9PsGj-h~00e8iE%L#1B2$_M=ch*oIn@6$TJi$h{`a#5?byctnAm_6`|B-3N=Es zL?}DOP!IG06=O4_2!B%VdESec5Gqh6m|v^)1uIx0D}}utj4v8mJD4KXA@!c;z4(ol z5LGl7&UlB`_zeb0mhf6Cede}V8KQeq?|I(;e?YKOSZri!f71rUtd0bw-T6{*MTyMOl$rr3NAwSkLHQ_^srNkZ#ka|?f=e&W zk@b02J?`+lA!Gc(d!!>oj_Ezmd+}lcFu&Gi$06YO7c{2zq` SrMCP40000TiAk000SaNLh0L01m0D3P^)AU#QXmlifdVrxYyNOxjOr*!SZHk8uZxb&+;8 zxxR`uLG=7uuw5~ar~0*BaxI?wle;nH8P{X@*$(h@6hpe!(;;bug&}s!jU%FnTt-+9 z7%+~X?f`7b>(!8|+;m1Qp3ndj7y&~!e|F(|7|bZY1AeLl%=R<_(de;JL<^f|v@GxA zbNJ_yL?^5sV|2eCKivVsZDP|ajZvoRl7<{%01e%9eW!tu`t}a^$qp#GWhx?V_l!zS z^3sfOWjy2l>X?<^V0W`Jg#Q5?@aRS~>3T&+q%nF%Rpm}@sBt)}=!4&LBjkZbc0U`z zPj`SZC6mlpn-R6RFEqq5qNP0f0P`$gO*g~%=?>`jmP1Msm_`djG=r^?u862dP&SES zr;*var#q&*5&RG0fG#n{=IcOO+TvO@H(sOW(Z8AMjpw8I=?;kKIZ+ul6A?M<7|)_k zBZZ@Pw{OyZ7(aN7k5Y^rHhI==J0B!VYi@pxdraHx{kS)ZA3VmpfUL!|ZqcTUjGp(S zZqc&jYjW!ww@owH+wDJ{taW;Awn*f@)&qIJ4N7+{+Z`%{gpG!GF{IP{~pjTt$+RthN^x@ zW1F=0C8x$MW(hl@<#OF6-(jDY`Fei*_kfVbHz@|CsL@)ZX58G315`NhMhBpbj{bry zl4ZJ{AH;Jkc0S(_%pOX z2?xy8^P_k}0CPeVZ*#~L4oc*THF%(huu`|R>LcG76Q*~8*?N8$kMgjVrBuUxV0dy{ zO$Qo@aV@|2{P;`<5u>{-v-SLY;9(3|9p#Z&7+E+@uaWL~j_F^C_e|+;rvv8c`S-x1 zRidt|Jkh`)zn$kGL@nh$S72-o{Lb%Xx}G2YJwSumgYLfR6r2k*Nc1F5mdB|N-05Yy zo*%>qxh--ZnppdqBzodY&i^&}qTO}EGF#7&;;H;djA!<=bV5nz)a)FEywH4PhND1+ zc)m>6^Mm+^e)}Y+mWXLO$KLJ#Y&f+A+vKYcM-R+`{{ZI|jsB^J<~slY002ovPDHLk FV1gYfM#%sG literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/thaummach/textures/models/crystalg.png b/src/main/resources/assets/thaummach/textures/models/crystalg.png new file mode 100644 index 0000000000000000000000000000000000000000..ce840e5defd82ee84279a5feafc66d3a70290928 GIT binary patch literal 1145 zcmV-<1cv*GP)0}!$B zNBRi`&irc?m?joT8mRc@#g|0Jz6BG=-&=z$Ob}Au*X-&vdr+8tyyMF##nC;l~@` zj)f~sT<6Z-&8sM}I-62WXg$BPD>9jI!no)f{^*=^|x-DBv&&o-yIyRDhy_~?j} z;0%cc+^=41#ma2E>zSV2)EE268lK;?;z^AV!H+fo7bKa*kgiS}8+3}+s!n!q-X*X6 zE@Wjb3y;M9Pnrt<86TE^bUz=)AGwrzr|!;{P42y5YKg+T$oiw|@AM^UO_4|U^Wpaa z1$L~|cbR9S*c~C&Uu4D7-ixh8pQCtDT=@myB@gfCw|E~QMiG9vTEu7zElVXbq-1_b zmTfL>T)to5sv0bh?&rhr17-_%0xQUbL)7bHh>Iy*OSR*0Q$dOmrNB}W(NJ6b;jJGB z51o?>QY@r2BzGVC`C<6#4O#UtPt@Nph!Kuv1jQfFj!7%8`8$p7=filZB#Y0dzDMgS zSNz3|S#I{@>pZ-lkKz~S4gSO8Z;^Js_UciB&KqFI;&%T$x}VS&7;nQ7GlBD0B zIa;}d{`yTmcjyKf-Ooqy2j~^z*%a1Fu^B2m87Av0Rq@Fy%tyIBx}T5Yi#Jp)iagv` zqMV#u*&yk2vXpo=-oUFALZkcnE%3#Tfnx8?;~E9YqCnX{_lQtDM@l_aH^9JteiQu3 zQk*ESdz_sBvt@ylQjeB*dtT$4Ji4C`zYjp);|P7!o+c$TtY?1beBt*cLh{P6x4pQZ zyAS<1-Sp!KYd=2{FTeG^=k=9GQpdM?Kopj$Q1PBB^YDH?iWfznZo0nW*&z85$lm-& z-5})m+m1|nN_sDk?&rgJ;f?|?x=xpQ3Ow|lKqG-V`6+MQTWb9S^lu1cDEr(f00000 LNkvXXu0mjfy(l10 literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/thaummach/textures/models/crystalr.png b/src/main/resources/assets/thaummach/textures/models/crystalr.png new file mode 100644 index 0000000000000000000000000000000000000000..8fbf8e1b1dbdd203243232dcc172f7f7850a7571 GIT binary patch literal 1089 zcmV-H1it%;P);tC&000SaNLh0L01m43uO!PBv*j7DX?xcj;++r5<5{VvBa;_@Q#7p`#Z43Js_R1Up=fLk=Gz zv)&o6ug}kKx0L2NrM2_kd69LpqC6ku?zwN3HKyc#$-=&i_uU-mL!) z?{GbgfP!@nQ;rMXf*~5dgUCA?y9d500TaVBR7(x$XoRP-Gxu(V4WVqrTdzH8KvueU zB}Y|h$PlK9o|{!^?g=bxR(x{;2Iec2LZ~jx=X|79`I~rr9Z=MG#JLb$APJA+n-g$i z)gI+O(-`%t<1sd|nh)}PgaIT@3!4SsoPgEci;?GAD0lA9ygrM^&dg~?oE6`kfGfPl zJcXi>DKYCA4n^t7fnNv%Z;-F6yE!MOSz@Yc&50ir|@1qbz-HY>fm zcXK_NzHyKV9sEOQ%uy|s_q~}B;{=1wUc>XL$>ah%BZRdF_Ue-a3`Ud%h(SsTRQqVOH z+E$nE$#}?o+4~Y(&+~iy9-w`JM$A=b1d@Q}DW^{r32zb!AS||?=dE}Y$TQ~#JsJn5 z(!_ePl1Rm4ALNVn9>|r6f6yFsRBj~O2%&*_+5cmnZ-qxl!^;Z^b8MW{VAPC}_+zOZ z8xh$7t><|w{z?yP->~%*jH(0iH-`RFMFFs}^*nFIYkC}L+%_t^GF~UP)g!-aVqMVp z$JX=w9(e5{N5zYLVEE5v`UaKe~H|sP$rEy@0VQ2MH${u2FUY0j=kG zD_)DAMp4dp_7ELqiG+OuUe?43bOOPx=lMPG3)28zJuw2X0;Ax>^y&GYh3R$`d~7|> z?|~l~@=qk_Mg#GD$fY7|(Si%?iIQfexawe#nn0zYP?1Q3ciH>!q2#3>v`Uahx}4aeG7|VARg<;|2j>a zCPCCikooVe=XonWmNxiB&w3qzj+_KFlC%aO_uplm3W@GF%}*AatFO5300000NkvXX Hu0mjf?wI;* literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/thaummach/textures/models/crystaly.png b/src/main/resources/assets/thaummach/textures/models/crystaly.png new file mode 100644 index 0000000000000000000000000000000000000000..ef27b9bcb41a81f514b031eb536727a0ad06c45a GIT binary patch literal 1155 zcmV-}1bq96P)y|ue%@|MiJ&Jl8fTsarWO>%<-Nq46$?+(8zmMP5RlmQYTXi@y> z+7}HH9Dn>SZ-=9t4+ps}mms4fb5P5&M{g-D++pXl+SCI(**Wct* zg#H{A!1X5Qj}Lh->*0KE1jEF7UH+i_LmKp)oKD6_9jnVlUf7S|qx6RbaJwmOhy7lr zluSFvqwdRpABDh}axQ}JE&zx_L$0}^6=i}IjY6z5=4TkZJEb^2 zIv#L^nW}1Pv+7XT*d!Dy(_ zd~UL-Mj43xTuPSb=cc*a1MuAiK$^lAAsAv;)g?}6(-_*?KAHLQjui$mb*=99F?@dk z?2QneZuU`pbcE{w zG&k0q4RK5c8uSV;=a$dsXBLY%K03k{P>4u{ft72`ixr5=wWH%V=8I|TJZUOh6=($#I}W~tR&Zlx{n&|GPKHE@nElFA-fiQuF3554>OD1Nt-MAxX=%q^Rc zIXLH;0s)e7{`%W~fBj-bRqox-NAYDY3sZl>)N^f)=@H)EjKQ_F&6-xr|L8qWn|pon zE%)x{AMrhavtZ6^6Cm#yA3KX5pI%IOru=WY`}tmYTmn<)Dy%?#W7!x6@2=2o0{L7jFcBm~1mz`WBe(7T_H z;yqiq72VV1vVCOb41)UQXJZ-xA*fW=+`FHD1pZtD8(O6pVh<+Q$@VriE_ln$dE5=& zbMJos5%^ur=`N^Sts1?Y{^@h;B`B`6D5`}~?%mHv@dye*?4}mz+p&Dd*;xT8p9E32)tjHN!bEV%Mss(wqsj;PZKOe=jPjI|z z{nE;3uO>;IFb|H@SUN~`3w__apO4}f78Jipbswr>7$)#}Pk=ByV`%W(TQ)(k{{s=G V_V;(yg!TXc002ovPDHLkV1oWDD{}w< literal 0 HcmV?d00001