From 29ef10e9f9699d187b6c5725ad8e2864e4cd9555 Mon Sep 17 00:00:00 2001 From: Mysaa Date: Fri, 28 May 2021 22:57:57 +0200 Subject: [PATCH] =?UTF-8?q?Premier=20commit=20-=20Extrait=20du=20pauvre=20?= =?UTF-8?q?jar=20apr=C3=A8s=20perte=20des=20sources?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- assets/torch_mod/lang/en_US.lang | 19 + assets/torch_mod/lang/fr_FR.lang | 19 + .../blocks/coal_torch_recharger_bottom.png | Bin 0 -> 756 bytes .../blocks/coal_torch_recharger_side.png | Bin 0 -> 798 bytes .../blocks/coal_torch_recharger_top.png | Bin 0 -> 888 bytes .../blocks/diamond_torch_recharger_bottom.png | Bin 0 -> 793 bytes .../blocks/diamond_torch_recharger_side.png | Bin 0 -> 829 bytes .../blocks/diamond_torch_recharger_top.png | Bin 0 -> 942 bytes .../blocks/emerald_torch_recharger_bottom.png | Bin 0 -> 795 bytes .../blocks/emerald_torch_recharger_side.png | Bin 0 -> 830 bytes .../blocks/emerald_torch_recharger_top.png | Bin 0 -> 885 bytes .../blocks/gold_torch_recharger_bottom.png | Bin 0 -> 784 bytes .../blocks/gold_torch_recharger_side.png | Bin 0 -> 822 bytes .../blocks/gold_torch_recharger_top.png | Bin 0 -> 939 bytes .../blocks/iron_torch_recharger_bottom.png | Bin 0 -> 743 bytes .../blocks/iron_torch_recharger_side.png | Bin 0 -> 801 bytes .../blocks/iron_torch_recharger_top.png | Bin 0 -> 928 bytes .../blocks/lapis_torch_recharger_bottom.png | Bin 0 -> 794 bytes .../blocks/lapis_torch_recharger_side.png | Bin 0 -> 828 bytes .../blocks/lapis_torch_recharger_top.png | Bin 0 -> 920 bytes .../blocks/quartz_torch_recharger_bottom.png | Bin 0 -> 783 bytes .../blocks/quartz_torch_recharger_side.png | Bin 0 -> 820 bytes .../blocks/quartz_torch_recharger_top.png | Bin 0 -> 956 bytes .../redstone_torch_recharger_bottom.png | Bin 0 -> 778 bytes .../blocks/redstone_torch_recharger_side.png | Bin 0 -> 821 bytes .../blocks/redstone_torch_recharger_top.png | Bin 0 -> 900 bytes .../blocks/torch_recharger_bottom.png | Bin 0 -> 785 bytes .../textures/blocks/torch_recharger_side.png | Bin 0 -> 841 bytes .../textures/blocks/torch_recharger_top.png | Bin 0 -> 897 bytes .../textures/guis/torch_recharger.png | Bin 0 -> 8553 bytes .../textures/items/coal_torch_amulet.png | Bin 0 -> 321 bytes .../textures/items/diamond_torch_amulet.png | Bin 0 -> 427 bytes .../textures/items/emerald_torch_amulet.png | Bin 0 -> 445 bytes .../textures/items/gold_torch_amulet.png | Bin 0 -> 414 bytes .../textures/items/iron_torch_amulet.png | Bin 0 -> 397 bytes .../textures/items/lapis_torch_amulet.png | Bin 0 -> 434 bytes .../textures/items/quartz_torch_amulet.png | Bin 0 -> 396 bytes .../textures/items/redstone_torch_amulet.png | Bin 0 -> 398 bytes .../torch_mod/textures/items/torch_amulet.png | Bin 0 -> 424 bytes com/bernard/torch/TorchMod.java | 113 ++++++ com/bernard/torch/api/ITorchRechargable.java | 12 + .../torch/blocks/TorchRechargerBlock.java | 146 +++++++ .../itemblocs/TorchRechargerItemBlock.java | 56 +++ .../TorchRechargerTileEntity.java | 366 ++++++++++++++++++ com/bernard/torch/gui/TorchGuiHandler.java | 39 ++ .../torch/gui/TorchRechargerContainer.java | 102 +++++ .../torch/gui/TorchRechargerGuiContainer.java | 121 ++++++ com/bernard/torch/init/ClientProxy.java | 9 + .../init/CoalStickAndTorchesRegister.java | 80 ++++ com/bernard/torch/init/CommonProxy.java | 8 + com/bernard/torch/init/TorchBlocks.java | 22 ++ com/bernard/torch/init/TorchItems.java | 21 + com/bernard/torch/items/TorchAmulet.java | 202 ++++++++++ mcmod.info | 20 + 54 files changed, 1355 insertions(+) create mode 100644 assets/torch_mod/lang/en_US.lang create mode 100644 assets/torch_mod/lang/fr_FR.lang create mode 100644 assets/torch_mod/textures/blocks/coal_torch_recharger_bottom.png create mode 100644 assets/torch_mod/textures/blocks/coal_torch_recharger_side.png create mode 100644 assets/torch_mod/textures/blocks/coal_torch_recharger_top.png create mode 100644 assets/torch_mod/textures/blocks/diamond_torch_recharger_bottom.png create mode 100644 assets/torch_mod/textures/blocks/diamond_torch_recharger_side.png create mode 100644 assets/torch_mod/textures/blocks/diamond_torch_recharger_top.png create mode 100644 assets/torch_mod/textures/blocks/emerald_torch_recharger_bottom.png create mode 100644 assets/torch_mod/textures/blocks/emerald_torch_recharger_side.png create mode 100644 assets/torch_mod/textures/blocks/emerald_torch_recharger_top.png create mode 100644 assets/torch_mod/textures/blocks/gold_torch_recharger_bottom.png create mode 100644 assets/torch_mod/textures/blocks/gold_torch_recharger_side.png create mode 100644 assets/torch_mod/textures/blocks/gold_torch_recharger_top.png create mode 100644 assets/torch_mod/textures/blocks/iron_torch_recharger_bottom.png create mode 100644 assets/torch_mod/textures/blocks/iron_torch_recharger_side.png create mode 100644 assets/torch_mod/textures/blocks/iron_torch_recharger_top.png create mode 100644 assets/torch_mod/textures/blocks/lapis_torch_recharger_bottom.png create mode 100644 assets/torch_mod/textures/blocks/lapis_torch_recharger_side.png create mode 100644 assets/torch_mod/textures/blocks/lapis_torch_recharger_top.png create mode 100644 assets/torch_mod/textures/blocks/quartz_torch_recharger_bottom.png create mode 100644 assets/torch_mod/textures/blocks/quartz_torch_recharger_side.png create mode 100644 assets/torch_mod/textures/blocks/quartz_torch_recharger_top.png create mode 100644 assets/torch_mod/textures/blocks/redstone_torch_recharger_bottom.png create mode 100644 assets/torch_mod/textures/blocks/redstone_torch_recharger_side.png create mode 100644 assets/torch_mod/textures/blocks/redstone_torch_recharger_top.png create mode 100644 assets/torch_mod/textures/blocks/torch_recharger_bottom.png create mode 100644 assets/torch_mod/textures/blocks/torch_recharger_side.png create mode 100644 assets/torch_mod/textures/blocks/torch_recharger_top.png create mode 100644 assets/torch_mod/textures/guis/torch_recharger.png create mode 100644 assets/torch_mod/textures/items/coal_torch_amulet.png create mode 100644 assets/torch_mod/textures/items/diamond_torch_amulet.png create mode 100644 assets/torch_mod/textures/items/emerald_torch_amulet.png create mode 100644 assets/torch_mod/textures/items/gold_torch_amulet.png create mode 100644 assets/torch_mod/textures/items/iron_torch_amulet.png create mode 100644 assets/torch_mod/textures/items/lapis_torch_amulet.png create mode 100644 assets/torch_mod/textures/items/quartz_torch_amulet.png create mode 100644 assets/torch_mod/textures/items/redstone_torch_amulet.png create mode 100644 assets/torch_mod/textures/items/torch_amulet.png create mode 100644 com/bernard/torch/TorchMod.java create mode 100644 com/bernard/torch/api/ITorchRechargable.java create mode 100644 com/bernard/torch/blocks/TorchRechargerBlock.java create mode 100644 com/bernard/torch/blocks/itemblocs/TorchRechargerItemBlock.java create mode 100644 com/bernard/torch/blocks/tileentities/TorchRechargerTileEntity.java create mode 100644 com/bernard/torch/gui/TorchGuiHandler.java create mode 100644 com/bernard/torch/gui/TorchRechargerContainer.java create mode 100644 com/bernard/torch/gui/TorchRechargerGuiContainer.java create mode 100644 com/bernard/torch/init/ClientProxy.java create mode 100644 com/bernard/torch/init/CoalStickAndTorchesRegister.java create mode 100644 com/bernard/torch/init/CommonProxy.java create mode 100644 com/bernard/torch/init/TorchBlocks.java create mode 100644 com/bernard/torch/init/TorchItems.java create mode 100644 com/bernard/torch/items/TorchAmulet.java create mode 100644 mcmod.info diff --git a/assets/torch_mod/lang/en_US.lang b/assets/torch_mod/lang/en_US.lang new file mode 100644 index 0000000..9094925 --- /dev/null +++ b/assets/torch_mod/lang/en_US.lang @@ -0,0 +1,19 @@ +torch_recharger.name=Torch recharger +coal_torch_recharger.name=Coal torch recharger +iron_torch_recharger.name=Iron torch recharger +quartz_torch_recharger.name=Quartz torch recharger +gold_torch_recharger.name=Gold torch recharger +redstone_torch_recharger.name=Redstone torch recharger +lapis_torch_recharger.name=Lapis torch recharger +diamond_torch_recharger.name=Diamond torch recharger +emerald_torch_recharger.name=Emerald torch recharger + +torch_amulet.name=Torch amulet +coal_torch_amulet.name=Coal torch amulet +iron_torch_amulet.name=Iron torch amulet +quartz_torch_amulet.name=Quartz torch amulet +gold_torch_amulet.name=Gold torch amulet +redstone_torch_amulet.name=Redstone torch amulet +lapis_torch_amulet.name=Lapis torch amulet +diamond_torch_amulet.name=Diamond torch amulet +emerald_torch_amulet.name=Emerald torch amulet \ No newline at end of file diff --git a/assets/torch_mod/lang/fr_FR.lang b/assets/torch_mod/lang/fr_FR.lang new file mode 100644 index 0000000..afe5575 --- /dev/null +++ b/assets/torch_mod/lang/fr_FR.lang @@ -0,0 +1,19 @@ +torch_recharger.name=Rechargeur de torches +coal_torch_recharger.name=Rechargeur de torches en charbon +iron_torch_recharger.name=Rechargeur de torches en fer +quartz_torch_recharger.name=Rechargeur de torches en quartz +gold_torch_recharger.name=Rechargeur de torches en or +redstone_torch_recharger.name=Rechargeur de torches en redstone +lapis_torch_recharger.name=Rechargeur de torches en lapis +diamond_torch_recharger.name=Rechargeur de torches en diamant +emerald_torch_recharger.name=Rechargeur de torches en émeraude + +torch_amulet.name=Amulette des torches +coal_torch_amulet.name=Amulette des torches en charbon +iron_torch_amulet.name=Amulette des torches en fer +quartz_torch_amulet.name=Amulette des torches en quartz +gold_torch_amulet.name=Amulette des torches en or +redstone_torch_amulet.name=Amulette des torches en redstone +lapis_torch_amulet.name=Amulette des torches en lapis +diamond_torch_amulet.name=Amulette des torches en diamant +emerald_torch_amulet.name=Amulette des torches en émeraude diff --git a/assets/torch_mod/textures/blocks/coal_torch_recharger_bottom.png b/assets/torch_mod/textures/blocks/coal_torch_recharger_bottom.png new file mode 100644 index 0000000000000000000000000000000000000000..5d546c171a319b69db8b478876ad154667fd3b76 GIT binary patch literal 756 zcmeAS@N?(olHy`uVBq!ia0y~yU=RRd4mJh`2Kmqb6B!s7*pj^6T^Rm@;DWu&Co?cG za29w(7Bet#3xhBt!>l<>72Ifbo{@88JIz`)e#>Eak-aXNHzwD)fx zf%f@t@`^KNeQ{Wvq0hDG$KU-E6e<#LOGIDJ+vQpIe6PUi|8q|_HvW{I_u}i<&|`%v zEe;~Ce|kF@40xC~-|P`!VmN2nmZ;z<sned*nbicjr%=6-3`_#`Do6Y9^{8J{G$2G8EZ(O8~n22lRwOQ@$ z?0ddNR|}EZ=JGrSG=OFL&yk);K-sYn3lY4s}e0!|4s z?qRD%k4fCxcGU8CiqXRotB)T)I&v^B-Fi&o^Zv!lGGFZKds=kz`*-tmmdh?{-mBhn z?acGyRjYpa=Iy?F>h4`xr9&x33s-3^(pZ!!b*%7+g!BFH9UQB#a;-I;KYxCUz=mr{ zE-jyb`hn?#V9E~QvfnF1rY3l3iUn%vy|6OCLNPYaA^XV=u?`;_(r(N8pd#~Dw zqa?PyW5eyY8eL59ZMA%Z-@Si-^0UlZ)58XLsvgd9c6sr8-rcFVdQ&MBb@01Rl<>72IfZxy zMB99;=Ov+~*Vj)lnp`q_s$$POwr5Hux=q#Vk46`+HrVlziS6!A0mrrpEo#pHFU@`T zYkjeu_}bq4tTi9(&i}3|FE2OZVLoSRbN=yuVL^sp`_%iA=M*z+$@RYfoyD=CBjMM+ z=f8f<+O^K`SU{-g26+N?(HHAnG>6O*1hgn z)bX;!Yg(#Avd5&BWtk^F&r$Kb5LH}S+PYOt&`~m3K=9NimD5JcE^D5CI%!)jXA?uV zZsx2_QM!@qum9NRFLQiJW>uE}3!}KWxJ2@~pK6mi-`}g{m9J}^f4{jY|9*XQao^p% z_KpX??YuNYu9r?p?Yt(nR3tR?Z?|F7JM|ZS2K?>Jxwnm^dT+e{e&%`coMMf&rpF{0 z<`nZBK2Wxs)$7M2_aFbnGg?okG;I}IYZ^H%P~_;#g9bb$vB$HvE_!Ws$t2ZmHlyjE zzp^6p4~N?u%s+oVYySNCD_3<{^nJ|B%Twu6>RP1W8~n&3ZD-7lp%D!u}?&g($vbk2_wL?p3Qm4N}o5oU(!xL`b zj=uKVH1_(!DM1|^#~)98{IR1WVXf-SjBV{*$NP61&)>C9P*AL!)pJt9TG!UZ6HlM2 z28t})y6kfq}u()z4*}Q$iB} DnLBXb literal 0 HcmV?d00001 diff --git a/assets/torch_mod/textures/blocks/coal_torch_recharger_top.png b/assets/torch_mod/textures/blocks/coal_torch_recharger_top.png new file mode 100644 index 0000000000000000000000000000000000000000..deb20d53ea337962c1f31363a537369a90d905c0 GIT binary patch literal 888 zcmeAS@N?(olHy`uVBq!ia0y~yU=RRd4mJh`2Kmqb6B!s7*pj^6T^Rm@;DWu&Co?cG za29w(7Bet#3xhBt!>l<>72IfdC@TsYgnz`)Gv>Eak-aoTnA-E8Gh zhNJc0&!tQ(kU;6MMlvG~E9`58HDXT3eEy6@k@W`U;VM#mTy zOi`MDe(_c|1s>-qL3@5Bb(YyX+{w9iHbbar@xCK-n}GsC{WUuQg9=Bzh8xw3Mm)53<_+dI~s&M{jYq4Q{$-nu;s zL9?X4s_v_)XxfrH`&|iNrsp?4zsk=`b?)X(H{kJHep$t{>3QXxxpM`-{bx!@&z_kt zm)T=@qQvU#p+ii5nX-+Ez{kv$DtB`+k3^En64=_+j9z?r!eB{{D+m%DSfy zZOdiYa&3v%>w@3R7I&71XcgDh@tqA{P;}t^U!G~Hff^zoYUS6OCgtXy)zQ;S>QS8P z_3*cy69-!}W1&p)ZL>g;#GYj_^Nw%Qx%Jj8DqC$b=QhK(iy1BNe^<;qe&>$N-8}Z& z+g65Xsdzd`wD~L#Zc=d2bQN*^vCm(C<%Ei7flPbS#*WlTo_6PVb#YJc9iRTC%C<$I z=Icex^0@uoQzrSSIj;>{eEqect6-4V$;)DkFLu1#CkYE^EV#uVzj4Q9JzYQperBVhlgEXRCNNO%Ylua{Kg$2iwK^CM)^a zvOBE4>ZG+)qW}1n=k0g?Kb^1M=BhTClfhBIK!WGT=Sxp}kD2l?xtIQ*f3Z+zmb4lF zxBsjQc5FI&>J(R0Hd`~J6UVjd*EtVQsBWL-wztX8L_b8P$FSr3z1$gx_gD8{o{?@f zHz`tV-gCwaufLv1F*=_R^?!z!%<=y7ibsrV9$TnQ uKRr=}Gb($_wIhXRtk=grU2gC9gMY?@GR7{(UTFpf1_n=8KbLh*2~7Z<#hG>h literal 0 HcmV?d00001 diff --git a/assets/torch_mod/textures/blocks/diamond_torch_recharger_bottom.png b/assets/torch_mod/textures/blocks/diamond_torch_recharger_bottom.png new file mode 100644 index 0000000000000000000000000000000000000000..c81d658bdc3c97515753c20e230afdbcb965e942 GIT binary patch literal 793 zcmeAS@N?(olHy`uVBq!ia0y~yU=RRd4mJh`2Kmqb6B!s7*pj^6T^Rm@;DWu&Co?cG za29w(7Bet#3xhBt!>l<>72IoZ|!3RuZ9Ffc9iba4!^IBk30v*@;) zM8n1P>I^J~1(R|j!%|b|}3c+JzQy`R4Q^3rb#JC?APRfIv2WmZ4;Ws8kBb28WQ{(Vw- zlWRZ6#f(j>l8SFEPCC-%k{0>zzwMRkRhu3aSzi8LzQu6Mab-iU-FNv`3-{UIpLy6R zZp}u9{93p8wUrCY zMAn9!sm5ipo-C?OJ;Gu~Z~wLq4HR;6Sl*eu{dUlrFcq&vR|7BMUyPe|o?KIO`L*nz z8Ylm6TR&~1=K_K{b;ruf`|i#S$!56`;l<>72IXR@19%LP6U|>4s>Eak-aa#An?n$>p z7#be_zf&@OPx+0~ONNshF9cn@z~s-cWe<~XiGjf$cHIDngTfB(2M?qeolNQ6{QB#< zH(OI8FI}{3S1O7B+v&gmzg~-gfCC4kQ^SARhKo^rT};nyuT|eMF|>4_rNZ+5V&8$o zKj-Xwf6;4WuGA)zr8?eD967IMshqwLWK?-RL-%l<{~VP&*G!9Euy6Bq4h`*j>=8L_ z&UyVAp`y1WCM{ZU_q}GC@v6wyi?hu2&vD*c%%Hh6<;%R?Z*40hi|poaj#(?Qj8j(f zjY;6yG@blucdnWqllY{gtj|?;ZP8N0Gkp9Pye{%G@02ynJT_haKevBLWs{AO*AMXB`^jkcpS7*QGsx{Zr`MzqQFis?9Rd^Xv9Bq=bJcY5RuR{O zM~}+fI6T?^!57^hAF}nt^*B~b>UFV6%#P5C7eZJ1^ zCI64V>-%q%*}kv;s_T3Ek(&E`{yBRK-7atQcrN29R9sWgaj9$fufDYF6PIu)GCyB# znJPB%2xsTD6wfn{-TQa!-Fq~uyJza5-wxNeZOQHaF85wGb=iv9ed6KL3@zV()Hx{c zh|^oyH7Rq}gu)aHE2||Q!Ago3?k#Rn@fTrtJ@sb|%YxfE7XpvG{AlRLC6xT(-eO7J zEuJhaHhp@=Vv)@%iPyK?*q6Tf?xIOEjt70b zcl-IDpCz5;eRr#R`R9GLF#2ZOo_TD-(+ouxeQ|CjmL>;d-xqiJG+8pgSV=s1_N+~S lY428z_a6^?sIdHJj1w)IwSHS&Is*d(gQu&X%Q~loCIBAGc~t-a literal 0 HcmV?d00001 diff --git a/assets/torch_mod/textures/blocks/diamond_torch_recharger_top.png b/assets/torch_mod/textures/blocks/diamond_torch_recharger_top.png new file mode 100644 index 0000000000000000000000000000000000000000..a113ceabc951a9207a6c4c0d974169196a74c607 GIT binary patch literal 942 zcmeAS@N?(olHy`uVBq!ia0y~yU=RRd4mJh`2Kmqb6B!s7*pj^6T^Rm@;DWu&Co?cG za29w(7Bet#3xhBt!>l<>72IXU?h75o1)Ffdztx;TbdoL0SXI$Nfc z;lRiDf6~&*%gWQrHqXwB%WVl;n`+o@b}2w4nn{UsAOF_}j;#8(xLPMUuU(p?WLlA- z{9}PalD?NCi{`!!u2Rk{+={B(IF{PZIBvE(dz10(H|Ng0|Ni;GbN?R_%FfMI74i1H z55+G;HD6=MSbNbyWw%M9Si(&NKlPFTtaR_3?Aq5-Q^Dn=US9h>8Ef{`{7B#XR@>4)&Gzk8jGA zxvqNW-m$aKKYq5WueI|P(dG;Lweo#EpJGeG^VRAC%M$7`r#`w99&$aqWD<*Zs<1j| zot=N_U%Tte)fg;HOdQg`@J1E(2yFA+xB5V1rzekz{rUTfe=kqpVwD@VDs)Qf#P2p@ z>1v&eW+?wIpIG@)C5R(ut>D`g&JryW%RHYRsb=umZ+xzOvHb)O&z-xE%$$AR==ay# zGF2t~xBd5?eD+K&`}FA?%~k^+;nSNK9{-;a{QSZ0$pzIDox&&fp7pgTV)!-f!O`s( zmL2$5%XL?kXRYBe`x#ekZBw_f-QITdVyu${Tdy0lrs^S+%ZABV_q%|m=arWmw(fNmXglF@DX(1P`xMSY0*XtI z6keLb6+2^^=ib2Qhi-)Gy|FuAwYSZH=iFBx!{YCvGN+YZFIoBKuJ_t7<-TN>TPA^C zn?>7N5<7l;6OLGWV5_vnOrEz24eo6Ze)jJ$td-(!-kK$P|EtF&mWh5hMY>~m%;af} zw@ZHaOjfSGvMrcD{@9eRHFF<*xoW7kY#qaff`2;O3<`3jmx`o4{qS(JpH}OSkHKl; z(>MAYOg?_!mAknoSJ-4W%UZF&{yiTZ3c7c%_6>Vp@62b{;U(m9YTL>Gb)7qprZOD6 z|9?hfto23{6LT|H7GSt3$Gkwbi2h`>PoZivI9OpH*8n z`PlawhJS0XpL|*r;k01OB3ajzbp4OVFLC9W^%@$Ptf=;u+k1XbU!$6bkj`O+z^*Nc x7kZSs)^%T!T5I~&;#de*{=@2jd$t~`Z|%-aX)u{q&%nUI;OXk;vd$@?2>^`(rkMZ$ literal 0 HcmV?d00001 diff --git a/assets/torch_mod/textures/blocks/emerald_torch_recharger_bottom.png b/assets/torch_mod/textures/blocks/emerald_torch_recharger_bottom.png new file mode 100644 index 0000000000000000000000000000000000000000..8bb3d8833cc57d9321a8baf523f5d16c2fd766fc GIT binary patch literal 795 zcmeAS@N?(olHy`uVBq!ia0y~yU=RRd4mJh`2Kmqb6B!s7*pj^6T^Rm@;DWu&Co?cG za29w(7Bet#3xhBt!>l<>72IeCQb1H_XV7?@Ugx;TbdoYuV*n|Iqy zq~T(IolDmg5AUuVb%$FFwFM39R(QWC+qHY2if+R7jVXc4R3|y}r9b<&F!m5*->gF`rr?A*y}QV?z28i?%puvY1gWC zoQg@krXj1l++sVD51mzxoO#*5Z(Huk&vO>V6>h$-q_pL&bnusq#gfg=yEC8M{;kZN ze9`T38{<-uNkW>c-+tR(i`w;C^tp`0(dyfuzML1{>{4QK=#ZXAgOi}sgBm;IKIPkQ zr)|sqc-bXzT8oImwM{p3cHX_8H04-U;|!(e|7&maTd&%+EK{m&pS$$ok6)*1OuU=d zez9%(VeaBNk?XJB(CA#Zd(-~iOV??2eeIGze_mqk&i(t+36cOW)j(!=DdFmHr#!e;ivAxX{h?i=D39OyyrGHHXo|21Zy3-nOr2+ z*~VV~Yp&Y#?h_&4caBM zbr{b6^qHo6<89f30}{-fYre~sm&UA@Z4yvb_KG4>5Y|7-@fg=nss#g{QU+z%#TfydKHhHxchIK{B-v< zhElU5?;L$N_xXi=LDN)AV}sXg`z;r)n{~l!vdY8flFwzHZaOf#BQ&t$*YAlwx*S5C zg^!A4ckY?v$YS2#a!~kDkBXwIW6~2}(+-aROiTVR*;MMVoQZ*ffx*+&&t;ucLK6V| Cba0XY literal 0 HcmV?d00001 diff --git a/assets/torch_mod/textures/blocks/emerald_torch_recharger_side.png b/assets/torch_mod/textures/blocks/emerald_torch_recharger_side.png new file mode 100644 index 0000000000000000000000000000000000000000..d9e53b145cd92f29cb4168bfdbcf3318a77eae30 GIT binary patch literal 830 zcmeAS@N?(olHy`uVBq!ia0y~yU=RRd4mJh`2Kmqb6B!s7*pj^6T^Rm@;DWu&Co?cG za29w(7Bet#3xhBt!>l<>72Ik`n=7O6~RU|>4!>Eak-aa#4#-aO?{ z8HbO>_BM|tt7X=A9(IdtX$cUx9q8cO%Hq$kXu-kw7!Fq2{gL z22Rg8M>hM}%(E_je((446U=j-y;y$l|1aT-i#UV~B?KH7Ge`s}@HD zWb3N&xxGE2`{6_F^@d;Mwj^DDb7AMgRcRUto1->Mvj-?BRlF}exA3@_Ui6mla@(_K zzCD{!#`|=~gAYf4msCDbdz;bi@mMPDv*gt^PC7b#@dtSM7MoZZE4PX4*tc()w(_sK zgYQ=_KO(U~xx0Vf&75OdTa#k1-gIkP;Ru za+&jadV0;Thy4=2&FugFlG~npJbHe;%Vm=v1{c2Do^Dp1Zl0bYbVDcEZhrEbrE%+T zZqh_1son3doQCXM3MP z!Lwi;^Mj(TN%>I^o8711oN@G#T;#-N4n?I6r!`O7Xngo-Yp=4PAC^OSYQ#;mP~u3=z3JGi3usSgSu< z)_&;Oa`fLv@%}pN0Rk4WY)EZVUD$)9g5**(Y7#L8cPIJfy$OyD$C{p`cD z*UNwU{8&`e?bX*=DxCH_7SA<~v)*%A({<>jy?RQP%LI=e+wHgc){3~MdA#&{boD0d lq?RcxofDsD^>%!)7h2ny?Zch8oq>UY!PC{xWt~$(69BR$dT;;$ literal 0 HcmV?d00001 diff --git a/assets/torch_mod/textures/blocks/emerald_torch_recharger_top.png b/assets/torch_mod/textures/blocks/emerald_torch_recharger_top.png new file mode 100644 index 0000000000000000000000000000000000000000..6c0d1fbff0508d2e217cec63ee2e05047d54e568 GIT binary patch literal 885 zcmeAS@N?(olHy`uVBq!ia0y~yU=RRd4mJh`2Kmqb6B!s7*pj^6T^Rm@;DWu&Co?cG za29w(7Bet#3xhBt!>l<>72Ik_~~vt@=eFfcQDx;TbdoYp<>pE12u z=D^4A&wtm}ou7aI*@CnQ-6|4?u4Q~XUgR-7c2~(qfv|S2SrbxyI}#VMIL1o#-rBNo zCTFQZeyO(gn}8b!dP0sZxuIB;o4M=d`Ic_zJzCVq?e5p(~{xjI`m<@<|(6Wz1sI@jjhviG}e!our0hoSMA z-_com3?Eq56zll;FdBTgkQQ>^dOhQZ$NASI?5%p;F8bYG(>}*^cCoj3&WtXN-b_{9 zb$e`EGi|Kfe{ER*#?dwE^OrBbHP+6Ek636~JICHydxwC--Mb!_TF$whYps=M*pU5$ z@!#FwGQGts6q>HhdOKgviDS;}c%`|v-kI5X&t6MBy;yi;sk!};8EqGj%P*;TtvaXS zD_dyv;jN#nqBP~^S#lhBGBJJT&2Pr%s(0Oz48Fhrlz)8x=GPPJ!j69n2oh{(xSX)}s9E0{>%&u6y_yszE}EOBu~g%9)6Ik2XHIE$Z8{)qk>+2JlxIINXv?CG z-)7%~L|85Qg*XKc%w$XEx%ovhLb7RRx5ttVrM%3CH~dx>i<|GlC|&7y%`0P$>%AWj zGdik-Chc(j{!!o3d_T*9WOaUK0nJwKc_qJep0C#tJg&R#tW1N#6Z5>qM=Fn4eEA}N z=I<}@!aGU7H*z+8cUfdm>Khtn@X_de&lh2VI{EpE=Zj66gmg>h+a3OS`ZR-03rJ)N;UEbS%7jjCdec#=~lY7wm{MT}SM#jHWBCFqDlK;P8>xRdZoA2z}+g3O& z?21#iZ|D?@bk5$RmF_=ZC@`-+t#kjyfupV|DHYi}_LmF)ZU6SL;K?>O&K3r#8yiex oGk@zH`ftnfX#KvY(~s`|$^Y58=Gnt+Ck7DkboFyt=akR{0QwM=D*ylh literal 0 HcmV?d00001 diff --git a/assets/torch_mod/textures/blocks/gold_torch_recharger_bottom.png b/assets/torch_mod/textures/blocks/gold_torch_recharger_bottom.png new file mode 100644 index 0000000000000000000000000000000000000000..acf4c92d136986680ba4ba5ef1aefe1276a35a75 GIT binary patch literal 784 zcmeAS@N?(olHy`uVBq!ia0y~yU=RRd4mJh`2Kmqb6B!s7*pj^6T^Rm@;DWu&Co?cG za29w(7Bet#3xhBt!>l<>72g!C;x^)@LmFfh&aba4!^IBh!lX3?WC z2G-wt8SYFnGdc^i?!|l-{dvab$@58FXD#|1j%Dng^llP+)-P_qx$DI0|9!0HP-JLo zP^j?dXgn}Cb)!h78;6{H!bZO5I)y@y_qsF7$oKc8IjuK&`@C1>v_?16k_ScmCZt*h zdF?6IIcM0z>?w5FMBXD=?bf!XTG!89c8Q#3V`~?br?q8*h-;sra_G)ww{k87eRzF+ zeZ^~zJVz~-9}c%m*KD5i_~VJ4>k6+4E#*9CxoXv-b=k9ud;5|$=`7bMn#2DhRA%Gd zyg;wSX){x2p8V94X%drf{zxM!R>bB_8H?i1IQtLh7EL*1**)j1%k8ZiO9MEL)j1sa z>+}9c>V9`^*X!G6EOhri`uw^2^6BCnax1quX`l69v(;oeTQbk=O^>Q}8u$xm&U&=g zHPbUR^v(Bb4uxj^iuakb+KyI!Dn0pedp^UL!wtoKyVh0K)*ftc5NY~ef8XF(z>}k~ z$=6HY@Ux%Vv_!+JZqHwbR~`EN(R;qn$V`%9-?i>=24v9~X_n;$9GJtauMX~A2zU*Focvu*F`cyMA< z&o=qOq|$h!K88L2zxxHQ*_h|J?orR#JpWlPEQ*EKluCWBf7dzP6vlPOr#Ls#Rq*y* zK7ow2ANjt#F^#pqwAK7aWW$v+eu6I#9RDh8Ej@4Eybafk_?SIseY|eJet}6;tEBAH zC5AcM_#>WQ2nsL{U$?!{W}3{t+VmIsKA(H830|xI#&7-ao%NPWU7=eRy{$gBa@k(f zBbk0X^)ya(dH-$usJzopr0QlNtL;wH) literal 0 HcmV?d00001 diff --git a/assets/torch_mod/textures/blocks/gold_torch_recharger_side.png b/assets/torch_mod/textures/blocks/gold_torch_recharger_side.png new file mode 100644 index 0000000000000000000000000000000000000000..6a4c49ef71c091426f51d2341e678fb7e30ad0c1 GIT binary patch literal 822 zcmeAS@N?(olHy`uVBq!ia0y~yU=RRd4mJh`2Kmqb6B!s7*pj^6T^Rm@;DWu&Co?cG za29w(7Bet#3xhBt!>l<>72gbeiduy9r~FfbkVba4!^IBh!FGEXIy z!R`M3lDDx}-v*j*lXhv+X>{Qbl=9^=cUZEdMTYSRC&vy3O@RpoOm0dHnJiAq8!Haq zeY@%I*6_dFji&F}?tlMs#5~^q>%D4+2Z9yPKiqprhbw3F9F208Xtj8L zfnoM#-dOtu>9bxvbeN*@B$6$tVE2Ai&!8n!EV5^=S^73=k;W38_Y-RE142bz?b2n~ zKG{6~dO7%$YopjC9q*UF`;_Jf>xgA&T3Fg0lkDCu9He-la@DT1c}sH4q`&Q!y(ZCQ zaVW|=P~^?F=u?0BWLs1`y{0XVcz$uSLBh_MMN<~dcUzXJ;wfxb@l9{fAI`d;aw<0U z|Bd%dxO4yh!!?eYty|eFzcGi#E}Y_|_+pkAqXXCDas#`2k>R4Xw-+pZ^zdQh>CeR< z_*QOl(mt!*V>o5I>V*T=_YW<%KlGsUu|ztLmv`5qgsoAH>@VjYw{(x3=5uZ0xni^Y zJ)9*Uo*&;(#clUzQg?UpobMirJAS^OweS7OOK$>`W3R8dmi@^_{dCc~b?blpnJgdh zOVWP-j}GVCpO1$7uY4_)&68}up)S|=?iG)0*+hv=F**TN$8sy(Z+~;y=;U$!q*m%Y z7MH}9pe_R*OKa=o{r8Q1*)*3PsP+%tZgQ0|z3R;sLw}LftDnw)wPiSG`D-2XgS2Yr zX=e?~oX#C;IeM|ng6o4*Qm^By2_`{0n`WG?;&Z5sH{@oT=I-9$klnj^f&226v-@^g z9azn@#Es*iiRHR7(?o;h;;J6QwspCkk6QNs+sm-@;;H@@3aWgG8*7?2is`aG&9DFP z=X>@ejU(0lg?))K7p)Fh9Dj9Eu-@D>D)Xq$j6hS~yBii;O=&6Yn$Y$Ap54Ri)6Ffi zHTiYV`S?6;%#-MRJVV3p!iou}PkVppm$YUH-K;LcS-7C!UE#H|-A5}MC9BqK=6THF b^wBl<>72gbd}s9JF9!U|_cJba4!^IIVinF(){c z;lRiLzxQ4Lwzax8SM#-7X|rYKjMHTX-LqRePB^kJn$six_~2yrJqtUncX;?*Xb|E* zQt>e%sYjgm;*l3hhO?zrRv0Xn;G8MAdu_J$wr^{z-&WuMUisns=4Hp&&mQrZxKaI) zgig;jiDZL6`aH^a=7}83*wSbaq#;`P)ob!sH}2i`^PipH|2n0r%V&!)dn6R;9`q_kNrt5DN zIm%8}WE$PnnSMWhnRJ$#dw0(i-IgPdriOcSXzuv-TWb5WS68x4Lqr7qtu&UNNHMyS zWqR)H9|niYKa6Vg@3voJ6ZAfE@@dhTJ)y@AeYm@I_nG?8#hax!1m0ChJMOVtZ~DEz zt$F58ZY*Z@+5d$j$ZJZMz}*GTr}Gt;K6x{{pYg-JGoF3Zb$hyQ+`fH!;%oVhAAV*} zIo@VjQ`PbIZLZe$ca0ZM1gn2PUzN#!ys%?YNAmG@iFx}OGEc6OTe5fa;ls&=5<)k2 z>KvM;GTF0*H99&vV!D0BoiAU%CiW;!D>(7|Glyd4l~o#RH!fA-VA>M)=Hz=-vHrld zVS#}y?|LgbWOY8=KQ$e7t{0maZC$#1s*NE?4spzL`ZW}b(N=8 zVco7z{N4NSK0VPbZ)E<@C{ZHmwpnrahhNtB845oB;XQC@TkaO7pI^QlyjgMP*>U~w zh=_Fw-UnxH7Ur<-oFaDHcmB5fNuN$8uF*YuDr)l5R?~0OAGK&Xd0c+_?E7mSy>JGL z@{g8mY-|?~gl+B>7Pcw*ATaUTl==1tuDr0@a;fIyNv>lJGM|2>=ignawDjmqbH3o% z^$*^cd025i@|$$__v|grdX6hzlSn4DPB zVaTTADbl*5@WQrcGqFH*hs>jMm-3nCt^Xu{kD+LaYUyuz1_lNOPgg&ebxsLQ0M%Q> A4gdfE literal 0 HcmV?d00001 diff --git a/assets/torch_mod/textures/blocks/iron_torch_recharger_bottom.png b/assets/torch_mod/textures/blocks/iron_torch_recharger_bottom.png new file mode 100644 index 0000000000000000000000000000000000000000..cbbd508fa8bd328125ad81c371ef6f81e9ba1941 GIT binary patch literal 743 zcmeAS@N?(olHy`uVBq!ia0y~yU=RRd4mJh`2Kmqb6B!s7*pj^6T^Rm@;DWu&Co?cG za29w(7Bet#3xhBt!>l<>72g!E*uPYvI|z`#`E>Eak-aoTorq3c=Cu)Uu4<4OJ3a4BI^Go7TBPnpU;9z5|lvgp~Flw;L(b!F!)ZO$LIY~L!z z@LY!B^rj6rb2eOiG{-r+*RV~aYr{3A+WXJHeVbM&Gcm}Bhq+K@@^edu+}o2)$({{71}xRy+LQrQ>OwMpmty|ZU|k4ela{^7(i zr&y-n{gch}cklX^WnPF9b`?A(vF)~QY3$`vSx12h%QR=7Wm{|d>D8;Q_ICCb0ga^| zm#6%#<9E3K{Y{zmsZA<8&U1>t)cVUDw|KtdwN$0m+!wq0?&h^`o%Z-6N5j@>mGf4v z;(9IWCN*_+n{>D@S#IyztaG|br7wAt&f<01mrPu}I)k{*e?GCPXOqs) zfB)Q~vNv8^_or)-!ujG`+n(0gJ^pQ18k^kn@YAPB20WHBd>Ly`ZhG^+`SC}O(9oRi z(U(k~K7P!6{_~CZ-zAb~EbAeO}3+u{2^@s{+T1U3?7pze~0?s(4mZS1b1= zPYL?LF#9Z!==+ShecW*RP_QEeae=ZHWmo?rn(*T}s<->jrt<+Lk&?t>*smsNHRvoel7m+ z@83SR8&RiUmMmKL+VouHw6&Z6TlimQIiMeCwea)jmj%uY3=9mOu6{1-oD!Ml<>72gmldUSpFI_Ffgt2ba4!^IPE%lcb!K0FuDTqnM-G)um+u;!N0##)PkJYZ% zJRV1$Uz_W@{qEK2tCS=vEgoLHX!&dZ=l}Q4p6x9@_pnm#oaLIW3>MEBUi_YC;=A$M zqdCbEY(0i8i5*+TUjDXw{`|R#Z}XH%t5yYgO-z+!*nPK8#j}t7*S_VMQd5Gaq;{^~ zx@?t}+GNhy>l0HY#l^*a)P$EzNr`N`Hp}LG|K67+U50GWW%da$J(v0Ycb?Aa8E4aS zwoA7qD)2b>81@`bHhXQF8Y#rWSST}jndV^w1%H44oqP7Ua5P?$FWe z{ra=dra3Ub-`}>`|G{bbNFA|=Y(b|DQEM+mO;+Lj#F`K&(sMldkwx0hm```j_bWXS z-}C#o_P6u1-q-)=+_lc|*oAGnu7MxEd};Zg)MayC&}qZ%w-t4DZmvw{%YDuZZK`Mq z;!1(SchHdL!S5#CS_-wZ3)^%frxjLLpUyCG^3vpNYS8F9@p(?7gn*O5{;xkj&+m89I%0Xe zJ493Um_*m21iSgltpY5L4xynYzRsbcEr}h^x$Sea4iXFhkhF=g{_y7t=i+O6a{x3{rAu>V^;Wn!}^Pa^{Z1B0ilpUXO@ GgeCxg&u>Zq literal 0 HcmV?d00001 diff --git a/assets/torch_mod/textures/blocks/iron_torch_recharger_top.png b/assets/torch_mod/textures/blocks/iron_torch_recharger_top.png new file mode 100644 index 0000000000000000000000000000000000000000..0cd1adea182ab3ea361bd490c2b517a165910655 GIT binary patch literal 928 zcmeAS@N?(olHy`uVBq!ia0y~yU=RRd4mJh`2Kmqb6B!s7*pj^6T^Rm@;DWu&Co?cG za29w(7Bet#3xhBt!>l<>72gmify@{5QwFfi+Sx;TbdoDQ8FpCOaV zaHM{B_4e{R_wL2+c|2*^bz=dZl@}HMHY?spQi)i?A9^JqzK3I9NWhZ7gJM!#p|>@z zXlVUg>5;jC<59EYS`U`&+wD;%LDCl|iA}!pxa_^trt+P4^Y{O)(dhkQ!oz&n;BW@> z-_)(S#p<)S*)#=pX>>6JcrhxpD9rT}b`|u}JY?YFb#m#<%YPoP6MB8(_L5G6US_NSCW=o8N{STQ8N;W@a_h*EmaP1IcTHCtx#a;G3o;+#2 z5lb#+Eb!L!R1tboWXW^*KxwSp{ja>r+vN`z%9!{jmp>Hf|7+TmD4`<6Syfe4Ak(hE zktfCC=&(0#dEENqZ=W9*Eap$EQ&I&|olmz9In++zkj z>uUbXJ+Iq+sFzdZ@MxZJEpEV{j|o? zh`2blnLd~9-tC<-$-4c!;f3vu9&RyvAav3 jzj_~E{PC2~f2PU1rWB^PUbkdmU|{fc^>bP0l+XkK9`dHH literal 0 HcmV?d00001 diff --git a/assets/torch_mod/textures/blocks/lapis_torch_recharger_bottom.png b/assets/torch_mod/textures/blocks/lapis_torch_recharger_bottom.png new file mode 100644 index 0000000000000000000000000000000000000000..51eff315a7b3bf84c77293f1bfb5a9b3c40da031 GIT binary patch literal 794 zcmeAS@N?(olHy`uVBq!ia0y~yU=RRd4mJh`2Kmqb6B!s7*pj^6T^Rm@;DWu&Co?cG za29w(7Bet#3xhBt!>l<>72gn1ZKpQyiJU|?GA>Eak-aoTpGXWnBs z28Qmv1){EA(;gM-DD32!pm6>~_ot-v2Fc^wRJ=qq_0Gl>6-Hd zCxtF6ryu>CI(cbZPjM;=%yHk*dC*nmBUircslI8?pEF-JStRnMR^e>WwN%anKZ_P= z2)U?yIJo(Yob9(Ik#5EN6rW`-$&OyN>d=hFO=~P=_|~lES}KwnY2-U?)vA@NxK^6_ z+shX`yBx%!$RW5T_jK0Q#|0ISN~|8PQS}pAQ@ZAQcHeUTS)W;@S5*TNmhkn-c0-Y-fDuy@#&lKKYL<+ivR?>Qq!$ zAGbW76}o_-?d7q3HA}R-KG{6~dfd9BW%+Zd_cohnO0-Yh_qy<0(zBVz_5Huxm3=tJ zxw~i89fg27=fm4Ro;$qmQH|B#`^vt-Q>LhR9=d+N?sALNQ8MDRP5*2!bsX)>_KhXUv|r$D{Jk)9|*3hiuMksBXNr@qgy=?fdsH43QDc zK3lN=)32)K@2i*SMNH4$5;o^N@8*piCj^@g&uGn*^0?fi;%RSQ_y1orM<@S-y~lS= yynI}+AvJQw@ummNc0LiW3-c1a(m5LI8D;q=GID!ec41&(VDNPHb6Mw<&;$S`wPNM~ literal 0 HcmV?d00001 diff --git a/assets/torch_mod/textures/blocks/lapis_torch_recharger_side.png b/assets/torch_mod/textures/blocks/lapis_torch_recharger_side.png new file mode 100644 index 0000000000000000000000000000000000000000..a2926c788c3f870cb8792d3bea3adb07dcc79e28 GIT binary patch literal 828 zcmeAS@N?(olHy`uVBq!ia0y~yU=RRd4mJh`2Kmqb6B!s7*pj^6T^Rm@;DWu&Co?cG za29w(7Bet#3xhBt!>l<>72gt=wymb^`1U|>4w>Eak-aawnhWu8hZ zgWLW6S8rXtntLaC_PYiKm9!3lM=UNfj7}`<4}@Bt%xU20^qe4|-oT^MVj^{N+m&Sh z$8j-xul&+yQLDHlZuheK(c<&_c%3gZ3phD+Ff0Dq&&jhc+2j<5qQD&YUDIxHKFVm> z&X+5Fx@O;kT$>_)Q-Zvj8dj~6=sg#yvo2!&b&KrI zM-thxk3Y_6|JwC7t=+KAJ z?^kEJ@wTku`30|sd)&X(p5J$C@z;hxS>IwO4#p=J{`1r_JSbR^F`F&fBs6qmj2`0z zt7|9X9`*^^NxXS*BX9cw&bU7u@&B1(6;5;2e9%}r(?@O2`Lq^>OY>yTRe!t7_1ynS z<-r;|cBzW5tY_}EpWmOnGv-mPgXYQGSG(4|mgp@yQmwy_bFopX+3p2%#6&Ll>^9f7 zGuyvt%aiZ>r@whU?WTJC#ZuXGk+YUPeDtYn_G{@S#eB-ar;@r{Hs7=fGFP7zqL}g^ zYg%xMpy#9oQ+=rV1wsN=Hi|5VAMC8Q5OQzpKFxZK?@Fn!kZMePys%8hTGg8~4|f=DK0RsK z$Bg6)uk`=@cs|dhlT$Ha?$Xy*Tf!n<&#<+A{_UCAT4l!+p06(_?%pkY{IOta(UF;t zE`Hb7MR6IK$v+!<++2^?61LL0W5!V%36?#SP*-!nk;nqXv k?yYjq*={Xq7Wl!>rdQ#%Qd`H8fq{X+)78&qol`;+0Qwhs`~Uy| literal 0 HcmV?d00001 diff --git a/assets/torch_mod/textures/blocks/lapis_torch_recharger_top.png b/assets/torch_mod/textures/blocks/lapis_torch_recharger_top.png new file mode 100644 index 0000000000000000000000000000000000000000..a9a7135ce3e695c9f2d6f4e36e7fc6d51e982b2b GIT binary patch literal 920 zcmeAS@N?(olHy`uVBq!ia0y~yU=RRd4mJh`2Kmqb6B!s7*pj^6T^Rm@;DWu&Co?cG za29w(7Bet#3xhBt!>l<>72gt;uG_gH*jU|?4Dba4!^IIVioH$x_r z;lRiLdn&Cb-#vS#Zb|km6HY_<32E6}%Pwr)E1@l?<;3shnBVF&F-U-g|DH`3`+K>s z3Q;S%7&}`Vu1eW!Z56r{Cail??RJX!?7K5_%F>_heZFw}{lDp<&yJm0`S`F-?z!Zi zgPWLo98aeTvZe&o9b^ zi+0-VjNwbKo~UtcjvoK!Etb6kP8ZJX@7uttz54bX?X>~xuLpWIJ>I3#dFXp>*=uW- z`Z}%yGj}HcxntQKWay-%DaN(qa`*-VowaLicYX8b%>xU~n)~g&>pK_CXnpQp z`CyLwEiet7tM{inCbr6tx%XiV8*_f5{euCCYkyzi&zJr1j{ zE{a;qq_9L=aAGf)>=w_5b9b=B@8$mfexkleCaZ76jP`}0a$n{i-lqDqW}fm=p<@lE zcGWj+j4e9OxL9N!blBK3VZ-%|1yc_B-TcD0JHzDYBZj`oi^8g#g1QViCNRv+n?1?g zL+|y(lPNcov=t_pNd3O^ zCuQ#J_chLotT<}nt@46i`ul3g4Jvp;fUM2a?t+{PuZRlk+H}&4`gO^TOG5qUX-4W7~ z%N@eA`B!z`|E+zGmk0=pZ(MrzKEJ$@&hv({)o0gyRy|#x^Tl<>72IoVXXShETk7?|dGx;TbdoVJ~Gu;{j# z2!ptSLzj@N*R-`q%4WwH&Hb0@Kli2lwRa0UeJ4(IozUiCvw;2lmtDv2hSvZ6>E5Nu z*btOrrOc$|$TTf=;VP}9o(V#ZEfUJEffIrbdHC4a*cipHzhRSJ!2J4b+pblCUKhWr zUwh3v^BPNM2g{!CQ=ZP+_x^&Sj?ZI<&DkI7lCHn`@$}=wT{n}~E?l*(;(g|PkCuC9UzipB?6qhzkCIdH^*!5kW3MOoEY$H{wMvQQ z;FD{c?#o|@DxAB%!hZ5|*6XXEzkQ@}deW|SmUr$sdHu1OKT*Kon3B+i>y?QG;ys2L zYYP`MD|uxG^~k)>v;Xm+;=5cjPkz4mzsfo$2kGPu*P57?ifD4x-Z$RWIQ#Fse>KOd z&sS|$JLWMh^@{J=yB|9|jvUeO5ZJX&`F!!L!;QY77r)y!OK&h+zMDto!Lxz`QKwJ8 z<`!zHicXvoWMN+Pr)0@0vnj86_3ig1_dKnzQBped`H)R~;bDi4Lyv5apPyeT=f0&Q zKxEpobsLWr{JUxFC;a(!@KI%+TV)O_f6+`uBK z$3-xpYg3FN&vbq<<@fL3AK_T9uOD)|OM!9jb4&Af>#(C-OGO-6=BDl<>72Iay6@=4)POU|>4v>Eak-aoTqB-actp zhKBt!=iZdBe!I2sTxabBEhh(FTT!Na3>QCfeF<6O^g(QkgJbiHj0N2SPF{YG-YGpz zn!opB_~?pWGqH(4sJrlTkoW=|ZV&YNU`;gGAvyVJC&tMoB#y z@=Bk7TE6|*;TJ4*`NHe(lGB`91lGJ3-5WRG#cK|K#rqA{f<$azRrQvvOWvQo!cFwr zJIPSxdv^Be5xf_o0;e&r*%}ghv?6BV)-`{_oRNm_Rhm!@i3dIQ6kg?~A32`5~Z;JdbH%AwYuORm2cbW-pXYP&jN^GlKU%tkEz<@3H){dK!p zW5>?-;S0A#HOu_k)1O~wJ8^huM(T)1WJ~gSO%Y&9F7tWsuX)4w{hl&&nH1keuZ@+Vn{U5A+0CM;ym_-- zbDY<#G!;*$iK#YK-)-}zYwz0T%%#|Am{iub%&?ExDy5W9poevfSfk zyAyY}N+>&ZT#x41rT5{{wFygSwZFGHV%dK4?a51X{_E*0HcblJvohO6>Y-KprLOMu zN&ElpU3kL(vc>hn4Pt9W&Q-s=JG)?Oc0gy)lBi^|Yq literal 0 HcmV?d00001 diff --git a/assets/torch_mod/textures/blocks/quartz_torch_recharger_top.png b/assets/torch_mod/textures/blocks/quartz_torch_recharger_top.png new file mode 100644 index 0000000000000000000000000000000000000000..921c26727d486db214d298f9e1f7015c203ea6b5 GIT binary patch literal 956 zcmeAS@N?(olHy`uVBq!ia0y~yU=RRd4mJh`2Kmqb6B!s7*pj^6T^Rm@;DWu&Co?cG za29w(7Bet#3xhBt!>l<>72IawL9bl!epU|{z2ba4!^IIVjAefHE) zh65kpTb{3c*MB!Yul(NHvym%b9J>)WWAW0)=%u>HRW#bZC}phYQf*xz8RQ!iAmz4y zEo;edqa{%iVVW54x9>uiF}ZYgWYd zt|~l2>=Qd*ee#ca-`d+Wrg~pd z5n3`ivqj)ec84VTVK1p^*6)OM@E;;*D*h^xwbu7WwNJmuj|FA&AGq%ZmG>{opRWBv+()v znQwovznePamg15rM;;k2nWCeor`Wf*@QB$HDT8YQoh~cRr)`W76BA=>eC@X4huyWP zSFc_d#!mkeBPW{`X2Y-AvLNQ$3DYMYYQjgdg`TA6FP!47H{ChgS0IFwX@1d4mkg88 z`|8(koZvn0oVB*oE!OCz$+{pNUA+%3_a*%A{S|9RbUlyWO{BAaX;x^f1dIJ6Kn!4f(w+hSEPky}kump4QPn(k=lLFdL zc&IqVmYHtM=;=gr0!ZVJ(Pv`bI=+InT4)j9XJ_P_hK+u+uRx8m=U4K1W!hq>v+ zoqTN3l>Uux^8C|}E9E}UV)+=+bMz?do~iX8wMCm07OY#^?DAB~xK*h5a&X7Hb6d9= z&R&%MAhYM9#M+GwTg4PvqN0ONs@#g$(3T~!XlvT9^TB@#e~SHQe4bpU<*aMX&%nUI N;OXk;vd$@?2>?Qmu>Al4 literal 0 HcmV?d00001 diff --git a/assets/torch_mod/textures/blocks/redstone_torch_recharger_bottom.png b/assets/torch_mod/textures/blocks/redstone_torch_recharger_bottom.png new file mode 100644 index 0000000000000000000000000000000000000000..8ea7ad07ad6e04141e66f186d323cb22f8748945 GIT binary patch literal 778 zcmeAS@N?(olHy`uVBq!ia0y~yU=RRd4mJh`2Kmqb6B!s7*pj^6T^Rm@;DWu&Co?cG za29w(7Bet#3xhBt!>l<>72gq6&$#dV)%U|^c=>Eak-aoTqB&7wzP z3@-ia)_r4j;VJW4GO69?ll$l2^NvbND;u~uosRu%;9c)fURpl)!Q=b&m2;GjDBIjw z!+M~apD`m><22K2n{$?P3@x%fFNwUD6|&jCUH7tyVyZ{M-bu?OOJf-sj|aO?6lZa4 z_%65F^s`Ce6Up_FOBaevOqHw*UDV@xtnf(H zU4@o}K(1U9*LlX;M}I$cnxtY<>bvi5)Au`i;vf24yq0Y5NDYknJukqkMWE-givS1H z`;Yf7zT4&!cqI2l;AtNn<$L$_YkqwaeeT#1ps@7G@*dNY=bzW#yZf{$tjpqb;kk!P z6;_5%*?)JVMSsD$$8(;R*d=dSrs4H3Bbp&^yI?L)`{Rj+xBoXd=dAIgtRgW|?9w6! zwgVUV-;`O0t)8_=qq43}jmKH;-TRH_7EN*T6@FiPei85IMLYN3H@wT%vUQq??+p`P zqbYmlp6_|wdv@7E>(UN~2Wyl<>72gq7ufeGn>OU|>4r>Eak-aoTqB-ahG2 zhSvQ%zn}Zx^EPr5-{~0w3w@PdR5D9(v4{%U`a3xuZoc5e$ZN`K(!r#-&||l>+3Sj2 z|2^|IK7ao&Kwa6Pi~&G?X^Z%)8v;^X1@QtL?`f?K$Sv^fW`A0*Q-C-qz6u0V=les zT8m?cS=-GLr>$`p@9kClQ2WS2?W8eVZh+$htu z@&3P0nij_sw=<`6PIaa7@5eQQft1QrGp+qaQ02x>V;C z%$d9FiDv_svp|yySLL@aoUhNe)m_OqaJpkq2=aN-(wpAaP=P%MIXqY0D&66d=Hf!0l zii{7o0v19KA6Cje&e$1g-qLvfQO-e&zAd@lGOjT(F$@cqOwm}{@wg?)?C|DUIsqD) zKi;laEfje)$2r^Ao@d4XY5xB51*Mgx@eh96mF`{sI_k(qwNB-G^}jm$?JOSmKi6Jk zXtKL2F1lymbj=>6LmDoOG4b*L^QEr|UFCg#ulh*ikz2pjx8065+j~@^*>u)|*9>sQZr1<+ literal 0 HcmV?d00001 diff --git a/assets/torch_mod/textures/blocks/redstone_torch_recharger_top.png b/assets/torch_mod/textures/blocks/redstone_torch_recharger_top.png new file mode 100644 index 0000000000000000000000000000000000000000..a7d6be29de78e6b6278aaaa78b89bbc4b5530911 GIT binary patch literal 900 zcmeAS@N?(olHy`uVBq!ia0y~yU=RRd4mJh`2Kmqb6B!s7*pj^6T^Rm@;DWu&Co?cG za29w(7Bet#3xhBt!>l<>72gjLut-qI;&U|<&Xba4!^IBk0Qbe?o5 zL&L-Wb0n+hY)r55&bjWXW7?<|8q%x~v?xer*8*v=4UT(Ql8*9mimmAo*u%yxwqeO^ zy%k;!O#!PMt_YZ_inpiasL$)1yK_!)M981@A6|;TzS|eM_vW(yuLUn1SQ^A2k?i0w zD{YFG>lCw$wHG7X!nm?C+a}j_++9`u<_-Iry`^&>&Y#|KvBN2m>;89!gOTTlUGHrW=)OSd1jrd znx|>DcJ8nJG73wllq9iddYWyo-V*oKlAEby+QTQZMoU*rsbx!F{>P+-@4(x4Ixp`V zdM=yrv!>5$>8VxM-4b@}-`T!9;E|T6g{|$;lTTOtvh%;B=sBtA`_{@=jorz&Z@4Kw zwn!9di`eE{zKZj}G4=NwKE5sO2|Qz#_Tx>je8rEm?sxWW?fC0cP*`~GpFMj9b5NAf z?QK8zZ;fK#_gkWD+lsJkmgmn4zL)OU)_Z-rMD(K{sa{_*lX3;#m)%-+GiL#>#ZH;6 zRkGe*zy8`qW#`;h>P#-m(7I~%bI;kp_bnE|E`cq&4H`WeCQ?&Q+Z|2njC(I}dQ*n! zY>l-ZlUh=Y9xCy4UhY|KvGit+!OoruUYcC2?NM91a&PjmGw=IV*SX$2sj03(WYT$i z*$+qewkxRS9ZY96HM3^X(ZK1PBi8D687L={*HCt5`76fx!>2Ge7wOu z?ZK1#!CtEUI>8;^#jTea-(MJ_qx4+pUH&`94{6Da$p^OOUeYs?AHdrQu+~i2{oyBD?NH#~)F+(Z$@y$Im!n zTB_k)-Om}XIU2U#HlHzfzIyO19h>x34>tU{q!c+#@U7&v@O2BPrWwp-P8N`_+mKiG zjhSIuDyt=5;c~8uedk>cKH1Y>79-GPae0MK>aVF>_WAO`MY2b#wkJoG_TTw@vAcEa zvINc+!za3qvzBc+Ww%&GwZqg)bIYk2`!^qWyua@!zfgScl<>72ImOg&p3|Joz`!)m)5S5w;`GwXXZ>Df zF|$wJwK87IT=4MyHiwpxV7g@zQl?8kN=kOx%vB38;#Qp7wYAb>H^J#m(hK zY3Z?tsy;ot^|ox93MWJ6tVt@Ik<%tF(_~nEwJU0^+awhg&!+dkTM|3gy*^Ut!}#FO zADQc=f=&i9e41k2GnR2WY`?uUYVD-+&pju#tY5DmbA4%uR^n~5OF3rA7BZJIOd@o| zW-RmEeRo;h`o$VtZHWeR{Wj`!yDe^9q%mjSJfSwl%vnmJT&$N&QVk?FY~FnM=1s}D ze(eezH}2d~;cfY~Pf~G_%nn(W;o| zzW=`aWfPyvPaZsI&^i6$Yn4l2i$Ie`*94pMhYMv=BHgB?+S%JrRC)P)%i+V$BCZDu zWz;5fb}jnw>C>UJXL%VW2{5?^o_Jcs@MB+p?ropt!QZ}pd-46Zju`i;r$&V`$}I`y z<SVXgX!64%j3t7@7cRou{E({ zS!TqvR)MDH&(rPf>@v(|+t}JFdI}ZFEPidZNoR4U)b#1oORQw4oqoE%r|+?WRBy-Q z85&&-8q-hnv^yU%Q0Yrno6O1Z{rh+Oo=fJ*D?^wRIG8^Dw0Zyj{hBcC76FDE+j>{6 zdh`B0^B)7TeUh@rAD-70<2Exhd-1jE$3FkvcaMFqJ@(k}Xwt;ht5@GwuQSfe%}tCH za}-c$dGPV$#JKhDTce&ndero>;!KU5JBOnH%a$nJb?et_p4im0YL!J_^XpypM^hx& q?&gV~|NPHbE%y4!zxU_VGfqzKyt&eArZ@uw1B0ilpUXO@geCx%PGP

l<>72ImOktU()blU|_oD>Eak-aXR(#SugE$ zhGQS=(~eah_xYUaGg(5Yd0tSEi1;Oy(@rlRHN1BEzPG)YeQ(pH=oj14FK^b^aiLc; zVuifP491lnYHO_u7pZ+dcgFhiQODcP^P_**{`c8`-+yWlgNkQUP?w3X=OmVfqe+fi zqg*vxgSr$rI1W#6TIe8iT!LY59RK;x0!{{U{hDIkCQ`f%dU|>*LbP7&>I>@nS=0Bt za*CI#%yGxhwevq#_^iJA=;OzUZi^lF-(P++Cn-|wYt`J}zpHP(HCr3TeR|W4yLVN2 zoF}O`8uK)(c<$J@FD*B>H*fpt0t*)}Prd2NJkGPusy%<6Zqes#HhXD|Uhw+s6N8d& zY&(1G7~8VUN5Ad5k2YPs8hUTf$;Qvzduq9*{(N}(eM#o2r%zP_MHE{Ux|FuGx3kAw zKWgIZbNR`;cYMB=8Ke)*SMXshh@Jkjq$@QtCN{RPq=cnGt>wTb9iy2%42}X1EciaK z%>T=A{~wRh(ilDA>v#h z1K-ItcIWTilRNxy!t&+I>m_5ary9)^IBpmyGV%1Q3jX4MCGQzK9?y7L!gb)~%a`1X zznzKDn#wRCXwhq{ZA*jyWXwEv+>$}&_`z+tX6ELMaT2}hZr4kHzBii56F9|SU!}_o z?=MxhO$rabeVdlF@x;G>b_~aiAD=qK^|nk}Q`L#1=c9Gq-@~alg_dM?O__8vr%ixK zQ+2Lidvh~0&t;R1xzg85Kia%kU8W!ZvgY2(&$~a1cLw#iE&hKrL__4>bqfg|yAzd0 xGe2Baf2}jy%Jb8|&h+$j`6q9F+cErSsPZmbbNnmEVFm^U22WQ%mvv4FO#sUsf;IpE literal 0 HcmV?d00001 diff --git a/assets/torch_mod/textures/blocks/torch_recharger_top.png b/assets/torch_mod/textures/blocks/torch_recharger_top.png new file mode 100644 index 0000000000000000000000000000000000000000..e0b114a734bd2acf822502777211d301ed8625a4 GIT binary patch literal 897 zcmeAS@N?(olHy`uVBq!ia0y~yU=RRd4mJh`2Kmqb6B!s7*pj^6T^Rm@;DWu&Co?cG za29w(7Bet#3xhBt!>l<>72ImOw2@3s(PU|{C+ba4!^I6d{UZ~pBP zh64}d-yAtN>6qrJTRNtZySH3W%MEg2_tIsY72&YLwqS-C=SS8F0_t&myT2UZ{HU~# znLV#y#RM}>#e-HxTVy<>J%UR+gN_zvieF6e{k=VT_Te84A0*{$8=|?YXld-Z^XE6_&VCaj@cLuJgQYG#Rj+55e+r)QPiI-C zk)2)Ny4MUQQoL$vY7lwcF%{Rv4A+oHf^pFJ{M%g)8NJKeyx*waCm*OigXA zu<6Ua?J>z^{dMK(rv)K|Hjr_>zHc8-fw@RSFGxKY~j&-upw`I_aY6Eo>B(8-FuHMm!G-gT}NvxtKB!d zhxfM2Cp<~ts4unUcJ8UCMhufyt!g=($kfQduzKn24}aSO))zhXY71Mb3cByA#UKH%V z#hCE+TD3&m!3>i{H**$cN-YiIRAf=w=v8Rg`n;;==W&0@`};$`yk48kaA{}wzu;v% zGp4hfPTttzwIE{0n|QAyFKjyhtUtF@eBQ%{^VR+{EH0?k`~C2(E&~GtgQu&X%Q~lo FCIEIcppgIo literal 0 HcmV?d00001 diff --git a/assets/torch_mod/textures/guis/torch_recharger.png b/assets/torch_mod/textures/guis/torch_recharger.png new file mode 100644 index 0000000000000000000000000000000000000000..d7a4986d628c5e2ddf4535218c4d54fbefeac5e5 GIT binary patch literal 8553 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 Sy%`u77(8A5T-G@yGywpDoaK!G literal 0 HcmV?d00001 diff --git a/assets/torch_mod/textures/items/coal_torch_amulet.png b/assets/torch_mod/textures/items/coal_torch_amulet.png new file mode 100644 index 0000000000000000000000000000000000000000..77775a0c9ee3959cc8a5e57c230df91cc8b6614b GIT binary patch literal 321 zcmeAS@N?(olHy`uVBq!ia0y~yU=RRd4mJh`2Kmqb6B!s7*pj^6T^Rl|{9$0||M|_G zfq{Xuz$3Dlfr0N32s4Umcr`FEFtC?+`ns||;Nas@lxMRS02y=6)5S5w;`H9hhFymZ z1YGA&Q)p`~6twBB?Y;9~O*3|<38SJ=T6b^HoEt|JCoqaiec8Wnp3096hurRee|3%L z&KVC)-C4eu8735`$s9j>_U@UO(7*E@WzLv6duIO9HAi3HbpEjK{d3cHcEigiQ!7@h z#a`Eawv|ySh$kjgP>>|! zT>ZJt@wFCjj5VA>|GrTD)hE6ylJCLwn@_&2JIMN=m);O zW=Db6{daHgWmZ(YaZ_`}jhj!zZ$?Hh-^jVBck0|F-?rbl(N)yu?P0)Sm~bGb?D(S{ zs;5-dI+#ztJ9K7tWxm{>;1iEJA4N=x@@2Sq>_pO{Ra*O`QXWpO=5M$<>rVB(xsQ{| zje3IOL+}BQBm|@FS*Ja-;p6}z{aW%su-9*H}YH_0D(WuDu`)mnTa_t|N-7DN& zz9Z-8RR-1TySIlI36_XFoEv?*@KyWoFv&OJua!PCJThbb!H|*nImYnpsS8h)7^Wm` f%Y1I1{ee}YYr^4@w!$k63=9mOu6{1-oD!MV*vvLqnD?PV~EA+t&{e8 zGdqeLsoz~LzMt!;AB(g#_vITL+su?ASXew0^OZH0Z3yK2!OpQvoF)5zPlE0ZmLqBt z1q|=2#O3LnlTlQgrC=BFP4sixy>onjf>(aOF+N z)*t;@%}%=KPhHX~?|v?D!XPC={ix51Jl~4h8_fFxZDwEiR_tZ=EJNeq^;gWN{VclD zg_#YlbmG45GrV=6V%zE!XOA9`LdOzLQbNIct(@-(9VMqK9nQuq$`@S{v6aMx|+(Or&Ptvk*nSQN3>znH@lc2e@E9ROjAqUTay-L z)ov8^FuVHB;oj0UA>C`w9pou6SiV6h#zXY)zsJ+=yE#04C1vvbg+b!4Dz4X)9)2|5 zT*>M%>)M&57J)B<4?e8WZk1*X+A&p3xit8)-giHSWt*9FR@Xn0lD4TWf29AAcb~?+ z=I+crObGx>L&(T(-jT(5?yywTpkVj=nIlF?Z|o+^ekk>6$ijGN1~)VpS7{&@0- Qfq{X+)78&qol`;+0QH!tw*UYD literal 0 HcmV?d00001 diff --git a/assets/torch_mod/textures/items/iron_torch_amulet.png b/assets/torch_mod/textures/items/iron_torch_amulet.png new file mode 100644 index 0000000000000000000000000000000000000000..4980c031e2bf34173229cf2d687b9ac70d0f6313 GIT binary patch literal 397 zcmeAS@N?(olHy`uVBq!ia0y~yU=RRd4mJh`2Kmqb6B!s7*pj^6T^Rl|{9$0||M|_G zfq{Xuz$3Dlfr0N32s4Umcr`FEFtC?+`ns||;Nas@5?4NX`XK`Yqm-wMV~EA+t&@DS z4><_5&5tcl*6`TUE_3Amgy8@G&kOLctcW^sP@#pbr!${l^!TXG*%!}M&eJ|$%(&?q*91eiYf+ZZx7^Ix z61QH|b)p+%YUHZomD;_2So&DDT+oTXMM< z+|4UjwUO&*2nltamRkNhIC9#p_usuHxwrSP?t^a|@V&etM$dAt-!nl6{h-j$_|79q8yCFZwVdJ3oO6Gkym++` zW=Dae^_#al7Dr@id-Zr$c?xQ~8fyMk5EJ{>)S95m!n##p(R>$gY5PXTjavox&bXsm zo;=ZhUR5XOqvlrG8I}3p-Zs}a9qX4^{b`g!J!7)t+TxYPE&oLR zWlM41wz>PBL96rB&$roU!`4;361wdoVz?{7>iV5)3%fR2O<7<*g~KpR+*`fVcGl_` ztw%4G^WWul@re)QmS&$7xt5P3=T6@Vb`zEhOV3L6*(jS7WPX%8ld#rZ;^5=E_YUm0 zYfL-6JVB|abf&&s@|V_MZ|wq?-+WwNHJ8gJp0^|@^X$4&os}! z$MZ+{N^PM`wt)o4gkrzDE|PvG5G*i70J{ zV-k_sPv>0TGh?Mrn%5+kXwH30zAO0#pY4v!?{k`2o}MFG@&3B3xd_va(yd#kW$j$D zN{iv?W%rsQ76%bm>AA*I5`<+iNl{RoU8x#K)8jgduo}qTo(fa1B0ilpUXO@geCw(1)iV) literal 0 HcmV?d00001 diff --git a/assets/torch_mod/textures/items/redstone_torch_amulet.png b/assets/torch_mod/textures/items/redstone_torch_amulet.png new file mode 100644 index 0000000000000000000000000000000000000000..a13763db7945f46850e4fff5fa30a8abad5dda00 GIT binary patch literal 398 zcmeAS@N?(olHy`uVBq!ia0y~yU=RRd4mJh`2Kmqb6B!s7*pj^6T^Rl|{9$0||M|_G zfq{Xuz$3Dlfr0N32s4Umcr`FEFtC?+`ns||;Nas@v0UkzxPpO!QQFhRF~s8Z)=9R0 zhaCi3_url2o5Lcu(2+^?W#&#_J;y|@RUOg+g^W@vQd}!`FzCwiicS&fkdHL-lXDfj z-J&X>=oae{!BhX)MuBUG4$nT}ZP=kJmJxmUgPnV# z&aQiL*Dt!cH}r%j{K;%Q_q$W?SLd`d>8hd!BlZ7HkmE_ea5cd)V)4aUlh?{?v2L3e zJ3YG7Puh3UGow$OJ~kHKvJ6WVK3(2cbN7SZ|4sI?`DG;+O0%S=EcJ`DIy*Bk(fRS( z8=8y@_Fl;>zuL;pEXZhc{gNa%-~6uk`z(AI3O*Yp+LxYC{_1^vrsVgt#y9$}xu&`r z#Z7r2ny~zIuEW_o8~*t*^el|n@_Byw2R^QoMZNoF+`lj|Ffe$!`njxgN@xNA5R94) literal 0 HcmV?d00001 diff --git a/assets/torch_mod/textures/items/torch_amulet.png b/assets/torch_mod/textures/items/torch_amulet.png new file mode 100644 index 0000000000000000000000000000000000000000..ab47e5a54a01b2b73eae0be577ee34750c03adc6 GIT binary patch literal 424 zcmeAS@N?(olHy`uVBq!ia0y~yU=RRd4mJh`2Kmqb6B!s7*pj^6T^Rl|{9$0||M|_G zfq{Xuz$3Dlfr0N32s4Umcr`FEFtC?+`ns||;Nas@kjqdOJkG$tXzJmE7zN_3Zp>wr;u>7sJ@#ws_&uBt?hC7d`IgeYg2^wum8e+Qz$ij2ULL&!lb6 zR^PWGVbRuUCccsDuS+Dq^PBT?>c0I 0) || (sticks > 0) || (coals > 0)) { + if (torches > 0) + { + EntityItem item = new EntityItem(world, dropX, dropY, dropZ, new ItemStack(Blocks.torch, Math.min(torches, 64), 0)); + item.motionX = ((float)world.rand.nextGaussian() * 0.05F); + item.motionY = ((float)world.rand.nextGaussian() * 0.05F + 0.2F); + item.motionZ = ((float)world.rand.nextGaussian() * 0.05F); + torches -= Math.min(torches, 64); + world.spawnEntityInWorld(item); + } + if (sticks > 0) + { + EntityItem item = new EntityItem(world, dropX, dropY, dropZ, new ItemStack(Items.stick, Math.min(sticks, 64), 0)); + item.motionX = ((float)world.rand.nextGaussian() * 0.05F); + item.motionY = ((float)world.rand.nextGaussian() * 0.05F + 0.2F); + item.motionZ = ((float)world.rand.nextGaussian() * 0.05F); + sticks -= Math.min(sticks, 64); + world.spawnEntityInWorld(item); + } + if (coals > 0) + { + EntityItem item = new EntityItem(world, dropX, dropY, dropZ, new ItemStack(Items.coal, Math.min(coals, 64), 0)); + item.motionX = ((float)world.rand.nextGaussian() * 0.05F); + item.motionY = ((float)world.rand.nextGaussian() * 0.05F + 0.2F); + item.motionZ = ((float)world.rand.nextGaussian() * 0.05F); + coals -= Math.min(coals, 64); + world.spawnEntityInWorld(item); + } + } + + world.updateNeighborsAboutBlockChange(x, y, z, block); + world.removeTileEntity(x, y, z); + } + + super.breakBlock(world, x, y, z, block, meta); + } + + public boolean hasTileEntity(int metadata) + { + return true; + } + + public TileEntity createTileEntity(World world, int metadata) + { + return new TorchRechargerTileEntity(); + } + + public void getSubBlocks(Item item, CreativeTabs tab, List l) + { + for (int i = 0; i < names.length; i++) { + l.add(new ItemStack(item, 1, i)); + } + } + + public void registerIcons(IIconRegister r) + { + for (int i = 0; i < this.textures.length; i++) { + this.textures[i][0] = r.registerIcon("torch_mod:" + names[i] + "_bottom"); + this.textures[i][1] = r.registerIcon("torch_mod:" + names[i] + "_top"); + this.textures[i][2] = r.registerIcon("torch_mod:" + names[i] + "_side"); + } + } + + public int damageDropped(int meta) + { + return meta; + } + + public IIcon getIcon(int side, int meta) + { + if ((meta >= this.textures.length) || (meta < 0)) + return this.textures[0][0]; + switch (side) { + case 0: + return this.textures[meta][0]; + case 1: + return this.textures[meta][1]; + } + return this.textures[meta][2]; + } +} + + diff --git a/com/bernard/torch/blocks/itemblocs/TorchRechargerItemBlock.java b/com/bernard/torch/blocks/itemblocs/TorchRechargerItemBlock.java new file mode 100644 index 0000000..d3d79ef --- /dev/null +++ b/com/bernard/torch/blocks/itemblocs/TorchRechargerItemBlock.java @@ -0,0 +1,56 @@ +/* */ package com.bernard.torch.blocks.itemblocs; +/* */ +/* */ import com.bernard.torch.blocks.TorchRechargerBlock; +/* */ import cpw.mods.fml.relauncher.Side; +/* */ import cpw.mods.fml.relauncher.SideOnly; +/* */ import java.util.List; +/* */ import net.minecraft.block.Block; +/* */ import net.minecraft.entity.player.EntityPlayer; +/* */ import net.minecraft.item.ItemBlock; +/* */ import net.minecraft.item.ItemStack; +/* */ import net.minecraft.util.IIcon; +/* */ +/* */ +/* */ +/* */ public class TorchRechargerItemBlock +/* */ extends ItemBlock +/* */ { +/* */ public TorchRechargerItemBlock(Block block) +/* */ { +/* 20 */ super(block); +/* 21 */ setMaxDurability(0); +/* 22 */ setHasSubtypes(true); +/* */ } +/* */ +/* */ public void addInformation(ItemStack s, EntityPlayer p, List l, boolean flag) +/* */ { +/* 27 */ super.addInformation(s, p, l, flag); +/* 28 */ if (s.getMetadata() >= TorchRechargerBlock.names.length) +/* 29 */ s.setMetadata(0); +/* 30 */ l.add("Stockage de torches :" + com.bernard.torch.blocks.tileentities.TorchRechargerTileEntity.maxTorchValueFromMeta[s.getMetadata()]); +/* 31 */ l.add("Stockage de charbon :" + com.bernard.torch.blocks.tileentities.TorchRechargerTileEntity.maxCoalValueFromMeta[s.getMetadata()]); +/* 32 */ l.add("Stockage de batons :" + com.bernard.torch.blocks.tileentities.TorchRechargerTileEntity.maxStickValueFromMeta[s.getMetadata()]); +/* */ } +/* */ +/* */ +/* */ public int getMetadata(int meta) +/* */ { +/* 38 */ return meta; +/* */ } +/* */ +/* */ @SideOnly(Side.CLIENT) +/* */ public IIcon getIconFromDamage(int meta) +/* */ { +/* 44 */ return this.blockInstance.getIcon(2, meta); +/* */ } +/* */ +/* */ public String getUnlocalizedName(ItemStack stack) +/* */ { +/* 49 */ int meta = stack.getMetadata(); +/* 50 */ if ((meta < 0) || (meta >= TorchRechargerBlock.names.length)) +/* 51 */ meta = 0; +/* 52 */ return TorchRechargerBlock.names[meta]; +/* */ } +/* */ } + + diff --git a/com/bernard/torch/blocks/tileentities/TorchRechargerTileEntity.java b/com/bernard/torch/blocks/tileentities/TorchRechargerTileEntity.java new file mode 100644 index 0000000..40bcf17 --- /dev/null +++ b/com/bernard/torch/blocks/tileentities/TorchRechargerTileEntity.java @@ -0,0 +1,366 @@ +package com.bernard.torch.blocks.tileentities; + +import com.bernard.torch.api.ITorchRechargable; +import com.bernard.torch.init.CoalStickAndTorchesRegister; +import java.io.PrintStream; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.inventory.IInventory; +import net.minecraft.item.ItemStack; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.network.NetworkManager; +import net.minecraft.network.Packet; +import net.minecraft.network.play.server.S35PacketUpdateTileEntity; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.world.World; + +public class TorchRechargerTileEntity extends TileEntity implements IInventory +{ + int torchValue = 0; int stickValue = 0; int coalValue = 0; + + + + public static final int[] maxCoalValueFromMeta = { 128, 256, 512, 1024, 2048, 4096, 8192, 16384, 32768 }; + public static final int[] maxStickValueFromMeta = { 128, 256, 512, 1024, 2048, 4096, 8192, 16384, 32768 }; + public static final int[] maxTorchValueFromMeta = { 256, 512, 1024, 2048, 4096, 8192, 16384, 32768, 65536 }; + ItemStack stackStored; + ItemStack stackCharging; + + public void readFromNBT(NBTTagCompound compound) { super.readFromNBT(compound); + this.torchValue = compound.getInteger("TorchValue"); + this.stickValue = compound.getInteger("StickValue"); + this.coalValue = compound.getInteger("CoalValue"); + if (compound.hasKey("StoredItem", 10)) { + NBTTagCompound itemCompound = compound.getCompoundTag("StoredItem"); + this.stackStored = ItemStack.loadItemStackFromNBT(itemCompound); + } + if (compound.hasKey("ChargingItem", 10)) { + NBTTagCompound itemCompound = compound.getCompoundTag("ChargingItem"); + this.stackCharging = ItemStack.loadItemStackFromNBT(itemCompound); + } + } + + + public void writeToNBT(NBTTagCompound compound) + { + super.writeToNBT(compound); + compound.setInteger("TorchValue", this.torchValue); + compound.setInteger("StickValue", this.stickValue); + compound.setInteger("CoalValue", this.coalValue); + if (this.stackStored != null) { + NBTTagCompound itemCompound = new NBTTagCompound(); + this.stackStored.writeToNBT(itemCompound); + compound.setTag("StoredItem", itemCompound); + } + if (this.stackCharging != null) { + NBTTagCompound itemCompound = new NBTTagCompound(); + this.stackCharging.writeToNBT(itemCompound); + compound.setTag("ChargingItem", itemCompound); + } + } + + + public Packet getDescriptionPacket() + { + NBTTagCompound compound = new NBTTagCompound(); + writeToNBT(compound); + return new S35PacketUpdateTileEntity(this.xCoord, this.yCoord, this.zCoord, 0, compound); + } + + public void onDataPacket(NetworkManager net, S35PacketUpdateTileEntity pkt) + { + readFromNBT(pkt.getNbtCompound()); + } + + public boolean canUpdate() + { + return true; + } + + public void updateEntity() + { + if (this.blockMetadata == -1) + this.blockMetadata = 0; + if (this.stackStored != null) + updateStackStored(); + updateTransfers(); + updateCharging(); + markDirty(); + } + + public void updateStackStored() { + try { + if (isItemValidForSlot(0, this.stackStored)) { + if ((this.stickValue < maxStickValueFromMeta[this.blockMetadata]) && + (CoalStickAndTorchesRegister.isStick(this.stackStored.getItem()))) { + int singleValue = CoalStickAndTorchesRegister.getStickValue(this.stackStored.getItem()); + if (singleValue * this.stackStored.stackSize + this.stickValue <= maxStickValueFromMeta[this.blockMetadata]) { + this.stickValue += singleValue * this.stackStored.stackSize; + this.stackStored = null; + } else { + for (int i = 0; + this.stickValue + singleValue <= maxStickValueFromMeta[this.blockMetadata]; i++) + this.stickValue += singleValue; + this.stackStored.stackSize -= i; + if (this.stackStored.stackSize <= 0) { + this.stackStored = null; + } + } + } + if ((this.coalValue < maxCoalValueFromMeta[this.blockMetadata]) && + (CoalStickAndTorchesRegister.isCoal(this.stackStored.getItem()))) { + int singleValue = CoalStickAndTorchesRegister.getCoalValue(this.stackStored.getItem()); + if (singleValue * this.stackStored.stackSize + this.coalValue <= maxCoalValueFromMeta[this.blockMetadata]) { + this.coalValue += singleValue * this.stackStored.stackSize; + this.stackStored = null; + } else { + for (int i = 0; + this.coalValue + singleValue <= maxCoalValueFromMeta[this.blockMetadata]; i++) + this.coalValue += singleValue; + this.stackStored.stackSize -= i; + if (this.stackStored.stackSize <= 0) + this.stackStored = null; + } + } + if ((this.torchValue < maxTorchValueFromMeta[this.blockMetadata]) && + (CoalStickAndTorchesRegister.isTorch(this.stackStored.getItem()))) { + int singleValue = CoalStickAndTorchesRegister.getTorchValue(this.stackStored.getItem()); + if (singleValue * this.stackStored.stackSize + this.torchValue <= maxTorchValueFromMeta[this.blockMetadata]) { + this.torchValue += singleValue * this.stackStored.stackSize; + this.stackStored = null; + } else { + for (int i = 0; + this.torchValue + singleValue <= maxTorchValueFromMeta[this.blockMetadata]; i++) + this.torchValue += singleValue; + this.stackStored.stackSize -= i; + if (this.stackStored.stackSize <= 0) + this.stackStored = null; + } + } + } + } catch (NullPointerException e) { + System.err.println("NullPointer"); + } + } + + public void updateTransfers() { + if (this.torchValue < maxTorchValueFromMeta[this.blockMetadata]) { + int torchNedded = maxTorchValueFromMeta[this.blockMetadata] - this.torchValue; + if (torchNedded <= Math.min(this.coalValue, this.stickValue)) { + this.torchValue = maxTorchValueFromMeta[this.blockMetadata]; + this.coalValue -= torchNedded; + this.stickValue -= torchNedded; + } else { + int torchRecharged = Math.min(this.coalValue, this.stickValue); + this.coalValue -= torchRecharged; + this.stickValue -= torchRecharged; + this.torchValue += torchRecharged; + } + } + } + + public void updateCharging() { + if (isItemValidForSlot(1, this.stackCharging)) { + ITorchRechargable torchRechargable = (ITorchRechargable)this.stackCharging.getItem(); + int nedded = torchRechargable.getLuxNedded(this.stackCharging); + if (this.torchValue <= nedded) { + torchRechargable.recharge(this.stackCharging, this.torchValue); + this.torchValue = 0; + } else { + this.torchValue -= nedded; + torchRechargable.recharge(this.stackCharging, nedded); + } + } + } + + public int getSizeInventory() + { + return 2; + } + + public ItemStack getStackInSlot(int slot) + { + switch (slot) { + case 0: + return this.stackStored; + case 1: + return this.stackCharging; + } + return null; + } + + + + public ItemStack decrStackSize(int slot, int amount) + { + switch (slot) { + case 0: + if (this.stackStored == null) + return null; + ItemStack stack; if (amount >= this.stackStored.stackSize) { + ItemStack stack = this.stackStored; + this.stackStored = null; + markDirty(); + } else { + stack = this.stackStored.splitStack(amount); + if (this.stackStored.stackSize <= 0) + this.stackStored = null; + markDirty(); + } + return stack; + case 1: + if (this.stackCharging == null) + return null; + ItemStack stack; if (amount >= this.stackCharging.stackSize) { + ItemStack stack = this.stackCharging; + this.stackCharging = null; + markDirty(); + } else { + stack = this.stackCharging.splitStack(amount); + if (this.stackCharging.stackSize <= 0) + this.stackCharging = null; + markDirty(); + } + return stack; + } + return null; + } + + + + + public ItemStack getStackInSlotOnClosing(int slot) + { + switch (slot) { + case 0: + ItemStack stack = this.stackStored; + this.stackStored = null; + return stack; + case 1: + ItemStack stack = this.stackCharging; + this.stackCharging = null; + return stack; + } + return null; + } + + + public void setInventorySlotContents(int slot, ItemStack stack) + { + switch (slot) { + case 0: + this.stackStored = stack; + return; + case 1: + this.stackCharging = stack; + return; + } + } + + public String getInventoryName() + { + return "tile.torch_recharger"; + } + + public boolean isCustomInventoryName() + { + return false; + } + + public int getInventoryStackLimit() + { + return 64; + } + + + public boolean isUseableByPlayer(EntityPlayer player) + { + return this.worldObj.getTileEntity(this.xCoord, this.yCoord, this.zCoord) == this; + } + + + + + + + + public void openChest() {} + + + + + + + + public void closeChest() {} + + + + + + + + public boolean isItemValidForSlot(int slot, ItemStack stack) + { + if (stack == null) + return false; + switch (slot) { + case 0: + return CoalStickAndTorchesRegister.isRegistered(stack.getItem()); + + case 1: + return stack.getItem() instanceof ITorchRechargable; + } + + return false; + } + + + public int getTorchValue() + { + return this.torchValue; + } + + public int getStickValue() { + return this.stickValue; + } + + public int getCoalValue() { + return this.coalValue; + } + + public int getMaxTorchValue() { + if (this.blockMetadata == -1) { + this.blockMetadata = 0; + } + return maxTorchValueFromMeta[this.blockMetadata]; + } + + public int getMaxStickValue() { + if (this.blockMetadata == -1) { + this.blockMetadata = 0; + } + return maxStickValueFromMeta[this.blockMetadata]; + } + + public int getMaxCoalValue() { + if (this.blockMetadata == -1) { + this.blockMetadata = 0; + } + return maxCoalValueFromMeta[this.blockMetadata]; + } + + public ItemStack getStackStored() { + return this.stackStored; + } + + public ItemStack getStackCharging() { + return this.stackCharging; + } + + public String toString() + { + return this.torchValue + ";" + this.stickValue + ";" + this.coalValue + "p=" + this.xCoord + ";" + this.yCoord + ";" + this.zCoord; + } +} + + diff --git a/com/bernard/torch/gui/TorchGuiHandler.java b/com/bernard/torch/gui/TorchGuiHandler.java new file mode 100644 index 0000000..9f5249b --- /dev/null +++ b/com/bernard/torch/gui/TorchGuiHandler.java @@ -0,0 +1,39 @@ +/* */ package com.bernard.torch.gui; +/* */ +/* */ import com.bernard.torch.blocks.tileentities.TorchRechargerTileEntity; +/* */ import cpw.mods.fml.common.network.IGuiHandler; +/* */ import java.io.PrintStream; +/* */ import net.minecraft.entity.player.EntityPlayer; +/* */ import net.minecraft.tileentity.TileEntity; +/* */ import net.minecraft.world.World; +/* */ +/* */ public class TorchGuiHandler implements IGuiHandler +/* */ { +/* */ public Object getServerGuiElement(int ID, EntityPlayer player, World world, int x, int y, int z) +/* */ { +/* 14 */ if (ID == 0) { +/* 15 */ TileEntity te = world.getTileEntity(x, y, z); +/* 16 */ if ((te instanceof TorchRechargerTileEntity)) { +/* 17 */ System.out.println("S:" + te.toString()); +/* 18 */ return new TorchRechargerContainer((TorchRechargerTileEntity)te, player.inventory); +/* */ } +/* */ } +/* */ +/* 22 */ return null; +/* */ } +/* */ +/* */ public Object getClientGuiElement(int ID, EntityPlayer player, World world, int x, int y, int z) +/* */ { +/* 27 */ if (ID == 0) { +/* 28 */ TileEntity te = world.getTileEntity(x, y, z); +/* 29 */ if ((te instanceof TorchRechargerTileEntity)) { +/* 30 */ System.out.println("C:" + te.toString()); +/* 31 */ return new TorchRechargerGuiContainer((TorchRechargerTileEntity)te, player.inventory); +/* */ } +/* */ } +/* */ +/* 35 */ return null; +/* */ } +/* */ } + + diff --git a/com/bernard/torch/gui/TorchRechargerContainer.java b/com/bernard/torch/gui/TorchRechargerContainer.java new file mode 100644 index 0000000..a03487c --- /dev/null +++ b/com/bernard/torch/gui/TorchRechargerContainer.java @@ -0,0 +1,102 @@ +/* */ package com.bernard.torch.gui; +/* */ +/* */ import com.bernard.torch.api.ITorchRechargable; +/* */ import com.bernard.torch.blocks.tileentities.TorchRechargerTileEntity; +/* */ import com.bernard.torch.init.CoalStickAndTorchesRegister; +/* */ import java.util.List; +/* */ import net.minecraft.entity.player.EntityPlayer; +/* */ import net.minecraft.entity.player.InventoryPlayer; +/* */ import net.minecraft.inventory.Container; +/* */ import net.minecraft.inventory.IInventory; +/* */ import net.minecraft.inventory.Slot; +/* */ import net.minecraft.item.ItemStack; +/* */ +/* */ public class TorchRechargerContainer extends Container +/* */ { +/* */ TorchRechargerTileEntity tile; +/* */ +/* */ public TorchRechargerContainer(TorchRechargerTileEntity te, InventoryPlayer inventory) +/* */ { +/* 20 */ this.tile = te; +/* 21 */ this.tile.openChest(); +/* 22 */ addSlotToContainer(new InputSlot(this.tile, 0, 14, 33)); +/* 23 */ addSlotToContainer(new OutputSlot(this.tile, 1, 138, 33)); +/* 24 */ bindPlayerInventory(inventory); +/* */ } +/* */ +/* */ public void bindPlayerInventory(InventoryPlayer inventory) +/* */ { +/* 29 */ for (int i = 0; i < 3; i++) { +/* 30 */ for (int j = 0; j < 9; j++) { +/* 31 */ addSlotToContainer(new Slot(inventory, j + i * 9 + 9, 8 + j * 18, 84 + i * 18)); +/* */ } +/* */ } +/* 34 */ for (i = 0; i < 9; i++) { +/* 35 */ addSlotToContainer(new Slot(inventory, i, 8 + i * 18, 142)); +/* */ } +/* */ } +/* */ +/* */ public boolean canInteractWith(EntityPlayer player) +/* */ { +/* 41 */ return this.tile.isUseableByPlayer(player); +/* */ } +/* */ +/* */ public void onContainerClosed(EntityPlayer player) +/* */ { +/* 46 */ super.onContainerClosed(player); +/* 47 */ this.tile.closeChest(); +/* */ } +/* */ +/* */ public ItemStack transferStackInSlot(EntityPlayer player, int slotIndex) +/* */ { +/* 52 */ ItemStack stack = null; +/* 53 */ Slot slot = (Slot)this.inventorySlots.get(slotIndex); +/* 54 */ if ((slot != null) && (slot.getHasStack())) { +/* 55 */ ItemStack stackBis = slot.getStack(); +/* 56 */ stack = stackBis.copy(); +/* 57 */ if (slotIndex < this.tile.getSizeInventory()) { +/* 58 */ if (!mergeItemStack(stackBis, this.tile.getSizeInventory(), this.inventorySlots.size(), true)) { +/* 59 */ return null; +/* */ } +/* 61 */ } else if (!mergeItemStack(stackBis, 0, this.tile.getSizeInventory(), false)) { +/* 62 */ return null; +/* */ } +/* 64 */ if (stackBis.stackSize == 0) { +/* 65 */ slot.putStack((ItemStack)null); +/* */ } else { +/* 67 */ slot.onSlotChanged(); +/* */ } +/* */ } +/* 70 */ return stack; +/* */ } +/* */ +/* */ public class InputSlot extends Slot +/* */ { +/* */ public InputSlot(IInventory inventory, int i, int j, int k) { +/* 76 */ super(i, j, k); +/* */ } +/* */ +/* */ public boolean isItemValid(ItemStack stack) +/* */ { +/* 81 */ if (stack == null) +/* 82 */ return false; +/* 83 */ return CoalStickAndTorchesRegister.isRegistered(stack.getItem()); +/* */ } +/* */ } +/* */ +/* */ public class OutputSlot extends Slot +/* */ { +/* */ public OutputSlot(IInventory inventory, int i, int j, int k) { +/* 90 */ super(i, j, k); +/* */ } +/* */ +/* */ public boolean isItemValid(ItemStack stack) +/* */ { +/* 95 */ if (stack == null) +/* 96 */ return false; +/* 97 */ return stack.getItem() instanceof ITorchRechargable; +/* */ } +/* */ } +/* */ } + + diff --git a/com/bernard/torch/gui/TorchRechargerGuiContainer.java b/com/bernard/torch/gui/TorchRechargerGuiContainer.java new file mode 100644 index 0000000..1708b23 --- /dev/null +++ b/com/bernard/torch/gui/TorchRechargerGuiContainer.java @@ -0,0 +1,121 @@ +package com.bernard.torch.gui; + +import com.bernard.torch.blocks.tileentities.TorchRechargerTileEntity; +import java.util.ArrayList; +import java.util.List; +import net.minecraft.client.Minecraft; +import net.minecraft.client.gui.inventory.GuiContainer; +import net.minecraft.client.renderer.texture.TextureManager; +import net.minecraft.entity.player.InventoryPlayer; +import net.minecraft.inventory.IInventory; +import net.minecraft.util.ResourceLocation; +import org.lwjgl.opengl.GL11; + + +public class TorchRechargerGuiContainer + extends GuiContainer +{ + private static final ResourceLocation background = new ResourceLocation("torch_mod", "textures/guis/torch_recharger.png"); + + public TorchRechargerTileEntity tile; + public IInventory playerInventory; + private float mouseX = 0.0F; private float mouseY = 0.0F; + + public TorchRechargerGuiContainer(TorchRechargerTileEntity te, InventoryPlayer inventory) { + super(new TorchRechargerContainer(te, inventory)); + this.tile = te; + this.playerInventory = inventory; + this.allowUserInput = false; + this.xSize = 176; + this.ySize = 166; + } + + public boolean doesGuiPauseGame() + { + return false; + } + + public void drawScreen(int x, int y, float par3) + { + this.mouseX = x; + this.mouseY = y; + super.drawScreen(x, y, par3); + } + + protected void drawGuiContainerForegroundLayer(int x, int y) + { + int k = (this.width - this.xSize) / 2; + int l = (this.height - this.ySize) / 2; + + + + + + + + + + + + if ((this.mouseX >= k + 101) && (this.mouseX < k + 116) && (this.mouseY >= l + 8) && (this.mouseY < l + 81)) { + List li = new ArrayList(); + li.add("Torches stock�s :"); + li.add(Integer.toString(this.tile.getTorchValue(), 10)); + drawHoveringText(li, (int)this.mouseX - k, (int)this.mouseY - l, this.fontRendererObj); + } else if ((this.mouseX >= k + 45) && (this.mouseX < k + 70) && (this.mouseY >= l + 9) && (this.mouseY < l + 38)) { + List li = new ArrayList(); + li.add("Charbon stock� :"); + li.add(Integer.toString(this.tile.getCoalValue(), 10)); + drawHoveringText(li, (int)this.mouseX - k, (int)this.mouseY - l, this.fontRendererObj); + } else if ((this.mouseX >= k + 56) && (this.mouseX < k + 60) && (this.mouseY >= l + 40) && (this.mouseY < l + 67)) { + List li = new ArrayList(); + li.add("Batons stock�s :"); + li.add(Integer.toString(this.tile.getStickValue(), 10)); + drawHoveringText(li, (int)this.mouseX - k, (int)this.mouseY - l, this.fontRendererObj); + } + } + + + protected void drawGuiContainerBackgroundLayer(float partialRenderTick, int x, int y) + { + GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); + this.mc.getTextureManager().bindTexture(background); + + int k = (this.width - this.xSize) / 2; + + int l = (this.height - this.ySize) / 2; + + drawTexturedModalRect(k, l, 0, 0, this.xSize, this.ySize); + + + + + + + + + + + + + + + + + + + + + int meta = this.tile.blockMetadata; + if (meta < 0) + meta = 0; + int torchPixels = Math.floorDiv(this.tile.getTorchValue() * 80, this.tile.getMaxTorchValue()); + drawTexturedModalRect(k + 94, l + 1 + 80 - torchPixels, this.xSize, 80 - torchPixels, 29, torchPixels); + int coalPixels = Math.floorDiv(this.tile.getCoalValue() * 32, this.tile.getMaxCoalValue()); + drawTexturedModalRect(k + 42, l + 7 + 32 - coalPixels, this.xSize, 112 - coalPixels, 30, coalPixels); + int stickPixels = Math.floorDiv(this.tile.getStickValue() * 40, this.tile.getMaxStickValue()); + drawTexturedModalRect(k + 53, l + 39 + 40 - stickPixels, this.xSize, 152 - stickPixels, 9, stickPixels); + } +} + + diff --git a/com/bernard/torch/init/ClientProxy.java b/com/bernard/torch/init/ClientProxy.java new file mode 100644 index 0000000..0579e9f --- /dev/null +++ b/com/bernard/torch/init/ClientProxy.java @@ -0,0 +1,9 @@ +package com.bernard.torch.init; + +public class ClientProxy + extends CommonProxy +{ + public void registerRenders() {} +} + + diff --git a/com/bernard/torch/init/CoalStickAndTorchesRegister.java b/com/bernard/torch/init/CoalStickAndTorchesRegister.java new file mode 100644 index 0000000..57b095e --- /dev/null +++ b/com/bernard/torch/init/CoalStickAndTorchesRegister.java @@ -0,0 +1,80 @@ +/* */ package com.bernard.torch.init; +/* */ +/* */ import java.util.HashMap; +/* */ import java.util.Map; +/* */ import net.minecraft.block.Block; +/* */ import net.minecraft.item.Item; +/* */ import net.minecraft.item.ItemStack; +/* */ +/* */ +/* */ +/* */ public class CoalStickAndTorchesRegister +/* */ { +/* 13 */ private static Map registered = new HashMap(); +/* */ private static final int coalValue = 0; +/* */ private static final int stickValue = 1; +/* */ private static final int torchValue = 2; +/* */ +/* */ public static void registerCoal(Item i, int value) { +/* 19 */ registered.put(i, new Integer[] { Integer.valueOf(0), Integer.valueOf(Math.abs(value)) }); +/* */ } +/* */ +/* 22 */ public static void registerCoal(Block b, int value) { registered.put(Item.getItemFromBlock(b), new Integer[] { Integer.valueOf(0), Integer.valueOf(Math.abs(value)) }); } +/* */ +/* */ public static void registerCoal(ItemStack s, int value) { +/* 25 */ registered.put(s.getItem(), new Integer[] { Integer.valueOf(0), Integer.valueOf(Math.abs(value)) }); +/* */ } +/* */ +/* 28 */ public static void registerStick(Item i, int value) { registered.put(i, new Integer[] { Integer.valueOf(1), Integer.valueOf(Math.abs(value)) }); } +/* */ +/* */ public static void registerStick(Block b, int value) { +/* 31 */ registered.put(Item.getItemFromBlock(b), new Integer[] { Integer.valueOf(1), Integer.valueOf(Math.abs(value)) }); +/* */ } +/* */ +/* 34 */ public static void registerStick(ItemStack s, int value) { registered.put(s.getItem(), new Integer[] { Integer.valueOf(1), Integer.valueOf(Math.abs(value)) }); } +/* */ +/* */ public static void registerTorch(Item i, int value) { +/* 37 */ registered.put(i, new Integer[] { Integer.valueOf(2), Integer.valueOf(Math.abs(value)) }); +/* */ } +/* */ +/* 40 */ public static void registerTorch(Block b, int value) { registered.put(Item.getItemFromBlock(b), new Integer[] { Integer.valueOf(2), Integer.valueOf(Math.abs(value)) }); } +/* */ +/* */ +/* 43 */ public static void registerTorch(ItemStack s, int value) { registered.put(s.getItem(), new Integer[] { Integer.valueOf(2), Integer.valueOf(Math.abs(value)) }); } +/* */ +/* */ public static boolean isCoal(Item i) { +/* 46 */ if (!registered.containsKey(i)) +/* 47 */ return false; +/* 48 */ return ((Integer[])registered.get(i))[0].intValue() == 0; +/* */ } +/* */ +/* 51 */ public static boolean isRegistered(Item i) { return registered.containsKey(i); } +/* */ +/* */ public static boolean isStick(Item i) { +/* 54 */ if (!registered.containsKey(i)) +/* 55 */ return false; +/* 56 */ return ((Integer[])registered.get(i))[0].intValue() == 1; +/* */ } +/* */ +/* 59 */ public static boolean isTorch(Item i) { if (!registered.containsKey(i)) +/* 60 */ return false; +/* 61 */ return ((Integer[])registered.get(i))[0].intValue() == 2; +/* */ } +/* */ +/* 64 */ public static int getCoalValue(Item i) { if (!isCoal(i)) +/* 65 */ return 0; +/* 66 */ return ((Integer[])registered.get(i))[1].intValue(); +/* */ } +/* */ +/* 69 */ public static int getStickValue(Item i) { if (!isStick(i)) +/* 70 */ return 0; +/* 71 */ return ((Integer[])registered.get(i))[1].intValue(); +/* */ } +/* */ +/* 74 */ public static int getTorchValue(Item i) { if (!isTorch(i)) +/* 75 */ return 0; +/* 76 */ return ((Integer[])registered.get(i))[1].intValue(); +/* */ } +/* */ } + + diff --git a/com/bernard/torch/init/CommonProxy.java b/com/bernard/torch/init/CommonProxy.java new file mode 100644 index 0000000..09ddf56 --- /dev/null +++ b/com/bernard/torch/init/CommonProxy.java @@ -0,0 +1,8 @@ +package com.bernard.torch.init; + +public class CommonProxy +{ + public void registerRenders() {} +} + + diff --git a/com/bernard/torch/init/TorchBlocks.java b/com/bernard/torch/init/TorchBlocks.java new file mode 100644 index 0000000..299bc9f --- /dev/null +++ b/com/bernard/torch/init/TorchBlocks.java @@ -0,0 +1,22 @@ +/* */ package com.bernard.torch.init; +/* */ +/* */ import com.bernard.torch.blocks.TorchRechargerBlock; +/* */ import com.bernard.torch.blocks.itemblocs.TorchRechargerItemBlock; +/* */ import com.bernard.torch.blocks.tileentities.TorchRechargerTileEntity; +/* */ import cpw.mods.fml.common.registry.GameRegistry; +/* */ import net.minecraft.block.Block; +/* */ +/* */ +/* */ public class TorchBlocks +/* */ { +/* */ public static Block torchRecharger; +/* */ +/* */ public static void init() +/* */ { +/* 16 */ torchRecharger = new TorchRechargerBlock().setUnlocalizedName("torch_recharger"); +/* 17 */ GameRegistry.registerBlock(torchRecharger, TorchRechargerItemBlock.class, "torch_recharger"); +/* 18 */ GameRegistry.registerTileEntity(TorchRechargerTileEntity.class, "torch_mod:torch_recharger_te"); +/* */ } +/* */ } + + diff --git a/com/bernard/torch/init/TorchItems.java b/com/bernard/torch/init/TorchItems.java new file mode 100644 index 0000000..aa1e444 --- /dev/null +++ b/com/bernard/torch/init/TorchItems.java @@ -0,0 +1,21 @@ +/* */ package com.bernard.torch.init; +/* */ +/* */ import com.bernard.torch.items.TorchAmulet; +/* */ import cpw.mods.fml.common.registry.GameRegistry; +/* */ import net.minecraft.creativetab.CreativeTabs; +/* */ import net.minecraft.item.Item; +/* */ +/* */ +/* */ +/* */ public class TorchItems +/* */ { +/* */ public static Item torchAmulet; +/* */ +/* */ public static void init() +/* */ { +/* 16 */ torchAmulet = new TorchAmulet().setUnlocalizedName("torch_amulet").setTextureName("torch_mod:torch_amulet").setCreativeTab(CreativeTabs.tabTools); +/* 17 */ GameRegistry.registerItem(torchAmulet, "torch_amulet"); +/* */ } +/* */ } + + diff --git a/com/bernard/torch/items/TorchAmulet.java b/com/bernard/torch/items/TorchAmulet.java new file mode 100644 index 0000000..08e3054 --- /dev/null +++ b/com/bernard/torch/items/TorchAmulet.java @@ -0,0 +1,202 @@ +package com.bernard.torch.items; + +import baubles.api.BaubleType; +import baubles.api.IBauble; +import com.bernard.torch.api.ITorchRechargable; +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import java.util.List; +import net.minecraft.block.Block; +import net.minecraft.client.renderer.texture.IIconRegister; +import net.minecraft.creativetab.CreativeTabs; +import net.minecraft.entity.EntityLivingBase; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.init.Blocks; +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.util.IIcon; +import net.minecraft.world.World; + + + + +public class TorchAmulet + extends Item + implements IBauble, ITorchRechargable +{ + public static int yRelative = 0; + + public static final int size = 4; + public static final int ecart = 5; + public static final int maxYRelative = 5; + public static final int minYRelative = -5; + public static final int[] maxTorchesFromMeta = { 1024, 2048, 4096, 8192, 16384, 32768, 65536, 131072, 262144 }; + + public static String[] names = { "torch_amulet", "coal_torch_amulet", "iron_torch_amulet", "quartz_torch_amulet", "gold_torch_amulet", "redstone_torch_amulet", "lapis_torch_amulet", "diamond_torch_amulet", "emerald_torch_amulet" }; + + + public static IIcon[] textures = new IIcon[names.length]; + + public TorchAmulet() { + setMaxStackSize(1); + setHasSubtypes(true); + } + + public void addInformation(ItemStack itemstack, EntityPlayer player, List l, boolean flag) + { + super.addInformation(itemstack, player, l, flag); + if ((itemstack.stackTagCompound == null) || (!itemstack.stackTagCompound.hasKey("TorchesLeft", 3))) { + itemstack.stackTagCompound = new NBTTagCompound(); + int meta = itemstack.getMetadata(); + if (meta >= maxTorchesFromMeta.length) + meta = 0; + itemstack.stackTagCompound.setInteger("TorchesLeft", maxTorchesFromMeta[meta]); + } + l.add("Torches left :" + itemstack.stackTagCompound.getInteger("TorchesLeft")); + } + + + public int getMetadata(int meta) + { + return meta; + } + + public String getUnlocalizedName(ItemStack stack) + { + int meta = stack.getMetadata(); + if ((meta < 0) || (meta >= names.length)) + meta = 0; + return names[meta]; + } + + public void registerIcons(IIconRegister iconregister) { + for (int i = 0; i < names.length; i++) + { + textures[i] = iconregister.registerIcon("torch_mod:" + names[i]); + } + } + + @SideOnly(Side.CLIENT) + public void getSubItems(Item i, CreativeTabs creativeTabs, List list) + { + for (int metadata = 0; metadata < names.length; metadata++) + { + list.add(new ItemStack(i, 1, metadata)); + } + } + + public IIcon getIconFromDamage(int meta) + { + if ((meta < 0) || (meta >= names.length)) + meta = 0; + return textures[meta]; + } + + public void onCreated(ItemStack itemstack, World w, EntityPlayer pl) + { + super.onCreated(itemstack, w, pl); + if ((itemstack.stackTagCompound == null) || + (!itemstack.stackTagCompound.hasKey("TorchesLeft", 3))) { + itemstack.stackTagCompound = new NBTTagCompound(); + int meta = itemstack.getMetadata(); + if (meta >= maxTorchesFromMeta.length) + meta = 0; + itemstack.stackTagCompound.setInteger("TorchesLeft", maxTorchesFromMeta[meta]); + } + } + + + public BaubleType getBaubleType(ItemStack itemstack) + { + return BaubleType.AMULET; + } + + public void onWornTick(ItemStack itemstack, EntityLivingBase player) + { + if ((itemstack.stackTagCompound == null) || + (!itemstack.stackTagCompound.hasKey("TorchesLeft", 3))) { + itemstack.stackTagCompound = new NBTTagCompound(); + int meta = itemstack.getMetadata(); + if (meta >= maxTorchesFromMeta.length) + meta = 0; + itemstack.stackTagCompound.setInteger("TorchesLeft", maxTorchesFromMeta[meta]); + } + if (itemstack.stackTagCompound.getInteger("TorchesLeft") > 0) { + int modX = (int)player.posX - (int)player.posX % 5; + int modZ = (int)player.posZ - (int)player.posZ % 5; + int y = (int)player.posY; + for (int x = -20; x <= 20; x += 5) { + for (int z = -20; z <= 20; z += 5) { + if (placeTorch(player.worldObj, modX + x, y + yRelative, modZ + z)) { + itemstack.stackTagCompound.setInteger("TorchesLeft", itemstack.stackTagCompound.getInteger("TorchesLeft") - 1); + } + } + } + yRelative = yRelative == 4 ? -5 : yRelative + 1; + } + } + + public boolean placeTorch(World w, int x, int y, int z) { + if ((Blocks.torch.canPlaceBlockAt(w, x, y, z)) && (w.isAirBlock(x, y, z))) { + w.setBlock(x, y, z, Blocks.torch); + return true; + } + return false; + } + + public void onEquipped(ItemStack itemstack, EntityLivingBase player) + { + if ((itemstack.stackTagCompound == null) || + (!itemstack.stackTagCompound.hasKey("TorchesLeft", 3))) { + itemstack.stackTagCompound = new NBTTagCompound(); + int meta = itemstack.getMetadata(); + if (meta >= maxTorchesFromMeta.length) + meta = 0; + itemstack.stackTagCompound.setInteger("TorchesLeft", maxTorchesFromMeta[meta]); + } + } + + + + public void onUnequipped(ItemStack itemstack, EntityLivingBase player) {} + + + public boolean canEquip(ItemStack itemstack, EntityLivingBase player) + { + return true; + } + + public boolean canUnequip(ItemStack itemstack, EntityLivingBase player) + { + return true; + } + + public void recharge(ItemStack itemstack, int lux) + { + int meta = itemstack.getMetadata(); + if ((itemstack.stackTagCompound == null) || + (!itemstack.stackTagCompound.hasKey("TorchesLeft", 3))) { + itemstack.stackTagCompound = new NBTTagCompound(); + if (meta >= maxTorchesFromMeta.length) + meta = 0; + itemstack.stackTagCompound.setInteger("TorchesLeft", maxTorchesFromMeta[meta]); + } + itemstack.stackTagCompound.setInteger("TorchesLeft", Math.min(itemstack.stackTagCompound.getInteger("TorchesLeft") + lux, maxTorchesFromMeta[meta])); + } + + public int getLuxNedded(ItemStack itemstack) + { + int meta = itemstack.getMetadata(); + if ((itemstack.stackTagCompound == null) || + (!itemstack.stackTagCompound.hasKey("TorchesLeft", 3))) { + itemstack.stackTagCompound = new NBTTagCompound(); + if (meta >= maxTorchesFromMeta.length) + meta = 0; + itemstack.stackTagCompound.setInteger("TorchesLeft", maxTorchesFromMeta[meta]); + } + return maxTorchesFromMeta[meta] - itemstack.stackTagCompound.getInteger("TorchesLeft"); + } +} + + diff --git a/mcmod.info b/mcmod.info new file mode 100644 index 0000000..ed34007 --- /dev/null +++ b/mcmod.info @@ -0,0 +1,20 @@ +[ +{ + "modid": "torch_mod", + "name": "Torch mod", + "description": "Un utilitaire pour placer des torches", + "version": "1.0", + "mcversion": "1.7.10", + "url": "", + "updateUrl": "", + "authorList": ["Samsoule63"], + "credits": "Azanor, pour son mod baubles, + le ressource pack Faithful, pour une partie des textures de ce mod, + UnwrittenFun , pour l'emprunt de la texture de l'amulette + et enfin, minecraftforgefrance , qui m'a permis, + grâce à ses tutos et à son forum de faire ce mod", + "logoFile": "", + "screenshots": [], + "dependencies": [] +} +]