From 8267cb87eeb23f86d8736cdc405771b1af603df5 Mon Sep 17 00:00:00 2001 From: dmillerw Date: Fri, 11 Apr 2014 19:27:38 -0700 Subject: [PATCH] Start of the new block renderer --- .../textures/blocks/architect_back.png | Bin 0 -> 1666 bytes .../textures/blocks/architect_bottom.png | Bin 0 -> 1423 bytes .../textures/blocks/architect_front.png | Bin 206 -> 1818 bytes .../textures/blocks/architect_leftSide.png | Bin 0 -> 1724 bytes .../textures/blocks/architect_rightSide.png | Bin 0 -> 1707 bytes .../textures/blocks/architect_top.png | Bin 142 -> 1517 bytes .../buildcraft/builders/BlockArchitect.java | 76 +++------- .../builders/BuilderProxyClient.java | 6 +- common/buildcraft/core/BlockMultiTexture.java | 131 ++++++++++++++++++ .../buildcraft/core/render/IconFlipped.java | 75 ++++++++++ .../core/render/RenderBlockMultiTexture.java | 75 ++++++++++ 11 files changed, 306 insertions(+), 57 deletions(-) create mode 100644 buildcraft_resources/assets/buildcraft/textures/blocks/architect_back.png create mode 100644 buildcraft_resources/assets/buildcraft/textures/blocks/architect_bottom.png create mode 100644 buildcraft_resources/assets/buildcraft/textures/blocks/architect_leftSide.png create mode 100644 buildcraft_resources/assets/buildcraft/textures/blocks/architect_rightSide.png create mode 100644 common/buildcraft/core/BlockMultiTexture.java create mode 100644 common/buildcraft/core/render/IconFlipped.java create mode 100644 common/buildcraft/core/render/RenderBlockMultiTexture.java diff --git a/buildcraft_resources/assets/buildcraft/textures/blocks/architect_back.png b/buildcraft_resources/assets/buildcraft/textures/blocks/architect_back.png new file mode 100644 index 0000000000000000000000000000000000000000..07e77ed6a0ffa2b38134ecbc3e0eda567484385a GIT binary patch literal 1666 zcmbVNX;2eq7)}K`!pLYnDb}(CwW)z@HWwriF`G>w9m0`N2rvjS*+3eSO|lCKplCDV zc#E}F+afxqP?@3N=rBVBREmHU5xh{T6pvxhf+Ak1pmu{``@``^cXszX_IaN7_}+JR zOMGmUuaCbEg+lR_MI#Dw1l-Te8RUDy@4k~9J|!e7LW$`Jo7##}L|SYO3doG=EL4H2 zwfUBIG=f6$(CHIZgi0PG&|pS}+Kpk@jb@Tfp+rR5&1#JSC4e<(mfj?!j?|x`0(z~G zn#`3m<|qTf&d^Z9NK7Au5Agy8umLTwK*;X%_12#Ra0 zdNZNNOn_Tay#~uAgjCYgw;>qKa``)96F!wFGG(A$Z3ZC*6Eqs#aZRFeLV^D4#(U9t zV!jy#6)2A7S~cW(=z^xnWbQs}$PFaD5yV;b%hM+JQ z;fklZG80ayO&WCCuAa0z#f3h|6^N~(qcCJ zOZV}-jTS+z`aD!CwPHqKGQR@-d+bZtqEHEkbXE#W-EoIW#4rLeIZ}j&z%V4DPI0yW zCubn(4CpS7{}jvg7FmJr>ATV=7w?(}HIW@-C0m0p&q<#Z7w@2%4#TF$< zi#i65jf!Fq@j7*vN?U6l&=18i>-NZ11_rY{br{ZYUSQJi1zg^xYsvMB$c!3kUXpiW z{r<0o^fL+Kt`d(GO(f;Wm2VzJmn-HS5GR)?kDU{GfIXSCp7dWv7-I`cl)BlBhLo^tTMVq@_uAntKg&?)haCX=Y2{t)<;N532U(emBQF(Y!pcZLn>$ z<%Or^Qj>G!@c81$f$wcy_iGvkYL_(qmX+n%m2v!4Tn#w0EPWmLeDun)rjDUBM>x38 z3s3I%DZ17`tFz*1=J6KS1~lC@nqReQHLY>MjsT|DLCadZ{( zJaZG%Q-e|yQz{EjrrIztFsEgPM3hAM`dB6B=jtVb)aX^@765fKFxc2v6eK2Rr0UTq__OB&@Hb09I0xZL0)vRD^GUf^&XRs)DJWv2L<~p`n7AnVzAE zshOFfj)IYap^?4;5Si&3npl~dSs9rtK!Fm_wxX0Ys~{IQs9ivwtx`rwNr9EVetCJh zUb(Seeo?xx^|#0uTKVr7^KE~&-IMVSR9nfZANAQKal@=Hr> zm4GgVcpk{1iHq`zbF$JDTz5Q`N^fZsd*)yF1AWQ8NHOu6e}k~XD3q= zGZ#k-Cs$WvL!kGK%$;1_%$$s!oL!uaO<`tW(`#np=wfQ&Y~tkV;$mp%YV2g}=wjhy zYUya{>S*F*Yy#8knO9trn3tRivo{lHFI2BFUcFY%MX8A;`9&f5`8lu@5Rj2yl3$#W zU!dR|Y^IT~doO%TiO^it=+6z~O6^iN$^w7e`YwptGG_A^vtW zcQti$GBP%Db~bf0GXlCDqBn({Fw+M*MjwCD0AJUA8FtMTC-r{xKF*jn zhwb;~usy~P*h`}JF1Y-svHcp??z^rtXHOuAkamy!@&h6W+CM9}e zF2~L_XZ+@$%6Xu>=;)Hm5%;1`J~*^L;rQ$lt$9t{W+9w^B7&W*R$D$?_g*RB!Pe`q zOII?yweMIr_2%!t+am6nPCn>im!bN4$yK|>_iH1X_U1+>ub+I_x_QF-?6sjsPekqi mdSL0dTZ>EnFZ24xWx(+JS|F#`xz{&9MWm;zpUXO@geCxq8y6J- literal 0 HcmV?d00001 diff --git a/buildcraft_resources/assets/buildcraft/textures/blocks/architect_front.png b/buildcraft_resources/assets/buildcraft/textures/blocks/architect_front.png index 1fe009e072ad0696ba556d99c2b806940701f1f2..4e3cab9598c2762cb0e4973f7ae6dab00d7cf3d8 100644 GIT binary patch literal 1818 zcmbVNX;2eq7>>oFqM0I~pmlH!7PLx|O|k)E0?lR@2m(T&k_xCfmJlJ?xLHU5Em|~y zj8cYbO`Z_=+aO`MvZ{|8T%Rae&g|Y2Q^F~Q8^idCy^!vfziZjT!{fvokD}jFoil} zc`GKQ(HxSrv2s!#5iU^SI;O&oVVZRYicO;lgUkknDg`3}C8p8pMT{qnO$=W^1_6s@GMShrE)yp-EHEG-z^=jJ_)-X8V}_non0@s|uMq_VGpY!! zfz;x9z^IGiXdWh}G8zyg_UmQH7nYY1&5W!S%Nd=zbr z%`jjr8D_-O2o-f6NnRslDtDhYWCv2-2o?}p>QEG^2(C)gVR}-Eh#1rtrdq2Oz@P+% zczi_c52Gj-q{8R;!Duia=E4$0!i7dOKE~y-#bOSh%ZGzu4hW)Lm=B|3mk;ZVcCo0KgBY#MOC1E`l0lx#fRp>^i;!_s-ub z%fB};h^8mn@>`Te9%DzVv87ADd69W!u~M)_U*Nbg42`rr?sjOKFa&q?8?@M%$yE^n4vK1Ed z_8$Mfh4!IIWxH zYvpXu>uFdJ*O;(wPl&k1Lmd)+wPuuZ%6a;Ngp$oOZ$u_AHnd;sPAl}59lyeK&s`#k zvCe;089ldv9<{QpzdfD4=lYmiaqH$?n*Yw{=2kqRKoHB49Nb+N#)NVYC#|hYLbcsd z{A3(j`>1y6YunTP?#*8rH_X}T)L*K+eqmB+Mo#bE)XFN8Q`j=ZyR&+OW$@^|d%Mlk zk8G={Ss+*g#np~4X=-eoBbriI=xMtV?iuj9cyyNV+`y`NwwvXxWl(;3Du4d8psdoD z7`7$lQgg!H;3$(%6@AKy70Aa+o~%@|L*>$ioWE7iw0K$QfPe; zh|+_N{vRID*E1A{HEb_3Ao80O<4K&rp~UeITNkC z>=JYT6~^+uSLlPEV*G52rgp4$t2tU-yZKI~S4T!@K*@k(!?EqFxt^MWkR8#jqG><2 zs`H9Mk%i7P^61HqcZq;Q((Z^AqK#ozuXW}1iSbWHopMn7-!(s|yEOgbVEejXc>Ajl d&Mtm8j!hfmld%i*81S(Ft)yrqQVlQt;UBt&&Y1uJ literal 206 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbL!S%6Q7E0F&G|9^RTxw-j&28Kgv zX=$CEodE#>rKP2-SFg^?%R6%9NI^lt-o1NUT3Y=4{90REYierp_;w!!>J0XDaSV~T zT-xU;)L_8DayjeH_5bx@3L9N|=bm07xr*Z<^M{_0K9!UJ^KY9bsJNYUQeG!$n%q01 zCH2a&-HP@*r1-kpr@Gw!df39!Q2+Hd`Fd@Azh4&_|HP|Z+YB_G!PC{xWt~$(695np BPC5Vp diff --git a/buildcraft_resources/assets/buildcraft/textures/blocks/architect_leftSide.png b/buildcraft_resources/assets/buildcraft/textures/blocks/architect_leftSide.png new file mode 100644 index 0000000000000000000000000000000000000000..a79080dbd2b35d14e02b8c95a127772d30a1358f GIT binary patch literal 1724 zcmbVNc~BE~6b@4G0IC9m;wWx|Rf>>gb1X?9LXu4&(f~q0R6IhmK!9Y!W+5ReShS9% zMMtpEv_SAERS~RJJW!-5RkUcSqP1F75U~mp97ZaKM>j}p|8V@HJG=Wk_I=-b-}}8c z`&mp>xZAWj(?}$en{!OAOw)C=riCQ*gZ;Lr8ojnv4JvwLBGx zMdZrdtcyqpiR74~k|pAa(vP_cR85iFY$yh`mOzt8A)yAXT#CYwnYi-ZEPfDVEp28RQRU=|oe zXL2Bz4Rh>RiAIOZH44P;S4H@pzzW`pU^5@LR6Z zC{excBir%3RtqDTDhE-DF;oqV=a;K`i+>S=A0%QjM0~M8Y}3sqWWXSeDTX0fAOQK~ z39Rz}L~A@Ww;v{vCOwwGe3{|anNn$n z$1=~YCDo=4iwbK$fl{uN?qe3!jxOHkmvH6N)e;NYlb^ILKkQol@G}04n!3eH4>Vw1 zvC3wA1C z_Kp^(jZ5aQa&l{qN&2(@_~1>)(C6v(+!@YFzOpw$+-bGetveudFE^WKeF2jTip0X- z`iA`P)Fwm@73;12{cc+vKyVNdwPmEIFU>l5J-raTkY^OWqFK3Zn=T}>=XxEw(RaKs zaCJ#=uxV=;Q1$!Jp)1qRtUr2>?MS({bJ(&jhPE?eiq|wJOD0s~vrW9WaB}p>i@a}5 zi2>E@tQ)z`L?K_>)zGX+P8QJ2Z7wNv@A$RVUsqJskw+&-{^d<8YA6N&s6s}MG&a^6 ze%#SvS~VJOy_^y^bUxSleuUTVnEla@o^)&ICRxaX2M;_$M=i_4LZ>@lcjPV1UgV2Q z5pWj-K?}cX?Rlx&^QbYa(&1EG)-f1a@j-@b(eC-9mem^%W=j+NzjUZfOWQO&+oOiz z+g{mF>)*bpVm@zg+2)G-H$CzfTnz7P`njnw^Vi;z6V*)(%9pI$`F{(aSc@3dubzI> zV?O?Tpg^B+$#nABa7~ZdeZ$F8kE`9?Q^$1k-ZzHtAoA~8Dk(}lH==f~^f|I6qt0CJ zQ~wJ)bEG9+a#Xc`BgFfuAyzxk^w4rEI=6LfmdibAUFK9xNa$iiSHq+HJl(P<9fOlC z(TAxnYgXKz(P6CjJE`rj=xiB^EQmY-IR&k)EGrr8y-bB1r}`P)&TZe%cUie4*J)4q z*oNlsU);%SeKulj^LN&q-F`rJ5G@{Ra(lX|*W_Lue)po!i}Fq;zD9IEKEP}2W$J~Q pW}flv=$1a$r`ZcS*_)dtxss~F;;jy4QF7b=L?ViU>jdix{sEMtqeB1y literal 0 HcmV?d00001 diff --git a/buildcraft_resources/assets/buildcraft/textures/blocks/architect_rightSide.png b/buildcraft_resources/assets/buildcraft/textures/blocks/architect_rightSide.png new file mode 100644 index 0000000000000000000000000000000000000000..36f8385a1794225cb7b3efa77d98cbba9d88ff7d GIT binary patch literal 1707 zcmbVNX;2eq7*3!TOa-d~A}WLhTVNoYa|1C!lk5gi0v1wb96*<3ff%wIvx^CM;6dwf zI944df-MM+wNO9>4+gZfnV}XfXh*AqD2f&ofr7N+F;Kffu>IlmM|XDjJN9{=_xRp- zwqQ+MlpD*3#b7YpVxr*$dSp8uS10;C;XQne9u`qZ5|v1#Qx?>WG2}WT4P(a`(F`mB zLv=Zu+c7DF;he75BvDD~Sc#S}a!?0`V>Oy+HiIEuVKt#z14gmaunave14dd}0k&Qz z1J;SuT(wDwW$L4I%~)b?oJN~#&_?Kh6_ISIRYD6GF$!f{jafJ;vC4ocT?svRY=Z!M z3PKrVz#FHM)N9yE!i=#+96^|t%j2;jh{F?#Acz;r=5u*`kW1fC7*8k>K@z^0J$(VR zHM1^Vk^rlwZP66;LYCbjylFiuV*+&5vtUA-ZNzXY29^Qz7miM^lPGvf zg-8g&@^A%$2zYe(e6a#iK?;FF2`dGn8I5;wg-Rh;z=f3xm4eUXAp$u9BN1YR4~gYs zr3eexo#rb3lPgi0F_a?A8iL50sem<^1VxaUgo&+8gxEpr^tg_& zkim}Qc@r&+ne|&RoytrY*;DzI=-*+V_EwAt1&CawP&wibN0bVf#}%qz2v#U~a$uUP z`#(7YX=gx3ar~=TX13@GbWGotKD~I`JQz-QjG1l??-Oxy2E(a429|5Aw=b++ZCHSM zsLRq17W)?*ZZ61?M;BF(Z19(#F60cYVtG}%K2S_JSJk&g&63wP*9RScqL^Strj@sR z5t{Owx~IU>Uo5r_k)7K+GU88MhmLgM=NGuY?`$8SRy{U_doT3za*aAR zuh%L)H`#h0v|Y(R)SfR}`7q^3+btl4DpDQGpWNZcIrmlE$CXtsfQPR$K*`&4(Mq>m-_o!hu`U+u~TPnc(Sl`%nX$;I7EkNO&l zQ%@%|@fTlr4}Vm9Yw%}8fyOt^td-V&|dpg)A`ATqR{mx8BY<~u$ zmn~4*^-CwyB2LJ^+G7~M`D(L$FSuh~PiuBuW5w%h!;Q_8hemt)gY7QytpnqW?3cP* zg99tCo$hKHujxD8)7 z@uRA!?z~Lf{*z}Cdv5nf_Wpk5k9-@xY5bPOHXF>^226~NhxDGUOR-Oi4fz9${aja! zB>N|~Hbyl)e+6_j4W4hk>T%5_c*WicW?Vx}_x--7OQEhpe&fDp&BNwJBMnYlLyjZT z(%7<2XskH!(VR^iwlqu(wzEP#SY$OY8sb$nbZ`lJ<@&rAmrDaYqhEh1d0D}5X84>V UpVxg3UUK|CVvsnvUa@ia-%T%*r~m)} literal 0 HcmV?d00001 diff --git a/buildcraft_resources/assets/buildcraft/textures/blocks/architect_top.png b/buildcraft_resources/assets/buildcraft/textures/blocks/architect_top.png index 634fceae4780d5dd8dc8e4206d88172bf7cb43d9..b10a6e055a5110a90b4279dd6f56d98548599087 100644 GIT binary patch literal 1517 zcmbVMeM}Q)96ssRIU>_(jIs=OIkF99-1U02rAI6Ddac&ciUqY!jF$E-ROwxJJ>;lj zoY@8>s9Cni7WtYm6>v;4nVX7VxG{%>xD1y_zz^nRGJhA_C~^Fua*=u#xV)3phRXg0|4a(Zm|_$dta zy7kywpwIL0qG65nI0)?FDloGf=Y*>K>0hi$Q zi(Z~XLyFF9K3~*h(96;BK#*W=JEWN>sCk zB*tW-NEp6S!u9y0ce#pL3)FKc6yW@eU-NEMFm z;j!KoZ`@a@W2zro`i4gyG<@GPbor}`x#Pr+s`F)|Wil1@i*a4ufp?{-)7{+BIhDnc zx30XhY@q7E^%{?+!uIxhRdrW}_{sg4>a@4!j44ZwOq`x;E8Egqb)%QNxv{8udHuY< zEQsCq=c>lhZ-~b$B76r`ee3b^J(|5czy1BwSe;C#sI<+Qm{n8Tv;DmZ>za=|x2rlm grA6CkpNZZYsXzvY!Io6e3_?F(i^;||F&lRL10`EUegFUf literal 142 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!93?!50ihlx9JOMr-u0Z<#|Nl`@|AF+AtfU?w z-`3N`F@)oKasmV6#S0e%1Poa{T5J<1{Qv)+v-!>cYKKK49w+MAHy&zC`t-HXVbLBw lA05V3zwKGqnX}{wF(mGmzSMXw iconMap = new HashMap(); + + public static int getUVTopForFront(int front) { + switch (front) { + case 2: + return 3; + case 3: + return 0; + case 4: + return 1; + case 5: + return 2; + default: + return 0; + } + } + + public BlockMultiTexture(Material material, CreativeTabBuildCraft tab) { + super(material, tab); + } + + public abstract int getFrontSide(IBlockAccess world, int x, int y, int z); + + public abstract String getIconPrefix(); + + //TODO Remove once we get past 1.7.2! Bug #37106 + public boolean shouldFlipU(IBlockAccess world, int x, int y, int z, int side) { + int front = getFrontSide(world, x, y, z); + return (front == 4 && side == 2) || (front == 5 && side == 5) || (front == 5 && side == 2) || (front == 2 && side == 5) || (front == 2 && side == 2) || (front == 3 && side == 5) || shouldFlipU(side, getFrontSide(world, x, y, z)); + } + + public boolean shouldFlipV(IBlockAccess world, int x, int y, int z, int side) { + return shouldFlipV(side, getFrontSide(world, x, y, z)); + } + + public boolean shouldFlipU(int side, int front) { + return front == 3; + } + + public boolean shouldFlipV(int side, int front) { + return false; + } + + public String getIconPostfix(IBlockAccess world, int x, int y, int z, int side) { + return getIconPostfix(side, getFrontSide(world, x, y, z)); + } + + public String getIconPostfix(int side, int front) { + ForgeDirection forge_side = ForgeDirection.getOrientation(side); + ForgeDirection forge_front = ForgeDirection.getOrientation(front); + ForgeDirection forge_back = forge_front.getOpposite(); + ForgeDirection forge_left = forge_front.getRotation(ForgeDirection.UP).getOpposite(); + ForgeDirection forge_right = forge_front.getRotation(ForgeDirection.UP); + + // This would be a switch statement if it could be... :( + if (forge_side == forge_front) { + return "front"; + } else if (forge_side == forge_left) { + return "leftSide"; + } else if (forge_side == forge_right) { + return "rightSide"; + } else if (forge_side == forge_back) { + return "back"; + } else if (forge_side == ForgeDirection.UP) { + return "top"; + } else if (forge_side == ForgeDirection.DOWN) { + return "bottom"; + } + + // If all else fails + return "front"; + } + + private String getIconName(int side) { + return getIconName(side, ForgeDirection.WEST.ordinal()); + } + + private String getIconName(int side, int front) { + return getIconPrefix() + getIconPostfix(side, front); + } + + @Override + public int getRenderType() { + return RenderBlockMultiTexture.renderID; + } + + @Override + public void registerBlockIcons(IIconRegister register) { + for (int i = 0; i < ForgeDirection.VALID_DIRECTIONS.length; i++) { + String name = getIconName(i); + iconMap.put(name, register.registerIcon("buildcraft:" + name)); + } + } + + @Override + public IIcon getIcon(int side, int meta) { + IconFlipped icon = new IconFlipped(iconMap.get(getIconName(side, ForgeDirection.SOUTH.ordinal()))); + icon.flipU(shouldFlipU(side, ForgeDirection.SOUTH.ordinal())); + icon.flipV(shouldFlipV(side, ForgeDirection.SOUTH.ordinal())); + return icon; + } + + @Override + public IIcon getIcon(IBlockAccess world, int x, int y, int z, int side) { + IconFlipped icon = new IconFlipped(iconMap.get(getIconName(side, getFrontSide(world, x, y, z)))); + icon.flipU(shouldFlipU(world, x, y, z, side)); + icon.flipV(shouldFlipV(world, x, y, z, side)); + return icon; + } + +} diff --git a/common/buildcraft/core/render/IconFlipped.java b/common/buildcraft/core/render/IconFlipped.java new file mode 100644 index 00000000..a69d6113 --- /dev/null +++ b/common/buildcraft/core/render/IconFlipped.java @@ -0,0 +1,75 @@ +package buildcraft.core.render; + +import net.minecraft.util.IIcon; + +/** + * @author dmillerw + */ +public class IconFlipped implements IIcon { + + private final IIcon icon; + + private boolean flipU, flipV; + + public IconFlipped(IIcon icon) { + this.icon = icon; + } + + public IconFlipped flipU(boolean flip) { + this.flipU = flip; + return this; + } + + public IconFlipped flipV(boolean flip) { + this.flipV = flip; + return this; + } + + @Override + public int getIconWidth() { + return flipU ? -this.getIconWidth() : this.getIconWidth(); + } + + @Override + public int getIconHeight() { + return flipV ? -this.getIconHeight() : this.getIconHeight(); + } + + @Override + public float getMinU() { + return flipU ? this.icon.getMaxU() : this.icon.getMinU(); + } + + @Override + public float getMaxU() { + return flipU ? this.icon.getMinU() : this.icon.getMaxU(); + } + + @Override + public float getInterpolatedU(double value) { + float f = getMaxU() - getMinU(); + return getMinU() + f * (((float) value / 16.0F)); + } + + @Override + public float getMinV() { + return flipV ? this.icon.getMaxV() : this.icon.getMinV(); + } + + @Override + public float getMaxV() { + return flipV ? this.icon.getMinV() : this.icon.getMaxV(); + } + + @Override + public float getInterpolatedV(double value) { + float f = getMaxV() - getMinV(); + return getMinV() + f * (((float) value / 16.0F)); + } + + @Override + public String getIconName() { + return this.icon.getIconName(); + } + +} diff --git a/common/buildcraft/core/render/RenderBlockMultiTexture.java b/common/buildcraft/core/render/RenderBlockMultiTexture.java new file mode 100644 index 00000000..c8a07fc6 --- /dev/null +++ b/common/buildcraft/core/render/RenderBlockMultiTexture.java @@ -0,0 +1,75 @@ +package buildcraft.core.render; + +import buildcraft.core.BlockMultiTexture; +import cpw.mods.fml.client.registry.ISimpleBlockRenderingHandler; +import cpw.mods.fml.client.registry.RenderingRegistry; +import net.minecraft.block.Block; +import net.minecraft.client.renderer.RenderBlocks; +import net.minecraft.client.renderer.Tessellator; +import net.minecraft.world.IBlockAccess; +import net.minecraftforge.common.util.ForgeDirection; +import org.lwjgl.opengl.GL11; + +/** + * @author dmillerw + */ +public class RenderBlockMultiTexture implements ISimpleBlockRenderingHandler { + + public static int renderID; + + static { + renderID = RenderingRegistry.getNextAvailableRenderId(); + } + + @Override + public void renderInventoryBlock(Block block, int metadata, int modelId, RenderBlocks renderer) { + renderer.uvRotateTop = BlockMultiTexture.getUVTopForFront(ForgeDirection.EAST.ordinal()); + + Tessellator tessellator = Tessellator.instance; + GL11.glTranslatef(-0.5F, -0.5F, -0.5F); + tessellator.startDrawingQuads(); + tessellator.setNormal(0.0F, -1.0F, 0.0F); + renderer.renderFaceYNeg(block, 0.0D, 0.0D, 0.0D, block.getIcon(0, metadata)); + tessellator.draw(); + tessellator.startDrawingQuads(); + tessellator.setNormal(0.0F, 1.0F, 0.0F); + renderer.renderFaceYPos(block, 0.0D, 0.0D, 0.0D, block.getIcon(1, metadata)); + tessellator.draw(); + tessellator.startDrawingQuads(); + tessellator.setNormal(0.0F, 0.0F, 1.0F); + renderer.renderFaceXNeg(block, 0.0D, 0.0D, 0.0D, block.getIcon(2, metadata)); + tessellator.draw(); + tessellator.startDrawingQuads(); + tessellator.setNormal(0.0F, 0.0F, -1.0F); + renderer.renderFaceXPos(block, 0.0D, 0.0D, 0.0D, block.getIcon(3, metadata)); + tessellator.draw(); + tessellator.startDrawingQuads(); + tessellator.setNormal(1.0F, 0.0F, 0.0F); + renderer.renderFaceZNeg(block, 0.0D, 0.0D, 0.0D, block.getIcon(4, metadata)); + tessellator.draw(); + tessellator.startDrawingQuads(); + tessellator.setNormal(-1.0F, 0.0F, 0.0F); + renderer.renderFaceZPos(block, 0.0D, 0.0D, 0.0D, block.getIcon(5, metadata)); + tessellator.draw(); + GL11.glTranslatef(0.5F, 0.5F, 0.5F); + } + + @Override + public boolean renderWorldBlock(IBlockAccess world, int x, int y, int z, Block block, int modelId, RenderBlocks renderer) { + renderer.uvRotateTop = BlockMultiTexture.getUVTopForFront(((BlockMultiTexture) block).getFrontSide(world, x, y, z)); + renderer.renderStandardBlock(block, x, y, z); + renderer.uvRotateTop = 0; + return true; + } + + @Override + public boolean shouldRender3DInInventory(int modelId) { + return true; + } + + @Override + public int getRenderId() { + return renderID; + } + +}