From c78c9e76ff50b36f81e17751045a7040d5dd508e Mon Sep 17 00:00:00 2001 From: PeytonPlayz595 <106421860+PeytonPlayz595@users.noreply.github.com> Date: Tue, 24 Sep 2024 05:18:28 -0700 Subject: [PATCH] Update texture management, singleplayer skins --- resources/skins/01.default_steve.png | Bin 0 -> 1832 bytes resources/skins/02.tennis_steve.png | Bin 0 -> 1755 bytes resources/skins/03.tuxedo_steve.png | Bin 0 -> 4339 bytes resources/skins/04.athlete_steve.png | Bin 0 -> 4234 bytes resources/skins/05.cyclist_steve.png | Bin 0 -> 1834 bytes resources/skins/06.boxer_steve.png | Bin 0 -> 2347 bytes resources/skins/07.prisoner_steve.png | Bin 0 -> 4251 bytes resources/skins/08.scottish_steve.png | Bin 0 -> 4647 bytes resources/skins/09.dev_steve.png | Bin 0 -> 1630 bytes resources/skins/10.herobrine.png | Bin 0 -> 1605 bytes resources/skins/11.slime.png | Bin 0 -> 1406 bytes resources/skins/12.trump.png | Bin 0 -> 1522 bytes resources/skins/13.notch.png | Bin 0 -> 950 bytes resources/skins/14.creeper.png | Bin 0 -> 3145 bytes resources/skins/15.zombie.png | Bin 0 -> 2472 bytes resources/skins/16.pig.png | Bin 0 -> 2790 bytes resources/skins/17.squid.png | Bin 0 -> 3082 bytes resources/skins/18.mooshroom.png | Bin 0 -> 1679 bytes .../net/PeytonPlayz585/opengl/GL11_1.java | 4 +- .../net/PeytonPlayz585/profile/Profile.java | 126 ++++++ .../textures/TextureLocation.java | 28 +- .../eaglercraft/GuiScreenEditProfile.java | 317 +++++++++++++++ .../java/net/minecraft/client/Minecraft.java | 8 +- .../net/minecraft/src/EffectRenderer.java | 13 +- .../java/net/minecraft/src/EntityChicken.java | 1 - .../java/net/minecraft/src/EntityCow.java | 1 - .../java/net/minecraft/src/EntityCreeper.java | 1 - .../java/net/minecraft/src/EntityGhast.java | 2 - .../net/minecraft/src/EntityGiantZombie.java | 1 - .../java/net/minecraft/src/EntityLiving.java | 5 - .../java/net/minecraft/src/EntityPig.java | 1 - .../net/minecraft/src/EntityPigZombie.java | 1 - .../java/net/minecraft/src/EntityPlayer.java | 1 - .../java/net/minecraft/src/EntitySheep.java | 1 - .../net/minecraft/src/EntitySkeleton.java | 1 - .../java/net/minecraft/src/EntitySlime.java | 1 - .../java/net/minecraft/src/EntitySpider.java | 1 - .../java/net/minecraft/src/EntitySquid.java | 1 - .../java/net/minecraft/src/EntityWolf.java | 1 - .../java/net/minecraft/src/EntityZombie.java | 1 - .../java/net/minecraft/src/GuiButton.java | 6 +- src/main/java/net/minecraft/src/GuiChest.java | 7 +- .../java/net/minecraft/src/GuiContainer.java | 6 +- .../java/net/minecraft/src/GuiCrafting.java | 7 +- .../java/net/minecraft/src/GuiDispenser.java | 7 +- .../java/net/minecraft/src/GuiFurnace.java | 7 +- .../java/net/minecraft/src/GuiIngame.java | 19 +- .../java/net/minecraft/src/GuiInventory.java | 7 +- .../java/net/minecraft/src/GuiMainMenu.java | 6 +- .../java/net/minecraft/src/GuiScreen.java | 5 +- src/main/java/net/minecraft/src/GuiSlot.java | 7 +- .../net/minecraft/src/IsoImageBuffer.java | 32 -- .../java/net/minecraft/src/ItemRenderer.java | 21 +- .../net/minecraft/src/NetworkManager.java | 10 +- src/main/java/net/minecraft/src/Render.java | 21 +- .../java/net/minecraft/src/RenderArrow.java | 11 +- .../java/net/minecraft/src/RenderBiped.java | 12 +- .../java/net/minecraft/src/RenderBoat.java | 14 +- .../java/net/minecraft/src/RenderChicken.java | 10 + .../java/net/minecraft/src/RenderCow.java | 10 + .../java/net/minecraft/src/RenderCreeper.java | 9 + .../java/net/minecraft/src/RenderEngine.java | 382 ++++++++---------- .../java/net/minecraft/src/RenderEntity.java | 5 + .../net/minecraft/src/RenderFallingSand.java | 10 +- .../net/minecraft/src/RenderFireball.java | 11 +- .../java/net/minecraft/src/RenderFish.java | 11 +- .../java/net/minecraft/src/RenderGhast.java | 15 + .../net/minecraft/src/RenderGiantZombie.java | 5 + .../java/net/minecraft/src/RenderGlobal.java | 20 +- .../java/net/minecraft/src/RenderItem.java | 21 +- .../minecraft/src/RenderLightningBolt.java | 5 + .../java/net/minecraft/src/RenderLiving.java | 2 +- .../java/net/minecraft/src/RenderManager.java | 8 +- .../net/minecraft/src/RenderMinecart.java | 13 +- .../net/minecraft/src/RenderPainting.java | 10 +- .../java/net/minecraft/src/RenderPig.java | 14 +- .../java/net/minecraft/src/RenderPlayer.java | 24 +- .../java/net/minecraft/src/RenderSheep.java | 13 +- .../java/net/minecraft/src/RenderSlime.java | 9 + .../net/minecraft/src/RenderSnowball.java | 10 +- .../java/net/minecraft/src/RenderSpider.java | 13 +- .../java/net/minecraft/src/RenderSquid.java | 10 + .../net/minecraft/src/RenderTNTPrimed.java | 11 +- .../java/net/minecraft/src/RenderWolf.java | 11 + .../minecraft/src/TerrainTextureManager.java | 127 ------ .../java/net/minecraft/src/TextureFX.java | 8 +- .../net/minecraft/src/TexturePackCustom.java | 5 +- .../net/minecraft/src/TexturePackDefault.java | 5 +- .../minecraft/src/TileEntitySignRenderer.java | 5 +- .../src/TileEntitySpecialRenderer.java | 1 + 90 files changed, 1042 insertions(+), 493 deletions(-) create mode 100644 resources/skins/01.default_steve.png create mode 100644 resources/skins/02.tennis_steve.png create mode 100644 resources/skins/03.tuxedo_steve.png create mode 100644 resources/skins/04.athlete_steve.png create mode 100644 resources/skins/05.cyclist_steve.png create mode 100644 resources/skins/06.boxer_steve.png create mode 100644 resources/skins/07.prisoner_steve.png create mode 100644 resources/skins/08.scottish_steve.png create mode 100644 resources/skins/09.dev_steve.png create mode 100644 resources/skins/10.herobrine.png create mode 100644 resources/skins/11.slime.png create mode 100644 resources/skins/12.trump.png create mode 100644 resources/skins/13.notch.png create mode 100644 resources/skins/14.creeper.png create mode 100644 resources/skins/15.zombie.png create mode 100644 resources/skins/16.pig.png create mode 100644 resources/skins/17.squid.png create mode 100644 resources/skins/18.mooshroom.png create mode 100644 src/main/java/net/lax1dude/eaglercraft/GuiScreenEditProfile.java delete mode 100644 src/main/java/net/minecraft/src/IsoImageBuffer.java diff --git a/resources/skins/01.default_steve.png b/resources/skins/01.default_steve.png new file mode 100644 index 0000000000000000000000000000000000000000..d02b7180ed7567a3ff8313132874483b838aa335 GIT binary patch literal 1832 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 literal 0 HcmV?d00001 diff --git a/resources/skins/05.cyclist_steve.png b/resources/skins/05.cyclist_steve.png new file mode 100644 index 0000000000000000000000000000000000000000..7da2003960cf40673a4fd3b02feb01afebc78ddf GIT binary patch literal 1834 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 R1Oos7002ovPDHLkV1jk2ih%$C literal 0 HcmV?d00001 diff --git a/resources/skins/07.prisoner_steve.png b/resources/skins/07.prisoner_steve.png new file mode 100644 index 0000000000000000000000000000000000000000..4cc80ac17af5964cf4c5e0406a5008408811bbce GIT binary patch literal 4251 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 xfup#s=^TJpo}rLwrB|sV01rHVxF;37Ht3k literal 0 HcmV?d00001 diff --git a/resources/skins/08.scottish_steve.png b/resources/skins/08.scottish_steve.png new file mode 100644 index 0000000000000000000000000000000000000000..25dcfec4a20c5fa65894c1fa9b3cc5d3ea764897 GIT binary patch literal 4647 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 literal 0 HcmV?d00001 diff --git a/resources/skins/09.dev_steve.png b/resources/skins/09.dev_steve.png new file mode 100644 index 0000000000000000000000000000000000000000..8daf1b3aa4e70ab24fe28be6037b8711e5f4a5f7 GIT binary patch literal 1630 zcmV-k2BG8jWvzqOallP49otuz;Jm)eRV9AR;gpmou$zQ3GJ`__NY+ z5H5{R#m4XJz6Xn;@m7S7_OalqVMd+)MF)VvTN_&}ZB8N>oWbA>cT*E{5k7jabUZlp zE=$-v-DLpO4+C@TUto=GexxI&DmXY=a=sJ`&6 zwAdcBSWJK#Q}%;hJAAZ+KV6s00D!kXJyL&BLU^KN0<}P*07VY0C|!8Nv|zbe2-|_M z9awG_hG~Vs)R+KOF(9fH9u4~EB@9MEn3fv*ckjgh-8+3sn-+Sv4r1@2oG+l~Veg?F zdbbY3Ff9NG=TA!=6Mj)R!A%dh6Jsp2fKplG;OjduQz*i5GcZikN6HZR@rM%tfX&Zr zgjT*8C@I6auYG(3w%`%%6TC9PFaVaYF#9y^|n4izTyZ!lape>v6 z8DLoe5srR+0{z=I0zmbiF(}Ui08HO3hHKv$`UXS=!HNqABL z0QMdI7CcC%v?dJpKL-GK^o`Hw7l35P{ac3OdBJZ7LQseZ7cN|Ac;F2iHqhXcJ*i{+ zPL5(^WTfGNu3vAQ7xeY@h3C^+Z+MKpNR0T6}4FBq>KVPmuvr%SgPfRsONT1$5@%W+*7g+ig`Y;MMBNm=ZH z7rrCLspxxWwK%)iodecPQi(PxaI zf9Nz!OTe@Q`iD+8WD(~)^@>uRBIc-+s-J<+kp-ej!)tm&+qS_u2V)Gc96Rgh6m4xF zB518^4AM0B;HionLJlpw~rvgwhjc9zYXq<@PI5t>h%+6+gK{GBgISKXmKcGNSEHF3I6fjNEBm*inYsBfP zl`DgrG63BYwW2_r34oYwe!ZlMl!9Rxsjn=eekHntl;x&C5Jdh4OmiPXifly`1PUE! zn}d`Bp#;W74LfSm;?dFY{@0$KmVvA|#EP?2rBdCO2})@Q;eVBqa(0I)7~>$)AkuN+ zD}Sz44GSvNXDK=%@(Fo5Auz9_<;o|t=%=)3=!^Or(%L^u#5qPCctx2?X&44?DuEMA zFCFp|l%9b=I0~3RAkr|nPooa`69Aw$(;HTP0B}5I(+}6IsZ%8ArsyAiR!YGXW=MDC z$#8sfd;&KLB`k4m+$fZg&DfZ@HieZdmWF1~bQI_wJq!R?6FIz;62r2w7wufVE1r|D z$b*}9&AiN?2U6F}bajGp0|0|_@v~5CGphzbT7j{@ptS<$hCdcyGkIkKOS(ERRV?Da z$s%%D2UjNxSl-=*f3IA_@?{-0jx`m4WIT-~8ucjad0uFbhHzrlHP7V0jauhZeDF;; z!yln@^{&_&vR&}td1loBoQsDsvuXgMtsS~N165XmGcAKL77FFI=b!@0C;dTtdln^6 cHsxdf2O>eHz9@%34*&oF07*qoM6N<$f>x2+E&u=k literal 0 HcmV?d00001 diff --git a/resources/skins/10.herobrine.png b/resources/skins/10.herobrine.png new file mode 100644 index 0000000000000000000000000000000000000000..a449fc1671525bca3c3e6d97ba5227c1a85cb168 GIT binary patch literal 1605 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 literal 0 HcmV?d00001 diff --git a/resources/skins/12.trump.png b/resources/skins/12.trump.png new file mode 100644 index 0000000000000000000000000000000000000000..0e48b12de8180573b22e08b79a79d7bcd45b0449 GIT binary patch literal 1522 zcmVJx9$=~z?%g5f9-NMVB*hX$hfoexfy%hq@R$KG9y ziORA$nnp=%XsMa{Vj=F-#V^# z_XE({c6!lJ&t2u3pu*=T7`~uW97v7>hKmF!;#uMQ*Qlx*AEALrO3W~uvm?UzwGBI2 z+Wm3|LeEMyK`>RJe^6^E=+~ufcUS2zXg8G+Q$sdgAL9imfl-a&Jrs+|hvupVMkQM7| z*Bx|BX#~Sj9`jc4_g_<7`|&Ic|Dk_0GH{cv>+4uCc7vSh5w<+t$Y9_y@jnOW%ig|z z`hWd})n#6C9(|b3jxOdV&Kyg`& z;Yif7d6LKb4z+XaKr7Ghd6#1cTG@A~T`#EiZ1E@jb=9`~{Orr`BmkOEd|)ee2CmFE zWd6EpJ-y3mK5(Un1sgRsZA(my#{rla*SH@14NcQhY6q(yuUb=|u<8z7Zk6eH%y6yK zt#Uhf-g5tv+MS8cb4LKsG>z+@9!$B6-6tBwD8~*>6h%Q%6x*~~ z%I>iDr;iq#rN~oAk*81x$mLcSw--obzyl{{?zkx3;N37_DW&SER~B4|%z(kGryOQ3 zX4ngOYIi2mCufoy%ouFsl<4Jjt6ci(y%c@JGcVwBt8`sD$?1~$s;_163^f~flg+{G zO2_wKuxZC(0DefGWkd7p*o^_XvQffdXPOVC&&zs6QS=*86a|-C#pPDfG>u~N7-9lV z(~$jA03pwbu^C8a`b|3y>pB61cz3x~MsIcAy9;D1F1L!;>tzjj6qAS7>&4|(`R2p7 zEsYc7^dOc=pJ~sG447F0Y8uJ*w~k~y@N_(8c-vNbBi2mEW42r_*DN1r0%ay1!#^WJ-bY$+{nTJHR;Qk6_^qnowT zM~0>rKMUN8h!kp+hn;Q}uV)r0(C4o8kLcs6cx*wh{pE|5$`V+(1CPgLt^Ms z6^XT*SC$U#1Y4yJKqo{cs6`tQGg!t+XlzwA1Dv_LI8K}h%&9*S9=stc4*!pnBttAO~a^q@4eLV#963|OP*I9q7CORpc zZ%YCqp}#w2*%I9LNijiHmVLiC9*_A>V46i7<^R&moY2#NZcl(TGuKexsZD^sy3$bJ zsTIMJS;Ux}W%|A=%ZS$DcZ-eJDxo6?*xSuxOwPh_9OgGBXR)`N?^y8s`#loU-fd72 zj`vd6uJ@n$U7#whvMe*uQWOP2xR=YMeW5ve(|`AvpP%=g|L*lG&hLs102mC5SbDJl z(<~w$kHIvHNXc2DEfff1WlQiqF&@Q8@O=ABQeZGFGOHhNVpnPl0^Yp;REr)h3Az<4 z@A8>&Ue|R7LFqc5lD#83>&#j+Fi+7i_HTkWGrm_~<~${YX9$^qdQi9=Ok!&!3@e3GTC=zab5%#c`qm zv_>S8N%m5-vCaflt4LCBYb1W2_fPLV^sO)O^$6ZyuioH^0993?s_OqBeKdj&o`yQV zn#4zsq1(q*N$U3#Hzt$+5W@RDY*46F?tzWm)zd zw6?ZZ^JtvQq@fv>%k{G5|H6@k=#KZIgIBUTh5$uTyw3iCtQM5LlEe3H>lI8$;fBPk z>u!StvP79_X!FYMl`ze)F(HK+itw6pY!x9t%MVXN7jzs*5_Db1^z1a_|MGSP5$>?_ zbLav9;6Rel|MerKAx=$!?b-x*2_(^b07*qoM6N<$f<-I4`~Uy| literal 0 HcmV?d00001 diff --git a/resources/skins/14.creeper.png b/resources/skins/14.creeper.png new file mode 100644 index 0000000000000000000000000000000000000000..9bdeb9e76d340a6f0ad53d67437933296b946234 GIT binary patch literal 3145 zcmV-P47T%$P)7C|w-|g&Y{y3Kl zj7!5*Qt12NJ@-A|@_f(pyzh6f#sqO~$K}zYwww60n8!&YORZPS54Swaw{BlW$KZOUf5XBgVjL1mWYJmzQe$bsspMcgiV=4hKa3dA zdkNft;*cFnpf-m$6!1XPYOK&=?iW7G^Q9-TM}m(%0Aiwq;n5THogCmB3%|}CQ|>0E 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 literal 0 HcmV?d00001 diff --git a/resources/skins/15.zombie.png b/resources/skins/15.zombie.png new file mode 100644 index 0000000000000000000000000000000000000000..9c57fb05833c1ed907faa72c00d07f098bc78712 GIT binary patch literal 2472 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 Y7d#n9TL5ki;Q#;t07*qoM6N<$f@vevzyJUM literal 0 HcmV?d00001 diff --git a/resources/skins/18.mooshroom.png b/resources/skins/18.mooshroom.png new file mode 100644 index 0000000000000000000000000000000000000000..2e80e39f2247f0cc09782578bd54dcb05c58b692 GIT binary patch literal 1679 zcmV;A25|X_P)4R^nq2mTcZ_@4u+cK_C`TVy5@ZbeYA zSD$+5*pex*B5hWemVEaN!>CJ$Tfun%@#D^@tj^aP{RjDA?l*TgTZP7owCTKZ8Gyyb zMF2V{r(BsE{RcU8=#Z~JP+Xv@h(giBqsQELj^r${X;L6BCBs)Plg(!7`{t~#1hxtd zUDwfdop?M>=j0S!S_=U0pFKl1o2BR8J<^GBUutYQ4*2Q#38oJpCKL*hmy)AamZMe{ zfKsVMsZ`?m@JD?1G{;dZOI}Jsp%6bDIl^DxeP1_?a>tH0)mOZ>04O;Baq4tUJztSF z*=&}~iD6$~pk#jk;uHY8r>1%K`RKX|RS-5c2W+I4uh;wp-LKyH&ABO^R~_z=JiL=fz~_q-*r`WiH2ycP}!n*Upc#%gjJ(=<7M z{yYZ`8~|W`exCdH@7K-QWHKoMEXyL6TA+xeGj)>^k`RzPdj@9bh{a-<@4bs*7_6?Y zQYaJ%fAuw=G~k3+wXdm8@UdN{Yit}NIlbYCT9(Dzrb+adYuE^urHv*8I)WF2{guEB z4qyRqgu?(73I&R@vqYQJ@hbK;3_z>U$jfpCo}**X7T(YcJ13`DcG5t1(jeE{i`Bay z!!T&OdKF!0M50m3vvVx?zUdc+9OpwoUfM*2 zAbj{kC={?Pi)d;AfK^8(np&Vm2v(gG*~r<%%h*@L0qV@pTk=#r2mvpgT~x}tv=-Nh zyp)85Aa?OW1=_I~OCO)~$yZmFBCum<$d!L`{W=jLNGHZ?hAlZd=CdnEzqg7hxs9Aj z>Z(L3BMie}``9>->@rbDS%tanz&c)(lKja}5rh2{!{Hi-gQi3M#w^>Ata>{}j4S)jbkg0~ zSS&_5F;3gX3qE!mxjz@y&% zEcf=(IXUHnvY1J_X9|kl>*=p&f1`0*3xb%J#npd{i;HAV47>j+HdaKnWIdrfwLnA& zwgEZ2%yv)x-sQkDA_U#31@cnTomyb`)N~Eh6?!VWUtfPC`an*cqSzR&=EfQV$~svm`TzOq|<4)O{%BAk^K!x z@Y@}28!jE*@$<{)%S41=Syp;^;gmHTC#u)7lQv3Tl|fbd49{~?N>0DTu;aClr@6Ya Z{{Sjy`KSw6Z{7d^002ovPDHLkV1g|CDQN%z literal 0 HcmV?d00001 diff --git a/src/lwjgl/java/net/PeytonPlayz585/opengl/GL11_1.java b/src/lwjgl/java/net/PeytonPlayz585/opengl/GL11_1.java index 068ec42..a338554 100644 --- a/src/lwjgl/java/net/PeytonPlayz585/opengl/GL11_1.java +++ b/src/lwjgl/java/net/PeytonPlayz585/opengl/GL11_1.java @@ -5341,7 +5341,7 @@ public class GL11_1 { } public static final byte[] loadLocalStorage(String key) { try { - File f = new File("_eaglercraft_beta."+key+".dat"); + File f = new File("filesystem/_eaglercraft_beta."+key+".dat"); byte[] b = new byte[(int)f.length()]; FileInputStream s = new FileInputStream(f); s.read(b); @@ -5353,7 +5353,7 @@ public class GL11_1 { } public static final void saveLocalStorage(String key, byte[] data) { try { - FileOutputStream f = new FileOutputStream(new File("_eaglercraft_beta."+key+".dat")); + FileOutputStream f = new FileOutputStream(new File("filesystem/_eaglercraft_beta."+key+".dat")); f.write(data); f.close(); } catch (IOException e) { diff --git a/src/main/java/net/PeytonPlayz585/profile/Profile.java b/src/main/java/net/PeytonPlayz585/profile/Profile.java index f02eb07..38569ed 100644 --- a/src/main/java/net/PeytonPlayz585/profile/Profile.java +++ b/src/main/java/net/PeytonPlayz585/profile/Profile.java @@ -3,16 +3,74 @@ package net.PeytonPlayz585.profile; import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.IOException; +import java.util.ArrayList; import net.PeytonPlayz585.opengl.GL11; +import net.PeytonPlayz585.textures.TextureLocation; import net.minecraft.client.Minecraft; import net.minecraft.src.CompressedStreamTools; import net.minecraft.src.NBTTagCompound; public class Profile { + public static class EaglerProfileSkin { + public String name; + public byte[] data; + public boolean slim; + public int glTex; + public EaglerProfileSkin(String name, byte[] data, boolean slim, int glTex) { + this.name = name; + this.data = data; + this.slim = slim; + this.glTex = glTex; + } + } + + public static int presetSkinId; + public static final int SKIN_DATA_SIZE = 64*32*4; + public static ArrayList skins = new ArrayList(); + private static String username = ""; + public static byte[] getSelfSkinPacket() { + return new byte[] { (byte)0, (byte)presetSkinId }; + } + + private static class CachedSkin { + + protected final String username; + protected UserPresetSkin skin; + protected long age; + + protected CachedSkin(String username, UserPresetSkin skin) { + this.username = username; + this.skin = skin; + this.age = System.currentTimeMillis(); + } + + } + + private static class UserPresetSkin { + + protected final int skinType; + + protected UserPresetSkin(int skin) { + this.skinType = skin; + } + + public int getSkin() { + return skinType; + } + + public int getTexture() { + return (skinType >= defaultOptionsTextures.length || skinType < 0) ? -1 : defaultOptionsTextures[skinType].getTexturePointer(); + } + + public void free() { + } + + } + public static String getName() { return username; } @@ -25,6 +83,33 @@ public class Profile { } } + public static void loadSkins() { + readSkinData(GL11.EaglerAdapterImpl2.loadLocalStorage("SKINS")); + } + + public static void readSkinData(byte[] data) { + if (data == null) { + return; + } + + NBTTagCompound profile; + try { + profile = CompressedStreamTools.func_1138_a(new ByteArrayInputStream(data)); + }catch(IOException ex) { + return; + } + + if (profile == null || profile.hasNoTags()) { + return; + } + + if(!profile.hasKey("skin")) { + return; + } + + presetSkinId = profile.getInteger("skin"); + } + public static void read() { read(GL11.EaglerAdapterImpl2.loadLocalStorage("P")); } @@ -71,8 +156,49 @@ public class Profile { } } + private static byte[] writeSkin() { + NBTTagCompound profile = new NBTTagCompound(); + profile.setInteger("skin", presetSkinId); + ByteArrayOutputStream baos = new ByteArrayOutputStream(); + try { + CompressedStreamTools.writeGzippedCompoundToOutputStream(profile, baos); + } catch (IOException e) { + return null; + } + return baos.toByteArray(); + } + + public static void saveSkin() { + byte[] b = writeSkin(); + if(b != null) { + GL11.EaglerAdapterImpl2.saveLocalStorage("SKINS", b); + } + } + static { read(); + loadSkins(); } + + public static final TextureLocation[] defaultOptionsTextures = new TextureLocation[] { + new TextureLocation("/skins/01.default_steve.png"), + new TextureLocation("/skins/02.tennis_steve.png"), + new TextureLocation("/skins/03.tuxedo_steve.png"), + new TextureLocation("/skins/04.athlete_steve.png"), + new TextureLocation("/skins/05.cyclist_steve.png"), + new TextureLocation("/skins/06.boxer_steve.png"), + new TextureLocation("/skins/07.prisoner_steve.png"), + new TextureLocation("/skins/08.scottish_steve.png"), + new TextureLocation("/skins/09.dev_steve.png"), + new TextureLocation("/skins/10.herobrine.png"), + new TextureLocation("/skins/11.slime.png"), + new TextureLocation("/skins/12.trump.png"), + new TextureLocation("/skins/13.notch.png"), + new TextureLocation("/skins/14.creeper.png"), + new TextureLocation("/skins/15.zombie.png"), + new TextureLocation("/skins/16.pig.png"), + new TextureLocation("/skins/17.squid.png"), + new TextureLocation("/skins/18.mooshroom.png") + }; } \ No newline at end of file diff --git a/src/main/java/net/PeytonPlayz585/textures/TextureLocation.java b/src/main/java/net/PeytonPlayz585/textures/TextureLocation.java index b684cf9..6184779 100644 --- a/src/main/java/net/PeytonPlayz585/textures/TextureLocation.java +++ b/src/main/java/net/PeytonPlayz585/textures/TextureLocation.java @@ -9,30 +9,38 @@ public class TextureLocation { private String path; private int glObject; - + public TextureLocation(String path) { this.path = path; this.glObject = -1; locations.add(this); } - + public static void freeTextures() { - for(TextureLocation l : locations) { + for (TextureLocation l : locations) { l.glObject = -1; } } + + public int getTexturePointer() { + RenderEngine r = Minecraft.getMinecraft().renderEngine; + if (glObject == -1) { + glObject = r.getTexture(path); + if (glObject == -1) { + System.err.println("could not load: " + path); + } + } + return glObject; + } public void bindTexture() { RenderEngine r = Minecraft.getMinecraft().renderEngine; - if(glObject == -1) { - glObject = r.getTexture(path); - if(glObject == -1) { - System.err.println("could not load: "+path); - } + int i = getTexturePointer(); + if(i != -1) { + r.bindTexture(i); } - r.bindTexture(glObject); } - + private static final ArrayList locations = new ArrayList(); } \ No newline at end of file diff --git a/src/main/java/net/lax1dude/eaglercraft/GuiScreenEditProfile.java b/src/main/java/net/lax1dude/eaglercraft/GuiScreenEditProfile.java new file mode 100644 index 0000000..50a5881 --- /dev/null +++ b/src/main/java/net/lax1dude/eaglercraft/GuiScreenEditProfile.java @@ -0,0 +1,317 @@ +package net.lax1dude.eaglercraft; + +import net.PeytonPlayz585.input.Keyboard; +import net.PeytonPlayz585.input.Mouse; +import net.PeytonPlayz585.opengl.GL11; +import net.PeytonPlayz585.profile.Profile; +import net.PeytonPlayz585.textures.TextureLocation; +import net.minecraft.client.Minecraft; +import net.minecraft.src.GuiButton; +import net.minecraft.src.GuiScreen; +import net.minecraft.src.ModelBiped; +import net.minecraft.src.RenderHelper; +import net.minecraft.src.StringTranslate; + +public class GuiScreenEditProfile extends GuiScreen { + + private GuiScreen parent; + + private boolean dropDownOpen = false; + private String[] dropDownOptions; + private int slotsVisible = 0; + private int selectedSlot = 0; + private int scrollPos = -1; + private int skinsHeight = 0; + private boolean dragging = false; + private int mousex = 0; + private int mousey = 0; + + private static final TextureLocation gui = new TextureLocation("/gui/gui.png"); + + public static final String[] defaultOptions = new String[] { + "Default Steve", + "Tennis Steve", + "Tuxedo Steve", + "Athlete Steve", + "Cyclist Steve", + "Boxer Steve", + "Prisoner Steve", + "Scottish Steve", + "Developer Steve", + "Herobrine", + "Slime", + "Trump", + "Notch", + "Creeper", + "Zombie", + "Pig", + "Squid", + "Mooshroom" + }; + + public static final TextureLocation[] defaultOptionsTextures = new TextureLocation[] { + new TextureLocation("/skins/01.default_steve.png"), + new TextureLocation("/skins/02.tennis_steve.png"), + new TextureLocation("/skins/03.tuxedo_steve.png"), + new TextureLocation("/skins/04.athlete_steve.png"), + new TextureLocation("/skins/05.cyclist_steve.png"), + new TextureLocation("/skins/06.boxer_steve.png"), + new TextureLocation("/skins/07.prisoner_steve.png"), + new TextureLocation("/skins/08.scottish_steve.png"), + new TextureLocation("/skins/09.dev_steve.png"), + new TextureLocation("/skins/10.herobrine.png"), + new TextureLocation("/skins/11.slime.png"), + new TextureLocation("/skins/12.trump.png"), + new TextureLocation("/skins/13.notch.png"), + new TextureLocation("/skins/14.creeper.png"), + new TextureLocation("/skins/15.zombie.png"), + new TextureLocation("/skins/16.pig.png"), + new TextureLocation("/skins/17.squid.png"), + new TextureLocation("/skins/18.mooshroom.png") + }; + + protected String screenTitle = "Edit Profile"; + + public GuiScreenEditProfile(GuiScreen parent) { + this.parent = parent; + this.dropDownOptions = defaultOptions; + } + + public void initGui() { + super.initGui(); + Keyboard.enableRepeatEvents(true); + StringTranslate var1 = StringTranslate.getInstance(); + selectedSlot = (Profile.presetSkinId + Profile.skins.size()); + this.controlList.add(new GuiButton(200, this.width / 2 - 100, this.height / 6 + 168, var1.translateKey("gui.done"))); + } + + private static ModelBiped playerModel = null; + + public void drawScreen(int mx, int my, float par3) { + StringTranslate var1 = StringTranslate.getInstance(); + this.drawDefaultBackground(); + this.drawCenteredString(this.fontRenderer, this.screenTitle, this.width / 2, 15, 16777215); + this.drawString(this.fontRenderer, var1.translateKey("Select Skin"), this.width / 2 - 20, this.height / 6 + 40, 10526880); + + mousex = mx; + mousey = my; + + int skinX = this.width / 2 - 120; + int skinY = this.height / 6 + 8; + int skinWidth = 80; + int skinHeight = 130; + + drawRect(skinX, skinY, skinX + skinWidth, skinY + skinHeight, -6250336); + drawRect(skinX + 1, skinY + 1, skinX + skinWidth - 1, skinY + skinHeight - 1, 0xff000015); + + if(dropDownOpen) { + super.drawScreen(0, 0, par3); + }else { + super.drawScreen(mx, my, par3); + } + + skinX = this.width / 2 - 20; + skinY = this.height / 6 + 60; + skinWidth = 140; + skinHeight = 22; + + drawRect(skinX, skinY, skinX + skinWidth, skinY + skinHeight, -6250336); + drawRect(skinX + 1, skinY + 1, skinX + skinWidth - 21, skinY + skinHeight - 1, -16777216); + drawRect(skinX + skinWidth - 20, skinY + 1, skinX + skinWidth - 1, skinY + skinHeight - 1, -16777216); + + GL11.glColor4f(1f, 1f, 1f, 1f); + gui.bindTexture(); + drawTexturedModalRect(skinX + skinWidth - 18, skinY + 3, 0, 240, 16, 16); + + this.fontRenderer.drawStringWithShadow(dropDownOptions[selectedSlot], skinX + 5, skinY + 7, 14737632); + + skinX = this.width / 2 - 20; + skinY = this.height / 6 + 83; + skinWidth = 140; + skinHeight = (this.height - skinY - 10); + slotsVisible = (skinHeight / 10); + if(slotsVisible > dropDownOptions.length) slotsVisible = dropDownOptions.length; + skinHeight = slotsVisible * 10 + 7; + skinsHeight = skinHeight; + if(scrollPos == -1) { + scrollPos = selectedSlot - 2; + } + if(scrollPos > (dropDownOptions.length - slotsVisible)) { + scrollPos = (dropDownOptions.length - slotsVisible); + } + if(scrollPos < 0) { + scrollPos = 0; + } + if(dropDownOpen) { + drawRect(skinX, skinY, skinX + skinWidth, skinY + skinHeight, -6250336); + drawRect(skinX + 1, skinY + 1, skinX + skinWidth - 1, skinY + skinHeight - 1, -16777216); + for(int i = 0; i < slotsVisible; i++) { + if(i + scrollPos < dropDownOptions.length) { + if(selectedSlot == i + scrollPos) { + drawRect(skinX + 1, skinY + i*10 + 4, skinX + skinWidth - 1, skinY + i*10 + 14, 0x77ffffff); + }else if(mx >= skinX && mx < (skinX + skinWidth - 10) && my >= (skinY + i*10 + 5) && my < (skinY + i*10 + 15)) { + drawRect(skinX + 1, skinY + i*10 + 4, skinX + skinWidth - 1, skinY + i*10 + 14, 0x55ffffff); + } + this.fontRenderer.drawStringWithShadow(dropDownOptions[i + scrollPos], skinX + 5, skinY + 5 + i*10, 14737632); + } + } + int scrollerSize = skinHeight * slotsVisible / dropDownOptions.length; + int scrollerPos = skinHeight * scrollPos / dropDownOptions.length; + drawRect(skinX + skinWidth - 4, skinY + scrollerPos + 1, skinX + skinWidth - 1, skinY + scrollerPos + scrollerSize, 0xff888888); + } + + int xx = this.width / 2 - 80; + int yy = this.height / 6 + 130; + skinX = this.width / 2 - 120; + skinY = this.height / 6 + 8; + skinWidth = 80; + skinHeight = 130; + + int id = selectedSlot - Profile.skins.size(); + + if(id < 0) { + Minecraft.getMinecraft().renderEngine.bindTexture(Profile.skins.get(selectedSlot).glTex); + }else { + defaultOptionsTextures[id].bindTexture(); + } + + GL11.glEnable(GL11.GL_TEXTURE_2D); + GL11.glDisable(GL11.GL_BLEND); + GL11.glDisable(GL11.GL_CULL_FACE); + GL11.glColor4f(1.0f, 1.0f, 1.0f, 1.0f); + GL11.glPushMatrix(); + GL11.glTranslatef((float) xx, (float) (yy - 80), 100.0F); + GL11.glScalef(50.0f, 50.0f, 50.0f); + GL11.glRotatef(180.0f, 1.0f, 0.0f, 0.0f); + RenderHelper.enableStandardItemLighting(); + GL11.glScalef(1.0F, -1.0F, 1.0F); + GL11.glTranslatef(0.0F, 1.0F, 0.0F); + GL11.glRotatef(((yy - my) * -0.06f), 1.0f, 0.0f, 0.0f); + GL11.glRotatef(((xx - mx) * 0.06f), 0.0f, 1.0f, 0.0f); + GL11.glTranslatef(0.0F, -1.0F, 0.0F); + + if(playerModel == null) { + playerModel = new ModelBiped(0.0f); + } + + playerModel.render(0.0f, 0.0f, (float)(System.currentTimeMillis() % 100000) / 50f, ((xx - mx) * 0.06f), ((yy - my) * -0.1f), 0.0625F); + + GL11.glPopMatrix(); + GL11.glEnable(GL11.GL_BLEND); + GL11.glEnable(GL11.GL_CULL_FACE); + + } + + public void handleMouseInput() { + super.handleMouseInput(); + if(dropDownOpen) { + int var1 = Mouse.getEventDWheel(); + if(var1 < 0) { + scrollPos += 3; + } + if(var1 > 0) { + scrollPos -= 3; + } + if(scrollPos < 0) { + scrollPos = 0; + } + if(scrollPos > defaultOptions.length + Profile.skins.size()) { + scrollPos = defaultOptions.length + Profile.skins.size(); + } + } + } + + private void save() { + Profile.presetSkinId = selectedSlot - Profile.skins.size(); + Profile.saveSkin(); + } + + protected void actionPerformed(GuiButton par1GuiButton) { + if(!dropDownOpen) { + if(par1GuiButton.id == 200) { + save(); + this.mc.displayGuiScreen((GuiScreen) parent); + } + } + } + + public void updateScreen() { + if(dropDownOpen) { + if(Mouse.isButtonDown(0)) { + int skinX = this.width / 2 - 20; + int skinY = this.height / 6 + 103; + int skinWidth = 140; + if(mousex >= (skinX + skinWidth - 10) && mousex < (skinX + skinWidth) && mousey >= skinY && mousey < (skinY + skinsHeight)) { + dragging = true; + } + if(dragging) { + int scrollerSize = skinsHeight * slotsVisible / dropDownOptions.length; + scrollPos = (mousey - skinY - (scrollerSize / 2)) * dropDownOptions.length / skinsHeight; + } + }else { + dragging = false; + } + }else { + dragging = false; + } + } + + public void onGuiClosed() { + Keyboard.enableRepeatEvents(false); + } + + + protected void keyTyped(char par1, int par2) { + if(par2 == 200 && selectedSlot > 0) { + --selectedSlot; + scrollPos = selectedSlot - 2; + } + if(par2 == 208 && selectedSlot < (dropDownOptions.length - 1)) { + ++selectedSlot; + scrollPos = selectedSlot - 2; + } + } + + protected void mouseClicked(int par1, int par2, int par3) { + super.mouseClicked(par1, par2, par3); + + if (par3 == 0) { + int skinX = this.width / 2 + 140 - 40; + int skinY = this.height / 6 + 62; + + if(par1 >= skinX && par1 < (skinX + 20) && par2 >= skinY && par2 < (skinY + 22)) { + dropDownOpen = !dropDownOpen; + } + + skinX = this.width / 2 - 20; + skinY = this.height / 6 + 62; + int skinWidth = 140; + int skinHeight = skinsHeight; + + if(!(par1 >= skinX && par1 < (skinX + skinWidth) && par2 >= skinY && par2 < (skinY + skinHeight + 22))) { + dropDownOpen = false; + dragging = false; + } + + skinY += 21; + + if(dropDownOpen && !dragging) { + for(int i = 0; i < slotsVisible; i++) { + if(i + scrollPos < dropDownOptions.length) { + if(selectedSlot != i + scrollPos) { + if(par1 >= skinX && par1 < (skinX + skinWidth - 10) && par2 >= (skinY + i*10 + 5) && par2 < (skinY + i*10 + 15) && selectedSlot != i + scrollPos) { + selectedSlot = i + scrollPos; + dropDownOpen = false; + dragging = false; + } + } + } + } + } + + } + } + + + +} \ No newline at end of file diff --git a/src/main/java/net/minecraft/client/Minecraft.java b/src/main/java/net/minecraft/client/Minecraft.java index 188034c..d32f360 100644 --- a/src/main/java/net/minecraft/client/Minecraft.java +++ b/src/main/java/net/minecraft/client/Minecraft.java @@ -4,6 +4,8 @@ import net.PeytonPlayz585.input.Keyboard; import net.PeytonPlayz585.input.Mouse; import net.PeytonPlayz585.opengl.Display; import net.PeytonPlayz585.opengl.GL11; +import net.PeytonPlayz585.textures.TextureLocation; +import net.lax1dude.eaglercraft.GuiScreenEditProfile; import net.lax1dude.eaglercraft.TextureNewClockFX; import net.lax1dude.eaglercraft.TextureNewCompassFX; import net.minecraft.src.AchievementList; @@ -129,6 +131,8 @@ public class Minecraft implements Runnable { private int joinPlayerCounter = 0; public static int debugFPS; + + private static final TextureLocation terrainTexture = new TextureLocation("/terrain.png"); public Minecraft() { StatList.func_27360_a(); @@ -196,7 +200,7 @@ public class Minecraft implements Runnable { GL11.anisotropicPatch(GL11.EaglerAdapterImpl2.glNeedsAnisotropicFix()); - this.displayGuiScreen(new GuiMainMenu()); + this.displayGuiScreen(new GuiScreenEditProfile(new GuiMainMenu())); } private void loadScreen() { @@ -719,7 +723,7 @@ public class Minecraft implements Runnable { this.playerController.updateController(); } - GL11.glBindTexture(GL11.GL_TEXTURE_2D, this.renderEngine.getTexture("/terrain.png")); + terrainTexture.bindTexture(); if(!this.isGamePaused) { this.renderEngine.updateDynamicTextures(); } diff --git a/src/main/java/net/minecraft/src/EffectRenderer.java b/src/main/java/net/minecraft/src/EffectRenderer.java index 2c04fe5..ca6308e 100644 --- a/src/main/java/net/minecraft/src/EffectRenderer.java +++ b/src/main/java/net/minecraft/src/EffectRenderer.java @@ -4,12 +4,17 @@ import java.util.ArrayList; import java.util.List; import net.PeytonPlayz585.opengl.GL11; +import net.PeytonPlayz585.textures.TextureLocation; public class EffectRenderer { protected World worldObj; private List[] fxLayers = new List[4]; private RenderEngine renderer; private Random rand = new Random(); + + private static final TextureLocation particlesTexture = new TextureLocation("/particles.png"); + private static final TextureLocation terrainTexture = new TextureLocation("/terrain.png"); + private static final TextureLocation itemsTexture = new TextureLocation("/gui/items.png"); public EffectRenderer(World var1, RenderEngine var2) { if(var1 != null) { @@ -58,20 +63,18 @@ public class EffectRenderer { for(int var8 = 0; var8 < 3; ++var8) { if(this.fxLayers[var8].size() != 0) { - int var9 = 0; if(var8 == 0) { - var9 = this.renderer.getTexture("/particles.png"); + particlesTexture.bindTexture(); } if(var8 == 1) { - var9 = this.renderer.getTexture("/terrain.png"); + terrainTexture.bindTexture(); } if(var8 == 2) { - var9 = this.renderer.getTexture("/gui/items.png"); + itemsTexture.bindTexture(); } - GL11.glBindTexture(GL11.GL_TEXTURE_2D, var9); Tessellator var10 = Tessellator.instance; var10.startDrawingQuads(); diff --git a/src/main/java/net/minecraft/src/EntityChicken.java b/src/main/java/net/minecraft/src/EntityChicken.java index 79a0021..9f85d65 100644 --- a/src/main/java/net/minecraft/src/EntityChicken.java +++ b/src/main/java/net/minecraft/src/EntityChicken.java @@ -11,7 +11,6 @@ public class EntityChicken extends EntityAnimal { public EntityChicken(World var1) { super(var1); - this.texture = "/mob/chicken.png"; this.setSize(0.3F, 0.4F); this.health = 4; this.timeUntilNextEgg = this.rand.nextInt(6000) + 6000; diff --git a/src/main/java/net/minecraft/src/EntityCow.java b/src/main/java/net/minecraft/src/EntityCow.java index 87c6cb9..edd1da9 100644 --- a/src/main/java/net/minecraft/src/EntityCow.java +++ b/src/main/java/net/minecraft/src/EntityCow.java @@ -3,7 +3,6 @@ package net.minecraft.src; public class EntityCow extends EntityAnimal { public EntityCow(World var1) { super(var1); - this.texture = "/mob/cow.png"; this.setSize(0.9F, 1.3F); } diff --git a/src/main/java/net/minecraft/src/EntityCreeper.java b/src/main/java/net/minecraft/src/EntityCreeper.java index ab1a4fb..df0a6ab 100644 --- a/src/main/java/net/minecraft/src/EntityCreeper.java +++ b/src/main/java/net/minecraft/src/EntityCreeper.java @@ -6,7 +6,6 @@ public class EntityCreeper extends EntityMob { public EntityCreeper(World var1) { super(var1); - this.texture = "/mob/creeper.png"; } protected void entityInit() { diff --git a/src/main/java/net/minecraft/src/EntityGhast.java b/src/main/java/net/minecraft/src/EntityGhast.java index c2dc9fc..4972ef7 100644 --- a/src/main/java/net/minecraft/src/EntityGhast.java +++ b/src/main/java/net/minecraft/src/EntityGhast.java @@ -12,7 +12,6 @@ public class EntityGhast extends EntityFlying implements IMob { public EntityGhast(World var1) { super(var1); - this.texture = "/mob/ghast.png"; this.setSize(4.0F, 4.0F); this.isImmuneToFire = true; } @@ -25,7 +24,6 @@ public class EntityGhast extends EntityFlying implements IMob { public void onUpdate() { super.onUpdate(); byte var1 = this.dataWatcher.getWatchableObjectByte(16); - this.texture = var1 == 1 ? "/mob/ghast_fire.png" : "/mob/ghast.png"; } protected void updatePlayerActionState() { diff --git a/src/main/java/net/minecraft/src/EntityGiantZombie.java b/src/main/java/net/minecraft/src/EntityGiantZombie.java index 8ed011e..8f19649 100644 --- a/src/main/java/net/minecraft/src/EntityGiantZombie.java +++ b/src/main/java/net/minecraft/src/EntityGiantZombie.java @@ -3,7 +3,6 @@ package net.minecraft.src; public class EntityGiantZombie extends EntityMob { public EntityGiantZombie(World var1) { super(var1); - this.texture = "/mob/zombie.png"; this.moveSpeed = 0.5F; this.attackStrength = 50; this.health *= 10; diff --git a/src/main/java/net/minecraft/src/EntityLiving.java b/src/main/java/net/minecraft/src/EntityLiving.java index f20791c..e32c0ec 100644 --- a/src/main/java/net/minecraft/src/EntityLiving.java +++ b/src/main/java/net/minecraft/src/EntityLiving.java @@ -13,7 +13,6 @@ public abstract class EntityLiving extends Entity { protected float field_9360_w; protected float field_9359_x; protected boolean field_9358_y = true; - protected String texture = "/mob/char.png"; protected boolean field_9355_A = true; protected float field_9353_B = 0.0F; protected String field_9351_C = null; @@ -74,10 +73,6 @@ public abstract class EntityLiving extends Entity { return this.worldObj.rayTraceBlocks(Vec3D.createVector(this.posX, this.posY + (double)this.getEyeHeight(), this.posZ), Vec3D.createVector(var1.posX, var1.posY + (double)var1.getEyeHeight(), var1.posZ)) == null; } - public String getEntityTexture() { - return this.texture; - } - public boolean canBeCollidedWith() { return !this.isDead; } diff --git a/src/main/java/net/minecraft/src/EntityPig.java b/src/main/java/net/minecraft/src/EntityPig.java index 653ebda..45cd17d 100644 --- a/src/main/java/net/minecraft/src/EntityPig.java +++ b/src/main/java/net/minecraft/src/EntityPig.java @@ -3,7 +3,6 @@ package net.minecraft.src; public class EntityPig extends EntityAnimal { public EntityPig(World var1) { super(var1); - this.texture = "/mob/pig.png"; this.setSize(0.9F, 0.9F); } diff --git a/src/main/java/net/minecraft/src/EntityPigZombie.java b/src/main/java/net/minecraft/src/EntityPigZombie.java index 0a1c1de..a80fa5c 100644 --- a/src/main/java/net/minecraft/src/EntityPigZombie.java +++ b/src/main/java/net/minecraft/src/EntityPigZombie.java @@ -9,7 +9,6 @@ public class EntityPigZombie extends EntityZombie { public EntityPigZombie(World var1) { super(var1); - this.texture = "/mob/pigzombie.png"; this.moveSpeed = 0.5F; this.attackStrength = 5; this.isImmuneToFire = true; diff --git a/src/main/java/net/minecraft/src/EntityPlayer.java b/src/main/java/net/minecraft/src/EntityPlayer.java index 0a42dd1..03aa5cc 100644 --- a/src/main/java/net/minecraft/src/EntityPlayer.java +++ b/src/main/java/net/minecraft/src/EntityPlayer.java @@ -48,7 +48,6 @@ public abstract class EntityPlayer extends EntityLiving { this.field_9351_C = "humanoid"; this.field_9353_B = 180.0F; this.fireResistance = 20; - this.texture = "/mob/char.png"; } protected void entityInit() { diff --git a/src/main/java/net/minecraft/src/EntitySheep.java b/src/main/java/net/minecraft/src/EntitySheep.java index cc88840..56fbe57 100644 --- a/src/main/java/net/minecraft/src/EntitySheep.java +++ b/src/main/java/net/minecraft/src/EntitySheep.java @@ -5,7 +5,6 @@ public class EntitySheep extends EntityAnimal { public EntitySheep(World var1) { super(var1); - this.texture = "/mob/sheep.png"; this.setSize(0.9F, 1.3F); } diff --git a/src/main/java/net/minecraft/src/EntitySkeleton.java b/src/main/java/net/minecraft/src/EntitySkeleton.java index 0806016..0210fa0 100644 --- a/src/main/java/net/minecraft/src/EntitySkeleton.java +++ b/src/main/java/net/minecraft/src/EntitySkeleton.java @@ -5,7 +5,6 @@ public class EntitySkeleton extends EntityMob { public EntitySkeleton(World var1) { super(var1); - this.texture = "/mob/skeleton.png"; } protected String getLivingSound() { diff --git a/src/main/java/net/minecraft/src/EntitySlime.java b/src/main/java/net/minecraft/src/EntitySlime.java index 0e81e96..14cc0da 100644 --- a/src/main/java/net/minecraft/src/EntitySlime.java +++ b/src/main/java/net/minecraft/src/EntitySlime.java @@ -7,7 +7,6 @@ public class EntitySlime extends EntityLiving implements IMob { public EntitySlime(World var1) { super(var1); - this.texture = "/mob/slime.png"; int var2 = 1 << this.rand.nextInt(3); this.yOffset = 0.0F; this.slimeJumpDelay = this.rand.nextInt(20) + 10; diff --git a/src/main/java/net/minecraft/src/EntitySpider.java b/src/main/java/net/minecraft/src/EntitySpider.java index 372949e..99f3c33 100644 --- a/src/main/java/net/minecraft/src/EntitySpider.java +++ b/src/main/java/net/minecraft/src/EntitySpider.java @@ -3,7 +3,6 @@ package net.minecraft.src; public class EntitySpider extends EntityMob { public EntitySpider(World var1) { super(var1); - this.texture = "/mob/spider.png"; this.setSize(1.4F, 0.9F); this.moveSpeed = 0.8F; } diff --git a/src/main/java/net/minecraft/src/EntitySquid.java b/src/main/java/net/minecraft/src/EntitySquid.java index 6cbd9d7..1e89da4 100644 --- a/src/main/java/net/minecraft/src/EntitySquid.java +++ b/src/main/java/net/minecraft/src/EntitySquid.java @@ -18,7 +18,6 @@ public class EntitySquid extends EntityWaterMob { public EntitySquid(World var1) { super(var1); - this.texture = "/mob/squid.png"; this.setSize(0.95F, 0.95F); this.field_21080_l = 1.0F / (this.rand.nextFloat() + 1.0F) * 0.2F; } diff --git a/src/main/java/net/minecraft/src/EntityWolf.java b/src/main/java/net/minecraft/src/EntityWolf.java index 805be9e..1a9ccad 100644 --- a/src/main/java/net/minecraft/src/EntityWolf.java +++ b/src/main/java/net/minecraft/src/EntityWolf.java @@ -14,7 +14,6 @@ public class EntityWolf extends EntityAnimal { public EntityWolf(World var1) { super(var1); - this.texture = "/mob/wolf.png"; this.setSize(0.8F, 0.8F); this.moveSpeed = 1.1F; this.health = 8; diff --git a/src/main/java/net/minecraft/src/EntityZombie.java b/src/main/java/net/minecraft/src/EntityZombie.java index 4282d65..29634c1 100644 --- a/src/main/java/net/minecraft/src/EntityZombie.java +++ b/src/main/java/net/minecraft/src/EntityZombie.java @@ -3,7 +3,6 @@ package net.minecraft.src; public class EntityZombie extends EntityMob { public EntityZombie(World var1) { super(var1); - this.texture = "/mob/zombie.png"; this.moveSpeed = 0.5F; this.attackStrength = 5; } diff --git a/src/main/java/net/minecraft/src/GuiButton.java b/src/main/java/net/minecraft/src/GuiButton.java index acfb3b6..ac8ce03 100644 --- a/src/main/java/net/minecraft/src/GuiButton.java +++ b/src/main/java/net/minecraft/src/GuiButton.java @@ -1,9 +1,13 @@ package net.minecraft.src; import net.PeytonPlayz585.opengl.GL11; +import net.PeytonPlayz585.textures.TextureLocation; import net.minecraft.client.Minecraft; public class GuiButton extends Gui { + + private static final TextureLocation buttonsTexture = new TextureLocation("/gui/gui.png"); + protected int width; protected int height; public int xPosition; @@ -44,7 +48,7 @@ public class GuiButton extends Gui { public void drawButton(Minecraft var1, int var2, int var3) { if(this.enabled2) { FontRenderer var4 = var1.fontRenderer; - GL11.glBindTexture(GL11.GL_TEXTURE_2D, var1.renderEngine.getTexture("/gui/gui.png")); + buttonsTexture.bindTexture(); GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); boolean var5 = var2 >= this.xPosition && var3 >= this.yPosition && var2 < this.xPosition + this.width && var3 < this.yPosition + this.height; int var6 = this.getHoverState(var5); diff --git a/src/main/java/net/minecraft/src/GuiChest.java b/src/main/java/net/minecraft/src/GuiChest.java index 3f62832..f7b2c51 100644 --- a/src/main/java/net/minecraft/src/GuiChest.java +++ b/src/main/java/net/minecraft/src/GuiChest.java @@ -1,8 +1,12 @@ package net.minecraft.src; import net.PeytonPlayz585.opengl.GL11; +import net.PeytonPlayz585.textures.TextureLocation; public class GuiChest extends GuiContainer { + + private static final TextureLocation containerTexture = new TextureLocation("/gui/container.png"); + private IInventory upperChestInventory; private IInventory lowerChestInventory; private int inventoryRows = 0; @@ -24,9 +28,8 @@ public class GuiChest extends GuiContainer { } protected void drawGuiContainerBackgroundLayer(float var1) { - int var2 = this.mc.renderEngine.getTexture("/gui/container.png"); GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); - this.mc.renderEngine.bindTexture(var2); + containerTexture.bindTexture(); int var3 = (this.width - this.xSize) / 2; int var4 = (this.height - this.ySize) / 2; this.drawTexturedModalRect(var3, var4, 0, 0, this.xSize, this.inventoryRows * 18 + 17); diff --git a/src/main/java/net/minecraft/src/GuiContainer.java b/src/main/java/net/minecraft/src/GuiContainer.java index 50ef8f9..489be2c 100644 --- a/src/main/java/net/minecraft/src/GuiContainer.java +++ b/src/main/java/net/minecraft/src/GuiContainer.java @@ -3,8 +3,12 @@ package net.minecraft.src; import net.PeytonPlayz585.input.Keyboard; import net.PeytonPlayz585.opengl.GL11; import net.PeytonPlayz585.opengl.GL12; +import net.PeytonPlayz585.textures.TextureLocation; public abstract class GuiContainer extends GuiScreen { + + private static final TextureLocation itemTexture = new TextureLocation("/gui/items.png"); + private static RenderItem itemRenderer = new RenderItem(); protected int xSize = 176; protected int ySize = 166; @@ -93,7 +97,7 @@ public abstract class GuiContainer extends GuiScreen { int var5 = var1.getBackgroundIconIndex(); if(var5 >= 0) { GL11.glDisable(GL11.GL_LIGHTING); - this.mc.renderEngine.bindTexture(this.mc.renderEngine.getTexture("/gui/items.png")); + itemTexture.bindTexture(); this.drawTexturedModalRect(var2, var3, var5 % 16 * 16, var5 / 16 * 16, 16, 16); GL11.glEnable(GL11.GL_LIGHTING); return; diff --git a/src/main/java/net/minecraft/src/GuiCrafting.java b/src/main/java/net/minecraft/src/GuiCrafting.java index 8dc2367..ba344ef 100644 --- a/src/main/java/net/minecraft/src/GuiCrafting.java +++ b/src/main/java/net/minecraft/src/GuiCrafting.java @@ -1,8 +1,12 @@ package net.minecraft.src; import net.PeytonPlayz585.opengl.GL11; +import net.PeytonPlayz585.textures.TextureLocation; public class GuiCrafting extends GuiContainer { + + private static final TextureLocation containerTexture = new TextureLocation("/gui/crafting.png"); + public GuiCrafting(InventoryPlayer var1, World var2, int var3, int var4, int var5) { super(new ContainerWorkbench(var1, var2, var3, var4, var5)); } @@ -18,9 +22,8 @@ public class GuiCrafting extends GuiContainer { } protected void drawGuiContainerBackgroundLayer(float var1) { - int var2 = this.mc.renderEngine.getTexture("/gui/crafting.png"); GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); - this.mc.renderEngine.bindTexture(var2); + containerTexture.bindTexture(); int var3 = (this.width - this.xSize) / 2; int var4 = (this.height - this.ySize) / 2; this.drawTexturedModalRect(var3, var4, 0, 0, this.xSize, this.ySize); diff --git a/src/main/java/net/minecraft/src/GuiDispenser.java b/src/main/java/net/minecraft/src/GuiDispenser.java index e57d877..a002616 100644 --- a/src/main/java/net/minecraft/src/GuiDispenser.java +++ b/src/main/java/net/minecraft/src/GuiDispenser.java @@ -1,8 +1,12 @@ package net.minecraft.src; import net.PeytonPlayz585.opengl.GL11; +import net.PeytonPlayz585.textures.TextureLocation; public class GuiDispenser extends GuiContainer { + + private static final TextureLocation containerTexture = new TextureLocation("/gui/trap.png"); + public GuiDispenser(InventoryPlayer var1, TileEntityDispenser var2) { super(new ContainerDispenser(var1, var2)); } @@ -13,9 +17,8 @@ public class GuiDispenser extends GuiContainer { } protected void drawGuiContainerBackgroundLayer(float var1) { - int var2 = this.mc.renderEngine.getTexture("/gui/trap.png"); GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); - this.mc.renderEngine.bindTexture(var2); + containerTexture.bindTexture(); int var3 = (this.width - this.xSize) / 2; int var4 = (this.height - this.ySize) / 2; this.drawTexturedModalRect(var3, var4, 0, 0, this.xSize, this.ySize); diff --git a/src/main/java/net/minecraft/src/GuiFurnace.java b/src/main/java/net/minecraft/src/GuiFurnace.java index eeb2d5b..d0bc3f6 100644 --- a/src/main/java/net/minecraft/src/GuiFurnace.java +++ b/src/main/java/net/minecraft/src/GuiFurnace.java @@ -1,8 +1,12 @@ package net.minecraft.src; import net.PeytonPlayz585.opengl.GL11; +import net.PeytonPlayz585.textures.TextureLocation; public class GuiFurnace extends GuiContainer { + + private static final TextureLocation containerTexture = new TextureLocation("/gui/furnace.png"); + private TileEntityFurnace furnaceInventory; public GuiFurnace(InventoryPlayer var1, TileEntityFurnace var2) { @@ -16,9 +20,8 @@ public class GuiFurnace extends GuiContainer { } protected void drawGuiContainerBackgroundLayer(float var1) { - int var2 = this.mc.renderEngine.getTexture("/gui/furnace.png"); GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); - this.mc.renderEngine.bindTexture(var2); + containerTexture.bindTexture(); int var3 = (this.width - this.xSize) / 2; int var4 = (this.height - this.ySize) / 2; this.drawTexturedModalRect(var3, var4, 0, 0, this.xSize, this.ySize); diff --git a/src/main/java/net/minecraft/src/GuiIngame.java b/src/main/java/net/minecraft/src/GuiIngame.java index 1c13057..34012d2 100644 --- a/src/main/java/net/minecraft/src/GuiIngame.java +++ b/src/main/java/net/minecraft/src/GuiIngame.java @@ -6,6 +6,7 @@ import java.util.List; import net.PeytonPlayz585.awt.Color; import net.PeytonPlayz585.opengl.GL11; import net.PeytonPlayz585.opengl.GL12; +import net.PeytonPlayz585.textures.TextureLocation; import net.minecraft.client.Minecraft; public class GuiIngame extends Gui { @@ -20,6 +21,12 @@ public class GuiIngame extends Gui { private boolean field_22065_l = false; public float damageGuiPartialTime; float prevVignetteBrightness = 1.0F; + + private static final TextureLocation guiTexture = new TextureLocation("/gui/gui.png"); + private static final TextureLocation iconsTexture = new TextureLocation("/gui/icons.png"); + private static final TextureLocation pumpkinBlur = new TextureLocation("%blur%/misc/pumpkinblur.png"); + private static final TextureLocation vignette = new TextureLocation("%blur%/misc/vignette.png"); + private static final TextureLocation terrainTexture = new TextureLocation("/terrain.png"); public GuiIngame(Minecraft var1) { this.mc = var1; @@ -44,12 +51,12 @@ public class GuiIngame extends Gui { } GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); - GL11.glBindTexture(GL11.GL_TEXTURE_2D, this.mc.renderEngine.getTexture("/gui/gui.png")); + guiTexture.bindTexture(); InventoryPlayer var11 = this.mc.thePlayer.inventory; this.zLevel = -90.0F; this.drawTexturedModalRect(var6 / 2 - 91, var7 - 22, 0, 0, 182, 22); this.drawTexturedModalRect(var6 / 2 - 91 - 1 + var11.currentItem * 20, var7 - 22 - 1, 0, 22, 24, 22); - GL11.glBindTexture(GL11.GL_TEXTURE_2D, this.mc.renderEngine.getTexture("/gui/icons.png")); + iconsTexture.bindTexture(); GL11.glEnable(GL11.GL_BLEND); boolean var12 = this.mc.thePlayer.heartsLife / 3 % 2 == 1; if(this.mc.thePlayer.heartsLife < 10) { @@ -257,7 +264,7 @@ public class GuiIngame extends Gui { GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA); GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); GL11.glDisable(GL11.GL_ALPHA_TEST); - GL11.glBindTexture(GL11.GL_TEXTURE_2D, this.mc.renderEngine.getTexture("%blur%/misc/pumpkinblur.png")); + pumpkinBlur.bindTexture(); Tessellator var3 = Tessellator.instance; var3.startDrawingQuads(); var3.addVertexWithUV(0.0D, (double)var2, -90.0D, 0.0D, 1.0D); @@ -287,7 +294,7 @@ public class GuiIngame extends Gui { GL11.glDepthMask(false); GL11.glBlendFunc(GL11.GL_ZERO, GL11.GL_ONE_MINUS_SRC_COLOR); GL11.glColor4f(this.prevVignetteBrightness, this.prevVignetteBrightness, this.prevVignetteBrightness, 1.0F); - GL11.glBindTexture(GL11.GL_TEXTURE_2D, this.mc.renderEngine.getTexture("%blur%/misc/vignette.png")); + vignette.bindTexture(); Tessellator var4 = Tessellator.instance; var4.startDrawingQuads(); var4.addVertexWithUV(0.0D, (double)var3, -90.0D, 0.0D, 1.0D); @@ -313,7 +320,7 @@ public class GuiIngame extends Gui { GL11.glDepthMask(false); GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA); GL11.glColor4f(1.0F, 1.0F, 1.0F, var1); - GL11.glBindTexture(GL11.GL_TEXTURE_2D, this.mc.renderEngine.getTexture("/terrain.png")); + terrainTexture.bindTexture(); float var4 = (float)(Block.portal.blockIndexInTexture % 16) / 16.0F; float var5 = (float)(Block.portal.blockIndexInTexture / 16) / 16.0F; float var6 = (float)(Block.portal.blockIndexInTexture % 16 + 1) / 16.0F; @@ -400,7 +407,7 @@ public class GuiIngame extends Gui { } public void renderCrossHairs(int w, int h) { - GL11.glBindTexture(GL11.GL_TEXTURE_2D, this.mc.renderEngine.getTexture("/gui/icons.png")); + iconsTexture.bindTexture(); GL11.glEnable(GL11.GL_TEXTURE_2D); GL11.glColor4f(1.0f, 1.0f, 1.0f, 1.0f); GL11.glEnable(GL11.GL_BLEND); diff --git a/src/main/java/net/minecraft/src/GuiInventory.java b/src/main/java/net/minecraft/src/GuiInventory.java index 668ac39..9721f2e 100644 --- a/src/main/java/net/minecraft/src/GuiInventory.java +++ b/src/main/java/net/minecraft/src/GuiInventory.java @@ -2,8 +2,12 @@ package net.minecraft.src; import net.PeytonPlayz585.opengl.GL11; import net.PeytonPlayz585.opengl.GL12; +import net.PeytonPlayz585.textures.TextureLocation; public class GuiInventory extends GuiContainer { + + private static final TextureLocation containerTexture = new TextureLocation("/gui/inventory.png"); + private float xSize_lo; private float ySize_lo; @@ -28,9 +32,8 @@ public class GuiInventory extends GuiContainer { } protected void drawGuiContainerBackgroundLayer(float var1) { - int var2 = this.mc.renderEngine.getTexture("/gui/inventory.png"); GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); - this.mc.renderEngine.bindTexture(var2); + containerTexture.bindTexture(); int var3 = (this.width - this.xSize) / 2; int var4 = (this.height - this.ySize) / 2; this.drawTexturedModalRect(var3, var4, 0, 0, this.xSize, this.ySize); diff --git a/src/main/java/net/minecraft/src/GuiMainMenu.java b/src/main/java/net/minecraft/src/GuiMainMenu.java index d4b22ff..c7d86aa 100644 --- a/src/main/java/net/minecraft/src/GuiMainMenu.java +++ b/src/main/java/net/minecraft/src/GuiMainMenu.java @@ -8,8 +8,12 @@ import java.util.Calendar; import java.util.Date; import net.PeytonPlayz585.opengl.GL11; +import net.PeytonPlayz585.textures.TextureLocation; public class GuiMainMenu extends GuiScreen { + + private static final TextureLocation logoTexture = new TextureLocation("/title/mclogo.png"); + private static final Random rand = new Random(); private float updateCounter = 0.0F; private String splashText = "missingno"; @@ -83,7 +87,7 @@ public class GuiMainMenu extends GuiScreen { short var5 = 274; int var6 = this.width / 2 - var5 / 2; byte var7 = 30; - GL11.glBindTexture(GL11.GL_TEXTURE_2D, this.mc.renderEngine.getTexture("/title/mclogo.png")); + logoTexture.bindTexture(); GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); this.drawTexturedModalRect(var6 + 0, var7 + 0, 0, 0, 155, 44); this.drawTexturedModalRect(var6 + 155, var7 + 0, 0, 45, 155, 44); diff --git a/src/main/java/net/minecraft/src/GuiScreen.java b/src/main/java/net/minecraft/src/GuiScreen.java index 6820021..43e3ad4 100644 --- a/src/main/java/net/minecraft/src/GuiScreen.java +++ b/src/main/java/net/minecraft/src/GuiScreen.java @@ -6,6 +6,7 @@ import java.util.List; import net.PeytonPlayz585.input.Keyboard; import net.PeytonPlayz585.input.Mouse; import net.PeytonPlayz585.opengl.GL11; +import net.PeytonPlayz585.textures.TextureLocation; import net.minecraft.client.Minecraft; public class GuiScreen extends Gui { @@ -17,6 +18,8 @@ public class GuiScreen extends Gui { protected FontRenderer fontRenderer; public GuiParticle field_25091_h; private GuiButton selectedButton = null; + + private static final TextureLocation backgroundTexture = new TextureLocation("/gui/background.png"); public void drawScreen(int var1, int var2, float var3) { for(int var4 = 0; var4 < this.controlList.size(); ++var4) { @@ -137,7 +140,7 @@ public class GuiScreen extends Gui { GL11.glDisable(GL11.GL_LIGHTING); GL11.glDisable(GL11.GL_FOG); Tessellator var2 = Tessellator.instance; - GL11.glBindTexture(GL11.GL_TEXTURE_2D, this.mc.renderEngine.getTexture("/gui/background.png")); + backgroundTexture.bindTexture(); GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); float var3 = 32.0F; var2.startDrawingQuads(); diff --git a/src/main/java/net/minecraft/src/GuiSlot.java b/src/main/java/net/minecraft/src/GuiSlot.java index 0bcac28..0a0da01 100644 --- a/src/main/java/net/minecraft/src/GuiSlot.java +++ b/src/main/java/net/minecraft/src/GuiSlot.java @@ -4,6 +4,7 @@ import java.util.List; import net.PeytonPlayz585.input.Mouse; import net.PeytonPlayz585.opengl.GL11; +import net.PeytonPlayz585.textures.TextureLocation; import net.minecraft.client.Minecraft; public abstract class GuiSlot { @@ -25,6 +26,8 @@ public abstract class GuiSlot { private boolean field_25123_p = true; private boolean field_27262_q; private int field_27261_r; + + private static final TextureLocation backgroundTexture = new TextureLocation("/gui/background.png"); public GuiSlot(Minecraft var1, int var2, int var3, int var4, int var5, int var6) { this.mc = var1; @@ -186,7 +189,7 @@ public abstract class GuiSlot { GL11.glDisable(GL11.GL_LIGHTING); GL11.glDisable(GL11.GL_FOG); Tessellator var16 = Tessellator.instance; - GL11.glBindTexture(GL11.GL_TEXTURE_2D, this.mc.renderEngine.getTexture("/gui/background.png")); + backgroundTexture.bindTexture(); GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); float var17 = 32.0F; var16.startDrawingQuads(); @@ -302,7 +305,7 @@ public abstract class GuiSlot { private void overlayBackground(int var1, int var2, int var3, int var4) { Tessellator var5 = Tessellator.instance; - GL11.glBindTexture(GL11.GL_TEXTURE_2D, this.mc.renderEngine.getTexture("/gui/background.png")); + backgroundTexture.bindTexture(); GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); float var6 = 32.0F; var5.startDrawingQuads(); diff --git a/src/main/java/net/minecraft/src/IsoImageBuffer.java b/src/main/java/net/minecraft/src/IsoImageBuffer.java deleted file mode 100644 index 69a3f64..0000000 --- a/src/main/java/net/minecraft/src/IsoImageBuffer.java +++ /dev/null @@ -1,32 +0,0 @@ -package net.minecraft.src; - -import net.PeytonPlayz585.awt.image.BufferedImage; - -public class IsoImageBuffer { - public BufferedImage field_1348_a; - public World worldObj; - public int field_1354_c; - public int field_1353_d; - public boolean field_1352_e = false; - public boolean field_1351_f = false; - public int field_1350_g = 0; - public boolean field_1349_h = false; - - public IsoImageBuffer(World var1, int var2, int var3) { - this.worldObj = var1; - this.func_889_a(var2, var3); - } - - public void func_889_a(int var1, int var2) { - this.field_1352_e = false; - this.field_1354_c = var1; - this.field_1353_d = var2; - this.field_1350_g = 0; - this.field_1349_h = false; - } - - public void func_888_a(World var1, int var2, int var3) { - this.worldObj = var1; - this.func_889_a(var2, var3); - } -} \ No newline at end of file diff --git a/src/main/java/net/minecraft/src/ItemRenderer.java b/src/main/java/net/minecraft/src/ItemRenderer.java index 4b49f85..b2814ff 100644 --- a/src/main/java/net/minecraft/src/ItemRenderer.java +++ b/src/main/java/net/minecraft/src/ItemRenderer.java @@ -2,9 +2,15 @@ package net.minecraft.src; import net.PeytonPlayz585.opengl.GL11; import net.PeytonPlayz585.opengl.GL12; +import net.PeytonPlayz585.textures.TextureLocation; import net.minecraft.client.Minecraft; public class ItemRenderer { + + private static final TextureLocation terrainTexture = new TextureLocation("/terrain.png"); + private static final TextureLocation itemsTextures = new TextureLocation("/gui/items.png"); + private static final TextureLocation waterTexture = new TextureLocation("/misc/water.png"); + private Minecraft mc; private ItemStack itemToRender = null; private float equippedProgress = 0.0F; @@ -21,13 +27,13 @@ public class ItemRenderer { public void renderItem(EntityLiving var1, ItemStack var2) { GL11.glPushMatrix(); if(var2.itemID < 256 && RenderBlocks.renderItemIn3d(Block.blocksList[var2.itemID].getRenderType())) { - GL11.glBindTexture(GL11.GL_TEXTURE_2D, this.mc.renderEngine.getTexture("/terrain.png")); + terrainTexture.bindTexture(); this.renderBlocksInstance.renderBlockOnInventory(Block.blocksList[var2.itemID], var2.getItemDamage(), var1.getEntityBrightness(1.0F)); } else { if(var2.itemID < 256) { - GL11.glBindTexture(GL11.GL_TEXTURE_2D, this.mc.renderEngine.getTexture("/terrain.png")); + terrainTexture.bindTexture(); } else { - GL11.glBindTexture(GL11.GL_TEXTURE_2D, this.mc.renderEngine.getTexture("/gui/items.png")); + itemsTextures.bindTexture(); } Tessellator var3 = Tessellator.instance; @@ -279,8 +285,7 @@ public class ItemRenderer { GL11.glDisable(GL11.GL_ALPHA_TEST); int var2; if(this.mc.thePlayer.isBurning()) { - var2 = this.mc.renderEngine.getTexture("/terrain.png"); - GL11.glBindTexture(GL11.GL_TEXTURE_2D, var2); + terrainTexture.bindTexture(); this.renderFireInFirstPerson(var1); } @@ -288,8 +293,7 @@ public class ItemRenderer { var2 = MathHelper.floor_double(this.mc.thePlayer.posX); int var3 = MathHelper.floor_double(this.mc.thePlayer.posY); int var4 = MathHelper.floor_double(this.mc.thePlayer.posZ); - int var5 = this.mc.renderEngine.getTexture("/terrain.png"); - GL11.glBindTexture(GL11.GL_TEXTURE_2D, var5); + terrainTexture.bindTexture(); int var6 = this.mc.theWorld.getBlockId(var2, var3, var4); if(this.mc.theWorld.isBlockNormalCube(var2, var3, var4)) { this.renderInsideOfBlock(var1, Block.blocksList[var6].getBlockTextureFromSide(2)); @@ -313,8 +317,7 @@ public class ItemRenderer { } if(this.mc.thePlayer.isInsideOfMaterial(Material.water)) { - var2 = this.mc.renderEngine.getTexture("/misc/water.png"); - GL11.glBindTexture(GL11.GL_TEXTURE_2D, var2); + waterTexture.bindTexture(); this.renderWarpedTextureOverlay(var1); } diff --git a/src/main/java/net/minecraft/src/NetworkManager.java b/src/main/java/net/minecraft/src/NetworkManager.java index 3dd29c3..7339a6a 100644 --- a/src/main/java/net/minecraft/src/NetworkManager.java +++ b/src/main/java/net/minecraft/src/NetworkManager.java @@ -134,9 +134,11 @@ public class NetworkManager { readChunks.add(oldChunkBuffer); } - byte[] packet; - while((packet = this.networkSocket.read()) != null) { - readChunks.add(ByteBuffer.wrap(packet)); + if(this.networkSocket.socketOpen()) { + byte[] packet; + while((packet = this.networkSocket.read()) != null) { + readChunks.add(ByteBuffer.wrap(packet)); + } } if(!readChunks.isEmpty()) { @@ -186,6 +188,7 @@ public class NetworkManager { } private void onNetworkError(Exception var1) { + var1.printStackTrace(); this.networkShutdown("disconnect.genericReason", new Object[]{"Internal exception: " + var1.toString()}); } @@ -198,7 +201,6 @@ public class NetworkManager { try { this.networkSocket.close(); - this.networkSocket = null; } catch (Throwable var4) { } diff --git a/src/main/java/net/minecraft/src/Render.java b/src/main/java/net/minecraft/src/Render.java index 92cced9..4c6d5ef 100644 --- a/src/main/java/net/minecraft/src/Render.java +++ b/src/main/java/net/minecraft/src/Render.java @@ -1,8 +1,13 @@ package net.minecraft.src; import net.PeytonPlayz585.opengl.GL11; +import net.PeytonPlayz585.textures.TextureLocation; public abstract class Render { + + private static final TextureLocation terrainTexture = new TextureLocation("/terrain.png"); + private static final TextureLocation shadowTexture = new TextureLocation("%clamp%/misc/shadow.png"); + protected RenderManager renderManager; private ModelBase modelBase = new ModelBiped(); private RenderBlocks renderBlocks = new RenderBlocks(); @@ -11,21 +16,13 @@ public abstract class Render { public abstract void doRender(Entity var1, double var2, double var4, double var6, float var8, float var9); + @Deprecated protected void loadTexture(String var1) { RenderEngine var2 = this.renderManager.renderEngine; var2.bindTexture(var2.getTexture(var1)); } - protected boolean loadDownloadableImageTexture(String var1, String var2) { - RenderEngine var3 = this.renderManager.renderEngine; - int var4 = var3.getTextureForDownloadableImage(var1, var2); - if(var4 >= 0) { - var3.bindTexture(var4); - return true; - } else { - return false; - } - } + protected abstract boolean loadDownloadableImageTexture(String s, String s1); private void renderEntityOnFire(Entity var1, double var2, double var4, double var6, float var8) { GL11.glDisable(GL11.GL_LIGHTING); @@ -40,7 +37,7 @@ public abstract class Render { GL11.glTranslatef((float)var2, (float)var4, (float)var6); float var16 = var1.width * 1.4F; GL11.glScalef(var16, var16, var16); - this.loadTexture("/terrain.png"); + terrainTexture.bindTexture(); Tessellator var17 = Tessellator.instance; float var18 = 0.5F; float var19 = 0.0F; @@ -92,7 +89,7 @@ public abstract class Render { GL11.glEnable(GL11.GL_BLEND); GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA); RenderEngine var10 = this.renderManager.renderEngine; - var10.bindTexture(var10.getTexture("%clamp%/misc/shadow.png")); + shadowTexture.bindTexture(); World var11 = this.getWorldFromRenderManager(); GL11.glDepthMask(false); float var12 = this.shadowSize; diff --git a/src/main/java/net/minecraft/src/RenderArrow.java b/src/main/java/net/minecraft/src/RenderArrow.java index c8833de..7ebda6d 100644 --- a/src/main/java/net/minecraft/src/RenderArrow.java +++ b/src/main/java/net/minecraft/src/RenderArrow.java @@ -2,11 +2,15 @@ package net.minecraft.src; import net.PeytonPlayz585.opengl.GL11; import net.PeytonPlayz585.opengl.GL12; +import net.PeytonPlayz585.textures.TextureLocation; public class RenderArrow extends Render { + + private static final TextureLocation arrowsTexture = new TextureLocation("/item/arrows.png"); + public void renderArrow(EntityArrow var1, double var2, double var4, double var6, float var8, float var9) { if(var1.prevRotationYaw != 0.0F || var1.prevRotationPitch != 0.0F) { - this.loadTexture("/item/arrows.png"); + arrowsTexture.bindTexture(); GL11.glPushMatrix(); GL11.glTranslatef((float)var2, (float)var4, (float)var6); GL11.glRotatef(var1.prevRotationYaw + (var1.rotationYaw - var1.prevRotationYaw) * var9 - 90.0F, 0.0F, 1.0F, 0.0F); @@ -66,4 +70,9 @@ public class RenderArrow extends Render { public void doRender(Entity var1, double var2, double var4, double var6, float var8, float var9) { this.renderArrow((EntityArrow)var1, var2, var4, var6, var8, var9); } + + @Override + protected boolean loadDownloadableImageTexture(String s, String s1) { + return true; + } } diff --git a/src/main/java/net/minecraft/src/RenderBiped.java b/src/main/java/net/minecraft/src/RenderBiped.java index bf8eb01..586ddf6 100644 --- a/src/main/java/net/minecraft/src/RenderBiped.java +++ b/src/main/java/net/minecraft/src/RenderBiped.java @@ -1,13 +1,17 @@ package net.minecraft.src; import net.PeytonPlayz585.opengl.GL11; +import net.PeytonPlayz585.textures.TextureLocation; public class RenderBiped extends RenderLiving { protected ModelBiped modelBipedMain; + + protected TextureLocation texture; - public RenderBiped(ModelBiped var1, float var2) { + public RenderBiped(ModelBiped var1, float var2, String tex) { super(var1, var2); this.modelBipedMain = var1; + texture = new TextureLocation(tex); } protected void renderEquippedItems(EntityLiving var1, float var2) { @@ -44,4 +48,10 @@ public class RenderBiped extends RenderLiving { } } + + @Override + protected boolean loadDownloadableImageTexture(String s, String s1) { + texture.bindTexture(); + return true; + } } diff --git a/src/main/java/net/minecraft/src/RenderBoat.java b/src/main/java/net/minecraft/src/RenderBoat.java index 0b7261b..b6335f8 100644 --- a/src/main/java/net/minecraft/src/RenderBoat.java +++ b/src/main/java/net/minecraft/src/RenderBoat.java @@ -1,8 +1,13 @@ package net.minecraft.src; import net.PeytonPlayz585.opengl.GL11; +import net.PeytonPlayz585.textures.TextureLocation; public class RenderBoat extends Render { + + private static final TextureLocation terrainTexture = new TextureLocation("/terrain.png"); + private static final TextureLocation boatTexture = new TextureLocation("/item/boat.png"); + protected ModelBase modelBoat; public RenderBoat() { @@ -24,11 +29,11 @@ public class RenderBoat extends Render { GL11.glRotatef(MathHelper.sin(var10) * var10 * var11 / 10.0F * (float)var1.boatRockDirection, 1.0F, 0.0F, 0.0F); } - this.loadTexture("/terrain.png"); + terrainTexture.bindTexture(); float var12 = 12.0F / 16.0F; GL11.glScalef(var12, var12, var12); GL11.glScalef(1.0F / var12, 1.0F / var12, 1.0F / var12); - this.loadTexture("/item/boat.png"); + boatTexture.bindTexture(); GL11.glScalef(-1.0F, -1.0F, 1.0F); this.modelBoat.render(0.0F, 0.0F, -0.1F, 0.0F, 0.0F, 1.0F / 16.0F); GL11.glPopMatrix(); @@ -37,4 +42,9 @@ public class RenderBoat extends Render { public void doRender(Entity var1, double var2, double var4, double var6, float var8, float var9) { this.func_157_a((EntityBoat)var1, var2, var4, var6, var8, var9); } + + @Override + protected boolean loadDownloadableImageTexture(String s, String s1) { + return true; + } } diff --git a/src/main/java/net/minecraft/src/RenderChicken.java b/src/main/java/net/minecraft/src/RenderChicken.java index ef433f5..460f5b0 100644 --- a/src/main/java/net/minecraft/src/RenderChicken.java +++ b/src/main/java/net/minecraft/src/RenderChicken.java @@ -1,5 +1,7 @@ package net.minecraft.src; +import net.PeytonPlayz585.textures.TextureLocation; + public class RenderChicken extends RenderLiving { public RenderChicken(ModelBase var1, float var2) { super(var1, var2); @@ -26,4 +28,12 @@ public class RenderChicken extends RenderLiving { public void doRender(Entity var1, double var2, double var4, double var6, float var8, float var9) { this.renderChicken((EntityChicken)var1, var2, var4, var6, var8, var9); } + + private static final TextureLocation texture = new TextureLocation("/mob/chicken.png"); + + @Override + protected boolean loadDownloadableImageTexture(String s, String s1) { + texture.bindTexture(); + return true; + } } diff --git a/src/main/java/net/minecraft/src/RenderCow.java b/src/main/java/net/minecraft/src/RenderCow.java index ea624f9..5a25df9 100644 --- a/src/main/java/net/minecraft/src/RenderCow.java +++ b/src/main/java/net/minecraft/src/RenderCow.java @@ -1,5 +1,7 @@ package net.minecraft.src; +import net.PeytonPlayz585.textures.TextureLocation; + public class RenderCow extends RenderLiving { public RenderCow(ModelBase var1, float var2) { super(var1, var2); @@ -16,4 +18,12 @@ public class RenderCow extends RenderLiving { public void doRender(Entity var1, double var2, double var4, double var6, float var8, float var9) { this.renderCow((EntityCow)var1, var2, var4, var6, var8, var9); } + + private static final TextureLocation texture = new TextureLocation("/mob/cow.png"); + + @Override + protected boolean loadDownloadableImageTexture(String s, String s1) { + texture.bindTexture(); + return true; + } } diff --git a/src/main/java/net/minecraft/src/RenderCreeper.java b/src/main/java/net/minecraft/src/RenderCreeper.java index df27774..9405603 100644 --- a/src/main/java/net/minecraft/src/RenderCreeper.java +++ b/src/main/java/net/minecraft/src/RenderCreeper.java @@ -1,6 +1,7 @@ package net.minecraft.src; import net.PeytonPlayz585.opengl.GL11; +import net.PeytonPlayz585.textures.TextureLocation; public class RenderCreeper extends RenderLiving { private ModelBase field_27008_a = new ModelCreeper(2.0F); @@ -99,4 +100,12 @@ public class RenderCreeper extends RenderLiving { protected boolean func_27005_b(EntityLiving var1, int var2, float var3) { return this.func_27007_b((EntityCreeper)var1, var2, var3); } + + private static final TextureLocation texture = new TextureLocation("/mob/creeper.png"); + + @Override + protected boolean loadDownloadableImageTexture(String s, String s1) { + texture.bindTexture(); + return true; + } } diff --git a/src/main/java/net/minecraft/src/RenderEngine.java b/src/main/java/net/minecraft/src/RenderEngine.java index 966a0ba..29d26de 100644 --- a/src/main/java/net/minecraft/src/RenderEngine.java +++ b/src/main/java/net/minecraft/src/RenderEngine.java @@ -13,7 +13,9 @@ import java.util.Map; import net.PeytonPlayz585.awt.image.BufferedImage; import net.PeytonPlayz585.opengl.GL11; +import net.PeytonPlayz585.profile.Profile; import net.lax1dude.eaglercraft.SpriteSheetTexture; +import net.minecraft.client.Minecraft; public class RenderEngine { public static boolean useMipmaps = false; @@ -21,7 +23,6 @@ public class RenderEngine { private HashMap field_28151_c = new HashMap(); private HashMap textureNameToImageMap = new HashMap(); private IntBuffer singleIntBuffer = GLAllocation.createDirectIntBuffer(1); - private ByteBuffer imageData = GLAllocation.createDirectByteBuffer(4194304 * 2); //Large enough (Maybe!?!?) private List textureList = new ArrayList(); private GameSettings options; private boolean clampTexture = false; @@ -29,7 +30,8 @@ public class RenderEngine { private List textureSpriteList = new ArrayList(); private TexturePackList texturePack; private BufferedImage missingTextureImage; - private IntBuffer imageDataB1 = GLAllocation.createDirectIntBuffer(4194304 * 2); //:> !?!?!?!? + private ByteBuffer imageDataB1 = GLAllocation.createDirectByteBuffer(4194304 * 2); + private ByteBuffer imageDataB2 = GLAllocation.createDirectByteBuffer(4194304 * 2); private int textureWidth; public RenderEngine(TexturePackList var1, GameSettings var2) { @@ -51,58 +53,7 @@ public class RenderEngine { textureWidth = 16; } } - - public int[] func_28149_a(String var1) { - TexturePackBase var2 = this.texturePack.selectedTexturePack; - int[] var3 = (int[])this.field_28151_c.get(var1); - if(var3 != null) { - return var3; - } else { - try { - Object var6 = null; - if(var1.startsWith("%clamp%")) { - this.clampTexture = true; - var3 = this.func_28148_b(this.readTextureImage(var2.getResourceAsStream(var1.substring(7)))); - this.clampTexture = false; - } else if(var1.startsWith("%blur%")) { - this.blurTexture = true; - var3 = this.func_28148_b(this.readTextureImage(var2.getResourceAsStream(var1.substring(6)))); - this.blurTexture = false; - } else { - InputStream var7 = var2.getResourceAsStream(var1); - if(var7 == null) { - var3 = this.func_28148_b(this.missingTextureImage); - } else { - var3 = this.func_28148_b(this.readTextureImage(var7)); - } - } - - this.field_28151_c.put(var1, var3); - return var3; - } catch (IOException var5) { - var5.printStackTrace(); - int[] var4 = this.func_28148_b(this.missingTextureImage); - this.field_28151_c.put(var1, var4); - return var4; - } - } - } - - private int[] func_28148_b(BufferedImage var1) { - int var2 = var1.getWidth(); - int var3 = var1.getHeight(); - int[] var4 = new int[var2 * var3]; - var1.getRGB(0, 0, var2, var3, var4, 0, var2); - return var4; - } - - private int[] func_28147_a(BufferedImage var1, int[] var2) { - int var3 = var1.getWidth(); - int var4 = var1.getHeight(); - var1.getRGB(0, 0, var3, var4, var2, 0, var3); - return var2; - } - + public int getTexture(String var1) { TexturePackBase var2 = this.texturePack.selectedTexturePack; Integer var3 = (Integer)this.textureMap.get(var1); @@ -122,12 +73,16 @@ public class RenderEngine { this.setupTexture(this.readTextureImage(var2.getResourceAsStream(var1.substring(6))), var6); this.blurTexture = false; } else { + if(var1.equals("/terrain.png")) { + useMipmaps = true; + } InputStream var7 = var2.getResourceAsStream(var1); if(var7 == null) { this.setupTexture(this.missingTextureImage, var6); } else { this.setupTexture(this.readTextureImage(var7), var6); } + useMipmaps = false; } this.textureMap.put(var1, Integer.valueOf(var6)); @@ -151,91 +106,98 @@ public class RenderEngine { this.textureNameToImageMap.put(Integer.valueOf(var2), var1); return var2; } - - public void setupTexture(BufferedImage var1, int var2) { - GL11.glBindTexture(GL11.GL_TEXTURE_2D, var2); - if(useMipmaps) { - GL11.glTexParameteri(GL11.GL_TEXTURE_2D, GL11.GL_TEXTURE_MIN_FILTER, GL11.GL_NEAREST_MIPMAP_LINEAR); - GL11.glTexParameteri(GL11.GL_TEXTURE_2D, GL11.GL_TEXTURE_MAG_FILTER, GL11.GL_NEAREST); - } else { - GL11.glTexParameteri(GL11.GL_TEXTURE_2D, GL11.GL_TEXTURE_MIN_FILTER, GL11.GL_NEAREST); - GL11.glTexParameteri(GL11.GL_TEXTURE_2D, GL11.GL_TEXTURE_MAG_FILTER, GL11.GL_NEAREST); - } - - if(this.blurTexture) { - GL11.glTexParameteri(GL11.GL_TEXTURE_2D, GL11.GL_TEXTURE_MIN_FILTER, GL11.GL_LINEAR); - GL11.glTexParameteri(GL11.GL_TEXTURE_2D, GL11.GL_TEXTURE_MAG_FILTER, GL11.GL_LINEAR); - } - - if(this.clampTexture) { - GL11.glTexParameteri(GL11.GL_TEXTURE_2D, GL11.GL_TEXTURE_WRAP_S, GL11.GL_CLAMP); - GL11.glTexParameteri(GL11.GL_TEXTURE_2D, GL11.GL_TEXTURE_WRAP_T, GL11.GL_CLAMP); - } else { - GL11.glTexParameteri(GL11.GL_TEXTURE_2D, GL11.GL_TEXTURE_WRAP_S, GL11.GL_REPEAT); - GL11.glTexParameteri(GL11.GL_TEXTURE_2D, GL11.GL_TEXTURE_WRAP_T, GL11.GL_REPEAT); - } - - int var3 = var1.getWidth(); - int var4 = var1.getHeight(); - int[] var5 = new int[var3 * var4]; - byte[] var6 = new byte[var3 * var4 * 4]; - var1.getRGB(0, 0, var3, var4, var5, 0, var3); - - int var7; - int var8; - int var9; - int var10; - int var11; - int var12; - int var13; - int var14; - for(var7 = 0; var7 < var5.length; ++var7) { - var8 = var5[var7] >> 24 & 255; - var9 = var5[var7] >> 16 & 255; - var10 = var5[var7] >> 8 & 255; - var11 = var5[var7] & 255; - if(this.options != null && this.options.anaglyph) { - var12 = (var9 * 30 + var10 * 59 + var11 * 11) / 100; - var13 = (var9 * 30 + var10 * 70) / 100; - var14 = (var9 * 30 + var11 * 70) / 100; - var9 = var12; - var10 = var13; - var11 = var14; - } - - var6[var7 * 4 + 0] = (byte)var9; - var6[var7 * 4 + 1] = (byte)var10; - var6[var7 * 4 + 2] = (byte)var11; - var6[var7 * 4 + 3] = (byte)var8; - } - - this.imageData.clear(); - this.imageData.put(var6); - this.imageData.position(0).limit(var6.length); - GL11.glTexImage2D(GL11.GL_TEXTURE_2D, 0, GL11.GL_RGBA, var3, var4, 0, GL11.GL_RGBA, GL11.GL_UNSIGNED_BYTE, (ByteBuffer)this.imageData); - if(useMipmaps) { - for(var7 = 1; var7 <= 4; ++var7) { - var8 = var3 >> var7 - 1; - var9 = var3 >> var7; - var10 = var4 >> var7; - - for(var11 = 0; var11 < var9; ++var11) { - for(var12 = 0; var12 < var10; ++var12) { - var13 = this.imageData.getInt((var11 * 2 + 0 + (var12 * 2 + 0) * var8) * 4); - var14 = this.imageData.getInt((var11 * 2 + 1 + (var12 * 2 + 0) * var8) * 4); - int var15 = this.imageData.getInt((var11 * 2 + 1 + (var12 * 2 + 1) * var8) * 4); - int var16 = this.imageData.getInt((var11 * 2 + 0 + (var12 * 2 + 1) * var8) * 4); - int var17 = this.weightedAverageColor(this.weightedAverageColor(var13, var14), this.weightedAverageColor(var15, var16)); - this.imageData.putInt((var11 + var12 * var9) * 4, var17); - } - } - - GL11.glTexImage2D(GL11.GL_TEXTURE_2D, var7, GL11.GL_RGBA, var9, var10, 0, GL11.GL_RGBA, GL11.GL_UNSIGNED_BYTE, (ByteBuffer)this.imageData); - } - } - + + public int allocateAndSetupTexture(byte[] data, int w, int h) { + int i = GL11.glGenTextures(); + bindTexture(i); + GL11.glTexParameteri(3553 /* GL_TEXTURE_2D */, 10241 /* GL_TEXTURE_MIN_FILTER */, 9729 /* GL_LINEAR */); + GL11.glTexParameteri(3553 /* GL_TEXTURE_2D */, 10240 /* GL_TEXTURE_MAG_FILTER */, 9728 /* GL_NEAREST */); + GL11.glTexParameteri(3553 /* GL_TEXTURE_2D */, 10242 /* GL_TEXTURE_WRAP_S */, 10497 /* GL_REPEAT */); + GL11.glTexParameteri(3553 /* GL_TEXTURE_2D */, 10243 /* GL_TEXTURE_WRAP_T */, 10497 /* GL_REPEAT */); + imageDataB1.clear(); + imageDataB1.put(data); + imageDataB1.position(0).limit(data.length); + GL11.glTexImage2D(3553 /* GL_TEXTURE_2D */, 0, 6408 /* GL_RGBA */, w, h, 0, 6408 /* GL_RGBA */, + 5121 /* GL_UNSIGNED_BYTE */, imageDataB1); + return i; } + public void setupTexture(BufferedImage var1, int var2) { + bindTexture(var2); + if (useMipmaps) { + GL11.glTexParameteri(3553 /* GL_TEXTURE_2D */, 10241 /* GL_TEXTURE_MIN_FILTER */, GL11.GL_NEAREST_MIPMAP_LINEAR); + GL11.glTexParameteri(3553 /* GL_TEXTURE_2D */, 10240 /* GL_TEXTURE_MAG_FILTER */, GL11.GL_NEAREST /* GL_LINEAR */); + GL11.glTexParameteri(3553 /* GL_TEXTURE_2D */, GL11.GL_TEXTURE_MAX_LEVEL, 4); + } else { + GL11.glTexParameteri(3553 /* GL_TEXTURE_2D */, 10241 /* GL_TEXTURE_MIN_FILTER */, 9728 /* GL_NEAREST */); + GL11.glTexParameteri(3553 /* GL_TEXTURE_2D */, 10240 /* GL_TEXTURE_MAG_FILTER */, 9728 /* GL_NEAREST */); + } + if (blurTexture) { + GL11.glTexParameteri(3553 /* GL_TEXTURE_2D */, 10241 /* GL_TEXTURE_MIN_FILTER */, 9729 /* GL_LINEAR */); + GL11.glTexParameteri(3553 /* GL_TEXTURE_2D */, 10240 /* GL_TEXTURE_MAG_FILTER */, 9729 /* GL_LINEAR */); + } + if (clampTexture) { + GL11.glTexParameteri(3553 /* GL_TEXTURE_2D */, 10242 /* GL_TEXTURE_WRAP_S */, 10496 /* GL_CLAMP */); + GL11.glTexParameteri(3553 /* GL_TEXTURE_2D */, 10243 /* GL_TEXTURE_WRAP_T */, 10496 /* GL_CLAMP */); + } else { + GL11.glTexParameteri(3553 /* GL_TEXTURE_2D */, 10242 /* GL_TEXTURE_WRAP_S */, 10497 /* GL_REPEAT */); + GL11.glTexParameteri(3553 /* GL_TEXTURE_2D */, 10243 /* GL_TEXTURE_WRAP_T */, 10497 /* GL_REPEAT */); + } + int j = var1.getWidth(); + int k = var1.getHeight(); + int ai[] = var1.getData(); + byte abyte0[] = new byte[j * k * 4]; + for (int l = 0; l < ai.length; l++) { + int j1 = ai[l] >> 24 & 0xff; + int l1 = ai[l] >> 16 & 0xff; + int j2 = ai[l] >> 8 & 0xff; + int l2 = ai[l] >> 0 & 0xff; + if (options != null && options.anaglyph) { + int j3 = (l1 * 30 + j2 * 59 + l2 * 11) / 100; + int l3 = (l1 * 30 + j2 * 70) / 100; + int j4 = (l1 * 30 + l2 * 70) / 100; + l1 = j3; + j2 = l3; + l2 = j4; + } + abyte0[l * 4 + 0] = (byte) l1; + abyte0[l * 4 + 1] = (byte) j2; + abyte0[l * 4 + 2] = (byte) l2; + abyte0[l * 4 + 3] = (byte) j1; + } + imageDataB1.clear(); + imageDataB1.put(abyte0); + imageDataB1.position(0).limit(abyte0.length); + GL11.glTexImage2D(3553 /* GL_TEXTURE_2D */, 0, 6408 /* GL_RGBA */, j, k, 0, 6408 /* GL_RGBA */, + 5121 /* GL_UNSIGNED_BYTE */, imageDataB1); + if (useMipmaps) { + for (int i1 = 1; i1 <= 4; i1++) { + int k1 = j >> i1 - 1; + int i2 = j >> i1; + int k2 = k >> i1; + imageDataB2.clear(); + for (int i3 = 0; i3 < i2; i3++) { + for (int k3 = 0; k3 < k2; k3++) { + int i4 = imageDataB1.getInt((i3 * 2 + 0 + (k3 * 2 + 0) * k1) * 4); + int k4 = imageDataB1.getInt((i3 * 2 + 1 + (k3 * 2 + 0) * k1) * 4); + int l4 = imageDataB1.getInt((i3 * 2 + 1 + (k3 * 2 + 1) * k1) * 4); + int i5 = imageDataB1.getInt((i3 * 2 + 0 + (k3 * 2 + 1) * k1) * 4); + int j5 = averageColor(averageColor(i4, k4), averageColor(l4, i5)); + imageDataB2.putInt((i3 + k3 * i2) * 4, j5); + } + + } + + GL11.glTexImage2D(3553 /* GL_TEXTURE_2D */, i1, 6408 /* GL_RGBA */, i2, k2, 0, 6408 /* GL_RGBA */, + 5121 /* GL_UNSIGNED_BYTE */, imageDataB2); + ByteBuffer tmp = imageDataB1; + imageDataB1 = imageDataB2; + imageDataB2 = tmp; + } + + } + } + public void func_28150_a(int[] var1, int var2, int var3, int var4) { GL11.glBindTexture(GL11.GL_TEXTURE_2D, var4); if(useMipmaps) { @@ -281,69 +243,98 @@ public class RenderEngine { var5[var6 * 4 + 3] = (byte)var7; } - this.imageData.clear(); - this.imageData.put(var5); - this.imageData.position(0).limit(var5.length); - GL11.glTexSubImage2D(GL11.GL_TEXTURE_2D, 0, 0, 0, var2, var3, GL11.GL_RGBA, GL11.GL_UNSIGNED_BYTE, (ByteBuffer)this.imageData); + this.imageDataB1.clear(); + this.imageDataB1.put(var5); + this.imageDataB1.position(0).limit(var5.length); + GL11.glTexSubImage2D(GL11.GL_TEXTURE_2D, 0, 0, 0, var2, var3, GL11.GL_RGBA, GL11.GL_UNSIGNED_BYTE, (ByteBuffer)this.imageDataB1); + } + + public int[] func_28149_a(String var1) { + TexturePackBase var2 = this.texturePack.selectedTexturePack; + int[] var3 = (int[])this.field_28151_c.get(var1); + if(var3 != null) { + return var3; + } else { + try { + Object var6 = null; + if(var1.startsWith("%clamp%")) { + this.clampTexture = true; + var3 = this.func_28148_b(this.readTextureImage(var2.getResourceAsStream(var1.substring(7)))); + this.clampTexture = false; + } else if(var1.startsWith("%blur%")) { + this.blurTexture = true; + var3 = this.func_28148_b(this.readTextureImage(var2.getResourceAsStream(var1.substring(6)))); + this.blurTexture = false; + } else { + InputStream var7 = var2.getResourceAsStream(var1); + if(var7 == null) { + var3 = this.func_28148_b(this.missingTextureImage); + } else { + var3 = this.func_28148_b(this.readTextureImage(var7)); + } + } + + this.field_28151_c.put(var1, var3); + return var3; + } catch (IOException var5) { + var5.printStackTrace(); + int[] var4 = this.func_28148_b(this.missingTextureImage); + this.field_28151_c.put(var1, var4); + return var4; + } + } + } + + private int[] func_28148_b(BufferedImage var1) { + int var2 = var1.getWidth(); + int var3 = var1.getHeight(); + int[] var4 = new int[var2 * var3]; + var1.getRGB(0, 0, var2, var3, var4, 0, var2); + return var4; } public void deleteTexture(int var1) { - this.textureNameToImageMap.remove(Integer.valueOf(var1)); - this.singleIntBuffer.clear(); - this.singleIntBuffer.put(var1); - this.singleIntBuffer.flip(); GL11.glDeleteTextures(var1); } + + public int getTextureForDownloadableImage(String s, String s1) { + if(Minecraft.getMinecraft().theWorld.multiplayerWorld) { + return getTexture("/mob/char.png"); + } else { + return Profile.defaultOptionsTextures[Profile.presetSkinId].getTexturePointer(); + } + } public void registerTextureFX(TextureFX var1) { this.textureList.add(var1); var1.onTick(); } -// public void updateDynamicTextures() { -// for (int i = 0; i < textureList.size(); i++) { -// TextureFX texturefx = (TextureFX) textureList.get(i); -// texturefx.anaglyphEnabled = this.options.anaglyph; -// texturefx.onTick(); -// texturefx.bindImage(this); -// int tileSize = 16 * 16 * 4; -// imageData.clear(); -// imageData.put(texturefx.imageData); -// imageData.position(0).limit(tileSize); -// GL11.glTexSubImage2D(3553, 0, (texturefx.iconIndex % 16) * 16, (texturefx.iconIndex / 16) * 16, 16, 16, 6408, 5121, imageData); -// } -// } - public void updateDynamicTextures() { - for (int i = 0; i < textureList.size(); i++) { TextureFX texturefx = (TextureFX) textureList.get(i); - texturefx.anaglyphEnabled = this.options.anaglyph; + texturefx.anaglyphEnabled = options.anaglyph; texturefx.onTick(); texturefx.bindImage(this); int tileSize = 16 * 16 * 4; - imageData.clear(); - imageData.put(texturefx.imageData); - imageData.position(0).limit(tileSize); - GL11.glTexSubImage2D(3553, 0, (texturefx.iconIndex % this.textureWidth) * 16, (texturefx.iconIndex / this.textureWidth) * 16, 16, 16, 6408, 5121, imageData); + imageDataB1.clear(); + imageDataB1.put(texturefx.imageData); + imageDataB1.position(0).limit(tileSize); + GL11.glTexSubImage2D(3553 /* GL_TEXTURE_2D */, 0, (texturefx.iconIndex % this.textureWidth) * 16, (texturefx.iconIndex / this.textureWidth) * 16, 16, 16, + 6408 /* GL_RGBA */, 5121 /* GL_UNSIGNED_BYTE */, imageDataB1); } - - GL11.glBindTexture(GL11.GL_TEXTURE_2D, getTexture("/terrain.png")); + + TextureFX.terrainTexture.bindTexture(); for(int i = 0, l = textureSpriteList.size(); i < l; ++i) { SpriteSheetTexture sp = textureSpriteList.get(i); sp.update(); int w = 16; - int tileSize = (w * sp.iconTileSize) * (w * sp.iconTileSize) * 4; - //for(int j = 0; j < 5; ++j) { - imageDataB1.clear(); - imageDataB1.put(sp.grabFrame(0)); - imageDataB1.position(0).limit(tileSize); - GL11.glTexSubImage2D(3553, 0, (sp.iconIndex % this.textureWidth) * w, (sp.iconIndex / this.textureWidth) * w, w * sp.iconTileSize, w * sp.iconTileSize, - 6408, 5121, imageDataB1); + for(int j = 0; j < 5; ++j) { + GL11.glTexSubImage2D(3553 /* GL_TEXTURE_2D */, j, (sp.iconIndex % this.textureWidth) * w, (sp.iconIndex / this.textureWidth) * w, w * sp.iconTileSize, w * sp.iconTileSize, + 6408 /* GL_RGBA */, 5121 /* GL_UNSIGNED_BYTE */, sp.grabFrame(j)); w /= 2; - //} + } } - } public void registerSpriteSheet(String name, int iconIndex, int iconTileSize) { @@ -356,28 +347,6 @@ public class RenderEngine { return (var3 + var4 >> 1 << 24) + ((var1 & 16711422) + (var2 & 16711422) >> 1); } - private int weightedAverageColor(int var1, int var2) { - int var3 = (var1 & -16777216) >> 24 & 255; - int var4 = (var2 & -16777216) >> 24 & 255; - short var5 = 255; - if(var3 + var4 == 0) { - var3 = 1; - var4 = 1; - var5 = 0; - } - - int var6 = (var1 >> 16 & 255) * var3; - int var7 = (var1 >> 8 & 255) * var3; - int var8 = (var1 & 255) * var3; - int var9 = (var2 >> 16 & 255) * var4; - int var10 = (var2 >> 8 & 255) * var4; - int var11 = (var2 & 255) * var4; - int var12 = (var6 + var9) / (var3 + var4); - int var13 = (var7 + var10) / (var3 + var4); - int var14 = (var8 + var11) / (var3 + var4); - return var5 << 24 | var12 << 16 | var13 << 8 | var14; - } - public void refreshTextures() { TexturePackBase var1 = this.texturePack.selectedTexturePack; Iterator var2 = this.textureNameToImageMap.keySet().iterator(); @@ -431,7 +400,8 @@ public class RenderEngine { var4 = this.readTextureImage(var1.getResourceAsStream(var9)); } - this.func_28147_a(var4, (int[])this.field_28151_c.get(var9)); + int j = ((Integer) textureMap.get(var9)).intValue(); + setupTexture(var4, j); this.blurTexture = false; this.clampTexture = false; } catch (IOException var6) { @@ -459,14 +429,12 @@ public class RenderEngine { return GL11.EaglerAdapterImpl2.loadPNG(((ByteArrayInputStream)var1).readAllBytes()); } - public void bindTexture(int var1) { - if(var1 >= 0) { - GL11.glBindTexture(GL11.GL_TEXTURE_2D, var1); + public void bindTexture(int i) { + if (i < 0) { + return; + } else { + GL11.glBindTexture(3553, i); + return; } } - - public int getTextureForDownloadableImage(String skinUrl, String entityTexture) { - int i = this.getTexture(entityTexture); - return i; - } } diff --git a/src/main/java/net/minecraft/src/RenderEntity.java b/src/main/java/net/minecraft/src/RenderEntity.java index d9d146a..aa2e401 100644 --- a/src/main/java/net/minecraft/src/RenderEntity.java +++ b/src/main/java/net/minecraft/src/RenderEntity.java @@ -8,4 +8,9 @@ public class RenderEntity extends Render { renderOffsetAABB(var1.boundingBox, var2 - var1.lastTickPosX, var4 - var1.lastTickPosY, var6 - var1.lastTickPosZ); GL11.glPopMatrix(); } + + @Override + protected boolean loadDownloadableImageTexture(String s, String s1) { + return true; + } } diff --git a/src/main/java/net/minecraft/src/RenderFallingSand.java b/src/main/java/net/minecraft/src/RenderFallingSand.java index 956b7fa..f2ee9e0 100644 --- a/src/main/java/net/minecraft/src/RenderFallingSand.java +++ b/src/main/java/net/minecraft/src/RenderFallingSand.java @@ -1,9 +1,12 @@ package net.minecraft.src; import net.PeytonPlayz585.opengl.GL11; +import net.PeytonPlayz585.textures.TextureLocation; public class RenderFallingSand extends Render { private RenderBlocks field_197_d = new RenderBlocks(); + + private static final TextureLocation terrainTexture = new TextureLocation("/terrain.png"); public RenderFallingSand() { this.shadowSize = 0.5F; @@ -12,7 +15,7 @@ public class RenderFallingSand extends Render { public void doRenderFallingSand(EntityFallingSand var1, double var2, double var4, double var6, float var8, float var9) { GL11.glPushMatrix(); GL11.glTranslatef((float)var2, (float)var4, (float)var6); - this.loadTexture("/terrain.png"); + terrainTexture.bindTexture(); Block var10 = Block.blocksList[var1.blockID]; World var11 = var1.getWorld(); GL11.glDisable(GL11.GL_LIGHTING); @@ -24,4 +27,9 @@ public class RenderFallingSand extends Render { public void doRender(Entity var1, double var2, double var4, double var6, float var8, float var9) { this.doRenderFallingSand((EntityFallingSand)var1, var2, var4, var6, var8, var9); } + + @Override + protected boolean loadDownloadableImageTexture(String s, String s1) { + return true; + } } diff --git a/src/main/java/net/minecraft/src/RenderFireball.java b/src/main/java/net/minecraft/src/RenderFireball.java index 4aa7d0e..c4d9ac1 100644 --- a/src/main/java/net/minecraft/src/RenderFireball.java +++ b/src/main/java/net/minecraft/src/RenderFireball.java @@ -2,8 +2,12 @@ package net.minecraft.src; import net.PeytonPlayz585.opengl.GL11; import net.PeytonPlayz585.opengl.GL12; +import net.PeytonPlayz585.textures.TextureLocation; public class RenderFireball extends Render { + + private static final TextureLocation itemsTexture = new TextureLocation("/gui/items.png"); + public void func_4012_a(EntityFireball var1, double var2, double var4, double var6, float var8, float var9) { GL11.glPushMatrix(); GL11.glTranslatef((float)var2, (float)var4, (float)var6); @@ -11,7 +15,7 @@ public class RenderFireball extends Render { float var10 = 2.0F; GL11.glScalef(var10 / 1.0F, var10 / 1.0F, var10 / 1.0F); int var11 = Item.snowball.getIconFromDamage(0); - this.loadTexture("/gui/items.png"); + itemsTexture.bindTexture(); Tessellator var12 = Tessellator.instance; float var13 = (float)(var11 % 16 * 16 + 0) / 256.0F; float var14 = (float)(var11 % 16 * 16 + 16) / 256.0F; @@ -36,4 +40,9 @@ public class RenderFireball extends Render { public void doRender(Entity var1, double var2, double var4, double var6, float var8, float var9) { this.func_4012_a((EntityFireball)var1, var2, var4, var6, var8, var9); } + + @Override + protected boolean loadDownloadableImageTexture(String s, String s1) { + return true; + } } diff --git a/src/main/java/net/minecraft/src/RenderFish.java b/src/main/java/net/minecraft/src/RenderFish.java index deeafe2..6ea7a8d 100644 --- a/src/main/java/net/minecraft/src/RenderFish.java +++ b/src/main/java/net/minecraft/src/RenderFish.java @@ -2,8 +2,12 @@ package net.minecraft.src; import net.PeytonPlayz585.opengl.GL11; import net.PeytonPlayz585.opengl.GL12; +import net.PeytonPlayz585.textures.TextureLocation; public class RenderFish extends Render { + + private static final TextureLocation particlesTexture = new TextureLocation("/particles.png"); + public void func_4011_a(EntityFish var1, double var2, double var4, double var6, float var8, float var9) { GL11.glPushMatrix(); GL11.glTranslatef((float)var2, (float)var4, (float)var6); @@ -11,7 +15,7 @@ public class RenderFish extends Render { GL11.glScalef(0.5F, 0.5F, 0.5F); byte var10 = 1; byte var11 = 2; - this.loadTexture("/particles.png"); + particlesTexture.bindTexture(); Tessellator var12 = Tessellator.instance; float var13 = (float)(var10 * 8 + 0) / 128.0F; float var14 = (float)(var10 * 8 + 8) / 128.0F; @@ -81,4 +85,9 @@ public class RenderFish extends Render { public void doRender(Entity var1, double var2, double var4, double var6, float var8, float var9) { this.func_4011_a((EntityFish)var1, var2, var4, var6, var8, var9); } + + @Override + protected boolean loadDownloadableImageTexture(String s, String s1) { + return true; + } } diff --git a/src/main/java/net/minecraft/src/RenderGhast.java b/src/main/java/net/minecraft/src/RenderGhast.java index 661d3ec..a7f34d7 100644 --- a/src/main/java/net/minecraft/src/RenderGhast.java +++ b/src/main/java/net/minecraft/src/RenderGhast.java @@ -1,14 +1,24 @@ package net.minecraft.src; import net.PeytonPlayz585.opengl.GL11; +import net.PeytonPlayz585.textures.TextureLocation; public class RenderGhast extends RenderLiving { + + private static final TextureLocation ghastTexture = new TextureLocation("/mob/ghast.png"); + private static final TextureLocation ghastFireTexture = new TextureLocation("/mob/ghast_fire.png"); + public RenderGhast() { super(new ModelGhast(), 0.5F); } protected void func_4014_a(EntityGhast var1, float var2) { float var4 = ((float)var1.prevAttackCounter + (float)(var1.attackCounter - var1.prevAttackCounter) * var2) / 20.0F; + if(var4 <= 10) { + ghastTexture.bindTexture(); + }else { + ghastFireTexture.bindTexture(); + } if(var4 < 0.0F) { var4 = 0.0F; } @@ -23,4 +33,9 @@ public class RenderGhast extends RenderLiving { protected void preRenderCallback(EntityLiving var1, float var2) { this.func_4014_a((EntityGhast)var1, var2); } + + @Override + protected boolean loadDownloadableImageTexture(String s, String s1) { + return true; + } } diff --git a/src/main/java/net/minecraft/src/RenderGiantZombie.java b/src/main/java/net/minecraft/src/RenderGiantZombie.java index e239683..220986c 100644 --- a/src/main/java/net/minecraft/src/RenderGiantZombie.java +++ b/src/main/java/net/minecraft/src/RenderGiantZombie.java @@ -17,4 +17,9 @@ public class RenderGiantZombie extends RenderLiving { protected void preRenderCallback(EntityLiving var1, float var2) { this.preRenderScale((EntityGiantZombie)var1, var2); } + + @Override + protected boolean loadDownloadableImageTexture(String s, String s1) { + return true; + } } diff --git a/src/main/java/net/minecraft/src/RenderGlobal.java b/src/main/java/net/minecraft/src/RenderGlobal.java index 642b37b..b2e1636 100644 --- a/src/main/java/net/minecraft/src/RenderGlobal.java +++ b/src/main/java/net/minecraft/src/RenderGlobal.java @@ -7,6 +7,7 @@ import java.util.Collections; import java.util.List; import net.PeytonPlayz585.opengl.GL11; +import net.PeytonPlayz585.textures.TextureLocation; import net.minecraft.client.Minecraft; public class RenderGlobal implements IWorldAccess { @@ -53,6 +54,11 @@ public class RenderGlobal implements IWorldAccess { double prevSortZ = -9999.0D; public float damagePartialTime; int frustrumCheckOffset = 0; + + private static final TextureLocation terrainSun = new TextureLocation("/terrain/sun.png"); + private static final TextureLocation terrainMoon = new TextureLocation("/terrain/moon.png"); + private static final TextureLocation cloudsTexture = new TextureLocation("/environment/clouds.png"); + private static final TextureLocation terrainTexture = new TextureLocation("/terrain.png"); public RenderGlobal(Minecraft var1, RenderEngine var2) { this.mc = var1; @@ -559,7 +565,7 @@ public class RenderGlobal implements IWorldAccess { GL11.glRotatef(0.0F, 0.0F, 0.0F, 1.0F); GL11.glRotatef(this.worldObj.getCelestialAngle(var1) * 360.0F, 1.0F, 0.0F, 0.0F); var11 = 30.0F; - GL11.glBindTexture(GL11.GL_TEXTURE_2D, this.renderEngine.getTexture("/terrain/sun.png")); + terrainSun.bindTexture(); var17.startDrawingQuads(); var17.addVertexWithUV((double)(-var11), 100.0D, (double)(-var11), 0.0D, 0.0D); var17.addVertexWithUV((double)var11, 100.0D, (double)(-var11), 1.0D, 0.0D); @@ -567,7 +573,7 @@ public class RenderGlobal implements IWorldAccess { var17.addVertexWithUV((double)(-var11), 100.0D, (double)var11, 0.0D, 1.0D); var17.draw(); var11 = 20.0F; - GL11.glBindTexture(GL11.GL_TEXTURE_2D, this.renderEngine.getTexture("/terrain/moon.png")); + terrainMoon.bindTexture(); var17.startDrawingQuads(); var17.addVertexWithUV((double)(-var11), -100.0D, (double)var11, 1.0D, 1.0D); var17.addVertexWithUV((double)var11, -100.0D, (double)var11, 0.0D, 1.0D); @@ -609,7 +615,7 @@ public class RenderGlobal implements IWorldAccess { byte var3 = 32; int var4 = 256 / var3; Tessellator var5 = Tessellator.instance; - GL11.glBindTexture(GL11.GL_TEXTURE_2D, this.renderEngine.getTexture("/environment/clouds.png")); + cloudsTexture.bindTexture(); GL11.glEnable(GL11.GL_BLEND); GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA); Vec3D var6 = this.worldObj.func_628_d(var1); @@ -673,7 +679,7 @@ public class RenderGlobal implements IWorldAccess { int var12 = MathHelper.floor_double(var8 / 2048.0D); var6 -= (double)(var11 * 2048); var8 -= (double)(var12 * 2048); - GL11.glBindTexture(GL11.GL_TEXTURE_2D, this.renderEngine.getTexture("/environment/clouds.png")); + cloudsTexture.bindTexture(); GL11.glEnable(GL11.GL_BLEND); GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA); Vec3D var13 = this.worldObj.func_628_d(var1); @@ -865,8 +871,7 @@ public class RenderGlobal implements IWorldAccess { if(var3 == 0) { if(this.damagePartialTime > 0.0F) { GL11.glBlendFunc(GL11.GL_DST_COLOR, GL11.GL_SRC_COLOR); - int var7 = this.renderEngine.getTexture("/terrain.png"); - GL11.glBindTexture(GL11.GL_TEXTURE_2D, var7); + terrainTexture.bindTexture(); GL11.glColor4f(1.0F, 1.0F, 1.0F, 0.5F); GL11.glPushMatrix(); var8 = this.worldObj.getBlockId(var2.blockX, var2.blockY, var2.blockZ); @@ -899,8 +904,7 @@ public class RenderGlobal implements IWorldAccess { GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA); float var16 = MathHelper.sin((float)System.currentTimeMillis() / 100.0F) * 0.2F + 0.8F; GL11.glColor4f(var16, var16, var16, MathHelper.sin((float)System.currentTimeMillis() / 200.0F) * 0.2F + 0.5F); - var8 = this.renderEngine.getTexture("/terrain.png"); - GL11.glBindTexture(GL11.GL_TEXTURE_2D, var8); + terrainTexture.bindTexture(); int var17 = var2.blockX; int var18 = var2.blockY; int var11 = var2.blockZ; diff --git a/src/main/java/net/minecraft/src/RenderItem.java b/src/main/java/net/minecraft/src/RenderItem.java index e0e0246..a0e995c 100644 --- a/src/main/java/net/minecraft/src/RenderItem.java +++ b/src/main/java/net/minecraft/src/RenderItem.java @@ -2,11 +2,15 @@ package net.minecraft.src; import net.PeytonPlayz585.opengl.GL11; import net.PeytonPlayz585.opengl.GL12; +import net.PeytonPlayz585.textures.TextureLocation; public class RenderItem extends Render { private RenderBlocks renderBlocks = new RenderBlocks(); private Random random = new Random(); public boolean field_27004_a = true; + + private static final TextureLocation terrainTexture = new TextureLocation("/terrain.png"); + private static final TextureLocation itemsTexture = new TextureLocation("/gui/items.png"); public RenderItem() { this.shadowSize = 0.15F; @@ -39,7 +43,7 @@ public class RenderItem extends Render { float var18; if(var10.itemID < 256 && RenderBlocks.renderItemIn3d(Block.blocksList[var10.itemID].getRenderType())) { GL11.glRotatef(var12, 0.0F, 1.0F, 0.0F); - this.loadTexture("/terrain.png"); + terrainTexture.bindTexture(); float var28 = 0.25F; if(!Block.blocksList[var10.itemID].renderAsNormalBlock() && var10.itemID != Block.stairSingle.blockID && Block.blocksList[var10.itemID].getRenderType() != 16) { var28 = 0.5F; @@ -63,9 +67,9 @@ public class RenderItem extends Render { GL11.glScalef(0.5F, 0.5F, 0.5F); int var14 = var10.getIconIndex(); if(var10.itemID < 256) { - this.loadTexture("/terrain.png"); + terrainTexture.bindTexture(); } else { - this.loadTexture("/gui/items.png"); + itemsTexture.bindTexture(); } Tessellator var15 = Tessellator.instance; @@ -117,7 +121,7 @@ public class RenderItem extends Render { public void drawItemIntoGui(FontRenderer var1, RenderEngine var2, int var3, int var4, int var5, int var6, int var7) { float var11; if(var3 < 256 && RenderBlocks.renderItemIn3d(Block.blocksList[var3].getRenderType())) { - var2.bindTexture(var2.getTexture("/terrain.png")); + terrainTexture.bindTexture(); Block var14 = Block.blocksList[var3]; GL11.glPushMatrix(); GL11.glTranslatef((float)(var6 - 2), (float)(var7 + 3), -3.0F); @@ -142,9 +146,9 @@ public class RenderItem extends Render { } else if(var5 >= 0) { GL11.glDisable(GL11.GL_LIGHTING); if(var3 < 256) { - var2.bindTexture(var2.getTexture("/terrain.png")); + terrainTexture.bindTexture(); } else { - var2.bindTexture(var2.getTexture("/gui/items.png")); + itemsTexture.bindTexture(); } int var8 = Item.itemsList[var3].getColorFromDamage(var4); @@ -226,4 +230,9 @@ public class RenderItem extends Render { public void doRender(Entity var1, double var2, double var4, double var6, float var8, float var9) { this.doRenderItem((EntityItem)var1, var2, var4, var6, var8, var9); } + + @Override + protected boolean loadDownloadableImageTexture(String s, String s1) { + return true; + } } diff --git a/src/main/java/net/minecraft/src/RenderLightningBolt.java b/src/main/java/net/minecraft/src/RenderLightningBolt.java index d3f6234..80bfe0e 100644 --- a/src/main/java/net/minecraft/src/RenderLightningBolt.java +++ b/src/main/java/net/minecraft/src/RenderLightningBolt.java @@ -101,4 +101,9 @@ public class RenderLightningBolt extends Render { public void doRender(Entity var1, double var2, double var4, double var6, float var8, float var9) { this.func_27002_a((EntityLightningBolt)var1, var2, var4, var6, var8, var9); } + + @Override + protected boolean loadDownloadableImageTexture(String s, String s1) { + return true; + } } diff --git a/src/main/java/net/minecraft/src/RenderLiving.java b/src/main/java/net/minecraft/src/RenderLiving.java index 33f52de..4791081 100644 --- a/src/main/java/net/minecraft/src/RenderLiving.java +++ b/src/main/java/net/minecraft/src/RenderLiving.java @@ -4,7 +4,7 @@ import net.PeytonPlayz585.opengl.GL11; import net.PeytonPlayz585.opengl.GL12; import net.minecraft.client.Minecraft; -public class RenderLiving extends Render { +public abstract class RenderLiving extends Render { protected ModelBase mainModel; protected ModelBase renderPassModel; diff --git a/src/main/java/net/minecraft/src/RenderManager.java b/src/main/java/net/minecraft/src/RenderManager.java index e684b66..c62c951 100644 --- a/src/main/java/net/minecraft/src/RenderManager.java +++ b/src/main/java/net/minecraft/src/RenderManager.java @@ -32,15 +32,15 @@ public class RenderManager { this.entityRenderMap.put(EntityWolf.class, new RenderWolf(new ModelWolf(), 0.5F)); this.entityRenderMap.put(EntityChicken.class, new RenderChicken(new ModelChicken(), 0.3F)); this.entityRenderMap.put(EntityCreeper.class, new RenderCreeper()); - this.entityRenderMap.put(EntitySkeleton.class, new RenderBiped(new ModelSkeleton(), 0.5F)); - this.entityRenderMap.put(EntityZombie.class, new RenderBiped(new ModelZombie(), 0.5F)); + this.entityRenderMap.put(EntitySkeleton.class, new RenderBiped(new ModelSkeleton(), 0.5F, "/mob/skeleton.png")); + this.entityRenderMap.put(EntityZombie.class, new RenderBiped(new ModelZombie(), 0.5F, "/mob/zombie.png")); this.entityRenderMap.put(EntitySlime.class, new RenderSlime(new ModelSlime(16), new ModelSlime(0), 0.25F)); this.entityRenderMap.put(EntityPlayer.class, new RenderPlayer()); this.entityRenderMap.put(EntityGiantZombie.class, new RenderGiantZombie(new ModelZombie(), 0.5F, 6.0F)); this.entityRenderMap.put(EntityGhast.class, new RenderGhast()); this.entityRenderMap.put(EntitySquid.class, new RenderSquid(new ModelSquid(), 0.7F)); - this.entityRenderMap.put(EntityLiving.class, new RenderLiving(new ModelBiped(), 0.5F)); - this.entityRenderMap.put(Entity.class, new RenderEntity()); + //this.entityRenderMap.put(EntityLiving.class, new RenderLiving(new ModelBiped(), 0.5F)); + //this.entityRenderMap.put(Entity.class, new RenderEntity()); this.entityRenderMap.put(EntityPainting.class, new RenderPainting()); this.entityRenderMap.put(EntityArrow.class, new RenderArrow()); this.entityRenderMap.put(EntitySnowball.class, new RenderSnowball(Item.snowball.getIconFromDamage(0))); diff --git a/src/main/java/net/minecraft/src/RenderMinecart.java b/src/main/java/net/minecraft/src/RenderMinecart.java index 2398701..7ff7438 100644 --- a/src/main/java/net/minecraft/src/RenderMinecart.java +++ b/src/main/java/net/minecraft/src/RenderMinecart.java @@ -1,9 +1,13 @@ package net.minecraft.src; import net.PeytonPlayz585.opengl.GL11; +import net.PeytonPlayz585.textures.TextureLocation; public class RenderMinecart extends Render { protected ModelBase modelMinecart; + + private static final TextureLocation terrainTexture = new TextureLocation("/terrain.png"); + private static final TextureLocation minecartTexture = new TextureLocation("/item/cart.png"); public RenderMinecart() { this.shadowSize = 0.5F; @@ -54,7 +58,7 @@ public class RenderMinecart extends Render { } if(var1.minecartType != 0) { - this.loadTexture("/terrain.png"); + terrainTexture.bindTexture(); float var25 = 12.0F / 16.0F; GL11.glScalef(var25, var25, var25); GL11.glTranslatef(0.0F, 5.0F / 16.0F, 0.0F); @@ -70,7 +74,7 @@ public class RenderMinecart extends Render { GL11.glScalef(1.0F / var25, 1.0F / var25, 1.0F / var25); } - this.loadTexture("/item/cart.png"); + minecartTexture.bindTexture(); GL11.glScalef(-1.0F, -1.0F, 1.0F); this.modelMinecart.render(0.0F, 0.0F, -0.1F, 0.0F, 0.0F, 1.0F / 16.0F); GL11.glPopMatrix(); @@ -79,4 +83,9 @@ public class RenderMinecart extends Render { public void doRender(Entity var1, double var2, double var4, double var6, float var8, float var9) { this.func_152_a((EntityMinecart)var1, var2, var4, var6, var8, var9); } + + @Override + protected boolean loadDownloadableImageTexture(String s, String s1) { + return true; + } } diff --git a/src/main/java/net/minecraft/src/RenderPainting.java b/src/main/java/net/minecraft/src/RenderPainting.java index db3919a..877dba2 100644 --- a/src/main/java/net/minecraft/src/RenderPainting.java +++ b/src/main/java/net/minecraft/src/RenderPainting.java @@ -2,9 +2,12 @@ package net.minecraft.src; import net.PeytonPlayz585.opengl.GL11; import net.PeytonPlayz585.opengl.GL12; +import net.PeytonPlayz585.textures.TextureLocation; public class RenderPainting extends Render { private Random rand = new Random(); + + private static final TextureLocation paintingTexture = new TextureLocation("/art/kz.png"); public void func_158_a(EntityPainting var1, double var2, double var4, double var6, float var8, float var9) { this.rand.setSeed(187L); @@ -12,7 +15,7 @@ public class RenderPainting extends Render { GL11.glTranslatef((float)var2, (float)var4, (float)var6); GL11.glRotatef(var8, 0.0F, 1.0F, 0.0F); GL11.glEnable(GL12.GL_RESCALE_NORMAL); - this.loadTexture("/art/kz.png"); + paintingTexture.bindTexture(); EnumArt var10 = var1.art; float var11 = 1.0F / 16.0F; GL11.glScalef(var11, var11, var11); @@ -115,4 +118,9 @@ public class RenderPainting extends Render { public void doRender(Entity var1, double var2, double var4, double var6, float var8, float var9) { this.func_158_a((EntityPainting)var1, var2, var4, var6, var8, var9); } + + @Override + protected boolean loadDownloadableImageTexture(String s, String s1) { + return true; + } } diff --git a/src/main/java/net/minecraft/src/RenderPig.java b/src/main/java/net/minecraft/src/RenderPig.java index 23a2332..fe6e25d 100644 --- a/src/main/java/net/minecraft/src/RenderPig.java +++ b/src/main/java/net/minecraft/src/RenderPig.java @@ -1,17 +1,29 @@ package net.minecraft.src; +import net.PeytonPlayz585.textures.TextureLocation; + public class RenderPig extends RenderLiving { + + private static final TextureLocation saddleTexture = new TextureLocation("/mob/saddle.png"); + private static final TextureLocation pigTexture = new TextureLocation("/mob/pig.png"); + public RenderPig(ModelBase var1, ModelBase var2, float var3) { super(var1, var3); this.setRenderPassModel(var2); } protected boolean renderSaddledPig(EntityPig var1, int var2, float var3) { - this.loadTexture("/mob/saddle.png"); + saddleTexture.bindTexture(); return var2 == 0 && var1.getSaddled(); } protected boolean shouldRenderPass(EntityLiving var1, int var2, float var3) { return this.renderSaddledPig((EntityPig)var1, var2, var3); } + + @Override + protected boolean loadDownloadableImageTexture(String s, String s1) { + pigTexture.bindTexture(); + return true; + } } diff --git a/src/main/java/net/minecraft/src/RenderPlayer.java b/src/main/java/net/minecraft/src/RenderPlayer.java index ac694e9..3a89616 100644 --- a/src/main/java/net/minecraft/src/RenderPlayer.java +++ b/src/main/java/net/minecraft/src/RenderPlayer.java @@ -1,6 +1,8 @@ package net.minecraft.src; import net.PeytonPlayz585.opengl.GL11; +import net.PeytonPlayz585.profile.Profile; +import net.PeytonPlayz585.textures.TextureLocation; import net.minecraft.client.Minecraft; public class RenderPlayer extends RenderLiving { @@ -8,6 +10,14 @@ public class RenderPlayer extends RenderLiving { private ModelBiped modelArmorChestplate = new ModelBiped(1.0F); private ModelBiped modelArmor = new ModelBiped(0.5F); private static final String[] armorFilenamePrefix = new String[]{"cloth", "chain", "iron", "diamond", "gold"}; + private static final TextureLocation[][] armorTextures = new TextureLocation[armorFilenamePrefix.length][2]; + + static { + for(int i = 0; i < armorFilenamePrefix.length; ++i) { + armorTextures[i][0] = new TextureLocation("/armor/" + armorFilenamePrefix[i] + "_1.png"); + armorTextures[i][1] = new TextureLocation("/armor/" + armorFilenamePrefix[i] + "_2.png"); + } + } public RenderPlayer() { super(new ModelBiped(0.0F), 0.5F); @@ -19,7 +29,7 @@ public class RenderPlayer extends RenderLiving { Item var5 = var4.getItem(); if(var5 instanceof ItemArmor) { ItemArmor var6 = (ItemArmor)var5; - this.loadTexture("/armor/" + armorFilenamePrefix[var6.renderIndex] + "_" + (var2 == 2 ? 2 : 1) + ".png"); + armorTextures[var6.renderIndex][var2 != 2 ? 0 : 1].bindTexture(); ModelBiped var7 = var2 == 2 ? this.modelArmor : this.modelArmorChestplate; var7.bipedHead.showModel = var2 == 0; var7.bipedHeadwear.showModel = var2 == 0; @@ -278,4 +288,16 @@ public class RenderPlayer extends RenderLiving { public void doRender(Entity var1, double var2, double var4, double var6, float var8, float var9) { this.renderPlayer((EntityPlayer)var1, var2, var4, var6, var8, var9); } + + private static final TextureLocation defaultPlayerSkin = new TextureLocation("/mob/char.png"); + + @Override + protected boolean loadDownloadableImageTexture(String s, String s1) { + if(Minecraft.getMinecraft().theWorld.multiplayerWorld) { + defaultPlayerSkin.bindTexture(); + } else { + Profile.defaultOptionsTextures[Profile.presetSkinId].bindTexture(); + } + return true; + } } diff --git a/src/main/java/net/minecraft/src/RenderSheep.java b/src/main/java/net/minecraft/src/RenderSheep.java index 15084cf..980ccf5 100644 --- a/src/main/java/net/minecraft/src/RenderSheep.java +++ b/src/main/java/net/minecraft/src/RenderSheep.java @@ -1,8 +1,13 @@ package net.minecraft.src; import net.PeytonPlayz585.opengl.GL11; +import net.PeytonPlayz585.textures.TextureLocation; public class RenderSheep extends RenderLiving { + + private static final TextureLocation sheepTexture = new TextureLocation("/mob/sheep.png"); + private static final TextureLocation sheepFurTexture = new TextureLocation("/mob/sheep_fur.png"); + public RenderSheep(ModelBase var1, ModelBase var2, float var3) { super(var1, var3); this.setRenderPassModel(var2); @@ -10,7 +15,7 @@ public class RenderSheep extends RenderLiving { protected boolean setWoolColorAndRender(EntitySheep var1, int var2, float var3) { if(var2 == 0 && !var1.getSheared()) { - this.loadTexture("/mob/sheep_fur.png"); + sheepFurTexture.bindTexture(); float var4 = var1.getEntityBrightness(var3); int var5 = var1.getFleeceColor(); GL11.glColor3f(var4 * EntitySheep.fleeceColorTable[var5][0], var4 * EntitySheep.fleeceColorTable[var5][1], var4 * EntitySheep.fleeceColorTable[var5][2]); @@ -23,4 +28,10 @@ public class RenderSheep extends RenderLiving { protected boolean shouldRenderPass(EntityLiving var1, int var2, float var3) { return this.setWoolColorAndRender((EntitySheep)var1, var2, var3); } + + @Override + protected boolean loadDownloadableImageTexture(String s, String s1) { + sheepTexture.bindTexture(); + return true; + } } diff --git a/src/main/java/net/minecraft/src/RenderSlime.java b/src/main/java/net/minecraft/src/RenderSlime.java index 61a6b5c..3f2a5b8 100644 --- a/src/main/java/net/minecraft/src/RenderSlime.java +++ b/src/main/java/net/minecraft/src/RenderSlime.java @@ -1,9 +1,12 @@ package net.minecraft.src; import net.PeytonPlayz585.opengl.GL11; +import net.PeytonPlayz585.textures.TextureLocation; public class RenderSlime extends RenderLiving { private ModelBase scaleAmount; + + private static final TextureLocation slimeTexture = new TextureLocation("/mob/slime.png"); public RenderSlime(ModelBase var1, ModelBase var2, float var3) { super(var1, var3); @@ -42,4 +45,10 @@ public class RenderSlime extends RenderLiving { protected boolean shouldRenderPass(EntityLiving var1, int var2, float var3) { return this.renderSlimePassModel((EntitySlime)var1, var2, var3); } + + @Override + protected boolean loadDownloadableImageTexture(String s, String s1) { + slimeTexture.bindTexture(); + return true; + } } diff --git a/src/main/java/net/minecraft/src/RenderSnowball.java b/src/main/java/net/minecraft/src/RenderSnowball.java index 7b2990c..9ba01d6 100644 --- a/src/main/java/net/minecraft/src/RenderSnowball.java +++ b/src/main/java/net/minecraft/src/RenderSnowball.java @@ -2,8 +2,11 @@ package net.minecraft.src; import net.PeytonPlayz585.opengl.GL11; import net.PeytonPlayz585.opengl.GL12; +import net.PeytonPlayz585.textures.TextureLocation; public class RenderSnowball extends Render { + + private static final TextureLocation itemTexture = new TextureLocation("/gui/items.png"); private int itemIconIndex; public RenderSnowball(int var1) { @@ -15,7 +18,7 @@ public class RenderSnowball extends Render { GL11.glTranslatef((float)var2, (float)var4, (float)var6); GL11.glEnable(GL12.GL_RESCALE_NORMAL); GL11.glScalef(0.5F, 0.5F, 0.5F); - this.loadTexture("/gui/items.png"); + itemTexture.bindTexture(); Tessellator var10 = Tessellator.instance; float var11 = (float)(this.itemIconIndex % 16 * 16 + 0) / 256.0F; float var12 = (float)(this.itemIconIndex % 16 * 16 + 16) / 256.0F; @@ -36,4 +39,9 @@ public class RenderSnowball extends Render { GL11.glDisable(GL12.GL_RESCALE_NORMAL); GL11.glPopMatrix(); } + + @Override + protected boolean loadDownloadableImageTexture(String s, String s1) { + return true; + } } diff --git a/src/main/java/net/minecraft/src/RenderSpider.java b/src/main/java/net/minecraft/src/RenderSpider.java index c001adf..0e92fed 100644 --- a/src/main/java/net/minecraft/src/RenderSpider.java +++ b/src/main/java/net/minecraft/src/RenderSpider.java @@ -1,8 +1,13 @@ package net.minecraft.src; import net.PeytonPlayz585.opengl.GL11; +import net.PeytonPlayz585.textures.TextureLocation; public class RenderSpider extends RenderLiving { + + private static final TextureLocation spiderTexture = new TextureLocation("/mob/spider.png"); + private static final TextureLocation spiderEyesTexture = new TextureLocation("/mob/spider_eyes.png"); + public RenderSpider() { super(new ModelSpider(), 1.0F); this.setRenderPassModel(new ModelSpider()); @@ -18,7 +23,7 @@ public class RenderSpider extends RenderLiving { } else if(var2 != 0) { return false; } else { - this.loadTexture("/mob/spider_eyes.png"); + spiderEyesTexture.bindTexture(); float var4 = (1.0F - var1.getEntityBrightness(1.0F)) * 0.5F; GL11.glEnable(GL11.GL_BLEND); GL11.glDisable(GL11.GL_ALPHA_TEST); @@ -35,4 +40,10 @@ public class RenderSpider extends RenderLiving { protected boolean shouldRenderPass(EntityLiving var1, int var2, float var3) { return this.setSpiderEyeBrightness((EntitySpider)var1, var2, var3); } + + @Override + protected boolean loadDownloadableImageTexture(String s, String s1) { + spiderTexture.bindTexture(); + return true; + } } diff --git a/src/main/java/net/minecraft/src/RenderSquid.java b/src/main/java/net/minecraft/src/RenderSquid.java index d91326a..b4c1645 100644 --- a/src/main/java/net/minecraft/src/RenderSquid.java +++ b/src/main/java/net/minecraft/src/RenderSquid.java @@ -1,8 +1,12 @@ package net.minecraft.src; import net.PeytonPlayz585.opengl.GL11; +import net.PeytonPlayz585.textures.TextureLocation; public class RenderSquid extends RenderLiving { + + private static final TextureLocation squidTexture = new TextureLocation("/mob/squid.png"); + public RenderSquid(ModelBase var1, float var2) { super(var1, var2); } @@ -48,4 +52,10 @@ public class RenderSquid extends RenderLiving { public void doRender(Entity var1, double var2, double var4, double var6, float var8, float var9) { this.func_21008_a((EntitySquid)var1, var2, var4, var6, var8, var9); } + + @Override + protected boolean loadDownloadableImageTexture(String s, String s1) { + squidTexture.bindTexture(); + return true; + } } diff --git a/src/main/java/net/minecraft/src/RenderTNTPrimed.java b/src/main/java/net/minecraft/src/RenderTNTPrimed.java index 9aa199f..a1c0598 100644 --- a/src/main/java/net/minecraft/src/RenderTNTPrimed.java +++ b/src/main/java/net/minecraft/src/RenderTNTPrimed.java @@ -1,8 +1,12 @@ package net.minecraft.src; import net.PeytonPlayz585.opengl.GL11; +import net.PeytonPlayz585.textures.TextureLocation; public class RenderTNTPrimed extends Render { + + private static final TextureLocation terrainTexture = new TextureLocation("/terrain.png"); + private RenderBlocks blockRenderer = new RenderBlocks(); public RenderTNTPrimed() { @@ -30,7 +34,7 @@ public class RenderTNTPrimed extends Render { } var10 = (1.0F - ((float)var1.fuse - var9 + 1.0F) / 100.0F) * 0.8F; - this.loadTexture("/terrain.png"); + terrainTexture.bindTexture(); this.blockRenderer.renderBlockOnInventory(Block.tnt, 0, var1.getEntityBrightness(var9)); if(var1.fuse / 5 % 2 == 0) { GL11.glDisable(GL11.GL_TEXTURE_2D); @@ -51,4 +55,9 @@ public class RenderTNTPrimed extends Render { public void doRender(Entity var1, double var2, double var4, double var6, float var8, float var9) { this.func_153_a((EntityTNTPrimed)var1, var2, var4, var6, var8, var9); } + + @Override + protected boolean loadDownloadableImageTexture(String s, String s1) { + return true; + } } diff --git a/src/main/java/net/minecraft/src/RenderWolf.java b/src/main/java/net/minecraft/src/RenderWolf.java index ac62fca..434dcab 100644 --- a/src/main/java/net/minecraft/src/RenderWolf.java +++ b/src/main/java/net/minecraft/src/RenderWolf.java @@ -1,6 +1,11 @@ package net.minecraft.src; +import net.PeytonPlayz585.textures.TextureLocation; + public class RenderWolf extends RenderLiving { + + private static final TextureLocation wolfTexture = new TextureLocation("/mob/wolf.png"); + public RenderWolf(ModelBase var1, float var2) { super(var1, var2); } @@ -31,4 +36,10 @@ public class RenderWolf extends RenderLiving { public void doRender(Entity var1, double var2, double var4, double var6, float var8, float var9) { this.renderWolf((EntityWolf)var1, var2, var4, var6, var8, var9); } + + @Override + protected boolean loadDownloadableImageTexture(String s, String s1) { + wolfTexture.bindTexture(); + return true; + } } diff --git a/src/main/java/net/minecraft/src/TerrainTextureManager.java b/src/main/java/net/minecraft/src/TerrainTextureManager.java index 7226ebc..3d068ef 100644 --- a/src/main/java/net/minecraft/src/TerrainTextureManager.java +++ b/src/main/java/net/minecraft/src/TerrainTextureManager.java @@ -64,133 +64,6 @@ public class TerrainTextureManager { } - public void func_799_a(IsoImageBuffer var1) { - World var2 = var1.worldObj; - if(var2 == null) { - var1.field_1351_f = true; - var1.field_1352_e = true; - } else { - int var3 = var1.field_1354_c * 16; - int var4 = var1.field_1353_d * 16; - int var5 = var3 + 16; - int var6 = var4 + 16; - Chunk var7 = var2.getChunkFromChunkCoords(var1.field_1354_c, var1.field_1353_d); - if(var7.func_21167_h()) { - var1.field_1351_f = true; - var1.field_1352_e = true; - } else { - var1.field_1351_f = false; - Arrays.fill(this.field_1186_c, 0); - Arrays.fill(this.field_1185_d, 0); - Arrays.fill(this.field_1183_f, 160); - - for(int var8 = var6 - 1; var8 >= var4; --var8) { - for(int var9 = var5 - 1; var9 >= var3; --var9) { - int var10 = var9 - var3; - int var11 = var8 - var4; - int var12 = var10 + var11; - boolean var13 = true; - - for(int var14 = 0; var14 < 128; ++var14) { - int var15 = var11 - var10 - var14 + 160 - 16; - if(var15 < this.field_1183_f[var12] || var15 < this.field_1183_f[var12 + 1]) { - Block var16 = Block.blocksList[var2.getBlockId(var9, var14, var8)]; - if(var16 == null) { - var13 = false; - } else if(var16.blockMaterial == Material.water) { - int var24 = var2.getBlockId(var9, var14 + 1, var8); - if(var24 == 0 || Block.blocksList[var24].blockMaterial != Material.water) { - float var25 = (float)var14 / 127.0F * 0.6F + 0.4F; - float var26 = var2.getLightBrightness(var9, var14 + 1, var8) * var25; - if(var15 >= 0 && var15 < 160) { - int var27 = var12 + var15 * 32; - if(var12 >= 0 && var12 <= 32 && this.field_1185_d[var27] <= var14) { - this.field_1185_d[var27] = var14; - this.field_1184_e[var27] = (int)(var26 * 127.0F); - } - - if(var12 >= -1 && var12 <= 31 && this.field_1185_d[var27 + 1] <= var14) { - this.field_1185_d[var27 + 1] = var14; - this.field_1184_e[var27 + 1] = (int)(var26 * 127.0F); - } - - var13 = false; - } - } - } else { - if(var13) { - if(var15 < this.field_1183_f[var12]) { - this.field_1183_f[var12] = var15; - } - - if(var15 < this.field_1183_f[var12 + 1]) { - this.field_1183_f[var12 + 1] = var15; - } - } - - float var17 = (float)var14 / 127.0F * 0.6F + 0.4F; - int var18; - int var19; - float var20; - float var22; - if(var15 >= 0 && var15 < 160) { - var18 = var12 + var15 * 32; - var19 = this.field_1182_g[var16.blockID * 3 + 0]; - var20 = (var2.getLightBrightness(var9, var14 + 1, var8) * 0.8F + 0.2F) * var17; - if(var12 >= 0 && this.field_1186_c[var18] <= var14) { - this.field_1186_c[var18] = var14; - this.field_1180_b[var18] = -16777216 | (int)(this.field_1181_a[var19 * 3 + 0] * var20) << 16 | (int)(this.field_1181_a[var19 * 3 + 1] * var20) << 8 | (int)(this.field_1181_a[var19 * 3 + 2] * var20); - } - - if(var12 < 31) { - var22 = var20 * 0.9F; - if(this.field_1186_c[var18 + 1] <= var14) { - this.field_1186_c[var18 + 1] = var14; - this.field_1180_b[var18 + 1] = -16777216 | (int)(this.field_1181_a[var19 * 3 + 0] * var22) << 16 | (int)(this.field_1181_a[var19 * 3 + 1] * var22) << 8 | (int)(this.field_1181_a[var19 * 3 + 2] * var22); - } - } - } - - if(var15 >= -1 && var15 < 159) { - var18 = var12 + (var15 + 1) * 32; - var19 = this.field_1182_g[var16.blockID * 3 + 1]; - var20 = var2.getLightBrightness(var9 - 1, var14, var8) * 0.8F + 0.2F; - int var21 = this.field_1182_g[var16.blockID * 3 + 2]; - var22 = var2.getLightBrightness(var9, var14, var8 + 1) * 0.8F + 0.2F; - float var23; - if(var12 >= 0) { - var23 = var20 * var17 * 0.6F; - if(this.field_1186_c[var18] <= var14 - 1) { - this.field_1186_c[var18] = var14 - 1; - this.field_1180_b[var18] = -16777216 | (int)(this.field_1181_a[var19 * 3 + 0] * var23) << 16 | (int)(this.field_1181_a[var19 * 3 + 1] * var23) << 8 | (int)(this.field_1181_a[var19 * 3 + 2] * var23); - } - } - - if(var12 < 31) { - var23 = var22 * 0.9F * var17 * 0.4F; - if(this.field_1186_c[var18 + 1] <= var14 - 1) { - this.field_1186_c[var18 + 1] = var14 - 1; - this.field_1180_b[var18 + 1] = -16777216 | (int)(this.field_1181_a[var21 * 3 + 0] * var23) << 16 | (int)(this.field_1181_a[var21 * 3 + 1] * var23) << 8 | (int)(this.field_1181_a[var21 * 3 + 2] * var23); - } - } - } - } - } - } - } - } - - this.func_800_a(); - if(var1.field_1348_a == null) { - var1.field_1348_a = new BufferedImage(32, 160, 2); - } - - var1.field_1348_a.setRGB(0, 0, 32, 160, this.field_1180_b, 0, 32); - var1.field_1352_e = true; - } - } - } - private void func_800_a() { for(int var1 = 0; var1 < 32; ++var1) { for(int var2 = 0; var2 < 160; ++var2) { diff --git a/src/main/java/net/minecraft/src/TextureFX.java b/src/main/java/net/minecraft/src/TextureFX.java index 9931165..1324248 100644 --- a/src/main/java/net/minecraft/src/TextureFX.java +++ b/src/main/java/net/minecraft/src/TextureFX.java @@ -1,6 +1,7 @@ package net.minecraft.src; import net.PeytonPlayz585.opengl.GL11; +import net.PeytonPlayz585.textures.TextureLocation; public class TextureFX { public byte[] imageData = new byte[1024]; @@ -9,6 +10,9 @@ public class TextureFX { public int textureId = 0; public int tileSize = 1; public int tileImage = 0; + + public static final TextureLocation terrainTexture = new TextureLocation("/terrain.png"); + public static final TextureLocation itemsTexture = new TextureLocation("/gui/items.png"); public TextureFX(int var1) { this.iconIndex = var1; @@ -19,9 +23,9 @@ public class TextureFX { public void bindImage(RenderEngine var1) { if(this.tileImage == 0) { - GL11.glBindTexture(GL11.GL_TEXTURE_2D, var1.getTexture("/terrain.png")); + terrainTexture.bindTexture(); } else if(this.tileImage == 1) { - GL11.glBindTexture(GL11.GL_TEXTURE_2D, var1.getTexture("/gui/items.png")); + itemsTexture.bindTexture(); } } diff --git a/src/main/java/net/minecraft/src/TexturePackCustom.java b/src/main/java/net/minecraft/src/TexturePackCustom.java index a81a3bd..4e798db 100644 --- a/src/main/java/net/minecraft/src/TexturePackCustom.java +++ b/src/main/java/net/minecraft/src/TexturePackCustom.java @@ -10,6 +10,7 @@ import net.PeytonPlayz585.awt.image.BufferedImage; import net.PeytonPlayz585.awt.image.ImageIO; import net.PeytonPlayz585.fileutils.FileEntry; import net.PeytonPlayz585.opengl.GL11; +import net.PeytonPlayz585.textures.TextureLocation; import net.PeytonPlayz585.util.zip.ZipFile; import net.minecraft.client.Minecraft; @@ -18,6 +19,8 @@ public class TexturePackCustom extends TexturePackBase { private int texturePackName = -1; private BufferedImage texturePackThumbnail; private FileEntry texturePackFile; + + private static final TextureLocation unknownPack = new TextureLocation("/gui/unknown_pack.png"); public TexturePackCustom(FileEntry var1) { this.texturePackFileName = var1.getName(); @@ -90,7 +93,7 @@ public class TexturePackCustom extends TexturePackBase { if(this.texturePackThumbnail != null) { var1.renderEngine.bindTexture(this.texturePackName); } else { - GL11.glBindTexture(GL11.GL_TEXTURE_2D, var1.renderEngine.getTexture("/gui/unknown_pack.png")); + unknownPack.bindTexture(); } } diff --git a/src/main/java/net/minecraft/src/TexturePackDefault.java b/src/main/java/net/minecraft/src/TexturePackDefault.java index f9a80d1..a576579 100644 --- a/src/main/java/net/minecraft/src/TexturePackDefault.java +++ b/src/main/java/net/minecraft/src/TexturePackDefault.java @@ -5,11 +5,14 @@ import java.io.IOException; import net.PeytonPlayz585.awt.image.BufferedImage; import net.PeytonPlayz585.awt.image.ImageIO; import net.PeytonPlayz585.opengl.GL11; +import net.PeytonPlayz585.textures.TextureLocation; import net.minecraft.client.Minecraft; public class TexturePackDefault extends TexturePackBase { private int texturePackName = -1; private BufferedImage texturePackThumbnail; + + private static final TextureLocation unknownPack = new TextureLocation("/gui/unknown_pack.png"); public TexturePackDefault() { this.texturePackFileName = "Default"; @@ -38,7 +41,7 @@ public class TexturePackDefault extends TexturePackBase { if(this.texturePackThumbnail != null) { var1.renderEngine.bindTexture(this.texturePackName); } else { - GL11.glBindTexture(GL11.GL_TEXTURE_2D, var1.renderEngine.getTexture("/gui/unknown_pack.png")); + unknownPack.bindTexture(); } } diff --git a/src/main/java/net/minecraft/src/TileEntitySignRenderer.java b/src/main/java/net/minecraft/src/TileEntitySignRenderer.java index 5734229..7ea12ea 100644 --- a/src/main/java/net/minecraft/src/TileEntitySignRenderer.java +++ b/src/main/java/net/minecraft/src/TileEntitySignRenderer.java @@ -1,9 +1,12 @@ package net.minecraft.src; import net.PeytonPlayz585.opengl.GL11; +import net.PeytonPlayz585.textures.TextureLocation; public class TileEntitySignRenderer extends TileEntitySpecialRenderer { private SignModel signModel = new SignModel(); + + private static final TextureLocation signTexture = new TextureLocation("/item/sign.png"); public void renderTileEntitySignAt(TileEntitySign var1, double var2, double var4, double var6, float var8) { Block var9 = var1.getBlockType(); @@ -36,7 +39,7 @@ public class TileEntitySignRenderer extends TileEntitySpecialRenderer { this.signModel.signStick.showModel = false; } - this.bindTextureByName("/item/sign.png"); + signTexture.bindTexture(); GL11.glPushMatrix(); GL11.glScalef(var10, -var10, -var10); this.signModel.func_887_a(); diff --git a/src/main/java/net/minecraft/src/TileEntitySpecialRenderer.java b/src/main/java/net/minecraft/src/TileEntitySpecialRenderer.java index d7b8bd8..5a73e58 100644 --- a/src/main/java/net/minecraft/src/TileEntitySpecialRenderer.java +++ b/src/main/java/net/minecraft/src/TileEntitySpecialRenderer.java @@ -5,6 +5,7 @@ public abstract class TileEntitySpecialRenderer { public abstract void renderTileEntityAt(TileEntity var1, double var2, double var4, double var6, float var8); + @Deprecated protected void bindTextureByName(String var1) { RenderEngine var2 = this.tileEntityRenderer.renderEngine; var2.bindTexture(var2.getTexture(var1));