From 282680167988943484c792069b4308bd89801fc4 Mon Sep 17 00:00:00 2001 From: Miniontoby <tobias.gaarenstroom@gmail.com> Date: Mon, 17 Jan 2022 17:50:02 +0100 Subject: [PATCH] Release version 1.1.0 --- .../7.3/executionHistory/executionHistory.bin | Bin 50157 -> 50157 bytes .../executionHistory/executionHistory.lock | Bin 17 -> 17 bytes .gradle/7.3/fileHashes/fileHashes.bin | Bin 19297 -> 19297 bytes .gradle/7.3/fileHashes/fileHashes.lock | Bin 17 -> 17 bytes .../7.3/fileHashes/resourceHashesCache.bin | Bin 22781 -> 23971 bytes .../buildOutputCleanup.lock | Bin 17 -> 17 bytes CHANGELOG | 10 +- README.md | 43 ++++- .../com/miniontoby/MindustrIRC/IRCBot.class | Bin 7443 -> 3472 bytes .../miniontoby/MindustrIRC/MindustrIRC.class | Bin 5287 -> 10549 bytes build/libs/mindustrircDesktop.jar | Bin 7252 -> 7960 bytes .../compileJava/previous-compilation-data.bin | Bin 30536 -> 30534 bytes src/com/miniontoby/MindustrIRC/IRCBot.java | 105 ++--------- .../miniontoby/MindustrIRC/MindustrIRC.java | 176 ++++++++++++++++-- 14 files changed, 224 insertions(+), 110 deletions(-) diff --git a/.gradle/7.3/executionHistory/executionHistory.bin b/.gradle/7.3/executionHistory/executionHistory.bin index 3313e6f83482b79990577721f80d47249280895e..aebafa6042a6c3dca0998c4b34f9e428ba1fb472 100644 GIT binary patch delta 457 zcmaFc&iuBWd4s=)RCb1GTB3PTZb@27X;Fr;aaCeQX-<Bwd3Ne%z7#RG&Gmk>8HM61 zJRe<6zMm+#|COnV)tP9<6_Y>ut4|INNEKSKU4MRsz^ueAt70On4U}6M*G^_!qCWX= zwvE8d&Xkt^l)|GQ|J^#rcH(FG<adFxo1+5HFiJQJuuEJq75jf%BW7CFRF_$AdZ!<M zra!}Ovt977U?tp6VgLi??~@lScilXHd4`10?{{*y9?ePMS{Lxh;ppWJe2mM1E>oIp zeIP`@W6R829Sv^l($qVX?+er<O`d-sKtSc)v+ByAtJV|V8@><fy&f_7K}X)?+=H_9 z=w7@5cG3iC#!0@Jc`2pEB}JY=&U(o?iN(bX0_dJT2Uff_h?zlP|I3EM|KzqFoyMqV zr|fy~7f{G8UZ#%yjqk}fA4+ugi*vF7g-%_5<onF}@srq3m#!_id+Zjo5CcYVZRT65 l!Z?{fIaHh}@z(WOCnxSVm~nmmb_YF^M_}uYO<sN22>>`y(Z&D( delta 460 zcmaFc&iuBWd4s=)QfiTTMM1Keu~Ak^c12EJPEl1waax(ViJ1ul1Tb$d^jOI*bV@sE z^0wdl>%VSm>2zISrpmZt@<)I5$-x1sLbFU(UlWMEsegKU<I=;DCl)fUoy@pIee&OI z8-WLG#_=m;x14aE7Q5jh6Mx|3cY(5-qXN$`O6-oXukRP1`r&uc&k5hc?=J6r`FG(n z{VNum?Sg*=6Lb~J#mNhnyKbJpJVQdLgjaj}(e>BfCG7g0<WRBHnQ=MLWlEE+4}=Kl zUd$4>;a2AS%S2p#+ndx?ljk1@5Xd_B@tD@E2U)*XK7RMuHs5*jgO0q(xd&zI(Y^Tf z1;|O0tr#cyX6B`o7MB!x207~`=Oh*vGYFu2`Z`$ga!qCifvE{gU1zL6GIv9s<DHmy zG0H%pHAc7Y8t#9#LA4?8lS<YRb)e9Ww4a|(H+H`gzqH6o?rWz4vk(JDaBb#Ws=_## iKRHyqBQs{&k20yJ9IvNl`xUIc{vT}JiOH)EI{^Ub!P3b9 diff --git a/.gradle/7.3/executionHistory/executionHistory.lock b/.gradle/7.3/executionHistory/executionHistory.lock index bd0866557779329f2f2196d4ec4568e67c1cc3c1..f5c0f289b524f71f271e8033e573f9752d4f828b 100644 GIT binary patch literal 17 VcmZQ(Q2(hkd0N_g1~6a>2LLPi1RVeX literal 17 VcmZQ(Q2(hkd0N_g1~6c}0RSv`1f2i? diff --git a/.gradle/7.3/fileHashes/fileHashes.bin b/.gradle/7.3/fileHashes/fileHashes.bin index 2a6edf6dca28607005cdc9a4f90f210902c52e70..ec995dad2542f5969f4ae9a3ba0211e9d5688308 100644 GIT binary patch delta 272 zcmaDjjq%|$#toZ26qpikU7vMw;(mh}*Vk`%&@*9RV64k{dh8Jc7?itBzU;B0-dTWM z;)<!*|Jxcd)2gPr%z`R<15qR|0i^YefrKUyD}u1VR{xZ*wt0PeLHt`ksV7PMLv(Bg z%7K8?b|8VKW5ss;`4s}Q61S|1iL5qIZiU)$4yck9h&4?&|M%o!3|qBZMA~<TtMYUS zvAwC+nJmG|Zm3KIDggqnI3R&$a9oAwqpQjH69xCbGF7oU6Ad-^23P|F?*xzz01Hx0 A2><{9 delta 272 zcmaDjjq%|$#toZ26go0vru`_Bddl&7YPMg&+UpDqjCCpYCG`woQ0_7Lvd4=0-4XWn z{o+$U{4V-A;am9K<xoYP5JfT}Kw8fjNN57FA_xoE=`^mL5i_Zq=RuM)%ajeA5FN== zfs#PLxf4jB>6m4*`kFxOP5sl;8<!rIJh2dJM>tR=D-eq;-~8W`hcQfAY^JZqL>H|- zN0Xf_LGR~+m050{4O9XI!oENP&EQkoNt3tz)?fd1TT7?w0y9;p!KGjg46?!?9RP1@ BOj7^= diff --git a/.gradle/7.3/fileHashes/fileHashes.lock b/.gradle/7.3/fileHashes/fileHashes.lock index 237395412157d370fe65b09027b0aa438e28ffe5..aa582e805f83ac5fdc90e638d9c368efe544a988 100644 GIT binary patch literal 17 VcmZR+^(*QCe|Oe%1~6cC002I41tI_d literal 17 VcmZR+^(*QCe|Oe%1~6ce1OPrq1o{8~ diff --git a/.gradle/7.3/fileHashes/resourceHashesCache.bin b/.gradle/7.3/fileHashes/resourceHashesCache.bin index a3e1ee7ce92c8cafd0aec565fa3d3c58333e418b..43a75f04ad47787d9463dbbeef2dff52cefcaf35 100644 GIT binary patch delta 1984 zcmZvd3pCVO9LHyf)TX&vv&|SY#zc(@QQA>??er9xvBY4~Qc}){(;;~@)Ul?p(v>qT zXOq{)WU|A0l(ZzZWlfe)B2y}laVpuS2bTT+r&@paoO}NN^EsdUy}x_Uz5oA2IX?di z{_;8!J`dWEqL@ke{vCk>+yLBvjh`@uw$ourmfrm<uc6!@7Lqt1joz3SA|R|qpzjY* zNn(M_$?n9r?jJG`=ob#DWDdy5P9wf<DzinPk1pI#ri0wc(sbU&RyhKBPO>;M6A!M_ zdfD^luWdo85zI9R1~;lV-!6^YV1q#4LO5YyOdvT1)ZOP?L^CZRks@Zc9{8<jeNwu5 zbfCI^`8eMYFI;Ag2AqV26b|Sd;T+%Ln;C;ZKR2kPsK9V~PPCm@$~UMv2p<`W!I<Wq zvPsY0W9VE}G68kER85BV#TEPvG?Y()sWdv!!R=(7ivE#+s@<@VW=r4>X@oSKSdUIr z2|H*kKqNc4Y4dMrqVSze%g7NAOo)nw?1$Sj5$Zhw?dTj}me^k1r38Tp<lDi-X=p|1 zT587LEknn5!WKFmtgY*~^lZ%bCIWq%Wdn482hKgxJ<_ug&k@QihDu`=(@if$cT-i7 zGpahMx5}+?Z&Z&z!vf9y3Q`#y@V%kApsYD%7)?lo`x$iL^~V#DPi>+$3U9->X*1wO z!#WrJrHu&mIRcv)EXN>{_2zVw(p?DjrK;x&&N{#m7gTnm@;NmR89JBk5z^L$a6fZ6 z&fqW)r;4v{OY6@^Wv*I|a5sDlO|)`R8A7{dmqDyH_Zr1I3$4xP0~}aJH#wencJX%; zo$-jt8&)T%pEw-BtlU_&w0zA=9huYit3Wt&w#n0d$xH|OIHRcMP)A2=ZEm+RZD{c{ zr2XGGG$Kfd5En>S8`fL35e7A|MwhKX-YTEibg|-4#mgFIHP%Qqvl-D`ex@ZOT~{~~ z=CZ&5tH|T^$2@d+7xFh%xwr=1*@iVr-j__ayg2zN&QmNs6^gUO8V&N8`HO;&h5Ea! zoKpTpjKCU_r^0XDYD>5FZfv{FD2G!sn>l;E4M{2Q!g-R&Ra@4FtR9)8kW$qf$>F}8 z+sV%13lzbsnaeUOBlYJ6XJbbGp>{BbK4xzny7h%2L^mFnr(-3p^>{rVuqI>lmhSv7 z6x7HyzFQ))p)&iA7DzH|#12>^p(^>2-m`|B$Rbe<|3dpbtbxzmakPe-bYqL3#2(+r z)y3h2vuo|}e0LMr7V=JaCG<o*CLh6u^wR9}?OgAY+Z15HrpI1@HFiDiE~($Zes7YN z?SAImc`vN-u}Jl5vO&Vv7BY#&&acDfSdIJ5O3E5{{!ahqMNPy=gGy|O+2XwRQ3A&_ zCS;ZLN&3FGSYuuI>U#6m!C&(0W$Znp9;R4BcyP(R@mC_-?g%9bPQAbTD^^()cF;qs z-ETRo_6cck*!fFXgDmJ5(ytmiP<YZPd%4NXr)|~==(#eiv5y?d>vugJ<lCoT^U2^( zzadvIIWc+6n3(*q8q_^_u96#nQa%}VU7|3SMNZbFbtwCdk=q>Sxi^~3m1rcpKMr;t z6`2yEpp)m<!WBA_-z_Vm?>D}(DE5}@#^!z)r9DvO>|I#KQ8+gJeR+;ce?GFaK6}qk zR{q|PKPqaNdf1HW;aH)$N-I8=!=AVo^9KLfuvafI_xUZ07OrBjNKezt@~Od}pB1&S Xy&~&@D1K{M(27%meIRz`A5HrgfeKMW delta 157 zcmZ3yoAK{P#tkMCjCGSuB`PN0mGGEsD`_yfRnlYfQ%Q-<qEZTslYONVCLfiSocv9? zfAUrtkIAC4A12GnP1t-?4k-CoUShJYg5l&c1^vx?6)YGh^D22v&IRJLN)ns@DseDQ zmQ^vBT&v<S`L2q@WL{OEq^iN>r$9PZZN+3+bqSvTP{6>z{cxk=5Alr#7Cf6BJ@yCy E07<|-fB*mh diff --git a/.gradle/buildOutputCleanup/buildOutputCleanup.lock b/.gradle/buildOutputCleanup/buildOutputCleanup.lock index e3200a2fc0a8feeadb7ea0c212a942b36c459a4d..54bce009663ce12c3d6fbb1bfecd7ff54c729adc 100644 GIT binary patch literal 17 VcmZQRH>Z2DcId}$1~6d03;;SR1zrFE literal 17 VcmZQRH>Z2DcId}$1~6b|2LL%<1d;#% diff --git a/CHANGELOG b/CHANGELOG index ac576b5..d87c501 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -1,3 +1,7 @@ -1.0.0 -- Started the project -*Will add more later...* +1.1.0: +- Got the plugin working +- Connects to IRC +- Relays messages, joins, parts, quits, NICK +- CTCP kind of working + + diff --git a/README.md b/README.md index daab48a..09c37f2 100644 --- a/README.md +++ b/README.md @@ -1 +1,42 @@ -MindustrIRC -> IRC mod +# MindustrIRC + +## What? + +MindustrIRC is an IRC Plugin for the game [Mindustry](https://mindustrygame.github.io) + + +## What does it do? + +It relays all messages which are send in the game to the IRC channel and the other way round + + +It also relays JOIN, PART, QUIT, NICK and NOTICE + + +It also comes with some IRC sided commands, like `players`. To use them send at IRC: `<YOURBOTNICK>: <command>` + + +## How to install? + +To install this mod, go to your `config/mods/` folder and run the following command in shell: + +$ wget "https://edugit.org/Miniontoby/mindustrirc/-/raw/main/build/libs/mindustrircDesktop.jar?inline=false" + + +## How to use? + +At default it will connect to irc.ircforever.org:6667 #mindustry + +Using the Core.settings I have done that, but I don't know how to change it from commandline atm... Will change it soon + +You can change the code to change the server address and then build the .jar with the `./update.sh` + + +## How to stop your server again? + +At the moment I dont have it auto stop on the `exit` command, but I am still working on it! + +So just execute the `exit` command and then CTRL-C to stop the server + + + diff --git a/build/classes/java/main/com/miniontoby/MindustrIRC/IRCBot.class b/build/classes/java/main/com/miniontoby/MindustrIRC/IRCBot.class index eb3627d36095c48ae068a898f25c23ae7da95356..8b7eec9abe03893db59d1a638ac1a58b19aba41d 100644 GIT binary patch delta 1520 zcmbVMU2_vv7=BKYX1Cidwn>aFEf7&?NmELz!WhOGZCW~U(zGURp@O4JvWAqfsmT^l z(P--zepK-IK}BfstA2nO#I%AUSB~S2zr#CkongTDY@!6GS6=Knd*1Wz^E~H$pFKQy ztVQ|l`lTxX?#0!ja@}62d3Y!s^~p#w$iuPl*kF8sR!=h6d_fue7^LXXNI2B*Qy^nP z#eO&`mdF~0o-jr1fC@vz>hrphjAT=3qfaw61wKrwcnYJ0o71&qByH$2@(hfSrf^Wg zAr*(=d77bNLOZB+Wi%tz6*qHfBgN-ydpt6pWpE6KqXQ!UITg>Nz&jmxb-u_@GdvU( zGG`d<_iWoLWW2266^t{~O=QzXXrD&<GBRG{ryX}YUsv%4-sHbJf*WQT8bf9AdeUcR zec@Q>P6fwsT*5mlxPaKmi)st+t!dgLHr`Y5K0Y9ogqh6fls~BF^IA%0@V4)c{8#(- zO=A+~7~D5E`VS}cNi&@_YH<=DNjRnAH0JpMrTZZnXBe6Zvo~vQ&P^HZn}WW7(}Ps0 z6Zk~Mr=p5VN;fOa3O>i8gfCQl$*(Hw?F_-=e|mUKJ;ht=n;%d_C!$$1ogj^NLS;~s z)RXvRCT*HJb=tjxZYs7&;^*tv1?uCbme@b2O^#@LGrELjqK{{%atVD$Izym!6~*F= z{A5F@P6jmvU(xtA|D(ab1!u`(tKp=v2@W))mR76K0ykP|wFc)b3)Wa!-{3qCHFip5 zE!YU)P~(^lXZi1q-h!2<5-hL-lt=To^f)MTf^v)HFDSB=A|gxnUqovOeMNdF5E>Pl zfsK&RR)r?7fJQbJ{FFTlyM@M+uE%y-C@$gz{8*0;3?qP@=&VB9wE`Nsv4WN$G@+r5 zv^{tk1LI2wyEJ~zy|&N7UPb%B7OX=z>Flv^z2z?|xb!V9K-A&p>6!4fVBoiTnv_Hd zkq&xXI`8(ZjaK2_hjyw?7q(frz6w{lmV)&=3s<~dq&M3w4BuBVq;6p-R59F73_)Vp z{y!K>RC6*7z(%RUq7DoGC8X)eun5&_a|zk;$S=rrxN;?!g8_Sw>zNXcc<0bjUCtLs zUBJ=9i|*SCfh#p<uz^;tY08|#YCmOqmhh4_yIw8fsOzm|yd7A^yNfqw7jGPmT)>C_ zG-jcE&W~v-Ay&d?Mav4)m?q2Ftz$>Y#=sy6j?&HZ2w5x!FXCkD5h_Jt6k&{!OLoyX z4h@eYjorv&58Zc<;|QKWfuhsciy0&^58bMppWxQe{t}j{3*yfE!RpKm{V|tt*%Gl( j@xzZqe+QiMH82TN*U&HFr?$V~?3GAkErYn=ZTR_bojgG3 literal 7443 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 JPRRpU`v0;M;T-?~ diff --git a/build/classes/java/main/com/miniontoby/MindustrIRC/MindustrIRC.class b/build/classes/java/main/com/miniontoby/MindustrIRC/MindustrIRC.class index 19f5f5df2948e312befccf6c935a2e605c43cdd5..53ae813c75ede17d415d54612693b8dec9afa43c 100644 GIT binary patch literal 10549 zcmbVS34B!5)jwxuGVdikAWT>U#Baiy41_?Gs0phPG?0Wy0ELJ;OkR?a$xNJ?1W-%W zy4$)ST5)OBs&QYyh7b{4YTa?ER;#U6tF5iIt#xT#knex)do%O05d1aC%w68OXS-*+ z_vN|ox_1-N5iTQ#T;$fsV^9`(nTEH7qYZ6|WPD?BORS-|HqzD<jxu>?hoj--Tqbux z;Yy8krctK{+k?fCV6>^YE*TF;n~rG<M;gp{4r%1pX%N$p`f3|j<+6%3et9t1pdmCA z=z^`SX0(B+sGzDhp7O#zQ#R^yK{3oAALTLW$(ThKJQws`0@x8WQln7@9YUj-j9@%e z+?EVSimPHxOrCJGF~&5)Nq*_t)6Gz_yl`bUjip018fVa9^nXl~L$Q`(s3jbWCSz+i z7CWSJ_Mw}#u_V)kssZ4kiDP0(Fqco`HJV`1M4H5uf6x_7gA!0!wV6l+n@pxDPR1=g zl=o2^MA2vpQ(i{J3pa$!)+8j+sStYzc5IYo{`8|VwN+DPtETnZp_GdHkjm`PSekB7 zG0kAgsfa}rv52V@-b2$i!-XqF4<!a2E=tG|0c&E(aLCkY7Sl*DXAOJtb|f98(b1wh z5b<T~waJVYR|F#woywWA>f>g^8lC2#JGTDtnJqaqkLGK%z@THOf+;tnlav{0akDiN z3_-icI<;HT9E{hQXSA8okm=NMkNJKKP^X1VTK)RwaMA=L$61UV*`iY=9H71_Zf?Z% z64>I{`Wcw5W^&cn>$H@K>oqz7cCC0+Mq3e!L|~lQxIt7)bp|b`6<C=Fp9yy1la+($ zL^?^MRR*o5dZ;BMUS-mZ2iHabr-PGtFd2(Oxha=X*cAxo%LmaKIz^*X4LXg2DJ(re zAX0NMQDbg^rGxHjSrIa*fq>r=RntA)(KeZEYNBS1!UmmA>ku0<+qN<oPk^^(GuRM; zc|-cuI<<gKRV>(GHsohhj9N81!=N|`pg3|xEH3gS%w!Ug2eU(}WV+5Cm+REVlpT(T z>dbh%#H97KL8FZZok?feu^<HtF(6Q{P>?cEaPk9i0z|d3cv7by!VfX135V82gDtSr zb78lbfGtF$W<==x$e{D-0#I)<lPSxZ?6jv8?mj+LE^+4~gD$2^U?2&_IrgA0oRGQ9 zpdZsu00%OaQEW!P4pu2BuQ2FJx(eIV3K^hYHF>o`TZE1twPg{=YYqCTOll!Z9-X#= z0mwHUpGN2$x||-1Hwgnb7<41u1nsr90qH^FQ7Uf0;eSpyYjlf2x6&_|hB?eMnlzhC zn5NbqjI^0c8^uT~oqh!|1p=FUJGQ|Qg>~w{HcUvHR1QSB%b>d@pZQ=TZLP;)v#P?0 zq!~5i33+_4LHEgHBNW5Ng_6r-h&Ezr4;b_yJp{3kp}?Oqs|BsCk#Hy|-dFBJ*4%E; z!}LqQ#M_V>)2^g);j*@9RJ;wYw1c`d+G$WXJ;F3p?9+irZASu{8|Ac(^lFLRk0SM? zWh!oh2*nHA&1iD@##VEpNVF8&p=Nx<w8x;w=y5Owg8<|3Z=u-O78P%aCXjNTq+e<D zltI6yr=c!+susicT`|Zp!O2KPB$!B)_d+2|J&SC0K&DO%M{Rywv`3>Cn8qIvwknn| zZD6+mzr<8<K;YU)aHAQAmnH2b9$E4#m_Epo#j$YIhsp-fuQN?N2y~ShY&U)6r9C>m z2~WwFr16$PZ`1D)y%Vs41DJYYeScm$kKQrpUHT(}L85JKLRCrPs6DLO4hK5D&qPA+ z1A{)4;I1PqHCMzM5M}-Xuc%#Cxw5+MIDz=9L4Tu<;rqx+!AS4emGU*ju1^3{vvhf7 z#X_C_35#32w6aF0PtmJguxz<bpP_fcic0jpK(D5<Vu?=wf!t*}eT9jWXUv!>^u96Z zTZx-FiDWRIOq>`_HtX~qd{6*ZE?ibuxwHlqApm5eZt03;AjmF=&Gu72q6>Qr&Qj3@ zW}AR7!4Fw8SeN9Volf>T=P=U0g~i{TOtvP<ii^z#)S*d<JyLREv8u#U+llBTlyx@1 zg<t0(OoLVaudlcBEa##OnhzpsdQF*~mQm@9WuL)$Qc4U)DuGwo1(7@%Vem*Eg(nDy zNKUo!aC=LlNnF04{VrUovlN<&LQ#tDScIT7-J%p(oyS327EDoo5m-i@sryfdwVDkW z<>RRz`|ppKjY*6rz(@V{Izv;uM&~Key?T5`TR186h46TPIN^`R*8A7tE9%Euou^_G zo6Sh8&PA{w6gP09gw9zyLtJkn))q&t#U)H73)+L>h{P>FO3@Zbn<(?k%4vRk)il4o zYt#JJI?>M&2G8PB@CwDIOVa{p9I>stuXn7LGP{Y7GWcjNL)3~&)XJ+$?dZm0Ocd9c zD3y6O&(V0U!Si@N#Owos<d2Yt7$<QYmH~h08In^45KtY%6&fFF@IqdMWfB76m2IIU zDu*+mtM#yK1YM^9>BUw&&442lXnZ_^E?4#nw~G*S6|E%(S8+9jYY8Hk<QHVZsRHQ- zqs~hOV=auv8NiQ;#UhOg<uZfocscwfZnnhQ%>|JNVypwP1=$C)&MTo^TSu@kdsE9` zBPYSMrujuRtL0>MfzBrb{YuM4%ar4uV(_WrxJD=$YCYAq1D#PI&a6{51Y7yOeyVc_ z>RJ)CtkgC({}i1~riD|c`<KTz`lpEHp}#clZ%df|`4+cQaQSDqSSO&l{$$KA2L^x8 z-wL-3CQZNnD4UzOS>v$5r!y+ev3(3CV=8b03pY&0VR~|qs8!BVp3N;B)i`Ewt7yP+ zI?e#WaD=yPdX1ZPhWU8{fdDky1{1R!IN5CaCA4JID+00s$B&e+XCCe4=4{%_XBm99 zijuZCI&Xs0&(`@IY}8z!JrB+=$<wb=VZP4i!vT?b?Xmdfg$7^57sKUY*47cBN0pJW z=}Mh1#cC-g{4l3D5?((47*_#|(z49y2eu<u_VwhxGwNK&R~USylvr6RYv{Zg-I>#8 zOrN3i7KGI5%-w*$9XgXthcc-O5wNDMWvv-sZXH^DRk2Vof<r=B#`dHq*&K$V3kEuB zI|!6Rbtbev!oh3$xGN8nxC_V@?_b`GBmnN}lEKir>R_u)4@cQZEG{hK&Vs{mPX{JD z;X;OnU=mI--0>`}YHUU*)`kie6)r9xq>#w9vWhcydZh4%r}mRxunf)+*Z5AXRFT9H zi}0{99&1rVRQMKy?x8o-jJ7Njdo7;rVAtN|xzNeTNU&vXLvUh`)Hm@ch>uv-|HC5@ z5DFZAWQXvKzx8vq14{0Yl%L}UTnIn5`RQBFPecYPbkY@9bCk-KE34WLHzKe?Q>tjh zc?ZP-mcTzU0cb!zX2Bv4%7;{>ij7GJBd;I_BzT0np2-Bbex*oP&5CN^U{o{U1Cl;m zo%s$(I$hl>q7x5HGy^ywIn*df%LgQvI(R5*6TS!BfW&4pO&x%kM9cKiOHusZzz9LM z8N=q&=gx_!#`M{th<(MHV<pu^VY#!(b%e3$a$3d|l6(@*A8f5Qlg+V)#85B4oWrm1 zs~Z2t;Me$d)C8G>bvW7{TW1zmDR;(-U}G?ZyPl0mBQ4I+3(jzFFR}<6ud3g~#Hv_q zU0bX34$O`hjtJ6Yp`28m;NSnDMRMS^&bt8{vt0kxg_CA^E_tDqHzgVV&fw?Bn@giH z@q3y0gTYVpGr9Z>CjKZB?-~3nekzxr!o&wM@u9(w^AoxJ1SUR`iN6}WoA>1M9!&gQ zCO$Fv5#E){yD;%DnfTP;PTr9#f1md%AyWr3hnDOqEdEj!|Ht5Myge6x^fBhXk-2XT zevr<}Rrghuu$8zvlA8(5g@e{12l51@t{&zI!%F!EGF;l(kZ7%_nD%x=Icr9u4ot%l zG&L6vca!=URDZUixo~(pY+z6nU6vtHJ}zQhxKGh=?!`?zdf9UMrCQursTP-1s>QvO zv~q$}EecY!BcKbswjkzfFe=6fhiJ+Q>>z#!9T#7VZ#>4gkAI49!vf&zcq>NPa#3wB zUI<nMZqy^Bt=d7^zMM`n0{C=NZWj&DppzFSM2FHy8s|VcN~$(NDJLQu<s;<5FVV4w zUQa`|(U_?~=kK6#((Q+edN`&g^`ro_i#iEwK)>iA#atmxqsin}VjTv(5p?LG@iY{d z;e}M7o)*y*s=)2Oh#SDuA{xop^9|${PHZlvcO&=}fsf^zXdP7bGxW2`Gj#MZ8ciMv zL2xj)1-TH5W%&eKh?yNUraHyv5#V!LFFx`9C(Y+b>=1!79m*aAZVZ|Zj%O(T{6K5i z{E1d4r1_g*@u#@b$hE}g2?uqXrzR|wB~t=jR2uM=`DS<0T;H+2MbaGaTP#hLuLe!k z)E@iiQ+rZ^?<2s+Ebv*Xco}J-vpE=#8u;f*L)lVG+eB}G#$-oJ0*_PeRvH|5jB0n% zGNyaovjaN`#YOeBorD9_R?0<ZEmO_;%pLnb8GA2QIrr^o>|PlSquG>4bFfcyp_zFQ zZhl%X0l?qPw<yJz@U8p{V93M!sN3Kftn@ON+{5;f&Kj-xT3mr|Pq_k5#WLC4`?pc! zR=V34feCG+s4v+`?OUl%x@W8I@zUL-x^tv^j_Q`!u;*>33vJj-x6|b|EM_;`u;^aX zLB}d^-*ugIy@DP#W>6RX%pPs>-DdaB@!f%*?>Zm_1n~K8118@cz|lo_cF{fJWR{W^ z<0wkB5b`X7(Huud((!n2Q%Tjdm`<W4)QDay)zBtdijYxDn`s%YuIuO~ycoHaR!|3C zhujUw`)IXNsO9(fTYhhwy89by{D$UdA^PAh*xuoQvH}u+y}z5b5$&W-7YSpmyw39e zH8hxlScfZSdtHmYZjNtPH{sQ47d_#7rkkF#de3*$i&k%MH@$52Ug@UaSiRS}>9?wv zA!9jr14x8vI7JX1V{q>zmCy#5%-QhHJ9v~u+Vc_iT8HA!4(#^c;@%K&m-yc3q~BFd zb(eTL=?~Su_i6&3k}{90G;1^_{&Ww7QE~B->o0v1{Yo1DdI0Szns`MB?Ikp+{xh^; znmlGH+Kq=8?<_-m^k|Ro&z<zqR$A#U&FY|9jQ_62i##%(kMTd$xHL<~Gcf*_8c+7h z*pKnQ)p(>P<6MkCS7WbUnl&QpZUpRIpd&vLGA2RilkvF<pC|Ba7CzSoc5An|wgkK- zzAqu8r=+IH_uo$XdMjO7ROWS+YNNfjghWRHhwI5ZwmgV->fGDTdlK!~(O%y^iwAe9 zCOmk3`z;<krP>HhbhA*_;Uhnz@ew~Nx1(JiGs4|AcH`Uk9=;Hrr**Nng9hhuw$*cY z@Ml`7cZ4^v`&OD{FGM6a@^}!w10%d8*20?ey@(BOrBM&YG$JYBhT>aRNbKiff!+Eo zd~=|Shj;K+Q2<}<P{990>X0<4F?~tRvPex2WTmuR=1ntsXnN&g=!v>*E<0$S@J3}l zc!N$4qy{am2Cau0G8Ftk4kqxO$K&yBDRH8M<fR!NYrL|7|2whC{SqkbM{vo^7F*W- zbdWm}xvmwvr3(=lE<#$qm`1^$#?WQ-0sREG_LtKabOn7!SMtfUnK#iEq?T*>GQ4No zK{xQ5bR)lmmues4-Pp%;8-Gc+yT((8tAg%yRnlFqTDsqLGCknhL=U>orERW@XuE4O zJ?z>|J6xYqm+N!tcI~G}+*9dM_cGe;UO|t!H_+qmv*;-m1y4rYxE!Uy%}60${wmc2 z&Pm(>KE1AM>^aTtO7&={J3?>so$!NE?gqXKa4s6-4yr_ns=$3VlGB}V6Dc50rg8h} zH1cYExBSsO>klq8RDO)f`_vQ<HOAzBMcJ-zQFwe!1x4TDUpl0nu@5;8oE6O4hY%~B z!u?W)02#37$aTCG^<4Nb6X=+D5zNirBMAw{Hrj02heQPqV4tc2T1oY^8ds?Y_M@U- zBXD`1yRvyK+Ewpwc^qM$j;0weEkIj1{EI_XR4mG4)Lw{orS4J>q8Y|;PK+meWbDUy zx)n*XWSom}u@y<YrJfNU;r9xB<Of=!arhMABec)Y<C#<4U3@r{zKxIU<nk_F(9OpY zb@JkFu95bHvaGb}t$;+Mv-0@FPF`gRXRlt82B{a(c}<U};OI0PaC{nYEkLXw)8GIW z`}L><Hy2h*^b9i2vnY?ALwWQ(-gdr7yJ#=%LGF5sUZJn)RoaK^&O`80Z7jXP6Y#cd zGQGtM>0M=KQg*(DVy=kqK_nl~6Zl?O4UR>4&2gWyAMBfLHTQ#>WM>Qh0hC>0M};(K zKhk$rUn4RO%b7DSXFvF}j3PHj&PjF_o(Dt{u5$uUlZH+4xHEN^bqsjfQ4Zwbkbs(9 z5zHc&KA(XM2QeF2iH%GTJj{&`b42op^F-l9rSrr5OCqetDbQZuh<%ql62SU1u)Zq2 z2XSbADn5CPdQ8ISHo8X4L3Y8SFhtqRM&$J~p^LK=(^i2R;4a<?I30TJ7OjFNj-vh0 zY(D_a^#jsu1Lk(nT;Gf4qrGV2JZ#ha0eBS)KOAyy6q;zyOdSvM_y=iWe~6x#UVj2x zRe39jp8>~@qtHnx2K*Lk2>qC1V5%iFU?!^o<bwD(tJ|y`4QSc_L3w;Gbn5A$Q>%1q zK}{8P7{MT*ep2lm?g09t`OyK;oDMYWdZGEXLW8>n8_hDCn^7qrzW_&uJif$%(yDf? z-8SI|jW|{|JJ5~-chA};3eiSFT3lw>_~%Ff#Lu`#D1X&9snk)SqcXo{2Vb_G#^A8l z$(M^wS*5E*<rGjj701`paBz4&jcS8k@l>fwzLUOJ;h)D>ZD)7ds;|b@T9pwtcssAj zP#&Wg9ga#K|C5K`d}PIG_`kdo)K_kP0UWycMc#{6GSo|$`z^nLkM!Q+xA`5r_b$J0 z_x{9xwtIi!zuCQy`5$)gpZsst`;5Qf|Ek_s{59|6??9o9G}^`c<?S>*gVu%id9-e{ Zd(nE(zJfLj?Q3Yg$Wods+ck(r|37+=k4gXl literal 5287 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 Xb2*;i80L7A<2(e!e9<WQ|8`FT|AAwA diff --git a/build/libs/mindustrircDesktop.jar b/build/libs/mindustrircDesktop.jar index 7257f9d6c0463677f51beabe78ff2a7940e671e3..97958b647c6d7d74f5dafe8af6bc1a0d82610f3c 100644 GIT binary patch delta 7109 zcmZ9RRZ|-bw?-)xDE{JZ#VPI(tY~p}2<{ERwU7dZ;vO7Y+$}i8J-E9=p*RFDcHZy1 zIdjh57i;F(Kj4|!YfdCx5=T=7<t-)>(z|y^Nin>MI36hfK`8xyQNr<GEQsL#8|uC( zdSKcoL_!i|OQw3m2Prbbu+W{Kf0-Dw*-$}z<)Npe6Fae_dz&w(h7|mc0*9WU+ewZ( zDb2=)kI){7+@e>tP+nym-PAH)Wwl;zAsZ8AQl)QVVzO!sYFz2?_Hi^z2)gS`gEKPn zLLj#LF806dyOIy24wtdETz^2(X`j%LN!<S-igAu+$`qSXhd7xyn!w5$xHhH<RNjR| zTSunX>uz!9*7tm6OLw(v;5Vj-XEs(o&e7$VhUGJmfMGg*JX^wv++^#uD+PKTO-|N^ z)G;s~3hPf?D;q8>nQxf}1W^ukCqykq8O+K)#WemSlh^H;bVhH>CHYTStvngnA|x!7 zN6SK9C$@-M9l`-LPG(f5OLb7kjDjuKEPEEO|IwXTPKbt!EOirMec#gTsT{O1VVfsV zVb0zw1{E1KkL2nIXC=j1_>c2kJXL-YBXVIcCQo;<M6<&z4q^|dlTr(-YMMQCh~`X} zh}b}zW>gb2(OmMWb$2dUKTC*@6m6i73}F1wn^AxXf|R$8=w6{2mKw<S89MOoo3IWb ze+26BC8`gCsxI<-usc2;=8g4QDr5K^g)}O$EI4EtGLmU*ul+_^j_XcDi_<P=NY?z( z)wC2jQ|=({lCPaGn*hra$~5df+zam`Y5KkGz`<X;){8l%kBU-+Psa93f(BIR9S<jI zDi_Qwhcr(f)e^>f|JHmA75NznEnKcG65L-R+A}mrU|3Pr<wv40*1i>T`5|qdy;l46 zR|RTkI2xhz+Zl^3xxbCYWjRgk<ncOJbJCJWnqW)n1wwvm!0H08QBHjF1vv_fi3lo= zuF4OQ`M8`Ymng!Cn6k2DRjt+z`hqfpfJf-V5+q_4JKJR&TP~pN8f6=5TySU{P*L!Z zo6keRDG+>(g3+-qMJ162m&Y>3>F3Cf93R68v|Ig0t%%K}f*KSxOX~NiquP+Dp~kmj zBdj(qPjHGh0ZRx$)(tj=s+K(#f`;<STLEnfpv3^^qfXfbN)^F{)iQNxa+5_xFo<LV zGAIh<DxKW=>z7AQm6DXLsPw6nE5lv&ORC$jJgCym<Nb<)R7XP4D9&G*_m)G%KPHV@ z$kGx5qED~=7b@{>Ta}?cT#Xl~rV8jv&Tz-j9_>{UQ_Jn>dxGuZVzF&(dPw7YKWJFR zrEO+Oj?Yj3n|%Y0&jw${zWI<g`sIYxK+4q$raR&zsfoVcWld`Ed#Ok6v*>Utf2HJD zi^wYNxWzrtxzb{8+}}QK8R)Jeap^k^sWWoPbUh*QvMk`IIImq4_`p&%v5<uRaW^Q` zZg?b-*?R_imY=IAX-b%Lt?I}qLULw0h=bdZPzB)Kt6nsJ*+FuqGo){wL<;g;fG{a3 z`mHo`h<`=*<J4yzDOq>&3kVQjAk&*RAh()d18viP$>J%ClhbE)q+j%ABw$}5Qx2E{ zZCPST_{#CvA<={41O$cie0e@YTWJe+ZES^sd7ic<Ij##J=Vtp-%BnokYxQ>_L!9El zENn#7At5@f19hzodHGC<#k1nEkaIHM!Cs$Bj`<>WLB7DvlD&)#?!$qCL(ktx1j?o7 zb;dYsb4qpJSmN>GDepTiRuXCj;SHy69*HmTPzPj@7Y7PfPlyV}E;W%ce-9D;)zOU8 z7$l(g7W(#5W-(YIy|^^34){h#BYcU;U|Y^kQDf|j(`9q3KI<#n@;5uY2a<p7(C)I0 z^OOmvTd!j~WeUxI0p^sEfH8i$203s0u(xKZs#NL0ne8&9c-W5?^udN^kjjwz<S?mS z(4b_6hJYlG&&?o($D%og&M!MNuX$xcNXZa&S8>}yzm#Z&NvC&Cq>l)|El|+@+)dxa z%qt`ka<xIsEV(sUhDE{w(S4GHUDS<a`8l#=y3eo-Wa|_D;6Wqq4u?7)S1iuK7#P2< zl$zHEags;HFOr-KjGerHqvG!Aowr&{jvOP)%fYL6IXO-gpo94Kd$WkZ#Vh;PQ{J&` zy<c)pt5s1@u_I8sMl>Ub$X<s-8DGe@!6K#l6$b~H14VB7I65o`0fQ?qM%)eI|G)}0 z8wm;=(EY;}|0zp;uQE9LHkXGQCNf`Sl><5?Ax4BQ1x%pn=oXZTrd%U(#)wk3O=d<H zQrPBFv2^$vzd7G#*xjr8SFHEX>*j_#zPhftc(>$Ekl_fY%cx;Q!b(OLhwQ!jsTwDN zE}unGaaoc~db1uN(05l;DXjul71UtiqHj*%Maf(trlAzn@?J)Ow(_QJ2<&&xw4teO zE|1By(1ws1zJB^uFU>-Gt$m}PC8@^YfvXCMlBn(JF$4JkgOi$u7RWoA$`P)m-BStG zG^(gA=9X^NGIp-lOC5mqClsYpagO?qqtF>XWgyDe#ML2hW>Iw9!6<Ut9|}hjtT~L> zDk6$ulx$uCVkc-5`PEHR_2|0C*sv^($8IAGY|%I+gL3r3RlTQ~cJ<mqg{6gu)%;2( zooMv0*fP^8f>Bn~Im}r*Q8s)Vl}go(g}?<~ptiROY!*lp&p$+h_f7mOjE%C?OhfUS zXR?&|IuSBC)wmx<e5x}ydPJb3&h&s&UH8FrE7uNw$nILDP*V5oIf<ug8QM|{e3Tg& z-knQPD0dF*z0sar?yXnLJE+W-kZR{@<P<mYqd9Qa-i~Xa2JS0YWTsr~2rZ7MhUeHA zN|5zVy8`<7j+QLXSq+Q}=M&PI>@fl3aC8yXACL;3ccv?z8JRD57|nFL`^s62*h<DT z)dD;&JaqH-M`%a3j)Gxlq!DuO=QvEJrd^N#Ro*S~q3wmzO^AnS%Hu#qZsm%<VnazD zUa8mB)*}zte+P<9rDZvpmZQm@%6-GVZZe%l2C${|f#9kg#8s*(yEz@s%0}RORkF2` z3W!>3_ELGqyV)G={#<tRh6IMsoFC9I_Kp%I0K^#;9IeKUhN5jw>FzisSO?tcUEL|C zs%1vcCN0TgI?y<fHcq4V>U0xay~=}@GcVJ|T3|v^MzyMA{Oc@5L4Nf204MwL2b$~U zIe)Fx$_$nwG0&uHKjP<OW3N~my>mHAVMt9}Q^3=GN-T?xaz8T#!$Q}GJ4~)3rzkP( zD7VluW5Ibiu6Hfl^KPgUBj#FpQVsy6{L-!vR~zU%Z1IWQos<`SP#7;u2QD-&r<mgY zC&=GAd3W7*5NU4!9bv2-vb#Ioq^34a{;a$i!{GOPn}-{3A;T)k6LvSSY7tLU3>i`& zj?@X4x1kE)z&kmxuSFh*?*lx+ii?G$D@PH2K{l)nLFUL5`f>7Y_pv`2=B>u4@b_x5 z@fM{fV;Y<nOc@x^X;W`3+wfnm&w%_nyae5r%g{sEQyCuKIOy-Yt#I2WO&%XIyXRbB z=59oAMu>RR^7#b$$>7*PtlK#YWI?>Sv^uKHfpb{d`bzJ@HCldSTfHH$@w9<CYsNYR zQ6TQ86!dvmgTv40ekNmq)V@y6-o4(;xZr_+VTB6hnN$YiU;r&woZFWK;K6NOv*Qo~ zAn4lKwB)B=T1+j+EeOEV2sa*Z(5-WGWiA0Y89{zq1~t&-eF|fmWH5w$ja<7gTDgZZ zO^$e=BB+Fes)RNg_5cXgVDY}#&GOhyBSfLN9-W5UZoJd3M(PQ42y4&H<w+j&G@qon zH;wF<Liwsm`PxvZa!XVSImdONM}L@}TYZms#C+IHJxN+eefr+qdY8EJxRiwMsvi8( zQJ&eEG^61T0NvkDi9sA#A=ZaS2X3B~z#sNuqi-p(PQN;otlrpCw<+kO34HmoHcpiY zCX<xhz$K?iQA@*$DNDzuMG8INkacCXZ#^2~mH@_bAG`f(ekli(lNQowEL!7xCHCF5 z4L6!XWh7*RvxjMhL$mMq#DdUo>^^mlfJadiYT&qPO+;AYdl2ZwVLe8Cw}>B}yR4sC z?fWOsyq}c2e}{iNX5bC_s>0uke)Iwv^L0juC&klszXn_5cG491Sk9OxVV(CA2~vNH zmdw^&4bUE2PvVjjcuhhVOcPE2Zgk-+ikr6~O^wEbW6cw4Kk&EVZM{~QsBzOf4HX_> zbsFWCL6Wa_`7$InJ2H3u+j#rxxG{Y&FQEZhx?nEpcHi2s;e*J^sgi&+!%w0HcO!lx zzq5s<)d?TSMTcf(e%dfYb2J<|#!C9J8opR2HHtr^=$F{<Wu1+b6!C2VdXmd{tZPW} z*;AGiT~ZWfi1P-_3@OBz8<cT|!r}~M)k;%k$Jc^xu^b^;DVL9~BXtq(sm?}&zxKp2 zil>!2s|8ak{2k*DaZH_0hLcNIgS8S_H1Bv8Fwbtd<HWI3L*}n&&}cOQn%!{bkEa9g z0e7!nh>re|rd6${>TW|01^Uz}b(OM=0>4&U@(#Iokm$8?VsqwZ_$d{ZTj^TQu<H#U z=1bk<y&XiL_EMG@6A`<inb0by6W#(L&Ggwi)66bj4wD-`lsUkit2k`+_s`DEttnBN zyGEAayt3e4iJc6nO*<ci(s20HTv~{Bc(cS!Z{^i^ZTsU$cxwj<yWHv@d_TLeBmH)^ z$8jx4!1VSo?2N8xDyMKd_E($RWGFckb$mh`oDQNt?HD(JFM|6)Gj?A50b5;~-~P08 z;K8sjMeDnBZ7N$njj$!POP~Kqzfwz9!rgXCC0)m6Y{2CFGi}}j1IMVP+-4e_9{&_o z^U@!J=luq+U=*Dx-A4XZ;Yf1iVV%5P2oJ3EXPV{&we3>(Pb-c1`2_G!58m2xw8VWP zAOKQ^F6Cy=eYa)rzc4iDmBb8-u%y~CWg*|dUHATAwr?u-JBP2wminFn1k!dpP`E_{ z-+*K9M`fhWd%2zV|BfP?-OnFQWi=*B8_9PY<nkv{cC~&_@dCD={2evlHjH(Yiggty z=dX6!^Ch<vYVYF>H%eY`UGq-3`D^?eMhHR4+w|Fv2h{eM=hhQ?nZC-`7@*GilP^MM zj}cUj!0sEVYkz&ssy@?Km6{<+C$sLGU;fkrqaIQ2XLjEtG4G_He0JL8_4k(a2_?Qw z5kHRK2gI5Lt}^t%rXJg^e^xdzUjN|w(t=`;ru#PV_hA1|AK9%>#0ZVe*5@~I9%+yb zx9M3b77gt1+g85&Q5+^&o`y{*y`~Eh`JF>esJ*I1KJ1+o6xj5E$g*vfDJbashUe97 zy9>ryf2j=I%l;(?5vN7NfvIr25uQQwp1)O(^?`kr6m`_Je<eC}45!BKQ@lGr+xB2f ztN9`gIpwnR279wyo9&wVavl+#IUJ(h{n~%@6T3nQ9cH`-%cO-L+G^vES<qznh=1Eu zUZ*)yKhc5Z<^T9Rcc=*?Ctr>Ug59{i`_PijC-Gw+Zp6wDGX!q1Sc5KJhdwX-#NNk7 zHp<4YARXCEYpvD^8jT|FFX9+A?|wTt%V-+BxubH=U)>+jg85_1NtAeT_yMvsG2@<N z8cYpC7aso5q6HjMLjcyez`MA9w3`=ded^}KX9&IBtWL4Da{%!sA}1dG3#nDwx%SDe zS?KpK0d+%n8lI0E^6_9Pn#;)n>zBr*WAk{HCzH#<S1R#>`mM4tN&}c+OBfR)EA92f zCy(Nj!t9TmjT^b!cQ+F}gAm#wXLr(Fi;ym*P9+gq=7)kd&A)mZmTqmMqva)5BSG20 zKk0ocAR;TzL;p||ywuyBdMsL3D(Of`SD#yx{KnHVMet(Yv{=wOQ!#x2HpH{(tL>i{ zfZj!x?NtQD`PAo5(w)<_R_Fh^X?lNNvD7cvaXR-Mz$gQlmy3bTUqPG#e+LtA3kzHk z`o0`3z}b&G8lT~2ZFJoC+wSvLu>t26Im9ZMOgnb`5Wla>F~@!`LRh6<>BkQ)%y6w^ z<Z6|5RRRt?BGi<213x1<=mpyoQ9wI4S4x=2^SV13v{NPSPtu5s(FVg1vYGpr__^}S z{;2Gj<0^y1R2^0pF9;ld_FMdfkdF>Wj1zR?qZ~PLQ9R4{HH*(>Ed{mmN%-fp4_gO` zZyfPKz~_)$`+#d?8mk+BBJLfxg=&LK0?GdPIy~;tkN0J&gOj#mK+EDFJ^h_n)zt@f zlNN&3?-^e*Rnr2zJ_xGdLLVDmr(ALu*Ut6qNncDp|8iM~b%DGDrJiS_<P3{3g5fFc z&nc5$Q6b_t>WK1-=?yG8ZUhH51=H5~@vk-e?s(Wru(%`v*A<m8x}--&0vW9pO&wo+ zI=SDcOxmP-ls~We!_2lLvIr0-ws|m3Q2k<_LIi~5(wR@_lh&0-BM#Lf+Amj74Y4V1 zLF43SYcr{=Hi!sI#mCrB&El0NCyp}(4a&J+qHufbJ>KP-g#TXtIFhs1YKt^Egm$qP zu(a!!dnYCmBi_uGOEn41vHSuIzqFTFq>O1@g*GP-7-2sVL4Qnm_A;uy$(=$T^FpN? z<H-5?g(wW{rIAw5-Xz?m$;B8gEk)vTyfDa{XxsWFDF|Y0at1(*1=~mpzs=wmb)k{o z|CKpbkH}WEt5UR+0mqobWE(NkY!k2T9XFWE?3~&gH|t?0od>O~k+Ce#2mBHT1W+VB zC%?Bk8XHAoUfzFB#%k6X3{D0aB^TQEMmlq6e!EkMW=|X(lV2~B@)b7uQ)`UB7F}|u zaG#Sv1|d`Ca8Ct+3zy}kA-^ONPb$E}dw1GN#pAb<@9^>yS+r3$7t5c6+yCg5(z>79 zBRqoUPW1fLfOmG_VUvv$VMGA<7X6`KIKbp(fBc2(b*A2DPvRjyH;|5YMDpPq6}#ay z4fOe_X4W^ZAbuB%>RA&KxO|Q!{S3A1;zmEhV-tG}{HV{?mv%fl)c=b7f8L0?EmzT( z{b)!?2{=edEXlNQXp$c(u^~D74?cv8#4m%Z*j8WZx;cXNzoCu7KK9d389I^x!dVk- zhxpKBo9YCb(D%p{DexU;nZrDlNLLumJ~by4a;}>Ya3oG8z0A@6rM=0{F5V2Jfb*#) zHz+Dz?RWTWc5M1I3%@?yJqjb83~e$v$o`7MCCvFV<GQMJ+yLb;K7*LLyLZ}{pyHU_ ziB|7!*5pZS02(pT^baG_4RLh(Cfb`5Ot(4@{%(vd@0IS7u-kT}<dUf)r1l;tu1|*d zrt2by1myTfS3H8?ZU@@=;HpTk7B$(S`=$OuG)~TFEkervkZrLCo$5x5(H&;Oby!Q2 z#iTJbUrHR@T5UF02a)d+D_U)QwwW0H0egNYWSv#pW+v<Nq(6EnmO;%d89M0{u_sYJ z@@SK98Mx1E%SH_-Q>YRHx|i|+oYPKv-%{J8d7jMFHrAzilYWo{EiK3dntWYzv=a7z z_hsVN<gLKxxH~%;_2Ty}C><e^d6p{Tx`jUMA!L8$9pb}rMj<j@^<`pRg^__RDzYUE zie(&x>LJ+YxR$;Rd-uH;G&rji0oKG_k@=n6M0lC^;%By0pX&5vF1S5DuhYYyKViH) z{^{~<iK(UPetv(`jhX5-`eyXIDz;^M>rq*~r2vXwu$a|O0%L%E=N~ADI-Unt_+UtL zfUSIsTH)6lW-!EFNaD#*b-#caMpnS<>^ALfL?0kCQ*oDCByBy?y{n3da2Ux*@5g6u zJ)gG~_#Ct8&&R|i;<Q6n9Jwn>pKqy?KFx;0!s^Z_%!ki^!5Gb*x&`K8rpOh#jLDZU zsZ2S*8N0ZduJcSyVzi9WC@fL%_%50?KSe?*z{5QN5Q1dT&}{pmu&8AxUHNOW!<sC5 zp^bvJ{_l6kMbG+D!Ae$KnZEjN$y`ZprmNB!?PX;lvtqgYZfN!f0@>kMVx!UW-+50k ztbKPD1X0YB_7f*)NY>4TE{WT_|13@FS6V$VE5?pzGa_`)-B8SniZ1Ia|B;;B_rB{v zk@@4y+zH`w0S3-^to`gFyDtu>W--oOO|Hu}69c7LiEgq#cw3fGJ*P&3cLCz;on(!p zw$2l{_V_fdSf9oFycSo&($5DRBBHwD4LsYOb_9bPAFU}|MgfoHg3ylq@$`r&+RS_W zAXT4atvm;vLX27f&Ccuw8+A?nMyjyF#NMgABP71!Lgz_!Xj1J78C;3IwG0E-Z>>tO z^{9;#P?d}*NKpDF4*<I;Z&TS_+I@HybUFR}@xfX5MK<c+au}t_durT_hQO*%`t7y! za{O2BT6Xfc=RLJSuZO+esuZ`Fo}*&$<<GX3gIsFH{PHH%+}vQ|lFB58D~r0mA3o_e zkY9X1d<lz(OW`Ss?@>#rbd%<ECFTwNI)@Hr7{u_EiYpHQe(EcSJUDj2OsUBfmbp{p z^xF(v`1wMQs{8~W`aWd{j%_@ZX*p}TO}oYJy90|-n(;(?L0<nbi^k@RT?hs7|A`n` zpKLBQU8P#xE7rI6;Xx?qF@R|VVZt5)knX6y^ZO?Wdv5oR<lQDY9OHa2hQHM#!2;tg zhh?CZ^ALd$P|N<6j_=Qo2bNeZafOIU^s1u=z#ed+ctc$vu&r^=|8wJQUh&3T>nwl5 zl+z<MS8rG7X^h6lEAdUa7tI|pAq|#lf^ogdGRtFvCJ#2DKx&_1#4Wp|fowY(1bJgL z_KnL4o)GRFk6|Ba>ctixg7x(4x+}`_;v^vO?JuGou{PN^J6#u>J<w=zucF99Bm=pT z(h7*Lk+U4{%DCZmg9E=zL#rBybl9vgPHQ!E(apCl-1B;xoiDrQ;2-LPf~ZLLVq>Pb z=1=06=0z30M|Kk!u+u&fBieyn2uaG2j3#UsjrB^7ZOz}9*RWy!4ntwFeCo`4XI*{> zn>BRZOK-g4PY(dIALghg=56s;K#-NXs`v_LR*3fb2WFo{1iz;el`fgpn`*T1Kwn|k zeo52cCaahNDzx!-XAngX?rCfSwWC*Q9X<Jv0xS5{aJUMG{`c2>=E&M+2qswU3XkY9 zzli;5`sFtG4{3$(i`R8yevnqTH}<#Q)2`_U=CeJQ>uj+W&Ysv<!S=$zKf>j{qJP(& z?}4v^Pg@8@QZC4~`#$wkVcvuGIxSeR;pHf5$33nqy8i=k7<T<tYiANBO=Ewk%ERsc znJW2u48M?ffKg)bK!Afv>w736>n=u6w)lAQ1vYT&NOWvVT;~dBX(SrMX|?B>qI%jI zF@2ef*zs#BymK?NY$3Y8uXzG1q+QYrP($%}^LN1#uQH1X)uvx$!;V8=k&^w$+x}z7 zl7%R||H~Q*?*DR|LhQe!p;Y+)>dc)|mF_<_?f+CH(*I6jumEu~-5ctE8&iluf(i)< h1h(OFaPk1VXsV$8TdDu5x__4x842n5-y;&z{{VZP+H(K^ delta 6387 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 diff --git a/build/tmp/compileJava/previous-compilation-data.bin b/build/tmp/compileJava/previous-compilation-data.bin index 982d22ff2070f1091c1cc52b2966e388e998527e..3ced466ebd83c127dce7f70ba34e21035ad09e46 100644 GIT binary patch delta 131 zcmX@{j`7$##tANZaTT7At|s446x{#HRK@B{w1Bf<kdUXaFAE<pFR#Fg?fUa81ZE{} zSrrpmZJ^vbu_%#|apKh^SpfzHLq<j*DZt3cz`$T0W}zp}Yst`(SX9i&I60KjKn5u1 h6zr_$qNn4^&|X|pRGM7E>&DQWS_ss(c_HKSQUDn0CV>C| delta 133 zcmX^1j`74h#tANZr?itMZ~Lvk{_D1uPS*uysshe}K|-FwzASvayu1RlOjchLh`p(Q zdV1s1!;&W!PAp1fVq%zhB}tBffkA+g5l9+>N%JrZJ#k)3hL*&lVn!y0$-#^UGC)bE hU}rrSJsnqu_TrMF(&Q3eH-_faLZFV#^BI?y0s!}+C_exI diff --git a/src/com/miniontoby/MindustrIRC/IRCBot.java b/src/com/miniontoby/MindustrIRC/IRCBot.java index 5411e4e..727b67e 100644 --- a/src/com/miniontoby/MindustrIRC/IRCBot.java +++ b/src/com/miniontoby/MindustrIRC/IRCBot.java @@ -44,13 +44,6 @@ public class IRCBot extends Thread { output.flush(); } - private void pingPong(String[] data) throws Exception { - if (data[0].equals("PING")) { - output.write("PONG " + data[1] + "\n"); - output.flush(); - } - } - private void joinChannel(String channel) throws Exception { output.write("JOIN " + channel + "\n"); output.flush(); @@ -60,56 +53,24 @@ public class IRCBot extends Thread { output.write("PRIVMSG " + to + " :" + message + "\n"); output.flush(); } - - private void verifyMOTD(String[] data) throws Exception { - if (data.length >= 2) { - // 376 is the protocol number (end of MOTD) - if (data[1].equals("376")) { - joinChannel(defaultChannel); - sendMessage(defaultChannel, "[MindustrIRC] Server Started!"); - MindustrIRC.ConsoleLog("Connected to IRC!"); - } - } + public void sendNotice(String to, String message) throws Exception { + output.write("NOTICE " + to + " :" + message + "\n"); + output.flush(); } +/* private boolean isCommand(String[] data) { if (data.length >= 4) { if (data[1].equals("PRIVMSG")) { if (data[3].substring(1, 2).equals("!")) { + String command = data[3].substring(2); return true; } } } return false; } - - private void verifyCommand(String[] data) throws Exception { - if (isCommand(data)) { - String from = data[2]; - String command = data[3].substring(2); - switch (command) { - case "help": - sendMessage(from, "Available commands: help, players"); - break; - case "players": - Seq<String> players = Seq.with(Vars.net.getConnections()).map(con -> con.player.name).removeAll(p -> p == null); - sendMessage(from, "Connected players: " + players.toString(", ")); - break; - case "avapro": - sendMessage(from, String.valueOf(Runtime.getRuntime().availableProcessors())); - break; - case "freememory": - sendMessage(from, String.valueOf(Runtime.getRuntime().freeMemory())); - break; - case "totalmemory": - sendMessage(from, String.valueOf(Runtime.getRuntime().totalMemory())); - break; - default: - sendMessage(from, "exception -> unknown function: \"" + command + "\""); - break; - } - } - } +*/ public void run() { try { @@ -120,52 +81,22 @@ public class IRCBot extends Thread { String data = null; while ((data = input.readLine()) != null) { String[] dataSplitted = data.split(" "); - pingPong(dataSplitted); - verifyMOTD(dataSplitted); - sendToChat(dataSplitted); - try { - verifyCommand(dataSplitted); - } catch (Exception ex) { + if (dataSplitted[0].equals("PING")) { + output.write("PONG " + dataSplitted[1] + "\n"); + output.flush(); + } + if (dataSplitted.length >= 2) { + if (dataSplitted[1].equals("376")) { + joinChannel(defaultChannel); + sendMessage(defaultChannel, "[MindustrIRC] Server Started!"); + MindustrIRC.ConsoleLog("Connected to IRC!"); + } } + MindustrIRC.handleIRCMessage(dataSplitted); } } } catch (Exception ex) { - System.out.println(ex.getMessage()); - } - } - - private void sendToChat(String[] data){ - if (data.length >= 4) { - if (data[1].equals("PRIVMSG")) { - String[] split = data[0].split("!"); - String user = split[0].substring(1); - String message = data[3].split(":")[1]; - for (int i = 4; i < data.length; i++){ - message = message + " " + data[i]; - } - Call.sendMessage("[red][[[grey]" + user + "@IRC[red]][white] " + message); - } else if (data[1].equals("JOIN")) { - String[] split = data[0].split("!"); - String user = split[0].substring(1); - String chn = data[1]; - Call.sendMessage("[grey]-!- " + user + " joined " + chn); - } else if (data[1].equals("PART")) { - String[] split = data[0].split("!"); - String user = split[0].substring(1); - String chn = data[2]; - String reason = data[3]; - Call.sendMessage("[grey]-!- " + user + " has left " + chn + " [" + reason + "]"); - } else if (data[1].equals("QUIT")) { - String[] split = data[0].split("!"); - String user = split[0].substring(1); - String reason = data[2]; - Call.sendMessage("[grey]-!- " + user + " has quit [" + reason + "]"); - } else if (data[1].equals("NICK")) { - String[] split = data[0].split("!"); - String oldUser = split[0].substring(1); - String newUser = data[2]; - Call.sendMessage("[grey]-!- " + oldUser + " is now known as " + newUser); - } + System.out.println("IRCBot.run(): Exception: " + ex.getMessage()); } } } diff --git a/src/com/miniontoby/MindustrIRC/MindustrIRC.java b/src/com/miniontoby/MindustrIRC/MindustrIRC.java index 1f4c426..40018d4 100644 --- a/src/com/miniontoby/MindustrIRC/MindustrIRC.java +++ b/src/com/miniontoby/MindustrIRC/MindustrIRC.java @@ -1,4 +1,5 @@ package com.miniontoby.MindustrIRC; + import com.miniontoby.MindustrIRC.IRCBot; import java.net.*; @@ -6,6 +7,7 @@ import java.io.*; import java.util.*; import arc.*; import arc.util.*; +import arc.struct.*; import mindustry.*; import mindustry.content.*; import mindustry.game.EventType.*; @@ -19,68 +21,204 @@ public class MindustrIRC extends Plugin { static public int port = Core.settings.getInt("ircPort"); static public String nickname = Core.settings.getString("ircNickname"); static public String channel = Core.settings.getString("ircChannel"); + static public String version = "1.0.0"; + static public String ctcp_version = "MindustrIRC v" + version; static public void ConsoleLog(String message){ Log.info("[MindustrIRC] " + message); } - static public void IRCMessage(String message) { + static public void IRCMessage(String message, String to, boolean withThing) { + try { + if (!withThing){ + bot.sendMessage(to, message); + } else { + bot.sendMessage(to, "[MindustrIRC] " + message); + } + } catch (Exception ex){ + ConsoleLog("IRCMessage: Exception: " + ex); + } + } + static public void IRCNotice(String message, String to) { try { - bot.sendMessage(channel, message); -// bot.sendMessage("#mindustry", "[MindustrIRC] " + message); + bot.sendNotice(to, message); } catch (Exception ex){ - ConsoleLog("Exception: " + ex); + ConsoleLog("IRCNotice: Exception: " + ex); } } + static public void ingameMessage(String message) { + Call.sendMessage(message); + + String ColorCoded = message.replace("[red]", "\u001B[31m").replace("[white]", "\u001B[37m").replace("[grey]", "\u001B[0m").replace("[[", "["); + Log.info(ColorCoded); + } + + public static int Seqsize(Iterable data) { + if (data instanceof Collection) { + return ((Collection<?>) data).size(); + } + int counter = 0; + for (Object i : data) { + counter++; + } + return counter; + } @Override public void init(){ if(Vars.headless){ ConsoleLog("Loaded!"); -// if (empty(server) || empty(port) || empty(nickname) || empty(channel)) { + if (Core.settings.has("ircServer") && Core.settings.has("ircPort") && Core.settings.has("ircNickname") && Core.settings.has("ircChannel")) { + server = Core.settings.getString("ircServer"); + port = Core.settings.getInt("ircPort"); + nickname = Core.settings.getString("ircNickname"); + channel = Core.settings.getString("ircChannel"); + } else { Core.settings.put("ircServer", "irc.ircforever.org"); Core.settings.put("ircPort", 6667); Core.settings.put("ircNickname", "MindustrIRC"); Core.settings.put("ircChannel", "#mindustry"); - String server = Core.settings.getString("ircServer"); - port = Core.settings.getInt("ircPort"); - nickname = Core.settings.getString("ircNickname"); - channel = Core.settings.getString("ircChannel"); -// } - setupListeners(); + server = "irc.ircforever.org"; + port = 6667; + nickname = "MindustrIRC"; + channel = "#mindustry"; + } + setupGameListeners(); connectToIRC(); } } - static void connectToIRC() { + static private void connectToIRC() { Core.app.post(() -> { bot = new IRCBot(server, port, nickname, channel); bot.start(); }); } - static private void setupListeners(){ + + static private void setupGameListeners(){ Events.on(GameOverEvent.class, event -> { - IRCMessage("Game over!"); + if (Seqsize(Vars.net.getConnections()) != 0){ + IRCMessage("Game over!", channel, true); + } }); Events.on(WinEvent.class, event -> { - IRCMessage("Win Event!"); + IRCMessage("Win Event!", channel, true); }); Events.on(LoseEvent.class, event -> { - IRCMessage("Lose Event!"); + IRCMessage("Lose Event!", channel, true); }); Events.on(PlayerChatEvent.class, event -> { String playername = event.player.name; String message = event.message; - IRCMessage("<" + playername + "> " + message); + IRCMessage("<" + playername + "> " + message, channel, false); }); Events.on(PlayerJoin.class, event -> { String playername = event.player.name; - IRCMessage("*** " + playername + " joined the game"); + IRCMessage("*** " + playername + " joined the game", channel, false); }); Events.on(PlayerLeave.class, event -> { String playername = event.player.name; - IRCMessage("*** " + playername + " left the game"); + IRCMessage("*** " + playername + " left the game", channel, false); }); } + + static public void handleIRCMessage(String[] data) { + // [---------0---------] [--1--] [---2--] [---3--] + // :NICK!IDENT@BIND.HOST PRIVMSG #CHN/USR :MESSAGE + // :NICK!IDENT@BIND.HOST NOTICE #CHN/USR :MESSAGE + // :NICK!IDENT@BIND.HOST JOIN :#channel + // :NICK!IDENT@BIND.HOST PART #channel :REASON + // :NICK!IDENT@BIND.HOST QUIT :REASON + // :NICK!IDENT@BIND.HOST NICK NEWNICK + if (data.length >= 3) { + String[] split = data[0].split("!"); + String user = split[0].substring(1); + String message = ""; + + switch (data[1]){ + case "PRIVMSG": + if (data.length >= 4){ + message = data[3].split(":")[1]; + if (message.startsWith("\\001")) { + switch (message){ + case "\\001VERSION": + IRCNotice("\001VERSION " + version + "", user); break; + case "\\001SOURCE": + IRCNotice("\001SOURCE https://edugit.org/Miniontoby/mindustrirc\\001", user); break; + default: + break; + } + } else { + for (int i = 4; i < data.length; i++){ message += " " + data[i]; } + + ingameMessage("[red][[[grey]" + user + "@IRC[red]]:[white] " + message); + if (data.length >= 5){ + handlePrivmsg(data); + } + } + } + break; + case "NOTICE": + if (data.length >= 4){ + message = data[3].split(":")[1]; + for (int i = 4; i < data.length; i++){ message += " " + data[i]; } + + ingameMessage("[red]-[grey]" + user + "@IRC[red]-[white] " + message); + if (data.length >= 5){ + handlePrivmsg(data); + } + } + break; + case "JOIN": + String chan = data[2].split(":")[1]; + ingameMessage("[grey]-!- " + user + " joined " + chan); + break; + case "PART": + if (data.length >= 4){ + message = data[3].split(":")[1]; + for (int i = 4; i < data.length; i++){ message += " " + data[i]; } + } + + ingameMessage("[grey]-!- " + user + " has left " + data[2] + " [" + message + "]"); + break; + case "QUIT": + message = data[2].split(":")[1]; + for (int i = 3; i < data.length; i++){ message += " " + data[i]; } + + ingameMessage("[grey]-!- " + user + " has quit [" + message + "]"); + break; + case "NICK": + ingameMessage("[grey]-!- " + user + " is now known as " + data[2]); + break; + default: + } + } + } + + static private void handlePrivmsg(String[] data){ + if (data[3].startsWith(":" + nickname)){ + String from = data[2]; + String command = data[4]; + switch (command) { + case "help": + IRCMessage("Available commands: help, players, version, source", from, false); + break; + case "players": + Seq<String> players = Seq.with(Vars.net.getConnections()).map(con -> con.player.name).removeAll(p -> p == null); + IRCMessage("Connected players: " + players.toString(", "), from, false); + break; + case "version": + IRCMessage("Version: " + ctcp_version, from, false); + break; + case "source": + IRCMessage("Source: https://edugit.org/Miniontoby/mindustrirc", from, false); + break; + default: + IRCMessage("Unknown command '" + command + "'. Try 'help'. Or use @playername <message> to send a private message", from, false); + break; + } + } + + } } -- GitLab