From 9a72a1f7cbc12ae9bda80eca3cb388b605b4680a Mon Sep 17 00:00:00 2001 From: MinecraftDorado Date: Thu, 19 Nov 2020 20:12:12 -0300 Subject: [PATCH] MySQL changed and update checker --- .../Listeners/PlayerListener.class | Bin 4685 -> 7679 bytes .../BlackMarket/MainClass/MainClass.class | Bin 5476 -> 7481 bytes .../Utils/DataBase/MySQL/MySQL.class | Bin 3562 -> 3573 bytes .../Utils/DataBase/MySQL/dbMySQL.class | Bin 7281 -> 7299 bytes .../Utils/UMaterial$PotionBase.class | Bin 1551 -> 1551 bytes .../Utils/Inventory/Utils/UMaterial.class | Bin 148829 -> 148925 bytes .../Utils/Inventory/Utils/UPotion.class | Bin 4429 -> 4429 bytes .../Utils/Market/BlackItem$Status.class | Bin 1407 -> 1407 bytes .../BlackMarket/Utils/Market/BlackItem.class | Bin 5613 -> 6100 bytes .../BlackMarket/Utils/Market/Market.class | Bin 9772 -> 9838 bytes .../Utils/UpdateChecker$UpdateReason.class | Bin 0 -> 1737 bytes .../Utils/UpdateChecker$UpdateResult.class | Bin 0 -> 2809 bytes .../Utils/UpdateChecker$VersionScheme.class | Bin 0 -> 422 bytes .../BlackMarket/Utils/UpdateChecker.class | Bin 0 -> 8319 bytes plugin.yml | 30 ++- resources/categories/potions.yml | 132 ++++++++++++- .../BlackMarket/Listeners/PlayerListener.java | 23 ++- .../BlackMarket/MainClass/MainClass.java | 18 ++ .../Utils/DataBase/MySQL/MySQL.java | 4 +- .../Utils/DataBase/MySQL/dbMySQL.java | 19 +- .../Utils/Inventory/Utils/UMaterial.java | 4 +- .../BlackMarket/Utils/Market/BlackItem.java | 7 +- .../BlackMarket/Utils/Market/Market.java | 2 +- .../BlackMarket/Utils/UpdateChecker.java | 176 ++++++++++++++++++ 24 files changed, 397 insertions(+), 18 deletions(-) create mode 100644 bin/dev/minecraftdorado/BlackMarket/Utils/UpdateChecker$UpdateReason.class create mode 100644 bin/dev/minecraftdorado/BlackMarket/Utils/UpdateChecker$UpdateResult.class create mode 100644 bin/dev/minecraftdorado/BlackMarket/Utils/UpdateChecker$VersionScheme.class create mode 100644 bin/dev/minecraftdorado/BlackMarket/Utils/UpdateChecker.class create mode 100644 src/dev/minecraftdorado/BlackMarket/Utils/UpdateChecker.java diff --git a/bin/dev/minecraftdorado/BlackMarket/Listeners/PlayerListener.class b/bin/dev/minecraftdorado/BlackMarket/Listeners/PlayerListener.class index efa6ddd977fe9bd7bd8e07aa9fab6862c8ca02c2..fa53fbd213fe0d1387bb0aaf6daa63875224a8fc 100644 GIT binary patch literal 7679 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 delta 1240 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 diff --git a/bin/dev/minecraftdorado/BlackMarket/Utils/DataBase/MySQL/MySQL.class b/bin/dev/minecraftdorado/BlackMarket/Utils/DataBase/MySQL/MySQL.class index 462f0467d74f1b9bfe9cc983c0e8e24eec6215f7..282d0c9f94c17a4302d52a324b96ef592d5007df 100644 GIT binary patch delta 479 zcmZvXyGvtX5XFDrHTd1=EhIJzk@Z^}1r5HoippXa-$W6#P`K&^A2EVnL@PVDUTz~| zAqqa$x6$|l3rn%q|H0l)jFZA5U@&*@43Eb{7ETyEajQGdE=%8 zoLDyA($s<2-55cEgrporE;oO78#Zsm-zz zY0dJt_nfXQ$vf(XBl}l0#A5fMiKd{D%h@yr~ zjyT4mfi+GzrHCP-oM981MrunzMS(@&5Y<#xLvK_|a0!R9EJRw}8rtG6(G&%} zzo}_&&t*7iA?wG)VPl%7dDp!6b&2cpbdhh6d%sAHZWx0rZ%CCVBpQP;(EfgR9a z_%+2ct(Y36Ih9RIF(tT&{A;QT*9(>S0z?k@;FBah{rmlV zzNdfeKGT$Wd;OEo0o2pD00UvKVzZVjEtDIRd=@b>8}Nr^Z`dD>%&lFsTo$%%pr(5~SM5@(8(&Pns zA`+Gd6Acn_q)obMCW!t(pkvBEG3g1*(-zuEsPMWacjrJ!Rf)1_D>hnam-2zFm>QLD zZ8a551i{xX4Z6K07Sh8j+g!b( zH4_=1k`q05IedD|0g-x1QqI}8n-7ZAPluG4J-hUXNM0J?dK@Fogo25P0~--Ok%nkk z`NiI7J}S~NI=)tx)nJU`Gcb-!mU|U*Do$&N5~LN>IyIane2JyrDi!BdTsXJ_TXj;o z+~>N1ODtU>T#5h2zKO>VF-~MeI-i9w^SJ{Bs6!2Q@>z#wmb*}o47TLLz_!v|coT22 zSi?QMjdxf%!%`JYarQDm!1F*H*)R!M(uIT~ZEZNOi2542NE5bV4~o%(a%Hu(d z+{^4LMsFdVPYv%9o3mGurQ+BcMps~woGRsz^eL{6T*v!;t}Mz|@!=4AyHu=cxNd;t zG*zios8X>;+l+9gu=I#V4t{D>O&H=UmB7iOoDG2(&#mKE#9u`zf;a^^iD?7U*fPwv z5w;vh8BV~3lRWYmkL>56#&HxA{0eZK%ws>sa6X>EyB;a}FbR;sfSE8&kMgKx=p>QS z_~k;hnKH@7!FNvL-O98y!UL9k~8jAY2SV1+ck2V;54(rqf(znhgs4K z-zUhz(qQxkjci2yhomG&`fA+cD1g5iZ5e+i?v4GQM-h8WvClMfHOn|Z$q3IeS7GKV z0txf*@=}iBG_&;-M?cN5Kf_*8)+{2rh%$+efaI-N3j#qK`HdN+4%-k^OQ9Rh9& qxGLc5I24e8W&PkyFwhB}(m*F^ly5t)&Nuw$G`6pR8w`^l)_(w26G!C$ delta 1478 zcma)6Sxj7I6#fnjGZ(ll0};v;D7Fa9uxOF8Q_5C4Ff0}rK-$uQxk4>Vl^N3-mD;+r zVr!a<#`d9ZO)xG^0CUS&V|-9d8lP%njBom+FD7lGyoukvfYs=OndCqF_MLO*Y}K90 z@(C)h3HV=^}7A0sYsP#GbBMfsf~t1TAx*2kq7k;ot}g^i0oG7 zK3rDhVf}k&w(QZ@oF(}c0*AlB*VodMqevB-E~qcs{JCr5FfTQ#)JmQ1OL5olQ>8%~ z1qz$;2PVRr)mO7wyjhhN*)ND?U(M6ukqO$^TC>}4<~X2=SK9PXQg+q)ROygT7G;j! zW0M;x+RPN)syreGX<-WA^wgM@plu^TuPS}w*Hcp~>;tL{%A?EOspZkL;sCw4l&&Sr z7&sNdtiZQ`s=^3f6nufXc8`Gz1}=3jV0-bVa=xQz1#c`MuG*GiGZ3Wyir~unPmHpd zFBh4%1f|#m4bezsft^tJ?nVZ+B`C9O6}2cwE!h?tI#G!vy5uk*14X!sw6Yme+zy}>gsgkB&bfwL1 zGbA%2JEBn-<1u7cMDoc-q)^aL5-(VQ;wvQFCb%vPW8^PzOQEvd5Vc1*-Y{};ln9QX z3ZrO65C`cwh{tFdqh_4%;}+H)HqACIglECfCQ&7U>2pyd$>QW>qjWK07Yp`y*qq85 zT8Xg@ad`9J!^*jWd6eAcBCoaDv#hcHios7a^cmv&ERNwh zx}K)?44%hXoW~2e#IwDMm+=wK;RZEd;T3#~IsAxM@iQ*4=tbPcYxtd>=4Vr8ea36n zD$Pya-r8gyZf&lzoky4`Nj%NF|5$1^Vw{TJnwhm@h>4=)kQ^pW;qt%cU(bF3#?$;vo)vKFfekc?;D0022>1?~U< delta 19 ZcmeC@>F3#?$;vo;vKFfekc?;D0022h1?m6* diff --git a/bin/dev/minecraftdorado/BlackMarket/Utils/Inventory/Utils/UMaterial.class b/bin/dev/minecraftdorado/BlackMarket/Utils/Inventory/Utils/UMaterial.class index deb314d962e995e39027fb5967a55830b3fe0881..f6eefc74713653c009f3ea29a7729fc3fcdaaf68 100644 GIT binary patch delta 2733 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 diff --git a/bin/dev/minecraftdorado/BlackMarket/Utils/Inventory/Utils/UPotion.class b/bin/dev/minecraftdorado/BlackMarket/Utils/Inventory/Utils/UPotion.class index c7747c66f3640d2e306ee2f57c6c78127b516727..530dc66661b4e14d5d448c1a9a96a26c58d91cc0 100644 GIT binary patch delta 138 zcmV;50CoS(BF!SOYz<+h00ai600{=C01gJI0B8oO0CEPX0CWbb0D1ng!;={iG%3w0V*mgE delta 142 zcmV;90CE4#BF!SOYz<+f00ai400{=A01gJG0B8oM0CEPV0CWbZ0D1 w0g?v00hk88v&{{W0s+30Ul2S2zms1O6_c?LDwAFi43p;&F_W7R6q76wA;pg?MF0Q* diff --git a/bin/dev/minecraftdorado/BlackMarket/Utils/Market/BlackItem$Status.class b/bin/dev/minecraftdorado/BlackMarket/Utils/Market/BlackItem$Status.class index 80d1917b0a0d3450840c5b9a9f6362426a9f0007..8be2eea4aac45034df6bdd0f58eeea9de856fd24 100644 GIT binary patch delta 23 fcmey*^`C3QR2J4;1`~#y$+K8Y7;`3{XW0M%XP*dG delta 23 fcmey*^`C3QR2J3@1`~$#$+K8Y7}F=8XW0M%X9NgG diff --git a/bin/dev/minecraftdorado/BlackMarket/Utils/Market/BlackItem.class b/bin/dev/minecraftdorado/BlackMarket/Utils/Market/BlackItem.class index 3e8ffb966cbbc711728f888829bd35b83ea38032..4a41c9661c471ae2a269ac5f63bb75db46ebed22 100644 GIT binary patch delta 2199 zcmZuy3wV>&8GgSc&1sU;(556KwOo6lZCV0YP+Ob`2u9n2mdk)K_-TGhXh=%(7btAT zUED-rFps)*6J%o(aZ@fzNMU1lHr&k(H|K74(>ZlIL3Yt?g5UqA(moG7$#c$^^M2?1 z&i8)rIe8=WY`FO83&&3aXr%E1Ho|mu&Nlt<+#L>&8_V!vf#rl5yjDGFj%H}Hw6q>> z?QOrUB^+IC%@Ql{5rWjB(OGe=qbp+Q>j}*@>a6WrTkT?X#$k-=lvs->p`at4Oz3W0 zgLM*Jh^v(a*EtjD7D%c+1rwtikRph+TDm2f(h2sO+GQRjU`X^}BO{%65|z#eB|eWYJb6|uA?JRHM{z*4x+Pj^%^^maotdeZ8gt3C81?p#%JQ$kNwxp5jl5qO$VY_S&C5}o08BNa=q zM1G2&siZsP`~`j~@Qm8)4%mN%GpgS`r~21;PT)6$QOQ(icy&)#SIh{{U$Z72OXv&Y zTCbjx_${7S6`qR1)A+r_AMi)j=4to7V5Z)v#e4KBfj_H*o^r-tlz0h$RcAbvg#-AT zLTD2k@H2-|;-tZ6x!DD#RNESCziGJC@R;eEb1ZN@wwwz&S$5h)pN3W z!UaA)E)qr#D|_}@&6u5xCsUG$Y^t&7*2?YVkZ8vN0Rb zdn{-)p-N5mR@nuORox>_)sBS&n29$A>u?Tatsf=FDevO!kX^61Z z%J0k7ysHrfJht&Xjc3ymDCGNNS}wRbgK2pnIeHzRZ6#KrKF&*Fh4p+j7W!{TcKR|w4I zaUL@lVU};j^~^{c7V&3s7nZY7hsaqmSX?24eHJ-ISb#6$OH9s0rt%@|=H^__jogEW zImKQMZqky+zRcKkUKs(~yBI5QjX+|qz;<@{3ihd0rIo?uS7hU>_?p^X8oc?DK2%?+ z;4B_<-M<^|x+8cZi^I%Bxmlv!D$&R105_|M+f~a=nT!r~p>#}!-$YJaYGF33xq-US zQIzL!^a%R1_;w!zi|ae4xQ0jSWSOjGp~hHP>#XAj^1CkyC&0P99NVnb4)U}4eSByz zS(s;2Q)Sf=@h~-!uRC+8?hF->Q*H1E5*hBQ;J4e( zgY_M_$V@l{NZ@^pe+^=SgbQ{qo^LU^$-^^?hJ3s>l0HDAD99^i9N;)wscdGD|LBOW Nni-^W8bjj{d=JJ6{`>#{ delta 1808 zcmZux33O9M6upzAf0Fb!X;Ra)Pzsc$v`y2nSq}7|9H~g5rC`~iKq#RtjZH~X7OTV+ zMMcHIr6P!mqJqkrrW6rD6ob2n8;ZE#%I1Q&0KWfI!E@|6IWsTs&AapNeQ*8&_c3R3 z?A-R900uB4hlZg@oYE9+8oo>?d;^EY^n7>L<2yqF`-Bn&dtVlGD= zL)P*}o2Zb?-Rj|E;I*D$nLprV(B|e%NklCgWcbl2nx&pBAXZ6fN%LScq8Lpw=3{}_ zE#*jy(9ChII4;?>*Wr4h=boIfj2qBMcs1Toi8oknr6O;VaWigVkUZ7Z-o_9^v*?>J zNbKV!8B1_G$88Lzxt{qRcT=d&=Ps)YhGZ?v=3|_ib6K zpU9-gWIT>1#8E>p{USUm<0-5Y7NgzrjErYtV$hE(Ex&R`#rSbzm~pIVNvurSL{&Nb z3mUuuhY?$_jbp1gpJ>xY&?@Y*vwIubIkq!c{DB(xtfu<=FCrUivNAE8|tXCQi$hme-X#=6ifiUI)j12D?~evKy7_-jwkc-WJVC z*<)jPSB3@eG1zj;RN_8QLyfyK6sT*cDbAZaC|RznbLIl5kHATrcwGOI4+}-BzK#;Xz;TbWiI9T9e;3~5i89(I{b;h z#9s4Z4Ni*_27CVr$vA5SW03JYUNCcZY*sRTleb7Rp z!5b-Btfk>iWNFZk)_znAC?k%Q2NUvPgOiX82-QUheaO=nMRal~`lFOk`%}gMB+xpN z_DgA3EDk-GY8hZ8bj6oQ=sL>pfytOc8H}oOfQh=4tn`5@j;!V+bl@;d#Wb-tB|E*i z(`Xf@iz5`hywm6mie_Gt8lG9^jG(%_pba$)Es)8$hG89y?U*;Y6~WQ%D5m|Y2txT= z(TBDu77o@$u{b|n=h}`Nfi~Q#L4m6ccWU4)h~S=y&W*%Kr)ri(Oo3svmLLhk(HkQ$ zgxHS8)fkV;dLl9IKO$9ikkeC8s3Ij{3|8QN5~(){`v4xK<_sZ`9-?Y>c$mNyS>myk z6e}W+8Je@`&M}aqb~wipI`9Zqks2xag-U7hc1o(8lRA}WH69gHZRsP{v>>N51tM5$ zSg{Jm{LOfJ8!||m3vW>fdQYFVlAQx_&jB1{uuFg%Az3LjCGYGFR%Pql^VmBi7Rf#yr8AndYkj9_yM zQpuna3!{j(VJAZbuZ(tC_o=b2WV9nTnc@XeywQqxB6vT3;GlY-&}BWS9B9QyG%7@U zHIft~ijUWUYoqu)g0CVdSCa~ob6in;+lFHrOjLNq6-iZJz$j#(jG9-Dd8oi*YOL}) z;vB;lIEHZoC&d_h>YPQ?I!@m{EiLLVcAoHb9E{`N82#&rahx(x_!olI;8*-cyD}Mn blkXg3OvAL~u~ICJzACz*=`4Y9k}CZleGrYd diff --git a/bin/dev/minecraftdorado/BlackMarket/Utils/Market/Market.class b/bin/dev/minecraftdorado/BlackMarket/Utils/Market/Market.class index 3b38898b32f2c8a8e4e6152f4478779398b4710c..d505c8728ebeb285ab5c5e3f28f55369af82ebdf 100644 GIT binary patch delta 1781 zcmY*ZX>3$g6#l;1-puQ3nPDj9O-m`Zg?1Rq-U^6T3St+5BDU->v_okvGuRnW+y)g; z+2OijTo8pKD(Rw=0Su97aET%QH2yH~2iFi26kMt2wI#-v+;`9U&bjxT@0@$@yLDIU zykFcneHOq}KBvJ(Oi|swF)C)y?5@i24Znn64g7{{gw_;`Cc>>zVor&=G^9d(<@L;- zS-MQe$N1gAA6P=z!_CbZxPZS5{EZ)E&H8YBe&nHq4&sJ^O!N_slG5eXI!=-XZM3Vy zzEvJ4HH|K!Mq<|l47xE(7RNf8TchE2ojMJT8APR+E1d>2nWeghR#xcr8uT%X(BrX= z#Oy7Lw``19?tX*AEI4BTZV0z;iVOug+`t*;sImTWc@ibpisFd3J{%Da9BE)V^NH+| zYIVTn*L7@Vfx*$dMeXu0^cNA%ruJA|e49ANz|S13uK1@Hm&z8c(RDF5$4MHJa-?H* z!b(Hj##?S>#C&y5_p8;zW@SwjTJc1zBis^kb8_#AVSUUFcqFqLt2$XaovbtP8ShbN zhc9+JxxnB;)~i6yvN9*{HBiZVkNDhYuz~dwdGXSPb1h(r!KD`9Y`C-TzPTEg_a4c~ z;j}dd!xl+bOC+%<_Mi?szSY^xbs8gtuPwYeJfS@tZJ97T7Hf}$qXuf(qOOb>>1wr7 zZ&N;VjU#F>rZ$=Nu1$PU<7V}xIoAFVx2S98#bCm!SKWX6ELhtXX-dp2ZSe9DX*wS_ zxRR@excJz?+=k%RL3EqJ``Iq&Q(m?cMs+kA>8NTC$K#Q>#%Bi_JyCV#-ogFqm)xM^ zAd#gR+3L+&AXL*6n!Ck-0=L*_cxct@;%%Q8*#b4oC6V@Q2BdTsI|w&8nh$4}TH z_xB0fv6BlWz$20&?1AADc3|VV zvhl!ncc~`}Cvv*lSD33V6i%?0!=nxq22`NP%$tWbpm)r#Wcq*ZF0tdeUzxN5R+x5&ALdoaZf-6Gp0 zDM$@1{7`?xjR7C&!$!gEe8BQz2jenJ-TAO!k21+8`lTniojdrn*k(v$xAGb8ls;X; l`yuX<$Hply|L#f?UtpLmOaIb{e#{*O_{{>madPM*L delta 1764 zcmZWpX>3$g6#l+9)0xhjS9qQ2!fT5_VSu&+wRBS!ElUO3YDZ;FI=`fh0e)Uz9dpO#l$rM75MLWCZZCCU|CN66kFz_8G6D8^mJxx`o<>pS61KK0&qRGq`62djyxu(k|A>KjTdz#vx zwscgXBogb2c81o6lUX$IW7-h2EsqddY*%EIPA97koMjDBE45MQN0+N^xoT z!(H{!+jKZ^PUl*N-E1XNH-v5t6?TLo>kH>aqaEQ;#6UII5gAjP^J@MF&eCz7ZFXMm zs?ln3-e@qQPFYJ_UA)!JTa+(risLqJQnRx@V@!?B&hl@OzVl9l*K^fq7w;gJOqJ}e z4bIAIFxhQ#7~gJi12+nOx5c_`%eA9+_Wjl24@G{+Nj(K|MP|z&$ zGdICWwxc=2&ncJWVn6fp6D$}8O8lHY0%Z5V44TvZy!;|K95UP4VvcD$Y(u4f&d5(_ zEKqs5H*|lF9rzYI@dI|@Z)~FryIF!goQ1u-3j0}!16+g$SPR8^Jj`bFuoaK74Ucmp zp5)DVid*qCx8o2G;2A!MBkaMmJcM4pf}?y3&+)AIeTWx$4#)TnUgU4+(;PUixpAUf zOGCewivg_=ui!GN?>>yOTaOsJL`%|wEQbBF@oD2&!cu6Mta(|+a=H0IEs0m~O6ku! zzRQ_HItktE=WNb_OAVt{d%A8cla#b;@H0K)35wfYWr%3kL zUur)x;}|^2h3ep>K=*}<@PP2Az*YTR)HDd^@x}zJPQRvC=lAnkxr0fyy>K>)vP2Z; zC1t57?n_F8D6SEuX@HB4OC3yD$YB%43jI7;^HGd4S<6v@`La4xX<%H{$|3kcH&@zI z6RQ6^nY#VFFVb8jC3OhRto&e{tDUW;r!5#Ph%=Pn4RNklPXq#9yU3dCl1H!J4`i@I zeGwSn9+h1V-Xyceo7pL=RFRv-c02Fl)?sNIcW@_n2{u#Ow3YYpKB@Y7yv*J5pK;2s e|NaUKpI`y^$Ql$s`|FcCwO9JKj|cbwtbYMQ;e{yx diff --git a/bin/dev/minecraftdorado/BlackMarket/Utils/UpdateChecker$UpdateReason.class b/bin/dev/minecraftdorado/BlackMarket/Utils/UpdateChecker$UpdateReason.class new file mode 100644 index 0000000000000000000000000000000000000000..aa8cef12f23f54637f36098877d37144101d12d1 GIT binary patch literal 1737 zcmb`HOLNm!6vzJ;JC>~|U_wbrLTQ1N#OC3KcWXD;kp(e0Qjjb&YCEG*Y!Q?=G9$~G z$-3|Mb9CRD1xy*3uKPXuH99@_+7NfqO@kLY`dy#5&bfd7{rhVG*KuFM5r%Tx-z)3} zq2G$U$8ozGdF^gtwd1vR*1c%Qj|+Ajbb1B*Y1@l^^@-ow@uP(ynZDQSh7yttN4LE_ zuh8+rt%4TzcNt_|d*s?1)k;HSSgjv6NRi>VYS{Ivs~ZhhHFRB58w^TKZ&vEHs(aru zbcShLuh@+>!>oOwRo#cSW;)`~)aqKrqNAo}S~adYW$O=gCtWXk4Ee!og zWbOAPtT9~sAKOlT#xIrfG7VaSuBl9UmX9<*lBQWm8e}19hJ~c@6_O@bNE%upX@Wp zE~Eu43dm)LdU-*YvO~qo+4L)ll^EcZZlkCrd|p z5_ERidWOPpl;{yG)AIr?F7OSl;YPd~@C1E(ocz{p4u?-Dts-chg{xH&SvN#B8+&kRs-9whRwof5BSJu&|R zw=Vrk{|r+cdSh=>$k2?hjC|xthsTnqS^fp?`~mjgb_uKspDLzYuvK%LeQesVG0W0-C74XtfC-0<{|gQn~0O;@{Y>qhH_?zMQJtp=9uYpb269`N~fZnU^p3}?5v z-?ak;35LuaeM8r5-7&SBjXT^37?K{>eb-^QTpI*J_?TfBb@->;59-|WE#Wj<+eKUn zJj*d@Q!-e${Nh=L3;jR}2Nx~J3NA5xUh2z3KSn#rl#%Wat6XPD%)3oK0*2>Rj3AXl z97j|7^eG3wTc&UjA2+e4DQSHeRc@Zi&B~?*F})WRSY31MlY#Q zFic_Bs6dyx?FRR5>kXTW^LGv1uIrv9=Fwt8od2K&Cy6i|Mh;{Jh#Z{8s|tz(HmC5W z;x!~0QcH^;ezdy0Fn4=#7$t_Qw`6bng zH92kL1)KVx);GcqEQC#$LIslwstiTLZEL3Mnl{&H*mfPQq5E80_PF6XO)H?b^;Jya z3^lVMbY#vmyKU}}RE(9@dg?wD5UK@H)@N0m!};CnJjbxsUv-viu4ihEZmVSlTF361 zmZM1xxlYoxEax*RlEpU^Twoag&&?{{#9It$lLrgjH$1B&LS(3x4nhh6dNy9MY)*LZ z;GzOjo{9Z<2b!pO7o<-qLfz5A93dW{hNCNiRPj#K9V28Do;$+=ne-tQd$o#!k4nc6 zF9fMZYjhhB($ZeN{-eJ`8=T}o9wJdnkrcfz^md%#$)N?Z?}-1e(5{QnR4S?!x9b^P zR3-`Ro*Vy+0B2CIIS%*cZQb`d39b6{J3vTH&s3z1+Lp?JJ~ZOU3OT1yR){%}$%s3Q z=Jfp`fN9?-%}kml=$WrnH<7MvAychv<7j1ala{77apD(x8NBo3Gq7#>Nj?3uoMRdL;=HSLK%|g1L;!RFVxCq+Qs-#5c$XH&6x4kT zB_75f(n?4@^zxv`OFHr*$i=~g>jhkj-1Txf@hq30d%Q$kGN1!qjEpD9pEzKpQk~qw zmEGeEN!*j>lqqR+H8LuZi8$@Lmb$x{wD GapYg{ZVH6} literal 0 HcmV?d00001 diff --git a/bin/dev/minecraftdorado/BlackMarket/Utils/UpdateChecker$VersionScheme.class b/bin/dev/minecraftdorado/BlackMarket/Utils/UpdateChecker$VersionScheme.class new file mode 100644 index 0000000000000000000000000000000000000000..779fe4a17a451b0d57110554b7f1ebe922f567e6 GIT binary patch literal 422 zcmbVIu}%U(6r2ZoC#Q(9v$Cv=!xe7K++&QRmNwRr$)Ul#q{uHa;J(3J%g= zh$_Y1OvHIz+mTvGB`J;w7far7ZrINAx9L(;Aaqn+t=P$r*b|;^Uw&ny;Iy5051G3| zija-!wNol^l7e2O;V;UC2i+I!U`1VS^m4NxrU7)eA;q;WTJf>yjqRAlj<#>pa%QE;BL Fz5#8`eOmwk literal 0 HcmV?d00001 diff --git a/bin/dev/minecraftdorado/BlackMarket/Utils/UpdateChecker.class b/bin/dev/minecraftdorado/BlackMarket/Utils/UpdateChecker.class new file mode 100644 index 0000000000000000000000000000000000000000..609933844ea4c60be41151ca32cb01e4ffe289f5 GIT binary patch literal 8319 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 { + if (result.requiresUpdate()) { + e.getPlayer().sendMessage("§6[BlackMarket] §7» " + String.format("An update is available! BlackMarket %s may be downloaded on SpigotMC", result.getNewestVersion())); + return; + } + + UpdateReason reason = result.getReason(); + if (reason == UpdateReason.UP_TO_DATE) + e.getPlayer().sendMessage("§6[BlackMarket] §7» " + String.format("Your version of BlackMarket (%s) is up to date!", result.getNewestVersion())); + else if (reason == UpdateReason.UNRELEASED_VERSION) + e.getPlayer().sendMessage("§6[BlackMarket] §7» " + String.format("Your version of BlackMarket (%s) is more recent than the one publicly available. Are you on a development build?", result.getNewestVersion())); + else + e.getPlayer().sendMessage("§6[BlackMarket] §7» " + "Could not check for a new version of BlackMarket. Reason: " + reason); + } + ); + } /* * Uninject PacketReader diff --git a/src/dev/minecraftdorado/BlackMarket/MainClass/MainClass.java b/src/dev/minecraftdorado/BlackMarket/MainClass/MainClass.java index eeaace6..96b0a6c 100644 --- a/src/dev/minecraftdorado/BlackMarket/MainClass/MainClass.java +++ b/src/dev/minecraftdorado/BlackMarket/MainClass/MainClass.java @@ -12,6 +12,8 @@ import dev.minecraftdorado.BlackMarket.Utils.Packets.PacketReader; import net.milkbowl.vault.economy.Economy; import dev.minecraftdorado.BlackMarket.Utils.Config; +import dev.minecraftdorado.BlackMarket.Utils.UpdateChecker; +import dev.minecraftdorado.BlackMarket.Utils.UpdateChecker.UpdateReason; import dev.minecraftdorado.BlackMarket.Utils.Entities.Hologram.HologramManager; import dev.minecraftdorado.BlackMarket.Utils.Entities.NPC.NPCManager; import dev.minecraftdorado.BlackMarket.Utils.Entities.NPC.Skins.SkinData; @@ -38,6 +40,22 @@ public void onEnable() { return; } + UpdateChecker.init(this, 85558).requestUpdateCheck().whenComplete((result, e) -> { + if (result.requiresUpdate()) { + this.getLogger().info(String.format("An update is available! BlackMarket %s may be downloaded on SpigotMC", result.getNewestVersion())); + return; + } + + UpdateReason reason = result.getReason(); + if (reason == UpdateReason.UP_TO_DATE) + this.getLogger().info(String.format("Your version of BlackMarket (%s) is up to date!", result.getNewestVersion())); + else if (reason == UpdateReason.UNRELEASED_VERSION) + this.getLogger().info(String.format("Your version of BlackMarket (%s) is more recent than the one publicly available. Are you on a development build?", result.getNewestVersion())); + else + this.getLogger().warning("Could not check for a new version of BlackMarket. Reason: " + reason); + } + ); + getServer().getPluginCommand("sell").setExecutor(new sell()); getServer().getPluginCommand("bm").setExecutor(new bm()); getServer().getPluginCommand("bm").setTabCompleter(new bmTab()); diff --git a/src/dev/minecraftdorado/BlackMarket/Utils/DataBase/MySQL/MySQL.java b/src/dev/minecraftdorado/BlackMarket/Utils/DataBase/MySQL/MySQL.java index b7e9d07..1b80543 100644 --- a/src/dev/minecraftdorado/BlackMarket/Utils/DataBase/MySQL/MySQL.java +++ b/src/dev/minecraftdorado/BlackMarket/Utils/DataBase/MySQL/MySQL.java @@ -68,8 +68,8 @@ public void createTables(URL url){ statement.close(); } }catch(Exception ex){ - MainClass.main.getLogger().severe(String.format("» MySQL can't create the table: " + url.toString(), MainClass.main.getDescription().getName())); - ex.printStackTrace(); + String[] s = url.toString().split("/"); + MainClass.main.getLogger().severe(String.format("» MySQL can't create the table or already exist: " + s[s.length-1], MainClass.main.getDescription().getName())); } } } \ No newline at end of file diff --git a/src/dev/minecraftdorado/BlackMarket/Utils/DataBase/MySQL/dbMySQL.java b/src/dev/minecraftdorado/BlackMarket/Utils/DataBase/MySQL/dbMySQL.java index d17451a..b52e6e3 100644 --- a/src/dev/minecraftdorado/BlackMarket/Utils/DataBase/MySQL/dbMySQL.java +++ b/src/dev/minecraftdorado/BlackMarket/Utils/DataBase/MySQL/dbMySQL.java @@ -48,11 +48,7 @@ public static void load() { public static void save() { for(Data data : PlayerData.list.values()) for(BlackItem bItem : data.getItems()) - try { - addBlackItem(bItem); - } catch (SQLException e) { - e.printStackTrace(); - } + updateStatus(bItem); } private static void loadBlackItems() throws SQLException { @@ -87,8 +83,10 @@ private static void loadBlackItems() throws SQLException { } } - private static void updateStatus(BlackItem bItem) throws SQLException { - if(con == null || con.isClosed()) con = sql.getConnection(); + public static void updateStatus(BlackItem bItem) { + try { + if(con == null || con.isClosed()) con = sql.getConnection(); + } catch(Exception e) {e.printStackTrace();} try { PreparedStatement preparedStatement = null; @@ -105,8 +103,10 @@ private static void updateStatus(BlackItem bItem) throws SQLException { } } - private static void addBlackItem(BlackItem bItem) throws SQLException { - if(con == null || con.isClosed()) con = sql.getConnection(); + public static void addBlackItem(BlackItem bItem) { + try { + if(con == null || con.isClosed()) con = sql.getConnection(); + } catch(Exception e) {e.printStackTrace();} try { PreparedStatement preparedStatement = null; @@ -121,6 +121,7 @@ private static void addBlackItem(BlackItem bItem) throws SQLException { updateStatus(bItem); return; } + resultSet.close(); preparedStatement.close(); queryBuilder = new StringBuilder(); diff --git a/src/dev/minecraftdorado/BlackMarket/Utils/Inventory/Utils/UMaterial.java b/src/dev/minecraftdorado/BlackMarket/Utils/Inventory/Utils/UMaterial.java index 748a324..0ee9841 100644 --- a/src/dev/minecraftdorado/BlackMarket/Utils/Inventory/Utils/UMaterial.java +++ b/src/dev/minecraftdorado/BlackMarket/Utils/Inventory/Utils/UMaterial.java @@ -1567,7 +1567,9 @@ public static UMaterial matchPotion(ItemStack potion) { : a : null; if(type != null) { final String g = base + type + (max != 1 && l <= max ? "_" + l : "") + (extended ? "_EXTENDED" : ""); - return valueOf(g); + try { + return valueOf(g); + }catch(Exception e) {return valueOf(g + "_1");} } else { return UMaterial.POTION; } diff --git a/src/dev/minecraftdorado/BlackMarket/Utils/Market/BlackItem.java b/src/dev/minecraftdorado/BlackMarket/Utils/Market/BlackItem.java index f4fd32c..676e74b 100644 --- a/src/dev/minecraftdorado/BlackMarket/Utils/Market/BlackItem.java +++ b/src/dev/minecraftdorado/BlackMarket/Utils/Market/BlackItem.java @@ -14,6 +14,8 @@ import dev.minecraftdorado.BlackMarket.Utils.Config; import dev.minecraftdorado.BlackMarket.Utils.Utils; +import dev.minecraftdorado.BlackMarket.Utils.DataBase.MySQL.dbMySQL; +import dev.minecraftdorado.BlackMarket.Utils.Config.StorageType; public class BlackItem { @@ -49,6 +51,7 @@ public BlackItem(ItemStack item, double value, UUID owner) { cal.setTime(new Date()); cal.add(Calendar.MINUTE, Config.getExpiredTime()); this.date = cal.getTime(); + dbMySQL.addBlackItem(this); } public int getId() { @@ -91,13 +94,15 @@ public UUID getOwner() { public Status getStatus() { if(status.equals(Status.ON_SALE)) { if(Duration.between(new Date().toInstant(), date.toInstant()).getSeconds() <= 0) - status = Status.TIME_OUT; + setStatus(Status.TIME_OUT); } return status; } public void setStatus(Status status) { this.status = status; + if(Config.getStorageType().equals(StorageType.MySQL)) + dbMySQL.updateStatus(this); } public enum Status { diff --git a/src/dev/minecraftdorado/BlackMarket/Utils/Market/Market.java b/src/dev/minecraftdorado/BlackMarket/Utils/Market/Market.java index c1cf617..3b9bc5e 100644 --- a/src/dev/minecraftdorado/BlackMarket/Utils/Market/Market.java +++ b/src/dev/minecraftdorado/BlackMarket/Utils/Market/Market.java @@ -128,7 +128,7 @@ public static Inv getMarketInventory(Player player) { for(BlackItem bItem : list.values()) { if(bItem.getStatus().equals(Status.ON_SALE)) { - if(category == null || category.getMaterials().isEmpty() || category.getMaterials().contains(UMaterial.match(bItem.getItemStack()))) + if(category == null || category.getMaterials().isEmpty() || category.contain(UMaterial.match(bItem.getItemStack()))) l.add(bItem); }else toRemove.add(bItem.getId()); diff --git a/src/dev/minecraftdorado/BlackMarket/Utils/UpdateChecker.java b/src/dev/minecraftdorado/BlackMarket/Utils/UpdateChecker.java new file mode 100644 index 0000000..dcc4b5b --- /dev/null +++ b/src/dev/minecraftdorado/BlackMarket/Utils/UpdateChecker.java @@ -0,0 +1,176 @@ +package dev.minecraftdorado.BlackMarket.Utils; + +import java.io.IOException; +import java.io.InputStreamReader; +import java.net.HttpURLConnection; +import java.net.URL; +import java.util.concurrent.CompletableFuture; +import java.util.regex.Matcher; +import java.util.regex.Pattern; + +import com.google.common.base.Preconditions; +import com.google.gson.JsonElement; +import com.google.gson.JsonObject; +import com.google.gson.JsonParser; +import com.google.gson.JsonSyntaxException; + +import org.apache.commons.lang.math.NumberUtils; +import org.bukkit.plugin.java.JavaPlugin; + +public final class UpdateChecker { + + public static final VersionScheme VERSION_SCHEME_DECIMAL = (first, second) -> { + String[] firstSplit = splitVersionInfo(first), secondSplit = splitVersionInfo(second); + if (firstSplit == null || secondSplit == null) return null; + + for (int i = 0; i < Math.min(firstSplit.length, secondSplit.length); i++) { + int currentValue = NumberUtils.toInt(firstSplit[i]), newestValue = NumberUtils.toInt(secondSplit[i]); + + if (newestValue > currentValue) { + return second; + } else if (newestValue < currentValue) { + return first; + } + } + + return (secondSplit.length > firstSplit.length) ? second : first; + }; + + private static final String USER_AGENT = "CHOCO-update-checker"; + private static final String UPDATE_URL = "https://api.spigotmc.org/simple/0.1/index.php?action=getResource&id=%d"; + private static final Pattern DECIMAL_SCHEME_PATTERN = Pattern.compile("\\d+(?:\\.\\d+)*"); + + private static UpdateChecker instance; + + private UpdateResult lastResult = null; + + private final JavaPlugin plugin; + private final int pluginID; + private final VersionScheme versionScheme; + + private UpdateChecker(JavaPlugin plugin, int pluginID, VersionScheme versionScheme) { + this.plugin = plugin; + this.pluginID = pluginID; + this.versionScheme = versionScheme; + } + + public CompletableFuture requestUpdateCheck() { + return CompletableFuture.supplyAsync(() -> { + int responseCode = -1; + try { + URL url = new URL(String.format(UPDATE_URL, pluginID)); + HttpURLConnection connection = (HttpURLConnection) url.openConnection(); + connection.addRequestProperty("User-Agent", USER_AGENT); + + InputStreamReader reader = new InputStreamReader(connection.getInputStream()); + responseCode = connection.getResponseCode(); + + JsonElement element = new JsonParser().parse(reader); + reader.close(); + + JsonObject versionObject = element.getAsJsonObject(); + String current = plugin.getDescription().getVersion(), newest = versionObject.get("current_version").getAsString(); + String latest = versionScheme.compareVersions(current, newest); + + if (latest == null) { + return new UpdateResult(UpdateReason.UNSUPPORTED_VERSION_SCHEME); + } else if (latest.equals(current)) { + return new UpdateResult(current.equals(newest) ? UpdateReason.UP_TO_DATE : UpdateReason.UNRELEASED_VERSION); + } else if (latest.equals(newest)) { + return new UpdateResult(UpdateReason.NEW_UPDATE, latest); + } + } catch (IOException e) { + return new UpdateResult(UpdateReason.COULD_NOT_CONNECT); + } catch (JsonSyntaxException e) { + return new UpdateResult(UpdateReason.INVALID_JSON); + } + + return new UpdateResult(responseCode == 401 ? UpdateReason.UNAUTHORIZED_QUERY : UpdateReason.UNKNOWN_ERROR); + }); + } + + public UpdateResult getLastResult() { + return lastResult; + } + + private static String[] splitVersionInfo(String version) { + Matcher matcher = DECIMAL_SCHEME_PATTERN.matcher(version); + if (!matcher.find()) return null; + + return matcher.group().split("\\."); + } + + public static UpdateChecker init(JavaPlugin plugin, int pluginID, VersionScheme versionScheme) { + Preconditions.checkArgument(plugin != null, "Plugin cannot be null"); + Preconditions.checkArgument(pluginID > 0, "Plugin ID must be greater than 0"); + Preconditions.checkArgument(versionScheme != null, "null version schemes are unsupported"); + + return (instance == null) ? instance = new UpdateChecker(plugin, pluginID, versionScheme) : instance; + } + + public static UpdateChecker init(JavaPlugin plugin, int pluginID) { + return init(plugin, pluginID, VERSION_SCHEME_DECIMAL); + } + + public static UpdateChecker get() { + Preconditions.checkState(instance != null, "Instance has not yet been initialized. Be sure #init() has been invoked"); + return instance; + } + + public static boolean isInitialized() { + return instance != null; + } + + @FunctionalInterface + public static interface VersionScheme { + + public String compareVersions(String first, String second); + + } + + public static enum UpdateReason { + NEW_UPDATE, // The only reason that requires an update + COULD_NOT_CONNECT, + INVALID_JSON, + UNAUTHORIZED_QUERY, + UNRELEASED_VERSION, + UNKNOWN_ERROR, + UNSUPPORTED_VERSION_SCHEME, + UP_TO_DATE; + } + + public final class UpdateResult { + + private final UpdateReason reason; + private final String newestVersion; + + { // An actual use for initializer blocks. This is madness! + UpdateChecker.this.lastResult = this; + } + + private UpdateResult(UpdateReason reason, String newestVersion) { + this.reason = reason; + this.newestVersion = newestVersion; + } + + private UpdateResult(UpdateReason reason) { + Preconditions.checkArgument(reason != UpdateReason.NEW_UPDATE, "Reasons that require updates must also provide the latest version String"); + this.reason = reason; + this.newestVersion = plugin.getDescription().getVersion(); + } + + public UpdateReason getReason() { + return reason; + } + + public boolean requiresUpdate() { + return reason == UpdateReason.NEW_UPDATE; + } + + public String getNewestVersion() { + return newestVersion; + } + + } + +} \ No newline at end of file