From 6c2cbe96e2c80f7679fc3f7b2c4f760211b540ca Mon Sep 17 00:00:00 2001 From: Eugene Date: Sun, 14 Jul 2024 16:04:36 +0300 Subject: [PATCH] in word brewing_keg interaction --- projectfiles/brewing_keg_gui_v2.psd | Bin 0 -> 90211 bytes .../generate_jarring => scripts}/jarring.py | 0 .../block/custom/BrewingKegBlock.java | 85 +++++++++++++++++- .../block/entity/BrewingKegBlockEntity.java | 56 +++++++----- .../ukrainian_dlight/item/DrinkBlockItem.java | 2 +- .../util/StatusEffectUtil.java | 23 ++--- .../textures/gui/brewing_keg_gui.png | Bin 6165 -> 5152 bytes 7 files changed, 132 insertions(+), 34 deletions(-) create mode 100644 projectfiles/brewing_keg_gui_v2.psd rename {projectfiles/generate_jarring => scripts}/jarring.py (100%) diff --git a/projectfiles/brewing_keg_gui_v2.psd b/projectfiles/brewing_keg_gui_v2.psd new file mode 100644 index 0000000000000000000000000000000000000000..663c678b4b19a615a90da4b0e8134c811066bc49 GIT binary patch literal 90211 zcmeHQ2|!d;_kRNj?xv=dm6@VMfjBIpC;}Q9lxV_$NJuaOuiHbiDUAJt1IImN$1w2E;9~>v zv3q{p(>VK+onLoompT2jHSKnU;bYF|*znaO17>8#D^u0FehKQN6perX^IIzW_e)Xv z_mA=!KV*F77WQ!}&F;WNV`lrvM6!&UtQMs*xH!*51>DEzcCqE>VCrq%iWbjhRFN*Ldtun=dj_!-THYB z@$~W-GStJ<$K7*?-w?T6v^*8tq`*$-&BubdMSFnI7`NLp;QoR7##FGdn8{H%+DVP^YQW)f$}^ z_~fE|naLTt3~h3Tg(~^O7App&j33X}E!y7nbkVA{y5Q*m0SBolr#2!tQ|&QHtUdp7RzyZd+9;yGxPvibj=@qjeqWVP4({ zzfqL>$#|W56qtv%`w(CEAzl%3xu2KZ&)fTnAzpq%h6sd^l4df-XQ)yVb4_H(JtM%x zynOwNveM&qqvA6&(^8c2$o4#@YgC*?@v0r^ zVJs@(=a2i1$wB}L^obhuYyqTE~V zK75#0qPwprO2w<>?sD&hgkfGoy%N=lN(}Az@j~`iqMyuAW+RgZ(Pa3mGL#_R*eq}F zL~k$8cprD~c+Vm3@jl)@?!yy3RqkrlaHY4G(rc*i5IL<#AgonI6S7jkJH@97%Amfe zpfZ)*$9Jfwm#_P zhj#|p{e-JuFwI3qkNihk3U(uz@mX3m8YKSx=_uj-4lfDu;KAk>uS7;LN{L2{S~b$c zB-hw1o|9usX{}D%ARzJu?3U}uNmgsD4LTwUm$EEGn~|u?iO*68C4q&s=?sWSQyz2K zBRvS(cR&l;`00O52fp$0M9+9nwfm67_~GuJYHu)ixwp#Q3yjk{VYoL~JPg=d)q#l9 z`kQoMv|nX%ye3Jl8s$N|MKk_MYO~D~N@_EDAv^|6T_JU^X0DSASHWb9%;c~Dn99L4 z(u1Ezwi?oWg|{VTeN@d`CL?IE;qWFs7e_pTj7J5f0D5HW0o6cq@k^ z=&xfYF9Y_l@X={H4cE@j3E3%Wx)cqr2#$BarN@kqewyGg0*SD5hm8@39s(RD;0HXl zaQr@0a!jU9L%RlDPsrkTCM9Xd^E+d*G-HfA8l7?HnS?Ygev?GO`l_Gk!%a#DC+mG_CSRr?oCOI!hIy(CEev zn3RSz&i{>0Q}q+epQKIG;rxj+(gG*(#XC+{E8%fBc(xH9g5_*wV$wt{wH1^`g@K}G zGta0Ki5RnLBQi2Ys|{DCk^G5S%D`wO0sq~j%*x1&f~U+TBD+n|BvJUfq63qlO`|h( zx{UO+3{4Wp(wQDXO%UXFq4|?il9Gi7I?)5rHoiQ1_Sya%X#?{VP#HWf%~AYZ^dNk! zD_1FyfCBO~wS7I#>(p`2h5A$V7dBkH)J*KK7tZek+fFb7kd^ylYmamYf>H1c_bj## zF4Y~jUzEzauJ%{x}(3_)>jwTOTmpx4(?{JK!yBh-?=$ zI$*4k@dYV6TtfrSeTwl&OoSt8uyw>aGA?Jyd++l(o^V9QOo1&egL)%l(AeX0u*~bQ z&oG&^)uiplt$i&zY}^;7{>m|o1rm)OeYeMZ=n;5^>5RAB2ImjKJB~8^hjUOLP%qH% zB&fE>Ih;?i3k0F?3gMrapTgFQhvCV|Of z)JzVO!f2QzCXPvkJw%h3Y{(-;F^^!wIT4hDl7d~XQ0p9_dt@}(X~?%DcpTxOca2JG z=AD!}IUK{CKtq}zH;`#I?wHa1_#~B1;)fsJchtgj&T4IB+B3+3$V}>KhmS#a5BNIa zoscI5bvY$vWn^cXWI1NwM}X+>sPU zIp|18dQv|ice?-f@Z`VAX%mBQnloOTWO{0Kj8D@=#3z}Q>Z(+yrA4S`=t8tlMT~!j zy6N^b+oW)Z7b5(8_ki$w7nBpFJb9b7<%2)V@QgJ;BR6t7zXCr-AdsFPyxn z)cW-P*ZLO+Jy{l^3jU^CH}t;!ir>_iHoUZ>I{Wv_V_n`_I_LAZzdi8Bm5(=mckn+A zk%`lb-&s~sb?DElzT={ja$a7r{EMB3PhIQI*x5mA9dMhR9NYQeCOj(d;Q%dop?}YI zo`rATi(0UK(!L8`&Iu>8isp|A@1@jwUmWO&8sId@=bQb|i1PbX!HS_e^>2I=EVsbL z*aY?%)7c)^*_{bsPJFksF3G9K&zmz_QrFe4yZT2|(E6QUuUNhLjQjUVE3+$N5}VR~ ze(h(?OV=DdKl||1upLv5t?S@?HFe65KSd8uPhD9z;{Aso_I&q^Zht1sDAy$p$xch? zvsc|%Jnu^6(xvtPZruFP)!DBt=<`czuBOXi*|vASeXVl-htUnQYNiGpsqOvqxl*UD zulyYL<8x0;uX!P2Ro=Ccv+r?V&y0LEzc;qJaO{3)d4TAYw}&jGC#XbXelmdnWsKB-CZ?pb7kcEimz&7azc(h7H=QE z?6W6x!cP}&?Ec30`72%aCS4EMP^`~s_J3{n!qbKy>ng8x>d7+kpRmk+SG~#Z6OUzw zecF52A4ATrIKy0d;K%Hkynqqc&OFsHYDI@fk`rHUu@ATu;(D;7}leGMlQ^3VD_(iq(Fjh`P`^-+(n21S+ru-kLm_vyXXFHt@)x9N2H z>W|+(f2BUL@!ITejlUoK&lu;em6Hu?di&;mcXZC`cgwCm9lxd0XQ2Oz(6^(HcbfCZ zmy0zGogVteY0H735$FFry|U$r$}3TyeD<%P_N9eKL!9S#m;{?e?B3cT7v&z?w{7Xa zPWj%8bGJQrO}=E=`)<0%>58Vx@wK1tn-i(`f4AYalNDzg<2^>bt!v7fdrJS>4{Njm zV=Ai~0zzsJE1!Skmp5Pe?fK3lmCoM=-+N}$*B@10ZHT*A8n`oi#$oTc4Sl8_)-O=^ zU~;ykANi>7&e;K{;^rv>K1@2^G9lc_)%B;fW6mDVsY{#Z9&^_4%{wm5OA6PttX#e$ zcGiKehd1wxIGVD#Mw{K$^XR(IR2!QN@373CC%<*b?z+g`?@xu(T$b4t;dJ@Mrkah% z7BqbbaBqBJ&X~SyH9ehPTR$O3ua!S{IA7h%@YY2CSf(;=oJ;huS^AZg$G^CyNK1X9 z$zT8Hg}iz94H&iSs`8^B=N%d`@1cRSzf(7Qgw*=&){-vp>X1?ux-`1x{($JdN!Rrj=$F4m%wC;2NH)_VOhCw#J%#aBn9?wDGWao(fznxyhLFT4C7 zAG!9Qvz3tp4Cz-k{eD*WB+GoaZu|%Lzv9rdGV-CGgT8Yb?>v8^*Qd_&Lng5M>Ndv@ zSoZ6iOYVQS=EiSt&78KPASO8NzvMvdFP;+Q65Mcmw98%tIVmhDJsK7YO9iBAVz z7<>MuxcMxTGcf9*Et)9h&sD{qeX3qb9Rmwh?KrmRfd1TmUm3IQ*VE%3`Tp6E;R*HY z>Qho*anE$m>=)#at_@rC;lT-?G~``4x1!>JNA{2F{#fwZwqEalU?^&7YJo*(8q%Iy zRr*!NhHCY3*DX2A_SY`>J^jQZTQ`31y3lv>zjyCm_Tp=YK6vhduYL*J*Yk?w6QfFJ zw_7q`=OpK@7cWG|`YzAzxOuM6JHMTXO`El~KE8{6>eioLn9{f8^|N2coYVZ`e_VNE z@%by7{JQ7nzu&uI_XF7neeW5*F-9HqXUoUGeDKk;`aK(>H%#AC6WORwe{a>s`j0=a zSnjiVa+>p3{x!A9$G@nK*3_LCyZchwn%<|@-5B0A_1HH-j%TKSS^52x*eC9Dd9d%r zH=nNas93*U`LxP0c1xO}{*SkQo_r#&F+b#x_h~;E9bL|-l?_#+e)@R-12Iqk!ZOFY zr1o*%^x=csQpa6-^TB!E50~sXT)B7UvsEuPxli5MkeL7Hsizm}zkgO`u34iY8l8s;b3_r9_wm*OJ zVwTyL{-5t%{b%RP8`iOmdT~awZswtsP2dYQoz|Smeck<$#Kj9D-2#?v7{3R6-#(V9 zuQ-2h)v*WeZ?ISQc;fkhRZ7E|{FD2p_L=(ciq{{5{b%>Ae!qTpe$K{oA>;QQx;*sA z@2`)mJ@#4 zlyBY4ro5%g8Xk^${P^jWXE&W|=zB=hkS5<$TyL27=gU!XKdfIiS)OcHwei;nS5;?r zn^$W{9+nsL-rQ3$;G@=0IQE#IlkYbTQN7+Q2^>1H{ff0g|K9nByz)Yw>;C-cT@SkS zE}Ht|pXnPW?2jE=0}Z+smo;X!x_C0ntl#TD^uBEsKgR!%hz?wM?Sma5pL9yTx?k3k z@XDe%_nM~<9Xp>|>ErDkKBFOdK|~+`vgLHk@%iDph99=GOiFUKq0gR{Q;{KgU$2`T zmA9?i?Dx85rVK3C_dIv(@GzgB8uK@=e{SEJx@49)@?n0<;Ek`QG;VK*`26J#n=~n1 zQ%dcsH=Z4=+*-3~{=%c+c0$3fCe06Vev4(;>b*Z0UfdUO0gU4KtahD8>kmdX6b*{` z@aMiIpL>Q4$j-B8nRBC@y5w&h)9dPo@4sC8(w29sCl6>`J}q?G?|Y7Z$}%NMEl)qY z$|XDhdhDVbEaTs)?{WQ}u(#&z+c05t<%x{>Pn`YSf6tn55f5Joc(dp1Wh*P+zo+V9*HshF++TiT`M$$hCFj0Se!l!ggI#5P z$TOEZG)vqpN&3mMkXBUQC%eC6hvKgy$DetGk{t1}l*-0|Rp zzcio!CluwMeke80T^%8#;xH%>mhNtU+bxxNX>ecRtV`?((z{S{xI z9`jyIpOd{mnzHwBenIs0VKeeIRV`E3oLb2;jx{wImlV%D_sp1*An%Bf73)Kks`*tc zGjQODpK2e_xY-?B^0s5o-rI9lzNufdQyMsCln>k@Jq8ox|T4>mS(Y68m~fV2DhYC=k6M`p}4tchx=sA+!f=gvyMYX`^5mz1Vd z^x4Pcmz^5>(py*SIIDRJ#`ALa;Fg@o#xLi}GyT51`s{nv$?E%*=hn@sm^tj=i7(GB zt2$D%SO40s$}y<{;}!2j)h$ap)a{doul(PObn=ZXJN;(B!6v^eZ_N+?Gwn>=v-el6 zRZkhyr%#8W7xsN&_}#VdmWKN`^<1EG99l7Ne{G*L=wx9yuYdaR$1v;m@y|Ow^su-3 zh;Q-BkL>^GL3M5){hAv;EqQg`bB(VAIX(VwKW&ELvd7aQ14m7(-`eo-p4oGEuid=! z%ldf{9bWiV|Jj>oDxZBNRe$*T)Yz{Bp8oXM>8}?YWtr(aJwkyaBks^6pEOL~9sPD< z*o#0LY;)+(~seDd~zT~)D5BM+_Zkv_kVy-TC-{3{2b{ma+P9y@U9e~xx} zUOBFAMooHkKvGNd%Y*!LP7mF=R(-^O?AaGuT(8!r{-9q2O5f`4{ML<6p#>9KR%|%` z1)Q4R{(8~D%^8y$_w9Xe|J1X^zkX1Y+j&-0)X~_N!&l9IJ!$`j>ZFFVv5m$tOVB^m z5HUYwpsUcsF13^~fjxXvrT5-c>7)1x%cJ;$LlkV`8VuZCVuBbIlL41I)l5HTB9jbh z9elMo1s98%d)p|{kMU%Nz}FjzB-eQQLz0nsjvvoF4vF@RldK26r2>~WAiod30fs71 zkUhw!r^z1U%E0AMnH*mPeFVy6$vklyT`79=%czNRIE z7OM0c;_D~(ge6VMB9kBmF25|6k-E{f{Ka;(4jEj%F{W`zxG*WR=h_L^jg5Vg^*8oK z_PDSwb~0XuryVbwlg4m&H+cH`6^1D(U>o`446_x|-!KlSZH}8!e*g6d$Nno2F8x16 zTGhbnl`H@aEh6{s7zVDtA&$1c?T-9!u>RDW}?ZyG7ZT` zoxp!chBi4J)$tU3WoTcSt<{mE*xb0g0FcujEo+OG0YxR@+W}gs&WcD$SED<4K}VNP z$z9aL4!0w5Miw$_#B2VC?(?AjAXDy35NFn-Lb4I5JxtF{%p4KdzBfP znd+>#%rscqRg={3bp3hwwPB(GbbcYt|JCyWD1S^jiDWmx7#_5gbpR8hoM!_Cz~ zc0b%yEoAqx=kLI_g)y*Kv0MX8Pto@p-h&@qaOnw6S+8^ZcCe3*(|v|*=JzPC0i?Cy z@<^^R7q$L6>Kc~F;1bv2W-*coTW%joqRONxMw<5FhD} z5IeZu!y>5?y)_(!SW4;t-v}Ttg*+4TTF6fsn3ssxVk((J_?~0zJJ~t5dk>P}(i|25 zJp*U(ce%r;$gOB z%-clTE@Ppuc*C%i&%iQM;G2BS$ax9ypq;hE*a7r5g}ro%Wh1ZO9A`Vi33c8qr#)~c zH$z(mHJTuAsjY~*>=vxDnm&_6^m`G77x;EJa$~Khn8F_wPqnrRZNKizE?qv$T%WWo3Xv3UL_Y% zeSk$etic5Ob)djF}b|v)ICAonFH)j_QO07#mIH7SZ9DeNqBM%p64_9Y{ha;vQ z9@eFtK@x}?L56qp7K8*KTc+I9Tqtd;dNlpujRedM8wpTb`M?xBJiz2BwVe+cfS-r6 z8=pFFiK62x_}nEU4nurH9d+kcJY%_YJRjeqQ-hD zUX&uxAxcR}GO0vmEt~*R=O{>&nzIVWm;fp-AyiAbQyr?xyu62- z3qTtLS|qeB`OY3LaygWzR9GH)HS<#yY7-0qxf|l)sF0_rs-@Mb3G=u*gYWW2UJz3u zkDwlUS|ZgTZMi`;gbG=js_fCEfIA5ax!l0|v1{X~kgK_>9n1uPPvj&7L)4X6KcS|4 z_`F5g@cfb50w~hW+a(lPKc=R9P#;t%$_Q>8Yl>1Kqa_sGKwEyUVPTXCdBm)NxT+w| zWd-@QS>B44#N}I75iW1)?=9#Cd;}^?efxj!Ct{1quPWih=ZbF&_gf3)f|>C@TwCzq zGybY-ooXm)AwRgdnUBQHvJz?nlQ1zE$y(3_3I;6Xt{G#3Ig4=q0zZdXxDvq~HEplZ zcL>vxAGynPYx1kqWFX?JWYTE7>qg^0S7VYN@s-AtG@j^uUYY~m;vDd%{m8A}T$6qe znQBP#UXu5cychk&)0$fPJ#;hv=U|lqUt2*z11~A|<1~blD5@1KgbEZg`(VqmFLLxE zZ=gcXJfPp>K%NcmnZ?G@_{MD#DK|DYC9h?098zQG@-Whfw~p3ituPcZRLxKo~TfS zD`F|Nl@E+T0fvf<0#jT0R0@Pkb_}H)AMxvgt1QMy70_5*oI)2%DdI3jjKoGGcMzwe z)bywVv=FD5HjPr#qZng_Dwb07qpcA&)=TlC6!D5js!)U|B_(Z&RG}bIYR*chCITZz zP)!v=Wi3)ACRzdIr-2p;ZA*T5j3PD`%2O&VFNh#93C@545F3qnI4b0^6k`G24}4b~ z@`9KOc?9(cV@`T-G#Io8_%&NnAcrjhKo= zB2_Ht27H7RsX~8!NLNRttE1A@QFJb)BSI{7M@NZZ&SH9X*3y+(=?;&nvhJvM{!Yt~ z>J~*n(zob2OY$R9qzXQX-Bodzq9fRNj+Mr;=ve+cQM+kBax-^|g^!O*^B8F!gAkB> zz+LA9{%8HqO-HJp znhT|Eannc@Y#d;2l-kM%rch7-CQqsDe8>Qb3v%^@+Rg{+&MVBz)e~wf-zXADr zDx=i&XdY;xD6gc1Qq!Xtrw*XpzviVG5hNy&Dlh;F^@xX~LLN&o7U2EB zcNHNoh^dfAP>(QDh1k6wszF-Q7YbP{N2=(-`mt-{sF2HAqzVktS;YDYHRZD$sRD}B z7v;TytRGWTJ}Z$b;Ks40C>1hVLQxOeDxOtVMyZfTERuw{suIp+l@zyG-insQ^w)=Ul~B4$C`GDBkt)*t0&>?#y331B+R}OiruPv45qH)FzkP(i zgQT^Y$TGf?P5%RJ`tQ7B`v0}=oAx78q>A)wN?O-bTFvh^ooDZ;|GBwHl?x2JMfSh5 zqzZa7{FS@Ipa{i|{+(27|VYV9oiJkQ*QG1i$Q|u`g@!&;ZI?xyCFkN6#lkV{9oo*sq6g1NQB5UVcRn^E|WbJ*~ zl9DF&VwD{v;8rMPSxa57YGUoHxS}_pc#|*m+P4u>jaA^=VWn?$D;`UNOy4Hf!M6lf z07sHh@n&E95|%Y9&x!l*lxKbIOxpu3Hf;~%dxK@FNNZSMrs}%y^{QsytI&E0W}DS0 z!Tevb{=Wz_a$nXyxAacTGpzMb3v(IX@_09IVVw71?gK}OzT%%-LZ(CM!iC)bjfM7* zn$c_Fk&|odSh8j7>e#xIYmaF&1%KhI6wTINu zUZL8#5#_tcc2{}%uJXANT6Lg(=-i0F%TOdj8|V}m5vZ-$wX4EV&hCOmg32Arlz|aL z?L*5$D=us8%L3;@@m-<2AYC4)HKs#Rnv^NW>0P1as63ZX(uj91&M(Ju<_4BwnZOIx zDj`kkDhv&TbYN&9l-CwUKsurj$_xz*913YfK%ZKy)w_0k=d>Ce97z6e1lvPuM6ci} zs?hW~WIHE4eNMV6bjqYa`(PEo2t`7tfL22Tr{vC=lWRz4=PJ6UJvjIB z6#K+L6%?NnJO|S0fm4j>V3a0h(s6oDa5^f_<&!kxRpI<}EJqcXh-CsVR67aMq^`K& zKu8A$$3giiaiNe7je{~H0s}`t8WGUy6s*;|b_-hN&Px|zMv6WR^X>0-b#>qf$@a<- z@SnoJ(zPeSeS(jyTYK`zLfG=hIhV^Y%ChqEau{@ETcL%qD*OwKmCx_z)%&KMLHZ0RZR(oEq|OdCFqyn%mI2}upX>zfkSWx zx?SGdOzLg&7G_d!leL0W@-}b*azYfXrtzCa(VL(zbgE5Wf6u`^PDM&t@Qy`f*ZIsW~ zh4Skb;_}>_#kx$=22vN{HMSGYUr=4B44S_{J5gVtE|M0OH}8vS`;C2}`NDRh^hrUR zPnz_LwEsjYgdBqyrVid;E=+w3dEY_~vgN<3xiXMd2AYF&c{%j9oSQe0G?_P$G?_O* zaejVaOrv=N@N)A8l27LiNG47j<@0r+{PIv-o|~6gmr2?{>LR?xcA_~7stc7ta};PN z>I>9G(!%oQeKBpnu`e`V*iMw5D`@jvlYWu*7Y2fMKnzokHD^pIAy0XmG?xgn5|QRY z1Jj|m>D=6aq{-ZXq{-X>it}>-V;ap3fR~#akbF8fKr(UKD4(wj<);VZ^4#3Rx=hjr zQWxPhwiC@mP+h1DnukC;QD2}gk`|UX?~7^sjeVi{!givxO3-GNNxw+@LQZh90Y2&g}R1v|GBOsq+Lq*^Z)iX}534x?9e2sED0egg6nH-`?%zy)k zt80o@p-s^wL3wl}Eklz8xkSd;@!C{Kc7~G{Za<_wk!)p(CK0&bhkc`L+UE9<%S2{r zH4_r1DIsavBh=4!>G9JtvbdVi;dbdM8a@M+uun{x!MB8AI%H}i)md8Tv~4mUFqaAY z<}y2})LLa$N+yER1VqOyb-dOrj|tW!Y1EqRbR-C+fpk)4q-T!F$Wo7+2rGRv-I1Eo z)MJd9TzN-w0E##zs^fLpS!zi3GA$jE43(<1);M|ysteD~%*@Er(c+}RAhm;*JD`Fc z^bUFS&U5-MbVU0zF7O6GM+EU?_K;$jlZe)*Y|Ga_w(P$gZ%kF(*L7ZjT~S; zV`VJ!B6|QPaBJXO1Swe+vlfyDc1{&ph-MvraG8b${k6Tis@C@x)|=E*S7qUTgLyId zq08TYFg<3#Z@V>AS-2}FlV5TS)o$Kn;JHhf=dwAN*Qm2SSw|` zMMC;X-@-|s{cd5|DNOPvv!~5TkLV2*gW0=%jnAyZPmw9`P5#ozj~=T+?8bXAme@PM zFM%oSrAsUuxmkptzi(rSza8O+`bGHhbs2R3XzdJ3{OD~K$q=KEET|nnd}i!Dy4+)l z9T`27Ob|dARvP=jOCji^3ptjhz|-lG$wfpCle|q-3ciH}_F!4cb=Hx?a=VBGbYY6z zD6=NP4kREn#UyY&X`>Ac##4-+wm=L|(KP`uvOF4OO@OxSiaz*$)$+^c8KxOqJgf`= zs8gLWC08JB1mY%e4R96AlI2)`orS{`qcLAV@h9K4RFSKZNS;{N+gLCF4KB{OFTgwP z;VD;gkrCY_6|)BP6fF8)0|2PsL63Jba5)~^Drf6_?XwhRiVp~}$eh4%;N^3+VCFmZ&Ad$3cUfUA+BV!aOM5frr#}2o)j0K|~G2O2o8kWdQZLj0*?TaA;5l+~+%+0?C zczS2oM_pY2d`hW!Q)H|S2W!&ZK)Rc=iwC7*$ndr()^tk?A9%Ppd$>9qJRC9g@Sx2W zM@4kliL8b|4VzLb)f^1t*fD)d4$S~q0NeO34{FbpiUPn5X;DvTd}JTnE({S$Y2(bg zjBZ?5@`FZUV5%M-Fq$c)!cb31s1X?uWH5^j2%#)wp?)6DZiJfj5e3}|%pc-PTARO6 z6j-B++{M|AP}(f6kEnGc?G!R=~8ofC@QL2)$J`sn9^pr7DDDG^r(V;IHWplBhC zk-)VZn*wI!?d=jKrL_to#52R_=zlIBLpeY1INad4QMq zMkf(WO}PYh2~YQA5V}ECNRMuEQzpynKe)lj!%m;0rhL{`fB-k*N=6!?=A4$-fB@CH zdAo$7L4~O~rCznd#SPa1D39rU9;Tf}wc?bd+dH6JbC4y>C0pZ1 z9$kIpHjPlpk62g*|2E+(jb%{;r1QrA*m>io{fOlIw}B8O z@rPs0iwPf=H9f|MAi;AYB9G9T7Zwje5ZvE!asK+mD~2tOLiVybI| zA9@BB4jruqmZd&A}jJSxl4Wp-0r7DHR0( zJ>ZMZ=HdeB`&zK=!Vsa9HqNZe=*e5_Qv(!R0j3%g1EZNzDvSi?pf$T7^vJ5qH^#$+ zMKQYTQ_799#0V5C@F{VTk7kUI8Qe?L%9=LVn%6YUWNLoQXuHF zV<;u!AoM5{Ef9m2w80n&T)VL;U`BCq3SBIvlow|Ch33m?z}hlo=8GzgjYj@8PDd$a z#LLdy2<P$akw&OFr{&NiP;GRa;srFQFg5425_$xuKCC%PO<64=8V%Z0Md@^unsSMS1rb*} zjdQuvR5ox})tY!6L{;J{6A3-Cs4H+kQs@z!cBGrY90tZ^gr%F5#tY+ODd}Rl=*9BC zc8ftU9g;$i?f|}jO*;~|C<2lvxa%xc@*`5{5uVoF=8!hg@o$_RNS@%X^8|lQV>j(b zOaqE+-;+X*q|hUTfaF2`$2`bg?0=-tqkm4g(%%<)WWHj%X`Bs&9*M8uZeC2dqPyua zW9X6SI`8I%#Y2w-i@}>S(5wCsdL&pT-iA`J7_7BY#--)0l`<|mZ+Z(}5PGzSsTK)6 zf*#Q&>Mh+%!vQ#ZAh4mjb?A{`op4L+DD-F#gv@Leg#U1%M|k~Nw6^{fi#PJDaO2f+ z(Q5pmBdpb34Ru!w>Zaj7T+h*>yO!8-&#R&5(0dl}qoFLOx<>e+<#a7efzYF^)wM(p zQ_Tn57(iCBi_ozhMTp}BfUPauvlOG z2BlQINlXdvRmCjaTIf-(K2KjTtEhxhBQAo_BeYC7c^yh?PhlJO$ zE*b;9xelU4c-+O1u@)SZJ1b{a9)M3N6>o}+H8*Qbx*nwKbMp!)6+?!%MX{z^3Oy>w z%Pp9dYbbEUw4i`CTO1Y9VJ8xLL=Br#D%BheGM2?0mwD(BwP#920YEF%TQUt}*a@~> z7$TI?#+h{)Egg@9iJ@r}2Bun20Hc{wDvSi?aG^(5UA|Bjve4p!Ts@&CeWamBocY5W zdRm*mP!w2WUSVFYo>1B>u8*j7!WRNr6E#bplb4s9S4b%pMS6%skNEys#|n%$4@Mv| zVoZr78hQk;Axbo)+rbNR4CzkjJxJ({MAjNsoQI$OiUyI5prHuI9NH>BzkazW<7bO{a^1w!l z@=8i5B|OH^A*}Db;zCMW9~V=mk)LXYQo=7DdPK3Ol$NzA^oSx&X=`RWF{PnL9KJ=S zI9m%nD$wVFW=gWDaD`1g9M-^oYYi3O$lSu8g-*#Zq_l=7?ZAB!wPHH({i8s-*R~_!AR7P1|y= zmi&lx6C2x$6nbO_*9D~YLQMl(jPsf{W-~YKM{Ex^GA${E9+_&W4ZZxefDVaU6afkI zyKcsPNBxf!dh`zpJ;Lu>`wZT}TEtevIxmInes(Qv_p$5lz_tb6X|)N2}l_c#l-9vn&KSJzS<|4a;>y?!H`_T~UMoRzxMgVy|qp8KPA9&5Qcq<@i6r Clft?H literal 0 HcmV?d00001 diff --git a/projectfiles/generate_jarring/jarring.py b/scripts/jarring.py similarity index 100% rename from projectfiles/generate_jarring/jarring.py rename to scripts/jarring.py diff --git a/src/main/java/com/megatrex4/ukrainian_dlight/block/custom/BrewingKegBlock.java b/src/main/java/com/megatrex4/ukrainian_dlight/block/custom/BrewingKegBlock.java index 4665e7c..8fe2f7f 100644 --- a/src/main/java/com/megatrex4/ukrainian_dlight/block/custom/BrewingKegBlock.java +++ b/src/main/java/com/megatrex4/ukrainian_dlight/block/custom/BrewingKegBlock.java @@ -20,11 +20,14 @@ import net.minecraft.inventory.Inventories; import net.minecraft.item.ItemPlacementContext; import net.minecraft.item.ItemStack; +import net.minecraft.item.Items; import net.minecraft.nbt.NbtCompound; import net.minecraft.nbt.NbtElement; import net.minecraft.particle.ParticleTypes; import net.minecraft.registry.Registries; import net.minecraft.screen.NamedScreenHandlerFactory; +import net.minecraft.sound.SoundCategory; +import net.minecraft.sound.SoundEvents; import net.minecraft.state.StateManager; import net.minecraft.state.property.DirectionProperty; import net.minecraft.state.property.EnumProperty; @@ -233,14 +236,90 @@ public static void spawnParticles(World world, BlockPos pos, BlockState state) { @Override public ActionResult onUse(BlockState state, World world, BlockPos pos, PlayerEntity player, Hand hand, BlockHitResult hit) { if (!world.isClient) { - NamedScreenHandlerFactory screenHandlerFactory = state.createScreenHandlerFactory(world, pos); - if (screenHandlerFactory != null) { - player.openHandledScreen(screenHandlerFactory); + BrewingKegBlockEntity blockEntity = (BrewingKegBlockEntity) world.getBlockEntity(pos); + if (blockEntity == null) { + return ActionResult.PASS; } + + if (hand == Hand.MAIN_HAND) { + ItemStack heldItem = player.getStackInHand(hand); + if (heldItem.isOf(Items.WATER_BUCKET)) { + return handleWaterBucket(world, pos, player, hand, blockEntity); + } else { + return handleContainerFill(world, pos, player, hand, blockEntity); + } + } + + openScreenForPlayer(state, world, pos, player); } return ActionResult.SUCCESS; } + private ActionResult handleWaterBucket(World world, BlockPos pos, PlayerEntity player, Hand hand, BrewingKegBlockEntity blockEntity) { + ItemStack heldItem = player.getStackInHand(hand); + long waterAmount = blockEntity.getWaterAmount(); + long waterCapacity = blockEntity.getWaterCapacity(); + + if (waterAmount + 1000 <= waterCapacity) { + blockEntity.addWater(1000); + if (!world.isClient) { + world.playSound(null, pos, SoundEvents.ITEM_BUCKET_EMPTY, SoundCategory.BLOCKS, 1.0F, 1.0F); + } + if (!player.isCreative()) { + player.setStackInHand(hand, new ItemStack(Items.BUCKET)); + } + return ActionResult.SUCCESS; + } + return ActionResult.FAIL; + } + + private ActionResult handleContainerFill(World world, BlockPos pos, PlayerEntity player, Hand hand, BrewingKegBlockEntity blockEntity) { + ItemStack heldItem = player.getStackInHand(hand); + ItemStack requiredContainer = blockEntity.getStack(REQUIRE_CONTAINER); + + if (heldItem.isOf(requiredContainer.getItem())) { + ItemStack displayItem = blockEntity.getStack(DRINKS_DISPLAY_SLOT); + + if (!displayItem.isEmpty() && displayItem.getCount() > 0) { + ItemStack filledContainer = displayItem.copy(); + filledContainer.setCount(1); + + displayItem.decrement(1); + heldItem.decrement(1); + + if (!giveItemToPlayerOrDrop(world, player, filledContainer)) { + return ActionResult.FAIL; + } + + blockEntity.markDirty(); + blockEntity.sendFluidPacket(); + return ActionResult.SUCCESS; + } + } + return ActionResult.FAIL; + } + + private boolean giveItemToPlayerOrDrop(World world, PlayerEntity player, ItemStack itemStack) { + if (!player.getInventory().insertStack(itemStack)) { + ItemEntity itemEntity = new ItemEntity(world, player.getX(), player.getY(), player.getZ(), itemStack); + world.spawnEntity(itemEntity); + return false; + } + return true; + } + + private void openScreenForPlayer(BlockState state, World world, BlockPos pos, PlayerEntity player) { + NamedScreenHandlerFactory screenHandlerFactory = state.createScreenHandlerFactory(world, pos); + if (screenHandlerFactory != null) { + player.openHandledScreen(screenHandlerFactory); + } + } + + + + + + @Nullable @Override public BlockEntityTicker getTicker(World world, BlockState state, BlockEntityType type) { diff --git a/src/main/java/com/megatrex4/ukrainian_dlight/block/entity/BrewingKegBlockEntity.java b/src/main/java/com/megatrex4/ukrainian_dlight/block/entity/BrewingKegBlockEntity.java index 1fd1791..a0787b6 100644 --- a/src/main/java/com/megatrex4/ukrainian_dlight/block/entity/BrewingKegBlockEntity.java +++ b/src/main/java/com/megatrex4/ukrainian_dlight/block/entity/BrewingKegBlockEntity.java @@ -6,11 +6,9 @@ import com.megatrex4.ukrainian_dlight.recipe.BrewingRecipe; import com.megatrex4.ukrainian_dlight.recipe.ModRecipes; import com.megatrex4.ukrainian_dlight.screen.BrewingKegScreenHandler; +import com.megatrex4.ukrainian_dlight.util.CompoundTagUtils; import com.megatrex4.ukrainian_dlight.util.FluidStack; -import com.nhoryzon.mc.farmersdelight.FarmersDelightMod; -import com.nhoryzon.mc.farmersdelight.entity.block.CookingPotBlockEntity; -import com.nhoryzon.mc.farmersdelight.registry.ParticleTypesRegistry; -import com.nhoryzon.mc.farmersdelight.util.CompoundTagUtils; + import io.netty.buffer.Unpooled; import it.unimi.dsi.fastutil.objects.Object2IntMap; import it.unimi.dsi.fastutil.objects.Object2IntOpenHashMap; @@ -495,26 +493,35 @@ private void handleWaterBucket() { ItemStack waterBucketStack = this.getStack(WATER_SLOT); if (waterBucketStack.getItem() == Items.WATER_BUCKET) { - try (Transaction transaction = Transaction.openOuter()) { - long amountToAdd = FluidStack.convertDropletsToMb(FluidConstants.BUCKET); - long insertedAmount = this.fluidStorage.insert(FluidVariant.of(Fluids.WATER), amountToAdd, transaction); - - if (insertedAmount == amountToAdd) { - // Successfully added water, replace the bucket with an empty one - this.setStack(WATER_SLOT, new ItemStack(Items.BUCKET)); - transaction.commit(); - markDirty(); - sendFluidPacket(); - - // Play water pouring sound effect - if (!this.world.isClient) { - this.world.playSound(null, this.pos, SoundEvents.ITEM_BUCKET_EMPTY, SoundCategory.BLOCKS, 1.0F, 1.0F); - } + boolean success = this.addWater(1000); // 1000 mb equals one bucket + + if (success) { + // Successfully added water, replace the bucket with an empty one + this.setStack(WATER_SLOT, new ItemStack(Items.BUCKET)); + markDirty(); + sendFluidPacket(); + + // Play water pouring sound effect + if (!this.world.isClient) { + this.world.playSound(null, this.pos, SoundEvents.ITEM_BUCKET_EMPTY, SoundCategory.BLOCKS, 1.0F, 1.0F); } } } } + public boolean addWater(long WaterAmountAdd) { + try (Transaction transaction = Transaction.openOuter()) { + long insertedAmount = this.fluidStorage.insert(FluidVariant.of(Fluids.WATER), WaterAmountAdd, transaction); + + if (insertedAmount == WaterAmountAdd) { + transaction.commit(); + return true; // Successfully added water + } + } + return false; // Failed to add water + } + + private static void transferFluidToFluidStorage(BrewingKegBlockEntity entity) { try(Transaction transaction = Transaction.openOuter()) { @@ -535,8 +542,17 @@ private boolean hasEnoughFluid() { return false; } + public long getWaterAmount() { + return fluidStorage.amount; + } + + public long getWaterCapacity() { + return fluidStorage.getCapacity(); + } + + - private void sendFluidPacket() { + public void sendFluidPacket() { PacketByteBuf data = PacketByteBufs.create(); fluidStorage.variant.toPacket(data); data.writeLong(fluidStorage.amount); diff --git a/src/main/java/com/megatrex4/ukrainian_dlight/item/DrinkBlockItem.java b/src/main/java/com/megatrex4/ukrainian_dlight/item/DrinkBlockItem.java index c932652..78abd36 100644 --- a/src/main/java/com/megatrex4/ukrainian_dlight/item/DrinkBlockItem.java +++ b/src/main/java/com/megatrex4/ukrainian_dlight/item/DrinkBlockItem.java @@ -113,7 +113,7 @@ public void onEndTick(MinecraftServer server) { activeHandlers.remove(this); // Optionally, you can unregister from the event here if it supports it - // ServerTickEvents.END_SERVER_TICK.unregister(this); + ServerTickEvents.END_SERVER_TICK.equals(this); } } } diff --git a/src/main/java/com/megatrex4/ukrainian_dlight/util/StatusEffectUtil.java b/src/main/java/com/megatrex4/ukrainian_dlight/util/StatusEffectUtil.java index 67dea0e..19e66df 100644 --- a/src/main/java/com/megatrex4/ukrainian_dlight/util/StatusEffectUtil.java +++ b/src/main/java/com/megatrex4/ukrainian_dlight/util/StatusEffectUtil.java @@ -22,19 +22,22 @@ public static void applySecondaryEffects(PlayerEntity player, StatusEffectInstan int amplifier = mainEffect.getAmplifier() + 1; if (player.getInventory().contains(ModTags.LIGHT_DRINK)) { - applyWeakness(player, duration / 2, (int) (amplifier * 1.3)); // Convert to int after multiplication - applyNausea(player, duration / 2, (int) (amplifier * 1.3)); // Convert to int after multiplication + applyWeakness(player, duration / 2, (int) (amplifier * 1.3)); + applyNausea(player, duration / 2, (int) (amplifier * 1.3)); + if (RANDOM.nextFloat() < 0.2) { + applyBlindness(player, (int) (duration * 0.7), (int) (amplifier * 1.3)); + } } else if (player.getInventory().contains(ModTags.MID_DRINK)) { - applyWeakness(player, (int) (duration * 0.7), (int) (amplifier * 1.7)); // Convert to int after multiplication - applyNausea(player, (int) (duration * 0.7), (int) (amplifier * 1.7)); // Convert to int after multiplication - if (RANDOM.nextFloat() < 0.5) { - applyBlindness(player, (int) (duration * 0.7), (int) (amplifier * 1.7)); // Convert to int after multiplication + applyWeakness(player, (int) (duration * 0.7), (int) (amplifier * 1.5)); + applyNausea(player, (int) (duration * 0.7), (int) (amplifier * 1.5)); + if (RANDOM.nextFloat() < 0.7) { + applyBlindness(player, (int) (duration * 0.7), (int) (amplifier * 1.5)); } } else if (player.getInventory().contains(ModTags.STRONG_DRINK)) { - applyWeakness(player, (int) (duration * 0.9), (int) (amplifier * 2.2)); // Convert to int after multiplication - applyNausea(player, (int) (duration * 0.9), (int) (amplifier * 2.2)); // Convert to int after multiplication - if (RANDOM.nextFloat() < 0.7) { - applyBlindness(player, (int) (duration * 0.9), (int) (amplifier * 2.2)); // Convert to int after multiplication + applyWeakness(player, (int) (duration * 0.9), (int) (amplifier * 1.7)); + applyNausea(player, (int) (duration * 0.9), (int) (amplifier * 1.7)); + if (RANDOM.nextFloat() < 0.8) { + applyBlindness(player, (int) (duration * 0.9), (int) (amplifier * 2.2)); } } } diff --git a/src/main/resources/assets/ukrainian_delight/textures/gui/brewing_keg_gui.png b/src/main/resources/assets/ukrainian_delight/textures/gui/brewing_keg_gui.png index 9af83113a9ef6d4b30a8026f8edff3fc5ec0d8f8..4ccca7c8903d372d05b82f8fdacb9dfcd78205e9 100644 GIT binary patch delta 3296 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 z