From de92f646b5fcd236d90563d1f7c7bd909d9cb601 Mon Sep 17 00:00:00 2001 From: Jan Bebendorf Date: Tue, 7 Jul 2020 20:51:26 +0200 Subject: [PATCH 1/5] Update README.md --- README.md | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/README.md b/README.md index 3278787..59b6933 100644 --- a/README.md +++ b/README.md @@ -1,23 +1,23 @@ # YRPF Server -YRPF (YukiRolePlayFramework) is a Framework for Onset (https://playonset.com/) -This repository is the server side of the Framework. -This server is written in Java and need the OnsetJavaPlugin (https://github.com/OnfireNetwork/OnsetJavaPlugin) +YRPF (YukiRolePlayFramework) is a framework for [Onset](https://playonset.com/) +This repository is the server-side of the framework. +This server is written in Java and requires the [OnsetJavaPlugin](https://github.com/OnfireNetwork/OnsetJavaPlugin) and [OnsetJava](https://github.com/OnfireNetwork/OnsetJava) ![YRPF Logo](https://i.imgur.com/D8A8sJn.png) ### Install the plugin on your Onset Server -VIDEO: https://www.youtube.com/watch?v=cA_qUKJSUCU (in french) (Thank Papy Brossard) +VIDEO: https://www.youtube.com/watch?v=cA_qUKJSUCU (in french) (Thanks Papy Brossard) - The plugin has only been tested on Windows and Ubuntu 18 -- Install openjdk 11.0.7 on your server or JDK 8 for Windows +- Install openjdk 8 or higher on your server or Oracle JDK 8 for Windows - Set up your JAVA_HOME env variables -- Uncompress the release.zip in your Onset Server directory https://github.com/OALM-Team/YRPF/releases -- The zip contains the Java Plugin, Support Java libraries for Onset and the YRPF server config directory +- Uncompress the [release.zip](https://github.com/OALM-Team/YRPF/releases) in your Onset Server directory +- The zip contains the java plugin, support java libraries for Onset and the YRPF server config directory - Add "OnsetJavaPlugin" to your server_config of Onset in the plugins node - Add the "java" package to your server_config of Onset in the packages node - Configure the server_config.json of YRPF in the "yrpf" directory -- Uncompress the YRPF_DB.zip https://github.com/OALM-Team/YRPF/releases +- Uncompress the [YRPF_DB.zip](https://github.com/OALM-Team/YRPF/releases) - Import the database from the sql file -- Install the front of the YRPF Framework (https://github.com/OALM-Team/YRPF-Client) +- Install the [client-side](https://github.com/OALM-Team/YRPF-Client) of the YRPF Framework - Add the "yrpf" package to your server_config of Onset in the packages node - Run your server and have fun :) @@ -28,11 +28,11 @@ https://stackoverflow.com/questions/28462302/libjvm-so-cannot-open-shared-object https://askubuntu.com/questions/584529/libjvm-so-cannot-open-shared-object-file-no-such-file-or-directory ## Contribute -You can help us to translate the framework for other language : https://poeditor.com/join/project/FT7CELbHb6 +You can help us to translate the framework into other languages: https://poeditor.com/join/project/FT7CELbHb6 You can also make a PR for adding new features or fixing bugs ## Authors -Yuki https://github.com/nightwolf93 +[Yuki](https://github.com/nightwolf93) ## Thanks Talos, JanHolger, the OALM Team From ec872eba66ac36ee0d9fdd4027ceb18fcc9ff857 Mon Sep 17 00:00:00 2001 From: JanHolger Date: Tue, 7 Jul 2020 21:53:41 +0200 Subject: [PATCH 2/5] Replaced AccountDAO with ORM and removed .idea and *.iml --- .gitignore | 15 +- .idea/compiler.xml | 25 +- .idea/jarRepositories.xml | 43 +- .idea/misc.xml | 29 +- libs/OnsetJava-API-0.1.jar | Bin 59920 -> 0 bytes pom.xml | 41 +- .../fr/yuki/YukiRPFramework/Database.java | 71 +- .../YukiRPFrameworkPlugin.java | 1336 +++++++++-------- .../character/CharacterState.java | 460 +++--- .../YukiRPFramework/commands/BanCommand.java | 54 +- .../commands/RegenPhoneNumberCommand.java | 63 +- .../RequestCharacterCreationCommand.java | 63 +- .../commands/SetCommandLevelCommand.java | 59 +- .../yuki/YukiRPFramework/dao/AccountDAO.java | 206 --- .../manager/CharacterManager.java | 611 ++++---- .../manager/CompagnyManager.java | 374 +++-- .../YukiRPFramework/manager/HouseManager.java | 359 +++-- .../YukiRPFramework/manager/JobManager.java | 1070 ++++++------- .../manager/UIStateManager.java | 496 +++--- .../YukiRPFramework/manager/WorldManager.java | 1266 ++++++++-------- .../yuki/YukiRPFramework/model/Account.java | 403 ++--- 21 files changed, 3330 insertions(+), 3714 deletions(-) delete mode 100644 libs/OnsetJava-API-0.1.jar delete mode 100644 src/main/java/fr/yuki/YukiRPFramework/dao/AccountDAO.java diff --git a/.gitignore b/.gitignore index 0e13eeb..c58238a 100644 --- a/.gitignore +++ b/.gitignore @@ -1,11 +1,4 @@ -target/ -pom.xml.tag -pom.xml.releaseBackup -pom.xml.versionsBackup -pom.xml.next -release.properties -dependency-reduced-pom.xml -buildNumber.properties -.mvn/timing.properties -# https://github.com/takari/maven-wrapper#usage-without-binary-jar -.mvn/wrapper/maven-wrapper.jar +target +.idea +*.iml +dependency-reduced-pom.xml \ No newline at end of file diff --git a/.idea/compiler.xml b/.idea/compiler.xml index 8e0d29b..5fc769d 100644 --- a/.idea/compiler.xml +++ b/.idea/compiler.xml @@ -1,13 +1,14 @@ - - - - - - - - - - - - + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/jarRepositories.xml b/.idea/jarRepositories.xml index a468a99..8248677 100644 --- a/.idea/jarRepositories.xml +++ b/.idea/jarRepositories.xml @@ -1,20 +1,25 @@ - - - - - - - - - - + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/misc.xml b/.idea/misc.xml index f10f358..3ccb27b 100644 --- a/.idea/misc.xml +++ b/.idea/misc.xml @@ -1,14 +1,17 @@ - - - - - - - - - + + + + + + + + + + + \ No newline at end of file diff --git a/libs/OnsetJava-API-0.1.jar b/libs/OnsetJava-API-0.1.jar deleted file mode 100644 index cb80d9ee23df15969bc00060dc2fe24ad3eff8e0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 59920 zcmc$_WmKHovNlR^4el1)9fCt}cXt|Z++BhOcXxLP?(Xg$B)Gf#$KGq5GtS=My=(1r z|J)w^%IL0HUH#UqSyfNfl$QbnhXwh^Yuhee{+~C0o?t$%G9tLH#y^Xblv71v>CqIyh!}>3V|DF7{mQJR?zhXf3H}e03`#0?VIo*V8EN$%R z4J`o<4iU;aa;O4mytCGwjdhlEpjHBCMy;?SWS0U$;3&QUW}uMUxLQ~TTQgP-VNVB$ zR|2RsA>?l$KJo6RT=YgdC@V(i8QlBn9{cOdueZ<7av-DX6C}Pykg1VqGw{2p&lzj> zr)PG@#?JwS;P8hJ_n{P=V8NQX)cv#u+H!;ct+g)Lf5wZW|qiY0?j@3@>ZiP=Sbx8boJ z!o0`ZNwL0sHRn1qV>AM@iSt=nR*ws`CIhB@S!r<@!j}9co7Bm{ZRPNuu;xr6`ffeAR#vw`*9_w;#G(uFH2FGZzIOE$9U zmSN4O#yoDp$%wMoJEs2`w-xE`^E7?Shi^TUa0Uure{ObG9XxijJ^lXbm9> z=4uc&keO#BOHlj^DaH$kH`-A(i^MNvO+l?se9s@hX15+baG6Akzf2+gCz*JU(HFsR6Qz??hU* zH&?hr969Kf^dL!GI&82wvQlF&t9qkRE<{_eV?G3qSKL8f*fnYf{vd^+sw%B9PcVz& zb?(8gsR{8#!TTBZ9nfq1HtksSTgK7LFUvyvR@7?N$D*D3HRU4@_ZWm*HA5K-mW9fG z!yosQmmv@&gaIRYd-YgJ$=Kq`P3%3YMTh)?0WyyuZi9+2qv1~R*kA^vx1g%4K93C$ zWe*@6^`dpQ<{70Yb7IP24h!mBzp|_Fr)! z)2LU$QC9xCfys)g2C~1{kJ5)0U`HJ^EV0epI|?8gi|ocqHNj)^@u+ zo4RxoH-5-f?q3uBtD>t3#hMsD6pi(vXqNv((XxMdc_l}Hqr)G{HjeI=1!Y1CDk?4~ z-U9Vwy4;dMY{AUbXCo)247%N^IGd=1u#7te*_`Kj0O5v$3>`{sy zve(9A3zD8Ka-Vj5K)87%Et@ylXZw)x@!+zmYxez{JLjd6{gKaet;EtjyA{*gY*cw} zBF!3J_aa^W138=F%z2I&k{Pthf;I&t*%&Dr1l#SY#EbRI8)>=qDxW-Y(efrv*Zrx{ ztnTsdH?xh#FQ=-{Tz8gid7N+X)267G>4z9HF0_3o5dT#H(%GGz(jN~W76Jt1@7(J@ z-HxiUq2qu19mO?k6ag$=uoLT?(Wts9LM;oa`fnD~TN#B+F|L7kg8mDw5UNX(8afTC zUQ~v})t5a`7dhdkCXIDOzto|*9XehoI9c|$CpYvuKk*3j24ZbNqL8y5fHspH$Eo0| z_v)Tzdl|WSetNBDaeVReb#0!JG=P)K52>B!}dwNNLdBl^a4v3uiO-zwbd$psY3FWu4( zk~1I|1#c;Yoh;zqPN5DKL{buj&9-r0spQkQE`v#L{o)2M6 zJ146-I4_%OQNG^2Hq|0(wOpX$)AjJRdPaq*A|DK!E`CpsF*ZGue4luDSKQt@l?PLz z@*?$nlvrm0>6WEs2 zv(Kori#fnU{z7DO+$3p9)VP_x9p9skXQ+RjmY11MsNX-4Y~c;MFpi+u?j_h$XuOGav)hfC23Ng_k8kr7l-qs3NoocnD;k+YOW1CW+Z>C zy)n-73%>oU$J@70zd_O@`jFUj3UYdphHf)F1_?OU>%A5ZN3ALK@tQMn7a+D0%xQcf zNTo?<#fj+TZ;i~J*AsBXM+jbiCzj^Gr_4AA4q7AkBHnp`ZpEwzff~(L#cT1v93+V5 zt)NUrzGk9TrB+hNiMiloYjb3Lq6#eBaDt?xuvNhi(RAJZ4B?#ie&!=yXo0PJg%cq$ zT{s!dR>6#IFl2DGN(iCjwpFT{LfDh(XOOlRHGODsGX=v@`%vcJAP{MgS^9NL`IG7? zLT&>~kVaW#j2l46*WeS5h<`2&A8fyfV#AR5S2P7s4kasa(^7@>E9S)9uV1I<_}lMb zuiaqT)uowi4HihUyRNhyOcv5JEOfigjVfnJ%@zHVp4VuG_lM((x&oLN2OJ4WR>btJ z_-I&0sZq*qphiR0k585#ApcdFm6cy!Kt2@d_L0*4M{A6lF~Ih}e0f5wPT1_X4^;wZ z3x@{^wJa*E=g*STL|L=fD`;u`4&gyH}x?ad?=Soh06jTEz`VA(QLqXK&+B zK^SOdZ0+#hL1DexqZ;la`Wqx^-Po7WK2VrIWu#>keO&G)jjsAx^#StkARMtJQYW5l zCTO@}^d3kT39VL%q?5H@jvM!dMMXtNh_7HzVz)Qz>~c|`N*INdCQ?$k<<8g6TQ^$I z*EjXv-v;?VrT6Idm7dEn$H5jb3iNTtT;|*(t z)k~`Q+YFcL%uZ$Ek5xxy`yz4w-aO{X#%06-yXGS1K>9Yw7u?$g#I*Lz1(p^YO^`Wfj?=6 zwaS88L>*=lk$9E*Wy7(9*Yr2uzD{z(Uam1l=q_30dz&we_S6(`Fsm^!ER0O5mlE!` z;-_YDVISSWYrI!DoS;<(WAY?;?E%))n(>{hG0qv;Dq9i1Jvh)LM{NLTZG6*NBGW?{ zljVhWVAK^1BF+V@9e8DJksAWVY5%pZ>iu?0q#W}zu17rHAQxmiu&d8+WGiKB z>-3g8)}QI%tnLxmB>C}gO*0&S%xZvAw6P{>JqvL5rO6iID8weh;^ z#G8Z2_#H_x-Lbl{xv|UKNy4XSv}ron2!{a*K%tSf<~$pMj`B`l{HI>@%^P@1eO^9Ibt^6R5TI-4`rmml$+J0~}9>6a-0F+rH> z2#aULIoa$WZmp-+*0{8Zvq)nXo!7_r!Mp- zRL8TIiFhaZcdXdQn3*{D%kL&1fJ@bMD1L4sAK*xHftF3nxA3Ru!dfBMxo;k6MzqZ& z2`^V!7=;jfUfgTelySF>Gvv?dQB4b>O)aY(-LpD|y$!l$qbJCGf%)N{fRR=ZBIy)k z;I%wD;AT~S6H_huteyKC<|yEP_nLl*O|wMGJEFG)u;g!pu($@dTTP}Equ!9#9+bC^ z(QzO`xJakjtAg0=Zrj?rXr;8z_mY8$pxw(Rm&xmiE3Z&LqFq&ZuI{LQP3Ybuj>bMi zIhgtIo~7>k)Utf6eU|>JTgHI7IHxUlbA{d)5kPBgA~Sc;Sij{}8q{rGK(3{%<>YUZ z=Gl7A>iGr-$Es!BA^s(AXjW&4%B zeZ!&6X6m_c`<1WVXXWw@yXNy&t>Zgh`#!QTH!mUr!aD+v&Zm~1sD)|lJ}85?GRJ+N zYJoBW0ZhKh)f2V{&<@Hbf*vp)(kM$Wn4i;@0|&8K5KpGO;*&%2CX8oM5S~svDCSq* z&>6un=S9Ewmq$Fne{PTVc!28>mFcMKk&R{!27mH>U<)xr$&JdaK2^A_2R|b^XaXUq z!KC_~3`;}aYjBLvCV_@UPri8;Q-tL4#NG1a$TgnNQ#iX?AHT#FRiB|H2JO4)6cIEl zh=+1MFZB!oIxs3co{k(DjdVSh^lNt5#+Hy6l}QVzW8kwvM^k5HuRCfO-_=#Jzle5q z@U~UYbU;679ZXpDufYB#K0rH3GE-Q%(Ip7vB?yX)VxN$cQ3N>-mHjM(nKs%DYN)7S zNQ}GzX*?DTnW$iBHwG#!jNrMXAR<+TtBre_aR}5A)|sWj4acJdH`Xn+XuD*xE}8UC zltML_S(-q=F>lSu4i7nYyA0JYiAf{4kS%xoK@yqx$mqQAY)29BROR?s$^3j2suE#I z>X?7rqJ_|r7tJ0ic*lrSW;de4DqvY#ip=hkRk(0oa`I#i zuGS|uvrrg}vl0hytRn7tR}hxy;=^+>vXlfA#=}w-2uhYjqws+45QW-oX>F}a|Nd19 z8g$yW7c4jHlvrtc_{1TS0mm-lHG^D#J;u}JvXcT7=Jh?7495-VmTqY*NsV~aBu=+S z%d-xgs&G6VxTmc73Sdf<)7ObsKS#pI>iSe-%Y&2`=fV_TZA-j5TS`F!qys&q+C zY0zyT<^>Ga=NphGo0UKw2N7EK4t5WXSg-u!`B;Gq*3COt58rzF&#s> z#W-V~I<8^q?liWO*RGbXJ#&r4&dPWBy-so!DX=D?Nt?$+5DSh>5J7=oAUDW4 z^a*d+HWG!s@n>JXNImNPkKCHwOA_`Fk9y7u`X<>`9`ACT5_)ABRzrD~_Cj`Fp7S9c zQ!1P9q@>VV{4o)%QCVkRvYOzIK*D{}s4R(cbl8eKqAXOJJsa%h@a)HKh{U;N6T_6GQ3du>SEv`Dm(>|0B$h83829WXC_V4z z!lgX)>*^dN?9t!E9@85c0FvnIn%d#eHJx&B`|i-W#@OHY>2IW_14ADYjOrxvPUu)z z(`6ng%{m|+Fk~Md=O=$U=Dli$ehsNQ5T6Jqj_>|?iF@e**_kk$g52{EaLZlu;x`bQ zf2o#h7oDkrV#0xY-_O0(?aE=@N8+>^X+WDA{1u!!=G$}z=vr>PUJrm4j;~QT*AzXg zd@D}Hvqq3Lt4h7@Goac`0Pvbg`)ibNh&kX^tcEzCPw*||EOl<%|NXyfB7b0E5pS&_ zWgnr=?Z?6SHzCiTg#-adM}VQ(NA%+;^3Te`A4w7St<54IBqSs%q_s07xhUjz+Z@X4 zOIzJouJV^Mo=!^KAsSh_VM$u4Ik|C~VcL>87g{O_>4_nTEA4L36L{Kicu;+G&Jef5 zr#A_Wl3}uN`0~RNvP`OQ_%WQ+%y9U&Zv?`o;>H5hB>uiZg^1pxk`7_F$Xw;v*iC-d zQem-5Ys?PcpG2lJa-e1g28KZDqCbHrf3Gw!);9!cj?C}{qwE>#fBy z*eP`V!VJ~!FycG?*n7YTyTpi0*kzf_(O+sURxo?f>pzLV?jAPH#;35uam z1=0No3p)0!;*nj!TznSh&I&W!uAMg1GCX@oJZ2;n({_{&`oJrOi6X*-$|La{gJy`K z&!DBGajX_^u^hP&0OTVXl6ro0$3s%gqj}Noh9-6}G&uCf>LM`!2ZhYcIm+IHEO?cX zsR(6&)Rp>TwJ!}kPKpPGwgOM-4V$(hC8f_VThWO1-^qx9LAdbs(Dj7s26{joYo-&? zVAuU-idED&jbvI91LOog1@GO|bfS%Vytg|?p5N;phWfL^l8g8_&KnoB&4`~-xAJyb zXwMYQg6V?79~-+1g8L|iIFCq!X;xm#^kb6F>A#5hY|tcR;cSv$WxPseMYpuk zi;-RTOo@z^x3B&AOPaY{^*mJ~R!82&Ej&X3Ekt0!WSfb)aAal)v6=wex0O7~!?;TF zLUry*3v`@NqH@Qsu(JsWtV=ki1sKC^9>~iQfY>k>jwD}KWh~;Q_%JyEO*1CzJlDtCaClGKarZA?mf`TP>_#*Tf=tIRy!{hy%9lC%_ zSN#M70a^GcFaKSM>Q6hAl^6PB@kvmzQkxS+^ET0dZp9UFn>8=X1$_oBXQ*o^FsGWX zX@Q`2EV~i;F^*(V3qt{8|Dbl7lvzpm^68B-%7q-jj_00uLDbCRvd1^+V0t#@`S5VY z`yE0Z!f2|9sO%$yfmf=8F3W5+eD>3X%6!MX1x4=Iv~ioS(&|C5oHRaY6jo=!ehMwn z{Nz6b96F}_W}18kL9{yc8L_PFcod$C6E%9-pkgjsU5G2FAd!fMNtfli={qt)9@hZl z1mkj;iA+OqH`jnXd60W4IOcUzuoMp8tR1!*7InMBiVeg(*`oC&<4E5wT{ojD?fg9W zk5*MDk{hc<&3G8^oNek#5x8h*T!zeaUGp8L5L_JVqozQrpcGw6X@VM7KhEE>`0kp&7kQB7VO3nuB#p=JpWX zuh=DjS&GYA+GXu05ygaQ!V?$)7cQ2Ai}PrZ^WSrU99&tS`O&5|)h1E&^P|jyby^Rh z`|Zrv2*Tt^-MF)9RHphZGucY$S{|g413FxaE0qLsV_Ql6c)fpHuUu75+PFS@EAdqC z$}ox#dgu~QlY9;KIOt7kin2NAZjUv-%77U9JeWuzgA?N%^R}Vz%+x-NU9&%u@D)o4 zR}=C*n#3RKX0oiCXvp-6sGdA`*frq%)4XO6BDe?xQljAy#C*|`J?=i%Tkm5hw=0^+` zE({xP<>|LVG>nykK-CLxfs&Jkq0p^*Xv)C+YUH?7(Muq3kW1cq_)K|L z>^-If>)4;ai_n;dr9z&yEIs9%*|czf|K~YBNVz_DB(x~JuuQl?IMKG<;lnyN zvMr9+jXzjwp!QiSp?1-i&&`;y8-`dF4jSc5;p)yzk#^Ep!70JLMpe%WwsNq`_PU`* z0@uOa`JRXtbJQ#7B1w!f%FZaanYRXXLBM?Ye3|ra_+D-P0(>^&z$dCeTB>+REt5%C0I;pECSN^^RxI&<2fB)zEw;I~77K$oJkzo#%lz$;o0t zfb@eAmBw!DfpWndeKmMmMrmM3(D8gmM!OdZlRgVAqT*f`|CX<%)nN(O>vz*e8Y7$8 zpD}Sp60R>I*S1kmKUaBo=~S+UjrtJ+QeEN{9(4oYn>#>@tobJy6}X#I0zXwugVjQ| z3sM7LoAR6AyWG#BzlXg_&9`cxTd&c9EL(e%-d+Sr`4&qdR(kh3y>pm&7**DhuOIY~{xW`Gu_v)B60XIj#XaRCo-hX5sjfJxFY4ZMiPVq{TDSrZ2<#-Oj^&>ix`ej-l;HwK`kOl!H*mZmI;zd_s`aYu#wi`mu= z6)O)o0ku}r%$~h-`-UA%?aUR;V-uC1F;iNl#Eq>9?pvfM0cP!vU+>XtZ(4;r%dE87 z->NzM(NegplldBw2fTPd!l<{xG2Da2NH5e`cJi{!I!dqQstUKcu;uN*fg!-RP_J8(={5jdxfF8euk-QTq?NDgOMVcgY@CqUwl4tDe zsOpGhwS?TG(J)6!G{f>l6a7gk=vY<#c#3zb!q+T)t_TEuo$o0TOIJ2~ah zz8n6erYxt7($A}>&a$yMhm9>>CKoIN#t~b*$LzOMlP`Yy7@qxDT+i&3)Nw7`UaXcA ze`=~Vmb5OKUk!UE{s=|&XI_{aoCBfGAepihlhasRFPIro&K+88@5o;M(XKBO3;NO4 z(lToE zk3@_2YrD-zuHBliDd#dC zJ7ueCUQ7_4*V^4hS_4Sx8-rB3Jra5ZzmxZQ=kEi*17ZQU0#0iEsW>Hniy~;Haw_S% z3AlC-qt^lvw9**Uph0UH#bgREdKNgo(8OG*iFzKGf&mgA=19FZHJ<~|(?s0!Cw~RH zX_7`9Q4z>itS?*|(&7(Tilv%<&*2H&8+;I#Gj_9L+_UYe&mAVcNw18pT;RGbt&%eq)(gCc>Ls>qWg)io~WYiG(j(|6~zL z*Y2)R3f~8DSXa7J-z>r1f{GJQQ#ty~X^2r#vwh)BU_3{lIhu6pmu%lGIOl(C+3D+5$)S~~Pq4$pBB-S&%?iG78em=+khHIid+Cnoe zZrZCzI=yf=*fnMkki7=lB@i=Z;n{w`dP-yV%>Z1OfDET_e*1Ecba{7^>E`Z zcgi8}rU>wPC-uyhuN}da%W@5 zY5XnpK7uq4BJ3wTL#!w3qb@YfYD~^m;SCj~mVqoHkm1)Qy4_Dk1w6%jKjvOc$V?e& zb^)uzWL}XHDTByVHvLwL1pTK0-#$%g_u{io2o^Z&45u9L%)|q(m3MB4NMj%sQ(EaN@l6J$4Get?b6d-xvpI<}kok26IwbkwqEm zN{S7mK*`OhT-U_HHOY}D1Qih{=Ummtp2++p;==9`y+Q({cF&Zf^Pc- z^3a33LN_t6_8qYM4sBH+%bcR?(;c*699}oy+>yG&Hsi#l9HC7?vM512T`UqQJ5{XW zm#+N9g*v*!90hj*x<12T71{qNEc=PLm@fe$>TD1U)?8Wu-Ar%A2vwfXpUXHN_|tz` z0@pbsU>SpYFjXI-kb9(9%eapOa*ph`KkSt1cd+VJ$Xk}4v)qL>e1H64eJJ83U&_`` z3HVV22I?7r#vwj8_1j4jPplzpZUU9fRng7EO(Kp68Zpr%I~lK9X@xfr1LMg3&HyFq z_rZ&%k#`uL5Y-HTv-nbxaw}g&kE>|LuxWy)Z1vE!`5UNi{1urKo~~;7WvD@n+WZR} zn~%AP0Gx?F+19EKRfUIkq&PLC#SZQ+fiuSzk8!BDrn_gu6 z(N{vAq`QL;!Xt7jf?31DvYQT`MEiQwK6+a;RGkCtir!)8`7Z?g@}T@9;y$^Llclzu zl#gY^wHx^Z=kNdKRmsZd02?2<@!N8$wvbUQwzTLeOeN485myh|;?2#y1^}&b?M+4)W~SqHJW%(W2TkHxaA;|g~42K*n$ROl9VoO_I@@1USos0K)-ZsP!d##7gqZxyv_Vd-*;OSo$(oLN(COc>V#_4pOx;VE`U|E$3Zu^)3|% z!r}*cG@{wEo@`5t=i?VBtpoZ}%1y37>*((QTEb~FEJSSASFPe z--=dA#PhbpSOaH#xxYBnMigNMR>-+lO{2RAt>(Qeqd}3Chxh=e!28!~?kDV$14um^ z{t}1d9MM_P{<36*3YA$}ofDlLOPk|ocr|JpPbI2iEGJ!C4`Rb${?iFyA-gyZn%-p# zhQCdT*qt2L{Eto7cw^3k0?BvfZwyp?mjNv;4+!Nxo5OT5Xc*y%zTCi6h4aTS?0Hz5qWe2rXEQHvwN|4gxWR zVLF9I?oFZ;EJjip%lkktl%Nb;ki16kjmr$!-idd@@H6mN3;VNxv!&CQe`^9di>cA4 z`A9pV|MRp{+1S;QMfi_Md|Y`=_Md5IJbj%M9Oc8izn`PlNvQ224M{R9FaUf8?yPVv z2fm@z#996smd_tC$7KPIuPCzZ@&Gd|cHy&NBWO@b=^`}%vi5T*y`(L6 zTOAVdoMP0A(4~OQDPt39ClZ^Ul^Z^4r=4AniuftCO=oVug!c)t@ZQ+YnqX$mgW z4Fl6$a85?aK%qY_{Ix2_Z@|XJab{?yvuzlFMJVK%+MOnz;B=)3FfnxORE*4!_l;3` zg&FPVWROnIXE&E`vHi{;^@PuAGi|5<-K?SHoJ>jEl53fu<=<^I$Jk1FlNBabghIX+ z;~o_7Jnc86wU`U3tGD^aB|U!EWoAiM7o~0CIPSM1vMOedit@u-agART057 zc!7SMD_c%pP1!uCE@MmAO@XnfP=AnPQXPp9CO2Jmu$@9@K3l`{4)L!U zpxz{YQRhdmQZGCR$lvV~_!I6>{iCP<&lFJALJL;~$s1D;vj=onwJf_qlN2*mT*@NB zT|iLE5*8YZN;hf8@dF8MTK-m&RN5)t`4Ie1tdr2xgq>YT;)y7QGs(?#FN1Uc!2F~K`HWTw(@%E4h=Y1*(jG+b9FyP!je&q7_ZczBPJA8@M5VTpE!K?7+9LV1%V69AF=0PTdHl?*Y1wz#?>sF~r&Q`7YIF&JyzRE-HchAa6M@Nr zCcz(n*D95J)r*9)Q9tpj(Da%kJ^Z27IR%(9|g8-`DCdaf`kQ{S*s>Z3LhCW!RWkH>!wG8Aq>9I!n;eP0v4TC3BDT%6Iz{N zjZ8U$m_DD`Zp-P|arvaiQ7^}0tzDj+v59c;Ag zjL1n-qW8OfQ_6zM;}p-{F>~UY$w7Cnj7;3-nqqi2z zsPV44Wv01HXNGZSj`T>=)|3-Af@Y~W{x^U7Uj4S5TsYb4uUSXmS4%T4xUDk~=IF0Y zNVlFT+oo8}<&a!3cIM*4uZ5UVUIHDq8wb?3zotOwspsHaoO$Q z&Zh=@ErqvjAiwX(QyzkSS5@zjdOwfp5Z=JlA%#L2Rx-np&2iauNj>P{c@;CZLwZ@= zAUjp8!am;y`&Nf|i7YUU9~g*aFFRnA#?k*hh~MtA5oaAj0~>>uWC>kg!Isca!3YwS zILTIS$BQ;>Yzs98F&gzTdN9B)V!(GFYKp95TKEc4J9mThRhPdX*Ih~y6|37wNHVWJ zUbNaz#S9rT6GhD8L3xMktFU#DrFT%<&}22)6>@`!w=aW;H~QH#m-ImzW48?;bX7nA zCAePZcf|sDY<$<40}7=*C@2p)sEvZd!I+x?mv?i~Guq`kMju+eh$a$hu((%gFeDm* zR6V?UzEfC(lxCD`wGe~bRgZ_bE{YRDc09tM z?epIuv_EFVM0ON7_&yKH*%Dt-bznXUEv@lyQN&C>pvlwnOWkz-yAzJdna=I_2;AE~ zb{ew&XMww#jlHFjoPqgAr}&?qSml>Jsu&V4$*8V|uAw1r4;g0MZ&xzxVc13CX6yxU z-*9|saE@rBii}_gx5avHj!T9e+$-c^xIot-sGU5;o3ThT1!}3|AIb{UC8q9$lbpP3 zsgL)ai|-&!;C#Mlq92Iu2O13M-p@sQ=yWG4nzj*mNH;;ooJ{8}GV(j zaKaWX*LDKM4#yozP5wSCj|blEwHfj{E#7oy+m$}-bYpcqv|X+qs(Gq{ zFZr~=S2SZs2?WE^Jb%W=|+i^X(D`*PVY3u}BdX@B3N>GX*44TGPRbQ`@)D`>)l zq-UWequivED=&@tz{7UIk#PZ4qe9g_NOzpQ{onu^L5_$bWu$S6x+)sHR4HWx@@I#?i`B!l@tuQ_F#b97XcqsHLQU(YkxZOxxwh#SZ87< z$okMZJQq=bxRD&Y>Q?2^06hX<*Sfr0Ky1^m*pw<3o=`t&rA9g(0tL$gi-^+MTs{}& z1nl(gna_tIBQaNx+dg|7vB~@!=uGuzDpgd1lQz_DhV)TzLhRTwwYq3ho0q$tB8{*r z)ihC?N6`a3v?M{>S0<=LF3y$=D3Ke{KH{T^ZP*N&aChQp2wE9@9no!3=p$xzqXo7m zsJ5hjItlX9RImNQ^-E@)&*`CJ&A9YY!dNGRjWuVxCngufmKSN6CzpqrTDg=82LhwN zS;D8bJs=hjkTd029`8Vnis}k}#H;4N`gzl^>K3?gi8wRsnfWu-0rD@{ITasby=%>< z^Cw9=a;Jw~Svm&TzvFm?q5B!!nCUJ?C(WfBTz}xyZ9O-7_-#z}%mr0ru4>^TTh?8w z&gkq3ud)-sNw?I&As2nhw`I>wGTE7XuP5)hfkDx%9n@r^YMtR){NdWBKx%bOPzK7} zU#UYlk~cv9X>4LH59n!p86#kBDt#}`nR#pFX;96^c4kdl)6WycVwz_V!~`$WSJG-m zWwT1X17eu^&&VwWff)JnA{Tk&#fEsm8V4I>bt~G4dnPn!paj#H5}~5>4*m5}V>s@;#?f1Y6#%hO=G=5elbwx%mVbE;XU;}&Mr zJX}NftHyXZaTm5y-#>zeE(cQl%gt{hRwYnyXx?uJFdt`M5E!;^%=Z(n3Saa(5Z^bq zH=2KrbK9JqJWSijt%8AUix|>FUx0VfbVGRuY$DW;=i%b2&aus>`dC?8Y8sjeSzRBc z%CO~G;C`)KW8|8XZ)_-RuB`q<#F$NtHX5J=orlrq-Ip?Z^##fv>~~T$R0Wdf=n*ci zIWiYKHqQ3;u?3E5q%5tDPHXux-Y=XL@azh32!VjF8~8|H)z}cLOA5UWtqdS~0*L4) z=*xdDR{=EPNak0S7pv?wN4cjU9-dCg9KT0Gza2UuIE}L)b0Iu#rcCFcb53D*r%6(b zT#tEJ$T9p(3z(R~2kb<-f8v~)<#7Y#mVd!PoHcfrI)GVo$Y$`PjlxJY87VUi8L^Eu zeY|ywEM)=;qO1|rF{@@v`V3x|*Z>&i^qJgbUWe2GD&=(FXxzx6-r*i$ zWd0Lc7?xrr<`gy3kz61%99h5+d|Dn{T!=DtJgt;Mj<8@dtU^FruDtJMFIf(CX}n~x zVgWo+5hb!*(g1404h3m^4F6)=YHs*&NmKGkd_c32>DXp}PLHh{rK+fRK>+-t3Uo!T zV}?3w!so$~x^IH$2^c99bdiDk<0Q43J;clwV@||5>ZyF-S4k4ZL>rzxZse2lH7lf} zF6vY{iPTQy8D?B;gFH&inkbugKV#&@*sc*8sXzA{gmAR$5V++9)GKS+@D0yMx8-vP zok7AJ53iZ63OWd4cg~KZe2s0LZ=zzspFPPW2GBJB8jc`EDS>Y0CbOh)X>^-Xrd7@? z4*#L(IXFvtQaGY}&A6d5pm+!m<55z#kscpOikjm{Z4$>V)#F`?$9ztLKOB#q{PX(@ z3CiafpRu;K5qS|;yp(-$4$(cgJr!lq(O&X2Wn+#$%%_lm>tbi$X8DrG;4l=Jx9<$G zwx1r8u=o=nCf-v5q=q_I9|DJ`UP^0_itZd>lHz;{9^*p=hi8IT^Ls=eU-e@<`ne|-A`DgS< z+hq5&KIq-WdbEr>_Q!^e-c))#jJ$u3Q5n7I^gtPTTaLdl8NCVh3>tYKNfS)(qwtYk zOPO8;zmaW9F?ZULM;&aSbTE5|!2x>!HX(Bh({)aA zpYAD77-CvJHax6{n%Fr>kjK;J{zQY4%GZsY8*Pr4j1NR@`}W&5WNvi&=4ye?!t;I_ zr6i8T>8eM(sj7~PhaHuUfn_{tWSdlxLTq+;{(i*si8N$x%x(nn_@>1!RrqM%?5R1b z5GIRNiul$Zo-;0rHeS3Puh&SlrwtwuB7C%M_SE!~G9@G_R)ac5lOq))QwuM{6e9|r z-9lPCpCGdE$9{ak?0k%Etll?CVm3Qg8J_$6Nkm1em==yy`ZETJ0BX08E(nwo-)-VZ z7Ns6LWvP6~NVa&Cd&!O-=8(D0>cnSt*0U9`%6RcLT$%ejh5hZ91@Zibh@077)@x}E zPQ4Zd;(AMMxl_9MP-QjIZIKYk2`7JH^Hnn(7g^&WPn@%-G&05Gfr>iqz^y<)=CW(3 z@X=Zmuf?^}S-ki-u8XOa_im9y{zQaF?bpd57E;BAYSK4dYeYy^`lJR={HwGL?2d<^&+GFNpO`42Ls zkH6E#{SPvdnAET9N%d~=oeAPrxP&~ws9l9OSzHJ#B920roPI(RaelQhs| zaE6=mtKPysiQ*M_dNvxH4sXOUPn;bhjiJdHiaMDRS?OQT#q&EN&yB+l<$)YAn|xPl zA#)qkH}?$`VN9vCcZohp;u!?|ZvrXj&xj#&*O#+|@tm8JWQzBL42SGGSFI8c3?X$O zU+6$e#F=~dI>}~0zeo>GIvsQJ`(KC)gnhrLr<__7`39>AEo>bIx~5ha>xTh0o$9l` z^t@tGpWvqo4p0qflbp4$Wl*b2@=Ju6t~L&|nbm;R#1mdjMDLJup)w0Z;?+_;Ai-!a z$QBVy7U|JKFU{9u&h132lZ3971P{%lT4d_e{|B8(pxM3NrLq_b)6*$kkd(l20OPT6 zChwM!aUEKnc(A9rH?l({{wN2PnH>`9!M+P+N@e6qMqn~2LFNdzxHD zSWN-&iZ3_Yiyg@jic_$}W3a>(S{d*^U?0EEE7IobWM#2u;UW#dV?S*-bj^|DB&DGj zS(R7jeC@D1omnY#9G`LD4tN{fb2x}eaD`vThEHWxxTBZ+Gi+*LCIkzkxdKdjjCvb4joP|r*-MXrKDiKOVoK+$_VqV<%IZ~oegg1Tx6{6=UjplJevz1TQJD36 zHozzpnm)@wTC=P^7xy+a46~x*QuC zf60>~xYRj=r%@m&Er&)3kwJ(dh>tJG8y@Th-XALn94m+^d#&=!`WhS6C|aH4C^HD@;n&@KbP-7fNKMWu(VTS!T%#=}O^dzZNQ~{2$KV zGB~a!*%r3N%*@QpvLuU{TFlJM%*@Qp%(9r7EM`W_vKTFf*JozlednC-i^|uc2|wCcF){#vIiUsm&PrMl**^SS5PqfjNFA}PTrv} ztXRSQAX)3T94Rbc$Fg= zF-G|)e>UQe0#znHAc_)JMm}JQB2`XzNFHXcOn0arzOD>*C>$QA8Q@ylcSbkKws2_4 z98}kDkVs*{(26d{I>3u!RvE!+Rj=KTmW;AU(XX!Ol22isZfyfhnP^)(L`bnPG`DG& zV5zBVm&`|3(JxoQ83hfyR0cMT8-A-a-ZXZI${cN*+OMdLbO;;PvHW^K5LH$M9{oa> zTY(~rtuo=-BZ{%oC7My|HA!>kv2u7t8T9}cV@DYmYp3P0*3#5_ zXMbl=Yy^?sx0r+3*YG;elJ&q0qZgos)!X>kygp%mRQIVl2C(`>+jW8_#^Wa%`z2*= zT90_i75FAZkq7Ji6&-(3?vKBu5uF*fpsL?N4cMCU1c~Mmof)(!sl!1HSWLPiL=g*e z<*dmWGLt}gWt`Jt7zNhHt;rcNe}yt*+VG&GfZUTYVbs7x^YZ5FUU1uee^9IGq`BdRVXS%kZYui3(9QA zhAu9&wt}WERJVdAFVwe!rZ-fuqS8OqprR5FzDQAJLft3^%dQaFNRBcgOw%eH*P@8nqPQj$hE!_Mn^X`!DyC_neo?{;o;KQfwtihg93Ecmi-kGM zyv85}sScYp>%7V!0_hgp8S}i(;8#*UHawJtO zG12o^(Ft=nxtuIwgWtt&*t;x^t3x@XqZh7P60UK!Iave;!^9{oABV=s;PbFEs`qF~ zmDs$kj4QI(|(_x>XbL*USiN#2104k_TE0Zx|#{PJethyi|^F6m*bD(T@$e!`6vaQYhH^ffCIPwc=c zIe^n=0;j|Ujx6A`S-@8<;Hwt!b)zZ&Rcsy9b7{Z+#0>Dre3y^m zB!OswOvzU*ns^tEfnF@$oG$Mv6E$3s^*JtYlO%#Gdr+%#+0P#O(xX(Jlk;s@s z)?q9tWEMs>Yikn2Y3Qpt=#h|C8wlDam|z>^djG*Jfi6c@k=xY$FVYo+Xs;`{a!Uv46`1wG-U`2n~n) zNmvvYi^8+do*7Ooe4I%UZICJd zY1oQM)Ei1^c!g;y337o?M?cgIY4T3SUn7?!{ajLT>>C;k?`gs8H`qvCaiX(!v`9Wq zfrul9aCd^B@*|V<0}n(gK0Sd+Tz?ij%5X18p#dI(iS7`lm8{_6RtUvym-zdO;OGY? zWp~B^smtF?GhUR+9)uxJ+iCg%4?60<-taJBQ? zrXSRcm-)6-KezKK>vhB6+Xs>LwH}z(+sXjP2flsehXL2p2Z;4UFFem{-oUg!rYrdR z;DrGHD(YC+0?4<$I|1%9c)9?e02g~PeaviZE|?e4wEloTS^LyAB|U8ip;y1LrQM!*a#;WTt{ zW3Oqd()O$XbS|>|+UnY5tShElZj$;B zH#QQ2Q98T+*=aB)l1wd2`k8=npI{%gGx)!dk)6`aZlF2nE-w)3Ny7+1~OIx2U zn`by2;;Mko!-h*t@0*YZ?~d>`;PWoqRa-~*R0{E-Z|y8OS-N8n$`=`tI1`7LPGk4G z9WP8IM$^kDb2k9+O4g5s!l`>z^H?eJY_U#_+f;7`rmI2je(KvKwzsdIaWPNG+hG32 z6p0}c>j~M0lGjb`efpVtZu2ff9uCCzsZFG0Piemdx`M93e{xuW92t|nphXf6JyH2) zUae+IjNB0F`v_WVE&qz`6)0;)4T(xm@Ljk5f^CpNq8vMhDYiqJLFg5=Sfvx~d*hfJ z%XimGrW)xT%|-jNM|mO9PoBXpo`SIJI5a~sp3?k^TdeyoQqvoiiP1mI92Y|ML@jDX z#!47pi}qDd@#l!xhgb)b>vQ3kLKOXH#$Ti-_pG8_kC$1isav^8aNIUfgA()BVaKMS zP`u6GebXZu5<_05&o&_=dA59y>`!5ZU88w*4$794 z$|{x`6^HDymIsPivn~}miR%`F@#{@b5y~Y&MRF?VM5oHl2qQU_+x^sKmd;G)U7_yH zUJn-Sv^30%<)ru?SWTc5spSXiY)|CcDUMHmf2|707@Dfq1X`x$|JpJ|3~UU{O#W<{ z-yKoakoeRx(}o_&gZc&#g2nGx2%_Q1R=GHYV#_QI6|nb3Qoz|Uf>?;+s4PSx(Q&_$ zNYi9lH!_hxD^pP|KP9|^(B{8*8Y=gRDK0h1@yq4)w2FW9JROnyi>^|W#V;150}7xg zLw${#2ekx8%k+Aic-){|-hQ>X&3t>UZ(V4v_2kiA==J@mWz5f8*L3Qs>i}7npJpnN zw!o4&o|P$f5D>6wS|>&(phLsgn7tV&RoUn{=OmfH?=O#KMmfiz|>i zK*U~2VAaAApPe}dnVkPnTc4v7@r)HX@SYgYmMA7v^(IL3d9NC1b6^c^0YE ztx&-o`^G=#feK3}S$g_{;9zwdHNv#jaB{mo_iGj4RtWAbP>py@tLHmC0hV zI(R#FrXlW;8siObwz+sSAKO!*ZtxiVi)esxfjO{!QQX_=epWGAq6dc5_6Pfg_vu#5 zFxK}N)h?;Ufahx8de`rR?3x9t7Oh*SY_GrlaihBtrya&mcyr#Nx|g0$(CokkI0!c! zt!q{p>Px)Wjr4g(8Tk$1sdbH@w27Pp>HOw>!g~vP0~@3zb_*wes3+cxUYlh1N_d~i znxT}KG3gOE(0alB^b?hLVuVerCp&05yfY4kp8#+bDd+k|%2@nlG$y=sidIZMWy8y_ zqi%0RGa51BM*P^1NNl64QY~LV_QpT`Hs)y7d`H>n=S^heERcz_P*NY+-1hj{q{{eq zCf;d+k&#l(wA4?yme=Vbk);I5-~zdc+T_7N@%8dFFz1#I%&N94DD3n=X>fy~BJBtqGJQd7+aJ`aSxYY zDcwYgLuh1+3&3(*`})4fW{1oB;_pawUL*X~Ql;_^t7?Fjdj7wv8~Y=M0$VTtY^Ksq z8_H~A` zED6AwVUfg`ey40cR$fOrD?K1QsuV}u6cgBFjpF&yl0#2U``~xQ)9V#BTGS&0}GT!G>twebTL;Mw0Kw*N`N!B9K7(NYNyAM6|OhPhIc`sL` zI_;rdY+V3F&Dq!@IP5S-YMjRDkrY$|;i$ZDs~aV(7I)0SJYv79^)gwSJ$9R|erOIo zv|MF#t5JHGuiz>o0NppfY}i+!8osdxd(6o`NN}xE6 zVWXB?Tvmup|fik?+QvnF(b*Lj^lEx9rBGP~{djNai3Y|o8(fWijPeNO(y&pR~P zoYDj-wO<}*5Z=8hb0+|h>-OlifCYE=6%R7nIoO!eE(bDs$>r^~oDk&3YNg!tt&JoNeUz&!0XyrGDte*O5$I z@?+U1xh2qj3_t7l3VDHdixUV-GCgUeKT@=i`DNU3;bg&?*CFdZw1@kcPVC;a-KT46@a` z?N!Zb$mo?69wqpiHvCG?7O-sxwM4mtNIP@YucVE#twK)Hm3+m5tl|zkpry>dr-Ql; zFN?X|c=dI8>a&YVTdT|xUOeo89w)n#zz*B*9cbtWhw)lkpW-vm;yCcm+IxqoS}PyA z4VUgXl}=j}Wg_9#(l@lT@#D94sX_4HymC2{b1*Ek^-_GcsJ;SjgC+287JF6-b4MUlBqiMZlmQ+e22?JN_4UpmJp}-8M2=^H43pXEl zVKC|&=(~B2e6zhSyzG7s9<5w{qT97ZLzciX28B@$P3pl-m;H!caXdbrF+KfS(1N?^ zM8H*g>gKxsvpMuOZKDyC(jL3XXsLPL<-2Kmw+2o*$Nx3|7p!E@qGQy9cjr>O;~j1Y9w(TJ3}O6kBRK=3M8lJu?Q7^fNot4{p0) zfqp}MzIgh8G`<~JRV=ZE9W@MAl^!D_2n54y;{7dC{b8(j1nl%7v=mrso6vS=(^>jC z<|(2yT9YW&_W^Kx1FV;XSil%F=t8;y6XZoQNkz(yXG!C@2MdH^`dk9(<#3GQ()#Xp z5`^QX6^lq+&032}&mwF#hyG0;uka>~ohEK;bE?Hn-*o}AV=GvO0R@Ss?5N`+}To$%HSEzA?h8vDb*`dR7yykrle%fe{l|aL8 zt+*LRbGOY7^cVWv+)_T%`1uTynho2&xF)VPjFK%cmHi*(JH02b$P;sEr!iNh3Wz67 z_fs|61ocZW>``k|a#a_#UR}b4jGmF0HMymv;R{i9b+NZzpz*RH9GIG{O}7O)KT=PA z4S+^KzvmED11+5gYa02BQ0j-FPW?xIcUX^fI58uOhfLusSnA*_`2NARI!mGt_yHeD zXQ8;?yN70sE{3YT;Lx#8ehRC0DO`q`u~QOb!lc|=)SQ_Yo-i8tJ#w0$m9~A1Vl-=Q zq{ky_p2R?A`E$${d=cVBv&6%klrz}quWw@O_IYgN#Zmht)%A~d6RKmSx(0>GUT(UY z8JXVE5u1yf+#cE#0}V34TYtoNa9OVWV3>E6J>C!2QR+-@w$j9eb(Os|9QQ@I zx4sm^3l*!9=|Im^5>35Asn9L6>5}t8hMxK1rj6Wk_cu#M>dQ1b1J-^I135qbcb5E5 z(m+`|V-xHDdk~gYLKQ^vN!psiln#dmLy4fue?kF)@{Jb|G+0yyZ?Hs;x@ig~XCT9+ zS=*h9;vc%%9~S-|bl?^2;Y|oxrHRthaE0Z=Z^0HQ9MT+vh^NU-R4cc3a6L7V2&BFuVvj>>2 zJ7yJZMqoL48MsW`=Z1;UzpDrv{feQ4Q5Dr-mpV>~v8gdvwB__>xEs4VzzMqa6NGpnLDE4#Rya6nB3UlxV z+;MCMkQms(_S%AY)B%OX5KmmYkV#lxkhAG1W+GHoONDcy>6>#%xJXzrT!2t>dFsky z=Cp#1`5b^2Cr*bXKmAFpOv4kc+qm4cXk_7FktYaA{)Yv<1qGo?j}yIOiAzW)x)S{b zT~%ibo?DB0i`^#&q=o&Ejl}bK%iOUpsb&RQOL^z%UAw5*+rkjZFM+n6@%uvQd6WVi zBlPDBqM)zH?_bB=1_m#&u@Zm4Cmr%%eqQBlliRaR9F1=T+Fiak|Hb;#Lhz_t_h<1N ztQ%@P*{C8uzi8F=ln{sF8m=v2P3{5K2_z3O7Iybw0hVX%plxQS(n*JtiZ`%Ad5jXLmPr(A_5_v|BMiRcYba~0%p@U; z3EnKo1(WFxEi9F3)e7}4q41k8aV2Ix$5eMc|7jYL@6osnW#-OR7qogxQ2^YILG@) zDBx8J6M*FVlmaF^Ryq~V{qA);d^~ixZD@8Jd`dsK5^Aq7Iwek$ zd5sbf{z|I+aItHfDN~1va3g%-x5j<^XbO@Jg>cJiwJR`7Y#2Hv_I-t=d8~Wz)WR>R zxPjf@!(vv48Z`PbtW8$qVJDFrNJi22<4tpyWsuG58PlX32~DW{iNtdPJ=vJ7y_;a> zLO02ZF4W*FStDHe2R5oV38WTCb~cdrR}1thGqGH&7e9eglJSj*L>u@mcQ9;_7_7yZ z#`3}37lshGS<6Di6-)z4R=^rD=Au*uqc}ph>6G2Q9eE=VV&7nL2LhVJ2y)rjf1|Oh zav7kwTV3nhSrIn!_j4;B-R87WZ0XIZB2SHOeCm2m66I&)P{#qV*7gnkdf}9!WAkAL$SZ*t88qL+&(a+qEt8-;a z6U52UHF^|-c`E8+iiVZn<1j-3WhrfoiI|r(u>BoIX2@bbOH(9HX&W+0TYt5MZUj=C z3kA*uG19G%ZK?fh<6%$;>wf*0@4JY_O!=%BF^PV_twIN89a1Mo7{fRY`$BXEUR}at zfLtq19+~a)70o6aZP;CSfhKg4Jwj=o!np>ZZkNjZG~d+Dw`rUlrQql|I%j^Uq5^ka zz|d5iHEij+oI8)D0M1IM16X6W+N?um0P4~aWt(98I5ZWd`qhCJY!J7}bx+pwQqIFKDijWNMdsNr zi;UQl#q;OV7Dy*WYnSlHlj5(z&bvA?&Rx9iq9YFn%k_!0v6`^ljk=%}`uwqw@4G7s zuIx`e%OU&#ot=7r98L(F4;f#pE}A_UMwK6s&U?y$NR(s)*5%pmGCX*+@GI@Krq~A) zeZ$|MYtprSBqX$p_XfquoDPf`K|@UizA zHWh3xEM~gl>%jgp_|ckIz`m2$>rX7kZH-b@6z%BJmGW|HyHC#F8=;g25XAAdJ-T++ z=@#%jeBW{+a6NptBT11XSqWPB_yVFDgy4Bfu1^_`OEXTg`h)CS(5|nLp#AzB0-IWi6TiOq|1wH|1rDa12F86Xw>#Z*!E75bKCYSez!hHM>mZCUv+=bUl9bytK0 zwFYTqv^qV3#h5urn}ehsp~V0mMLHU}RhXWEmHEO5JL{+*j>ZY=v+Pmp(%%%-!?kFq zDRK}rCN@dS2h!KBODiU$8#3+>ykM7w!*HV$d5%(nS-3(Bww)_UuU5(p(A`%fn8 z#BgB7d;W?MG!G#j=V=(!@ zDAlP1lESxgm!fd3g6K>G|^a3~NJ?D%bWOEe1g1 z?|)ZX{6Ap}@DJ^oe+Dm`_rlt@LS9EgxLSoPi zPV}_*)F@wnLh>GLn7~X~TdoJ)o9%1oM^Gj~MiJTFVT;6!7iQgW>!!Ygb=nJ>Z!{Jo zN|ZaJ3vrBE#Umk5V7WAgDbj~Wjx}mzNC|2Tt&vTAr$jwiC^sV|-!31&u;OlafSu^t zfIqw8T&xGhY#)Nm1o>&kH?VMUGe@B$eGv^=G1+V0J8!X_E>KNG_btI3ajbO9@KWx; z1$h-tE+aU*_J^2o2{u=C3&yzRSim9BaG_b^1O01~DHxRArbUTIVRC~)Uvm3s2nfr;&Z}x&o=!!&TULp2(v|?!GLIGN-;Ff?Eb1<^>=h`e|DA+8W+9`+) zKb7A>n7&t#k40U)tUS=foyF9?YdOGfJl|;`$wHFf``fAACuuG@lE5CULcBLDeXOr+ za?#Nyt4ouv$ADzM(12=-tZf=$JsKSuqF50)$yh=AP)RL!?9pvb9l;_!{D<(KlL4h< z8*Y-14tx3F?@T$DraAys+Mu?;0<2K(+I^hCoRv-{vdV#thUhd$-n?}gwYp$80#&-s%#3I~ty2vTdbcXXrL zr}>Lbg?@d^anbTSsEl31zqgNjx(oe=8fJ@M79x9w90(D;Jz2>yy^8tWw5#@cs3S~b z<*%qgDVIAmP+hm2twYyV_B2}}6AvHZlo2BmPq9)O70SYGi*L+Ql&-WFYHN$5=AVg2 zNqJ3w@t2OvN#kePwNEz$P{Ik^PhUyrs!WFo|KdxFT%kmU`#$^;~-{Y=b z_84iPCIzynjh#`1(_;4Sj(wlfv17Q1%shyQLH(lG-ZR_~gTF2(3aDV(l(K0VZrP}} zDH5U1Wnd9;k_)LcqOw~ztWuzbc9XAFusO_WG(d-6N#5~fIl)g?c2m-MD5*_G|KjP% zUiD#HndT)5L8erG%${`eo@B)t8ZOEIX@l%CP@@^XZcnk^DqsUxXq`4qV?d}IJKH5h zM&iXC+(lLVV)C%N1Njk@Z>5W3$gWU_tCE5m09QuF!(1&kTF8Jcg|$&Wr>Xtx%v8NY zMi!}m{z<;ocB+XkBh*0(P-UDPhb1;}lSS8PBF#Bs+;7olay^vnk*&=Ah0%vea*IXC zC)L!Xw|I^!rebdXmiBpKHfyfa?_R!s#~i7jfe&)g7!Tajap#lQW9BwA+O;+hV@vjj zz}X~s1sWtW`HHK5U0xsOqbjIv6*|!~k71p1ve~}cSRzh+i#ADVwrt|zD)n~cu8MfQ z+D232Bf<_Xy=9d#IdqaHtzfW{w%IQFnG)!Y_uM18eZRkD;~i;X8Kpu zc3G-hq&>HwfrEm91x%z+O9S@PgnTHvKDX`&1Pk9C8mP znp_wRqc+j20pKwggJUel)3fc$5Ws~>Ba_3MedQ2ek0h1PPz(LtCU{M$T4YuO@G$<~ z&n*RQB3f`kAg2MVn5wdQo(vOQ2sm0v#(RE6Nlk87`tb~sj_zrOZmO*I(gPzFTggQP z5Ndh6s?UWO)Fgjtb~4ELQvE6_e&-Q?6MjaRS9EqtTIdHyoP}F7<%7Ms`K6n4+U5fA zrt9bo7A4@YsHyg=O|HYY)UN+NSbBCr)%}S7ukI0g>>!ge+` z2DZkc?j}Yq|0As8BiD`aSr9Ax@)eIJBrLxn;#aZ|IdOZeWzLMr%vwrwm=}8piNtqU`PX27U4VsxI^9pe@SOr2U;cLs@K4bL4)xKO;LypOoz1k^;H+wQ{RqBMF@~J z>#z+PZBe`7<$i0U)vfd8m8KRcNgtdOr6I3nL_WR%6-qG7Mgda zDb0=aR_jyuTI=bN@<}FQwDEvl^nP4M%8IzJ#3wj0ji-;)8}_=W5FK9@<@-R3&9ug+kTi`L3iN^LDe&R6NVh^CX5b-m>x@nXtm+y>cB6&7`N zwkW0U_lbLH$F0+UPMkr8BJCBVx)!>UaVBf`JM{^|^M-b{r)G|ayN-|1r=r?CMcS*p z#d4WA{o9G&$gMmN510<~0>(b+|7cyUEr2cR!gjW{z-~;S7J{OQgNuoiv*;g6d;g4$ zHA-4`C<;jLp&KxC-2f4bQ}DWa*$%|}n$ig3rFbNEn?X=JSib$abB#^dcWOemg!IQ< z#4B;^BRnW}aCpQ}d(-Jj@7t-#jJK!L7sOAHtF%NRO(D@SbdJG349M1dAggm$s$6@vIRla3P;s<3KY(nJu7*ozTt1&IARjL6Byt?e_Lurf}0cz%O zlYF_MFcFdKXj1;GMS;g2E=quWQuUhpC$(;F_QZ2` zxWNZpiZyPet`y7ezTu8bkFk7zr?b8CNV4 z^LH}SC!XnLN8_?W-mvcG88(9K^q*s6#Fk|}^|al)kDf89@Xt^1UOFD{R`NaAfY)>60Je;u; zjPy-zu~-rTKDCRLhv#;RleM$=KEegmDg4*0j0m!k1mO)sD;|T^a_2~a`7>Mt zz1I3Whj1}qa{<}Rog&1p{U+!fdj4zsHuCwG0Ysw>x!J}N@(!VARr=k!WWzoI#V`v) zf)y;qK{_6UOJ}T9t%178(m_6lDWjGaN6~Qh=-OWr ztkxGRrlnevLgLFqAQ;$%Iu~F=1`PnbarFm2trnU}A8u4m`y^sHcDMTQTo_`UO+P~lYTDH}(#IIos< z#OTbAIg0I5wM&&=g+&6K^gik^60ea6GeUI5)*a6)Nd2fy2!hxkH7@`W_bYqvTGY}-l}MwQ zAK@O-1D`rssPQmoE;&IqQv`fuK_e%?~_9q0uM zfl-F%KkBq7l%zffp^N+OuZ$h@4v zw1Gi;I>CoyqDtZF6EB)!P9Q*izj*8I-qp0HhyUy6>;l4kQ7*SLm7lt@(?XXT?-W}7 zzLm5!KU-vCl(ZXeX{uiUotWP}{9T0XDjL>HEO|2=_d%VZ#H;kqwSP8qW+bBEs0?W zRXE!DXo`k{kVW4xt#n_=Yta*yYL-=1nkqW%pz3o#J;jpPnz(VsMA! zhM_gkf3SZI!t(m{_P5sFZf)6baKI&P1&)8m(e)Sm2A(hfWa1(5{Zhas4gIL7nX_z; z#6(u$MeD`_v&-cbK`KmTgW0#h9jSNeq#mc3SG(N>eFW?m=XZngo?W!E?o9T1`}lc- zv<=mUVeAbw-m<<_I$?Ou+;BdjpHWmQzE37sw0u>w&LK>tDeo7~n$`Oe(^&Drlxt5i zr!p|dQdvEf?fB)}`)@*&FDWeKsP}R+10}qU?JdXX1w0cIynDDdL&tA&ymhhzzRH?q zWv|7sd>mcYT1c^jBXh_+6_|MGV!M5 zUVD#_G#?xpFcBfC{%|&aAcMWDr&t_#-oG#u-Ucm@b>J04)LN~*1|Rxmbo4huBWZrD znk(SqMgkqE;D3VKKeTLtRNDV6DEre=rzq*f%>$75TD_ssTs2hDdUbm9GixGx3Mfpg zxx_vpy=2LmchXrzgk3(HqJ%wi!D<736Q^9hPYIHt z+Nm~#jRs4#Mm31>t6CN#_W9!dJKqf9Gbp#&G!ymgNv_y{5IUiixww^@jkUf~zO!*S zLacZqeT}|EDC&yzDf~=o%$Jt6P3SoPE3oZqpOg>OyLG;RGhJtqoS0geLthr&c=$~{yh~jP4T20O z51he=X?fz4AM|+FI(z;0v+Jm`0L!dH(KVv-vMl5ZDFZg%_*PSqUFp9`I-`Ebf3#N+ zk}cBqLMe%AA3d}_+8LX-4@c8=D~~u)|N2IRW@drQ3tl}rXUDTcl-H5vH*}Hw4}%qN$cHL90bEzm9FnxIeGGRm)t@$McSP|@MO(UG6{gll^Al&9KYgsq2L5I~c}q&0A+;V9Mc$JX^DIXH*6K2^W_C( z;P#_%$t*J;xvD{p_8S1DOJLOc6o+mR|eur*fX_;*hM~3k9)8DKOQ^ zf|o-#A|T9@|J(OH2A*6Fp-2T&*wM(%afL3ZKmojN6!2>;eS%6a>ps{)DS{zy&wQvyid zx^|*vghE?GQPNj+bB@5`v0!3DcM$DZ6ZcaL>H8*F-1qZqd-&UMD?z=_$mu2LEH5V< zc|EAFfl#W`b5Oe3MLwCJ7YnWmCBH2;%ndWkg1A*vYYoyzLE^>b#C{~8-eB?f84{z; zcXn#phmOo>-FWI|PeIr9HwVT$4HWV8o%{7Wx%u<)PM@RlmgMbkvHH%4t9O9>6%r(} z1@=xrNWcOiA@*NDLeT^$9HMOCXlC-~BSMU#to$EmG3lpx#Lo)IcRym{f(hON zur##I`ibh7z(&Z8cFG?xKBJhM+49{D%BAX1B~!5cEM##diO<3Px*x^=#O@uaVABSK*}5H47j%QWOT$0*DXGzSTL!|g{M=Y z1IM>}$u#8O39gU*dFDqAm}@ELO}O;hi6`2}%n}_>nAj|T|0?^gy^+g`f`7bG@mjQb z!wt8TE8diWC83u1o3+Gxs+mkBH0akoecZ>REZyT`QOU6MZ#Vk;<9VYyR^~|O^W#wX5-H`3dsI9-HJ>_1wc5VK!bl~p$zp->BdjmJy zKUsQ=V!zxUH*_PF1YA%-;qC`KP@Bn9(a)H_P_o0iiSbPH^a0{|Sb1L8uc1%!{uUPk;l zQil;0fc4IB(x9z)sS{R+Z;Iz8^`SC2atInfu;f%Zlnw$`+AUp2y-Rbz;oafS~Bn2#HG`sMysp91v6mK%_HI+9pyIhB9_ZzX?d(UO|2xOanv z<-}X~2zQz#Gg6pyJH#7XG>HzQ3B)0FwbCT2C35U(>VXK zw;;f=T8u1O09lj{HlNmNu9qh?gyIG5{EVNgtI$u>tj#)oTO)nS2=cRePU&Vo&+n*b ze{b+$ymT7s0N%}X6~Ux$?%euY4*i~<0SNPT08k&3C3g+O2&$hvsrz9%$7}j+Y)h}#FBf#R z&k~eCiaps!8Gx?NIT0GcJzG)el3cvwj!XNZB4^AM`AyhHh+SbM)Gi0D+}5J#oHjtQ z40p)^_BRgB*PpwvU34<0VnOz0z1>zyNatMz64#zmgx_3 z12)Sdx&d;?Y~So)L_&=001BKaRCbgvQu#{@V&}$#d?~((Ud(*wx-9VyWJ>23tY&Mz zb4CFxD-=(cpVs8x0Bi5o;WIp2xM)+ysM1ma`B?T}`bTUNOF)0ib$(4{NNc+I1cLb0 zbO=tRcr+8fmzknr-ck{!i)!1MF$pt9m4anD9VnRinuJ=V4G|Z0acxiP7*!>y10txN zZ+&~e_6ELKvkNJ5bq3e0e-1Zw$-RqUf@>m`*BJ5Tr-!C`v6%_XAj$#)KXoiflZnuj~rwj3mT)o#v=w0w-oGU{Y`jJ^fCm z3~a=~t^VmA*%Z8Ullw$(yzffD5dKhCWLVu&wnv1x?I_yh-PABvC_y(%A87haA5d<8 z22XP$3UZk90|4FhvR=Mr?VLaVa6?pDwjdwM5^G$!<#R!|A@50Yb+S(Okw=7ENl49; zF7HsZ(J8ou$KUV+4Jz`p8L9OdrN$R!yJjon!@Nume4*X<&glGv$UBj5hbtpws+zKL z0Y}3d7iKq&3lqvC*h($;lX;R2BR*GcX9S38B&}_^i{wZlWh=@P26j;6no# zt1Ah;Bs^0a3C?+-<;~L|KVuTwf6&Q*R(LZbNxgWDu%L04Bzi^>uUNZCy9XpjHHJ~U z!)>4@<%GNn4ZZicbn?}TpACYBrc5hoJFA^U!Sxt4rr!fZWBSjd$o2yC%iYeF;;Z`j z7aNrOAqLBSvbujzn!8}%bk0G~sqrXA)LDE;4DCEAn1dG?5x9ELO?}yzJk6ECa?MT7 z$!AaYqDJ!Mx0+I!)Pl|2%mQi<@8@S+Y;03f(jS0VlsXpd zye@9qrjNevS8?5@EOu!wFiaMq6SVE<&uRogW~2W2UCpkaFRd@&E-e@+)I0umw5-b* z)YSm)4lIE6k`n(tKK}JE;{RobQlOZ)zH3^x>v_A9&8&|QI@ zFi+~-Io%rUgx`%ID()X1*2x1Myk>jQw ziz6jmThAvxAb-n@|52n2AVT;A?H1SVPL)C{7aY0C*Uh5NSe!VAAl$Ncg5dx=3?jub zQID-FC+m84t%Th6Leca#7hWYu12}V9!pxWt5gH;XT1fWN zLRGd|WSRl|qLhMLilzSDhSLG5K(sWA#;{&~Dn@rL8mgc!5M*F=Qo0`D;QI?Ybn7R) zjIPUql?%3`jh}$B6Mn@|mb)`m-~+Tr^T9*=%3;9b5nD!7tnt{@iRRX^twC0;0af9f z^EU3(GJK{16>^IY$B74so<-avWDnHCUHX*L3G=GRN>AI1_QGU7-QWi>MDZg$?>8^P zuhik}EK0$}xG`(sMAX8OPnoJw^Y15+jl#{8<;he2G&>l}vuC83TGvXcB)I-YaP6Nf z2Lb06UnF6d@@|R!_Cux^)5LI1B0eiIPXGUjx@@M1!zszdE|% zYD?g9zC#3{pE_X%AWP6ltSAsFRH>fDq$D2T+k~8y!!GY2dl>zkVX-hx32-SU0}JDcu2Rf z$S|VJvW6Zs2Nxx|^rTMbgs9oZJtwi(n6Lyb#$uka)Q>aF;-gizBNjgOw~XFaYeDBD z(7jawL!bD64d4Ht{D|xy*=C>9A!x~*CJQMdZ{a5i?ec_O)nMf%`^bD66Pzt_Y6F)!*t|t{xhLR|6)7oIeFd9=WNr!4zZPD+cNQoxnSN9pL z>ZDsET_uEf`y6<0AMrU%@V6VTo@9@TH7mxj1mbUrFZI(bV@*(oUf8oC-F3lA%=_*? zEqD%oyU34)w=^CY?DGzNs3GsrkXx{G!@lvFgO;puHKy7wej`ODyeaZ$InDW%4yi*R z?K7R|@mqlc&g%$Bd_C zdGoXA%smR*sn2Sr{W0yk8*QxMT1xikr*LiDkk)hR&D~+LH?+=fc|DNO1n++zUj zVc!RWiwX#?|L9Qsm)I%t|H+now?$<}l7c;4Ym`#_MW?S8EahPh1xTP# zTx;)dqEM1&JAgjHY%utYf{p^)BH@j;zwV%*tfE5ly$A6n+sWsg-_P$IIwj} zy8;jkF%X8vFFOgE1oOz7w-!)fxD)@nf6YXVP#ifdL50uHNh^GqpsdJmO2w|#jg*E2 zQNGL+hBLUlXgnB97)7_;@H1og`6}7BYp{O1Jv@3^%IEAVt2Fuv=cF`rLVzNIc-3mU zk7;mDHLl+;vj-FIkEdcT4o!@WIz4%S(mBZ&-s5YT%vEw9A1bHNb6C+*ix~=GccQyk ztGPE*tI&?o)wEikg2~R1GifJy&v7?61-0AvU39{Z%BroVvFH5|w*L7wMUH5Y!HJDP zkysJ=pNRnZWGVKQL`!{lrZ*oRaQ<$6kD;VMv?5MRAylioA%ZvkIEXj))1{i{%t>Y=MlyeTm)Jxh1Ujls7yfpYvS*V88F)Gi%nKS+nL{gL_8=D7BoACF*;^Q19&e z6U7gW`|kvblE{KNR;5LWx*uy>7WH8~v|v%X;y2rm;xVyFzf%ZOZuMs=J`M3Q(30iD zOg}8_FPG7?wc~pc73oNVGJWDf`3~=<|BL$~wwjP{XwIUd{z=2hz9T192Xx`!hI0V(a84St!w?8bxC-|7Pr&yK$#1RAy#BW!6}Eh zE|jB4*3D1FG(Gtg1S57w4F3pN2(}k&TILq?aOgd>uit9e>HYd0e4crYbriHl`PPt8 z$`yUu>yv=Lcm9CDQIJezAm8reX@mRLbZ+Y4*6>Y&t2np=V1}htP{q)M*&=cxyc%Wf z1Llpplw5m9HHe#Mbepb`rL;23qnI|4A2`~wZEz@NVs@Nb$_oA8#NX>sh9~O>tSg@p z>n+an;2^>ikTW@8T?g2+kFH_sqBk^@N(wUg9I~#Jk-6<~a`0d*sJnwjw5+_T4>brS z>~1DHyONUmtHkvv9XcnaJJBtkwQhB0?m!p!43ZXbRXHo5aCNCOh|`Zz7%P)78qci@R`)BDR-MUL=X>CK z%J8x)u_2T*C-3?w$fQ~m+FT13RieegvI_RqnKKkO9h8aQ(_p-6QKz8PnVdNvMAT0Z zYsj%2)94R?iBs*~ZG#%OeyT#qo1dEolV>vE;G>@4^Y^ zva_r9c-LJy;LQEb#+FFs1z!^~vv4IG&b}Kt`dsCayE%mhnQE#8|FIlp0T5l3Ylw`T zf2)h#u&PM6&*ibcy@c3h(#Kp;kW|yo}&Jct~dS zLUm-=LSJfvQ+WyW&;pGHL2ygYf6ioem(GQ%<>AJ|w|4AA%x>&WcRQv%>iRA}=T*`2 z7iUEq06Uqi^EupS_w|jL@#R1j*6N6Aa4JyBb)#2}vgB*xYiQ@Q&tN_9@%2lZeye4q zu|z<I)$KW+r`J}qPf?cbZTUFHW_-$WxAbf1iy3EeK77F6R(3@E?@;AXTLpQAtnbi`?Iwz%KUKN+{eTt+p zkQ3s`qShbvRn|y=DoTN67=SHacnh*z8bPu&fv;|^Omrk*zdf+y!G7#O+p#(K{T@Uv z<{YUtU}k9luTX`Ah0%90PK90|VvWVqrYHd?d}k&(sLWE}yCQ(^)mt)u$E>OT2S^F5AWYSGP^V1@iW%>< zqL)bFETZ{&C*;j?7J%ZDMqa1sDRTvUMr-t zTf%x4}=)nzWQ}%_b=c6-U}wAoIVk3)gTpK1tJmKVV*g@$r;G(7@29 zA7azqtybdCgEqKSAPXe&xKonXhQHv#F8Oo84*Ue;DV z=jr00iKXFCLk0Q_-Yzv7nts{UsrP+~BwEI2P$rwwktUn6@*nh}2DP_9SOlZKCbg9KnKg@u_)m5ra$xaw%Fr!EvR6p0vs?3hiZ(DSGet6(my!}&YVC!aUsSZT zgPLfeHPKo^IkwAh$g*$Vx z`JUr-;53JRJ-smIb=cwkKAuCXcMS>0Cm)YsOTx`ynA%6g;>Adx56TIu7uCk360di^ zCk#UIbDt+ON5TIjLn9gLJ3MCO3Ca`71M}(xs^q7DVk5-c7$g0ty?;(~u(){_B9YCK#0R#T;BQgs5W)`;k|2x`&Ud01e%`%iY z7?fTS5wVS)_R*m5Nn3<`U%9&AOKi%wG&x$Nq;I4eTJnFm3QR=lPN2?mgG~(7l=XZc z*lfLj&#}t8G3W8l9qK3$Rew3c0a)cc=_)Doy`p1BiYYK8ocsYik}#O_AsHdl5MSbI zpiR2%_T)YP#UdpI51p>6sRoP{Icxa?M$~Zat!|ynK&@c%+hy;bVt1&0c$s#e$<&rm zk*r`eF0VQ4P3Bu|s1Q)tqEJi8XlZreQ^vKock%}_V!20$h_Pf_S^Q59KRpOIQ)C+C z0?mxE7!Qnf51Jn4F1x!*J)*Y-V<0SPYmv`6@|6{Kz!1K7B<<&r<~#`i!ygiDE{k(z zc}b)XioUsDrM77x)j5xG*j!XD(3hZ{H1Kd})unI=j zm)F8qx`!F?uVA}P>6b}!3O{z}V*jAd=%EWeK9~Gt(L!3TuCm~|UQ+v| z9^YiqAf>0d5o%W%sMlqW@3qi2i)7z?7MYg}{8Dl@OzOpH5tdQ%=jWOmPE_&@qeJdG z((KjXxQLlQj2fqZd&cwq@b4vTUvdCUg$nrK|50-CckvZP zeQSGtYXLiml$0--2bbZNh2)g5xSf{BhJ9vPDce2cM1rv2T`sCts|1@eech-&4?LG+ zp?08&J$tri|8Ta?WaZ0F^?_m_aiV9W0LaR}7GuhGG{qLqNjB_M%#dy$Ce6}D&jlt= z3iv1_NzXC2%L17Pp(JWWw$b;5n7x$Xjr6b+C8Hmi@?I^Pyiycqd85_L@x*;r_u9i; z)evlImA6J>)`Dt1v|yE5P)CgoEw**6(&8}Qfv-!O%dLiG`kaByn+{pwZK6VRz$f5& zE2ZR9uv0Wl`gHnmo3%bgVP4o$joVPvN4+c$uF*3=|HTT?3ZbDGU2#ra2@b#&jDkda zO-i|W)3|OeRIYx?qJ3Y*bj6U2wA?6^ZWGoCeOLG1jU3B-u!&k!rc>+51V5pTQR6`8wMDI~+v%wKR4+`h-4$?ez&&zhhrD2CZ0^WgGC z7MFA>59f0x35ccX*?k%6^9dam(7%5lKZDFci229A_ejdi*}e`F1z(;q3JvedmnZc< z^CSz4rKVOy^vDY8X!j$U7sauVWb1(QVr{S)a7%WPeaPE1%XbO?K_@@#5V;Ocd*lN{ zs&r}58F7^ecB@ySf@DArLVS|Y^tz;eaH-r>{WiVOq8LqHI8H{4@eRML;3!6BF|szx zGRDcl6~%?b!g)i~<2z@A1I!>h6GEJq5Jg8v z^tx9N*^o}1G7sSIK5ZgB#vfhoUO{`$5-4vF?5u(m^YG<8At*%dG{C`!J&G6sF`^YW z5FhVL#vyvwcv7;^A{voW!B_f9bB;Wo&S>IpJz)QS)Z&>w7~BMUbrf*$|BqfhSI+rg z|E@SKGtH02vwj;1Nro7EIQ#JF<9Ki73JWD=^-*47Pvo9cXvuq)V_k8?AHBlU6*48< z))4kH^Iw=t`DP$SAq@0|ttPW@)tw&BZSh^2U9!WuW-UB%WtWPvfHv|doii%($r^X4 zjM3GQW#7XZk85DfJlCP?G&@bky>dsyF;cwD%ZY_DNH$bgaK6V#5VmB?z=ou&~yzpS0_59Xv`^ zz~dQ;ECn06-lYL!h;xFrveU%4UXPP?9XdrsWz-d#8=4c^yu9itbJ&@o5=$nz1uw6n>d6_wzsm> zU$6H$Pa9u%?jKhHq$>fgLQ*B-aJf3%w?mL`8;M=Cay+gF3p2gk>5aO7d!CX)8q=NL z7#U;}F$!(H2oe7U9iy_y{+w1e^_Gz_Z&bWg!amWyG7y^yI?1`W;E)lMaPr%g`0Oo^ z{F4E1vFi_bi(LqB;f2q_di{#(UGl=Dx0h#-{Rm@eX~o&5!d4IND4vAGe8iJGJf(72 zl3$mz1?2yN{T0Gi)G%1uhIS?B!Ux8~WUDuaMn6=Xuv|y5MM1A+2AqZ0xw9yU?#D33 zIM@?;Pf(!dBD719+a1|Y`qls~^99y>b2OS4`H`YuokdXL7iZB(di>$sSxkO)786%Y z(Yf}ssjDPCj6xfTzIPUizPjecK;I4neJlRg%fFxHE-6eKpQj+G%^AD61&vVJjcA;# zNUpny%_%^WfYBI@0z*i`B?_vI$EQl3+I4GHM98fP@jW3@=8PKm!qzoye-SFex!PyA zy43{aFxPjQLtRne0Bh<+=&web5A4%md~E=T3IRd2(n6&oBzHQBN`~CNNJIdP%~(orD>O1aUFjA)z+R|qFa>I zIs>!LZB?qWWk~|Y3B~nZjzj{X=W+~7HT~xJb;aGW%easAb-OJhZMYjS#Z^B#r z9#A=CVWcf}-}BWvp2(3Z#7nmE=n^tI5N9rI>J3~lE$qscwQG-P!g3yZJuPArGKG`x zO8{h?YooO<)ZC8Fo;aZy3R}o{#=tZr-7Y5*#mOa4GpHe{pzB!W;`BIc!NXz{<1qC(}bxhN`zaZkN(vcD#+3@Jej zL=F@z6!aGJeC%756R2uUJ8dn zcGD*yq3r?uF&1ecCAuP-sJC|OO3}LsqCSipTcgx&8CA>|q2h>w`ey*M8x)o7TOH zryx@mawFwIfBT+yP&gf9MLoiF*)A(11DCyJ;HoT>NZe?m8*C10gqNQ#s#ke)Rrf}4 zv(9Wj({<-@d7WEO?AQ|3AS%FcB6gc;S>JqWQUt3gxl=L`3hvM{?G8qNq9UutNGVR4 z3dSa0QTlbqA-j6P04&huu-Gz_$HsJvy)bZ@iy>$=?;eMNXoEm)Qf<<`PMS;ybT96) z+W1^4n0>%!QE7&<)&B{#?;5ra2QImPCELi#dQ2wI{i)b#ADPmI4b*Tf(`#Yfwtj|qq}GGqHeMM`!Q*`6>!!jGgGNv3c z3Xx4r!t2h0>Wn1hjJZiyhdtUaKb!=MFici1^=yo8yy-}4xXbhc508(jAQ(II(4LVA z{tcaI^R}E??X@>L;epfAYPH?qtWz&3toUpOUKYx-<`4sz@hPrbt51m5n4oK6GlDbe% zTn*K!0h?HyY%M1qN-C;E6szV9Mf+{aOK*a_ZZ71%27jZMTX-;g+qmJd6qt3BeyLE94|&r?es>y4>lZn=Q}1D?ZBi! zT~jL-9~YHA9g_b@O7KOQ*az>7o0rAmxvKC<$px1ekC7$yM)u7T+-sQcLsq-i(456M zU%f8_*<*inm`>T;#N6V$wDJ`BZV4DbaWBQJ?_uA{%{4O&3LAOuJFw_HevX0g?IYxs zx(06|yUCB~;e6&l>x;aViFmL=%q*w*axXT&XrTBI^-{ouII(Yuml(2qJ2p+!X)G;~ zZznZg-Tkh(Yb2$rm!y zRb<;~osAP|pT@Fmj63lxOP9@6RxBqU6sy?vz)!An6@YNy z$~Vb%hs&{fNZspg?jbJY_D^%pW-4b)rc&kJZ!jw*ua>SIO=ph{VOdbR3mE2n8x*Qfo zcNp3&*$0nNDaD!$1ygmdpa(Mr!|#tM(hc^%d+bko7b=AsFPlXlE5j9KodqvM<~@U& zyWh?SGQyEKar)a7q6Xd|ya^C-jz@GHOt(62#Tm-?Q#Ct6vs4_QFVA=R{%ERZ|D}dG z!`J=epCnTOhs}U37)3Q2xqAW;nq%)zVQT#;-%jIVKGVd+7`-DsSI5{&Rh~4Q!F%E% zHF`&9(TA@Y2+XozWr*F{5ZY?6F?hkVI-BtEGh?lFvBl zB38rY%&PLl?W0G0?^B}XnbEx3a<~Ii$c%8xP=$#XML`J`B|Xh2hOyDF)mebf2l+YG zV(uTiOs#h{gj{=zp@1DQ)IBI|b(m<7ZqH@jt2>C=#;aXbOFBOgwZjyC|G2X(T!MY$ zm~0^2S0hK9hcFnaZ7A;!-jz*H62AG;Dr}9qNzM>=fBf|84I|HML0S5g1lO~;_V!1b zZp3)tP|An%p+{AHY$~rL*PC#PL|ct_(IL$}>l8riaHkW)Xgli{9hCkc+}1HlL}C33 z5DL0y^~hW~v$H5V%RoGmQp<05AN08RX$2IGk69U4`AHy1YPasdfzibSe#HERT)D{! zNZ(~TKK(%13r`QPD~cXN9EpQQE5lp)F|}4p(a8u%6*;a1Ay-U7n2dY>mIWTd(cmbF43(tlXVXnsA*}0mJ|4=qYpoearI!+W8Z;ZM#?Z+B80vLz@@C z&1v*%sO!(F!;D!B0TR`QWD|6r0x;wTv>DcIFX|&X<9dl>YpQjVV6y=-wTyKzqDT@xp`mUdNh1c-l!n);|GF_9HzD~jn z{<1-&`jiW&fLOP+ha?2Q?YLD(*NVXfMw@Ho8QBN)wA_i-&}X32O{ZWby7wbeOMxv# z^om*z*r6qY*=hu9Nb{$Q7UOmu_}(+8?7=!BePY4YZnu@dR$TF7qSqPZD6&%Cip zi5GI21JQR?_N+7vmdIV<8E&Sh?49<(H+=14H43uzZLCh?hN|}RZMyJWO9pEz+FeQ; z%&ulPqnbQxV+Z71iBcoMYFac_5g=J%+g8~}T_Sw=+s&(ytm~%FavAjcws%@cYmy`! zY+m^B_Tiq^PO9;93;C6NEXZkao&Tg+h#vst2M~b;iu95V$uzVBE`$iVgs&+#qa^E&EZnP_!3X5WtbfRWOWQG=tq&hY(LC?aja zq!q9f2EbDOD4pr2mIARj1WaX`5!gfGEAxFE27USfkI2HzYXxeSKRVmU5cOs581=9t zOA5lQ0z#I|jgK!Q_{F%lVUFYj*I8%4`S}W}jfYc>tFP9{P8W9G5jOKyYTN^qN1V@d z&SfA$3~G(%6`P3VT1Nx>|8^rP%@LGXe2*VME6+A$?jI;db`6oU;5ct23~tE?DdfzD`)j` z7zjEr>pQGJ;;1#SM8XRdHhT^8DemQ_i1;f^(cvfK*$3myV*cY=n9zs9#0XJ(M^BW% zK(x8PBu*>XzO}RJCW=!$c4YWVJ#EvWq|!Crd#q~bv152J<7=UDAk1`3q&iS5kgq=@1>{oql2D0LV+Wx+lITa%Bb9fR8&77U0^HL z{&XgKUxqzSLD1rH1bWo{dr8nmQr;@rp7izNo9gvsP5cJytnBa;t`LV-7w;6WMgl>l zZs7Nux&y+FmKN5wB6jAVMQy$a+2~6*0IGJ_^~GZ%DX>I>njr6_XDP4ZQMgeU znC~a?fzvAzQZu7?VW&PWjqgw|(SmT8TZi+TQwqyf#5Gg+C>-vlqhD`P$22iJUK!&g z>M_(Ge8CJ9d&psL9dmUseGKx|K-NVZnbba2FIxSCu3hdhB&lqii5R^VEnLNb=u5~c zce0VWhIMZdFS;j`&M5ibPrEbtfsx#yW~RDp(jQZ)>zZC~0LWn37yTsJh7&ezOElIQTwCDa+LD`y_i6G+V)!oN>ZbOH~0kr=dBKJ+9Q zjl*C?!(UJBSafPw0TiqBpsFtX-IP@F4+^>rveibbwY0_@KTnG4hZ{VY_ti$ zx-_F*N&f&LIsO8K44MZzs1caB-1?IalGZi{q!qskiaY`$SHO`2p6P0)Y|@iAwVrss<2#5+)~SUUAgxvc0tyc-*R?-Dp{ z?AtdS#1@%PVj!v8C^;n? zs~G{3)qR7EZ>S{FU-(wtEMlZfEfjJ_OF?f-W$P!e)bW}5o#;Q`wsl60=WL0dx13n2Wj><3g6$eMRCBr9Yujm=kH* z{0?d5?)X^Kq6UgBcZ=V^tr^X!by#TbSD9{3ux)My6T4>I{GGE^L(geQu*c}E&mac1 zt$xkZE`&>$mT-XW@BgrwFB{xnMYmMeRq#5mHo?&D^LMlh5DQx+R$E0hms(2ejLSt~ z;UvN8BHyXZi+&h+t3+ft|7i@2`H9T%A+1}}+}tz+Pk{Rx(I8)b&f#nVL97^pJ;xA7 z9g7Xy;YW9ecPU)YKAp`q0q2WHwhyuP1w8OWS=%4*H#?5(O33V)O;?m0hAq9D&oy&G z?F)FA_t5!ao{ln4=hX+MsfrsTsBT9b2kN=5 zrn+^0wgH#)u=t=!#QhppZha!&E}NeLGH03EigUYJHDS-KUTcShQM|Y0)I@E?y5`Nx_o(Pf1!qjnW5&3zld&kq zHpw9lUm??wS$gOw&}Vm^`9NHv&G zXpsZTrxE+Lm7{9&Hk1ipT>xXv-M+VBHTv{PC{me`f~C_OeYcWtum>jF=es#3zbPeu z9z0s7|E_4XpQqPsuTt}IF1uW@H?zI{atS{!ze5ngQw14+5Ya$ddwqtNBf3y zy(*sMNR4MziP_^;Ltb&Ulzk%nNs5ln?6HDn?;S`**7*sJ8(o<>8#xwPJmH<#W&M{0 z)m8a5@<{?FqpgTpK00@?3aP)2o(vyIHq$X!x`T;f(L~diT^DF*Ir3Xp3goQ-0h;yo4T<2_9GKiT;Q0X7QL!-cBJ|!~k?pr~#z?quQ>liC~kATz6 z1fkP^VY6b{jkW#}3N!PlJ*RE(I%-s&7-f%Xrtz(@%6vUD}WKnj_ac4Om`W~zbU5Z3E_qXF|2Pv(?`nrXLHFPW|?tNX9Ny4j3kZjo;hNt+YA*1Fu-Rrqx3mSe7u1I60>DanBf3Dns{ zn3UAV%doswt_rg6+VWsO_-r=$Y(XWX98oldY~{Rmo$wK@ZzS8MaE$vzBE~w@pXwhp7Nr@;d%v z#-H~))Yz#@2ncie*kjmIk5+#c3{l?e{}n+DTsUEJm;*)^r8gK)Ks$ypCTh!tYI|?SykowaT9F zL^eQGMLXRI>K1&#Pv!jlO-#>oL+nhFMuk&LtLn?nY$fwcxX$?Q&_uhRmbMiu=9hq6 zwb_A^>nwpC6xl2&eB(8Ahx!jmJ)nkmf|jCNxj!mle9UW6G%fQ^ok3bw5y9+gW*F3M z;ql&Fnq`n58?a=cs=lTsVV%6^R}e|iMa~$aC1po4<1^w|yB}5&PM$fNlWD$|D~Tc~ z%Xm_ZD`k$Fb8D%=doglL;0E4Y zz-0POK{iL|a0^n~Xr68pK__XdVx-q>>GhP4<9w?RU8WMH%)-L=fna9MSv2SFCykJEqlzJM8kRk9o~0r=+vN^e|}7FH6V7nc!XFw+L|o&Q-O|M>qDGUrs=9{doIlIcy1Sdu@6FIq`p<1@Y2j%Vaq_lOoADVCriQtk%z`zJCa2 zX<>HL(abbPNm|yI5v^g57SVy~DPdoB2or8Jn~6Op-(p2;zbBo-C0j*Q z21BKyiLYJ5NJlPLolAd4UZLz=;-S&wnls5;Xf_Szu|v9H#3?l3@YF>;os?;53Qa~k zzGzaTZcRc?C%KPrIzTZrK1`m7GlHw?8Eb;}C{aB;E0z~+q|oswdh-3yuoB{UEL<(~ z*iIcDb_68uDwRHdRMyRfaG0a5?(F9pF@0fnZcQhXO?;-4imX>LnCn7NdPzFF(ohwj z>|n#R_pi6aCC0Q}j?~wj=*MH*TVrz63!2GsulSH^XGfWgQ@1o85iC)Lp|la5b7u8s ze;qkkt!8W9$tm(y94v*8y-Z@bb6hZ^3e^n0NkHHjV| zeX|?H&o-JXFq>`%bg={QKo0qTe^vbN?!R_EdVe8? z|EniC_dZ{)^Cyw}4#Uv5~FQF9Auv104KM!1IcpzyH2y zKs@GGE%&+7#INAKe_z@Efcq+(`71!`@7_1!_WhoG4U#@fewEPqFZ_(t7hyUUQ_1e>3v;i$31OKIZ#y0}6 zSJQvMe>Q(13sZ})@g7LzoXQf%WWYq10QB?k^0y1@)dz6>s#!iGOIhe@pX+pg2@^nq zmlBCqGXmh)0Qh-Tyl)rSs{-*iz-9Dp9W1O(&Z}M8{G34QNmG*)0FDgE$XwXVrAuJ1 zTY$s;&!@i&h>ZVR!|bHmVR{13KJi1t^aI5_eiNEm@8{25R7CvY5&-N3_~GxLJMqeI zfPYCh`Z+YwsoU**pmmJ_hfDjd!GZsSyC>YhA1KMN|Xp{5Jl5ZE- zD-~#>->@3FFS9qNUp4%@$g&5tK=UB}&^*I{tN#rWC4EO*mODRx1FZpqoF-tLwgJQb z;=^%1pd^N5R&gsh%+0o-c%o526O-w65K zkoCqc;J1u^4G&p;3=$c#rq>1XYvW%d|4)T4NKnX1JQtw87QY7lIy?PoT^>jl$Z|Iq zEPj^1#qwp={zLH_NFK=YFBd#BR)50tpT%Gxi6KjVToCKn{sHm-91w$KfUMMt zNOAECHaPb`XZyL-I3y>e^7RGhD~~_tggk=^$p$ITe8HCE^%rbEN;N|gLQ4K#5VrdK zE#ddcQjm<0Lb4Z(vwnZT_-)z#`Fjc>D+@^psZDx8`7z+HDSuEZg=B@4l)PYV2>x5v zA9A80Ng<^MFGz78{Wa--3` zHYVYpN|-@1Luy%FFq1z1TjqaJwt}RF)Hk}I4vPI-Y6!I>NJ>ccoeRqQ@qbJCGc6uS zUPxh=3tpGRzvYFHd4Z&a)E&8?lm)^Je`iuZsE|OCLMm8XkUFRSE$L77EFg&?r4=rS z)t>w{F+|!tBq!v-{|ipWjKAiDkO6??gghI5!RZD5d(IzEibL{3o?E`))y)2T-XAJ3 zK+-}UjJ=?>$^HM){`%t%dHC{zHz5CSd4GBo6Y_;250PCE-!A$C;vbKcK@vfpZn_{s zEcpYXZ~FpYLrMSnU57l>azPtd_V=_u9&v$uUC09$7rc7qf6x1q;}?*`koo%;#9@{H zU*cce@FGMu_yu!q^=~o%EH@nT^&pe6FG!x${1(ZtLM4!i#24TKb$u`(@-x^f85bV{RRna<9_<&^ZbAI#J{Dp{QKrK$#*xG{CG3)A^#!0<=^2L zzJuHP9XQBzmv7)dPk8x;5BB2j_~Au=eAe&5zox%jH0IAUEiO22bo~{_Mc##+BpeXE Ty>v+#_zwnX>q7wW(xv|cY55oE diff --git a/pom.xml b/pom.xml index ee5b0d1..97785e0 100644 --- a/pom.xml +++ b/pom.xml @@ -8,24 +8,44 @@ YukiRPFramework 1.0 + + + jitpack.io + https://jitpack.io + + + - net.onfirenetwork + com.github.OnfireNetwork.OnsetJava OnsetJava-API - 0.1 + 0cdd3c23a6 provided + + com.github.JanHolger + AJORM + 7b62c7979a + compile + mysql mysql-connector-java - 8.0.19 + 5.1.6 + provided com.google.code.gson gson 2.8.6 + provided + + + org.projectlombok + lombok + 1.18.6 + provided - @@ -38,6 +58,19 @@ 8 + + org.apache.maven.plugins + maven-shade-plugin + 3.0.0 + + + package + + shade + + + + diff --git a/src/main/java/fr/yuki/YukiRPFramework/Database.java b/src/main/java/fr/yuki/YukiRPFramework/Database.java index 02d6f9e..1670714 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/Database.java +++ b/src/main/java/fr/yuki/YukiRPFramework/Database.java @@ -1,31 +1,40 @@ -package fr.yuki.YukiRPFramework; - -import fr.yuki.YukiRPFramework.manager.WorldManager; -import fr.yuki.YukiRPFramework.utils.ServerConfig; -import net.onfirenetwork.onsetjava.Onset; - -import java.sql.Connection; -import java.sql.DriverManager; -import com.mysql.cj.jdbc.Driver; - -public class Database { - private static Connection connection; - - /** - * Initialize the connection with the database - */ - public static void init() { - try { - ServerConfig serverConfig = WorldManager.getServerConfig(); - connection = DriverManager.getConnection("jdbc:mysql://" + serverConfig.getSqlHost() + "/" + serverConfig.getSqlDb() + "?autoReconnect=true", - serverConfig.getSqlUsername(), serverConfig.getSqlPassword()); - Onset.print("Connected to the database with success"); - } catch (Exception e) { - Onset.print("Error with database connection: " + e.toString()); - } - } - - public static Connection getConnection() { - return connection; - } -} +package fr.yuki.YukiRPFramework; + +import eu.bebendorf.ajorm.AJORM; +import eu.bebendorf.ajorm.AJORMConfig; +import eu.bebendorf.ajorm.wrapper.MySQL; +import eu.bebendorf.ajorm.wrapper.SQL; +import fr.yuki.YukiRPFramework.manager.WorldManager; +import fr.yuki.YukiRPFramework.model.Account; +import fr.yuki.YukiRPFramework.utils.ServerConfig; +import net.onfirenetwork.onsetjava.Onset; + +import java.sql.Connection; +import java.sql.DriverManager; + +public class Database { + private static Connection connection; + private static SQL sql; + + /** + * Initialize the connection with the database + */ + public static void init() { + try { + ServerConfig serverConfig = WorldManager.getServerConfig(); + connection = DriverManager.getConnection("jdbc:mysql://" + serverConfig.getSqlHost() + "/" + serverConfig.getSqlDb() + "?autoReconnect=true", + serverConfig.getSqlUsername(), serverConfig.getSqlPassword()); + sql = new MySQL(serverConfig.getSqlHost(), 3306, serverConfig.getSqlDb(), serverConfig.getSqlUsername(), serverConfig.getSqlPassword()); + AJORMConfig config = new AJORMConfig() + .setDefaultSize(255); + AJORM.register(Account.class, sql, config); + Onset.print("Connected to the database with success"); + } catch (Exception e) { + Onset.print("Error with database connection: " + e.toString()); + } + } + + public static Connection getConnection() { + return connection; + } +} diff --git a/src/main/java/fr/yuki/YukiRPFramework/YukiRPFrameworkPlugin.java b/src/main/java/fr/yuki/YukiRPFramework/YukiRPFrameworkPlugin.java index d9e3913..672f818 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/YukiRPFrameworkPlugin.java +++ b/src/main/java/fr/yuki/YukiRPFramework/YukiRPFrameworkPlugin.java @@ -1,664 +1,672 @@ -package fr.yuki.YukiRPFramework; - -import com.google.gson.Gson; -import com.google.gson.reflect.TypeToken; -import fr.yuki.YukiRPFramework.luaapi.LuaAPIManager; -import fr.yuki.YukiRPFramework.character.CharacterState; -import fr.yuki.YukiRPFramework.commands.*; -import fr.yuki.YukiRPFramework.dao.AccountDAO; -import fr.yuki.YukiRPFramework.dao.InventoryDAO; -import fr.yuki.YukiRPFramework.enums.ItemTemplateEnum; -import fr.yuki.YukiRPFramework.enums.ToastTypeEnum; -import fr.yuki.YukiRPFramework.i18n.I18n; -import fr.yuki.YukiRPFramework.inventory.Inventory; -import fr.yuki.YukiRPFramework.manager.*; -import fr.yuki.YukiRPFramework.modding.ModdingCustomModel; -import fr.yuki.YukiRPFramework.model.*; -import fr.yuki.YukiRPFramework.net.payload.*; -import fr.yuki.YukiRPFramework.utils.ServerConfig; -import fr.yuki.YukiRPFramework.world.RestrictedZone; -import net.onfirenetwork.onsetjava.Onset; -import net.onfirenetwork.onsetjava.data.Location; -import net.onfirenetwork.onsetjava.data.Vector; -import net.onfirenetwork.onsetjava.data.Weapon; -import net.onfirenetwork.onsetjava.plugin.Plugin; -import net.onfirenetwork.onsetjava.plugin.event.EventHandler; -import net.onfirenetwork.onsetjava.plugin.event.player.*; - -import java.io.PrintWriter; -import java.io.StringWriter; -import java.util.HashMap; -import java.util.Map; - -@Plugin(name = "YukiRPFramework", author = "Yuki") -public class YukiRPFrameworkPlugin { - - public void onEnable() { - try { - WorldManager.initServerConfig(); - I18n.init(); - Database.init(); - Onset.registerListener(this); - ModdingManager.init(); - MapManager.init(); - InventoryManager.init(); - ItemManager.init(); - CharacterManager.init(); - VehicleManager.init(); - GarageManager.init(); - SoundManager.init(); - WorldManager.init(); - JobManager.init(); - AccountManager.init(); - GrowboxManager.init(); - FuelManager.init(); - PhoneManager.init(); - HouseManager.init(); - TimeManager.init(); - CompagnyManager.init(); - TebexManager.init(); - LuaAPIManager.init(); - - // Register commands - Onset.registerCommand("item", new ItemCommand()); - Onset.registerCommand("loc", new LocCommand()); - Onset.registerCommand("v", new VCommand()); - Onset.registerCommand("vmove", new MoveCommand()); - Onset.registerCommand("dv", new DVCommand()); - Onset.registerCommand("addgatheritem", new AddGatherItemCommand()); - Onset.registerCommand("listgatheritem", new ShowGatherItemListCommand()); - Onset.registerCommand("dct", new DebugCharacterToolCommand()); - Onset.registerCommand("dvsl", new DebugVehicleStorageLayoutCommand()); - Onset.registerCommand("adddelivery", new AddDeliveryPointCommand()); - Onset.registerCommand("setadmin", new SetAdminLevelCommand()); - Onset.registerCommand("ban", new BanCommand()); - Onset.registerCommand("goto", new GotoCommand()); - Onset.registerCommand("bring", new BringCommand()); - Onset.registerCommand("flip", new FlipCommand()); - Onset.registerCommand("lang", new SetLangCommand()); - Onset.registerCommand("dop", new DebugObjectPlacementCommand()); - Onset.registerCommand("setwhitelist", new SetWhitelistCommand()); - Onset.registerCommand("cuff", new CuffCommand()); - Onset.registerCommand("revive", new ReviveCommand()); - Onset.registerCommand("nitro", new NitroCommand()); - Onset.registerCommand("dhouse", new DebugHouseCommand()); - Onset.registerCommand("chouse", new CreateHouseCommand()); - Onset.registerCommand("fhouse", new FreeHouseCommand()); - Onset.registerCommand("houseprops", new SetHousePropsCommand()); - Onset.registerCommand("givehousekey", new GiveHouseKeyCommand()); - Onset.registerCommand("settime", new SetTimeCommand()); - Onset.registerCommand("getid", new GetIdCommand()); - Onset.registerCommand("setcommandlevel", new SetCommandLevelCommand()); - Onset.registerCommand("requestcreation", new RequestCharacterCreationCommand()); - Onset.registerCommand("invis", new InvisCommand()); - Onset.registerCommand("regenphone", new RegenPhoneNumberCommand()); - Onset.registerCommand("ann", new AnnCommand()); - Onset.registerCommand("itemall", new AddItemAllCommand()); - Onset.registerCommand("fgc", new ForceGarbageCommand()); - Onset.registerCommand("debugtest", new DebugTestCommand()); - Onset.registerCommand("kick", new KickCommand()); - Onset.registerCommand("setclothe", new SetClotheCommand()); - Onset.registerCommand("setcharacterscale", new SetCharacterScaleCommand()); - - // Register remote events - Onset.registerRemoteEvent("GlobalUI:ToogleWindow"); - Onset.registerRemoteEvent("Inventory:RequestContent"); - Onset.registerRemoteEvent("Inventory:UseItem"); - Onset.registerRemoteEvent("Object:Interact"); - Onset.registerRemoteEvent("ATM:Deposit"); - Onset.registerRemoteEvent("ATM:Withdraw"); - Onset.registerRemoteEvent("Vehicle:RequestLockToogle"); - Onset.registerRemoteEvent("Garage:RequestVehicle"); - Onset.registerRemoteEvent("Garage:BuyVehicle"); - Onset.registerRemoteEvent("Character:Style:SavePart"); - Onset.registerRemoteEvent("Character:Style:CustomDone"); - Onset.registerRemoteEvent("Global:UIReady"); - Onset.registerRemoteEvent("Job:WearObject"); - Onset.registerRemoteEvent("Job:CharacterJobRequest"); - Onset.registerRemoteEvent("Character:RequestWearFromVehicleChest"); - Onset.registerRemoteEvent("Inventory:ThrowItem"); - Onset.registerRemoteEvent("Seller:BuySellItem"); - Onset.registerRemoteEvent("Object:EditPlacementCancel"); - Onset.registerRemoteEvent("Object:EditPlacement"); - Onset.registerRemoteEvent("Object:EditPlacementDone"); - Onset.registerRemoteEvent("Job:UseJobTool"); - Onset.registerRemoteEvent("Growbox:FillWaterPot"); - Onset.registerRemoteEvent("Growbox:FillSeedPot"); - Onset.registerRemoteEvent("Growbox:HarvestPot"); - Onset.registerRemoteEvent("Growbox:TakePot"); - Onset.registerRemoteEvent("Phone:AddContact"); - Onset.registerRemoteEvent("Phone:RequestContacts"); - Onset.registerRemoteEvent("Phone:RequestSendMessage"); - Onset.registerRemoteEvent("Phone:RequestConversation"); - Onset.registerRemoteEvent("Phone:RequestConversationsList"); - Onset.registerRemoteEvent("House:RequestHouseMenu"); - Onset.registerRemoteEvent("House:RequestBuy"); - Onset.registerRemoteEvent("Object:EditExistingPlacement"); - Onset.registerRemoteEvent("Phone:RequestBuyItemShop"); - Onset.registerRemoteEvent("Weapon:StoreWeapon"); - Onset.registerRemoteEvent("Growbox:Destroy"); - Onset.registerRemoteEvent("ATM:GetInfos"); - Onset.registerRemoteEvent("Phone:RequestCall"); - Onset.registerRemoteEvent("Phone:RequestAnswer"); - Onset.registerRemoteEvent("Phone:RequestEndCall"); - Onset.registerRemoteEvent("Phone:RequestAttachPhone"); - Onset.registerRemoteEvent("SetPlayerEditor"); - Onset.registerRemoteEvent("Phone:RequestUrgency"); - Onset.registerRemoteEvent("Phone:RequestListUrgency"); - Onset.registerRemoteEvent("Phone:SolveUrgency"); - Onset.registerRemoteEvent("Compagny:Create"); - Onset.registerRemoteEvent("Compagny:InviteEmployee"); - Onset.registerRemoteEvent("Compagny:AcceptInvitation"); - Onset.registerRemoteEvent("Compagny:DeclineInvitation"); - Onset.registerRemoteEvent("Compagny:KickEmployee"); - Onset.registerRemoteEvent("Character:Interact"); - Onset.registerRemoteEvent("Character:InspectCharacter"); - Onset.registerRemoteEvent("GenericMenu:Dismiss"); - Onset.registerRemoteEvent("Character:GiveHouseKey"); - } catch (Exception ex) { - ex.printStackTrace(); - Onset.print("Can't start the plugin because : " + ex.toString()); - } - } - - @EventHandler - public void onJoin(PlayerSteamAuthEvent evt) { - // Create or update the account - try { - Onset.print("Player joining steamId=" + evt.getPlayer().getSteamId()); - Account account = AccountDAO.findAccountBySteamId(evt.getPlayer().getSteamId()); - ServerConfig serverConfig = WorldManager.getServerConfig(); - - // Clear state - CharacterState state = CharacterManager.getCharacterStateByPlayer(evt.getPlayer()); - if(state != null) { - state.setCurrentPhoneCall(null); - state.setCurrentObjectPlacementInstance(null); - state.setCuffed(false); - } - - // Create the account if doesnt exist - if(account == null) { - Onset.print("Create the account for the steamId=" + evt.getPlayer().getSteamId()); - account = AccountDAO.createAccount(evt.getPlayer()); - WorldManager.getAccounts().put(account.getId(), account); - - // Set spawn location - evt.getPlayer().setSpawnLocation(new Vector(serverConfig.getSpawnPointX(), - serverConfig.getSpawnPointY(), serverConfig.getSpawnPointZ()), serverConfig.getSpawnPointH()); - evt.getPlayer().setLocation(new Vector(serverConfig.getSpawnPointX(), - serverConfig.getSpawnPointY(), serverConfig.getSpawnPointZ())); - evt.getPlayer().setHeading(serverConfig.getSpawnPointH()); - CharacterManager.teleportWithLevelLoading(evt.getPlayer(), new Location(serverConfig.getSpawnPointX(), - serverConfig.getSpawnPointY(), serverConfig.getSpawnPointZ(), serverConfig.getSpawnPointH())); - - // Create the default inventory for character - Inventory inventory = InventoryDAO.createInventory(); - Onset.print("Inventory created id=" + inventory.getId()); - inventory.setInventoryType(1); - inventory.setCharacterId(account.getId()); - InventoryManager.getInventories().put(inventory.getId(), inventory); - inventory.save(); - - // Set properties for the player - evt.getPlayer().setProperty("accountId", account.getId(), true); - } - else { - if(account.getIsBanned()==1) { - evt.getPlayer().kick("You have been banned, bye bye"); - return; - } - - // Set properties for the player - evt.getPlayer().setProperty("accountId", account.getId(), true); - - // evt.getPlayer().setLocation(new Vector(account.getSaveX(), account.getSaveY(), account.getSaveZ())); - CharacterManager.teleportWithLevelLoading(evt.getPlayer(), new Location(account.getSaveX(), - account.getSaveY(), - account.getSaveZ() + 50, - account.getSaveH())); - - if(account.getCharacterName().equals("Unknown")) { // Recovery - account.setCharacterCreationRequest(1); - account.setPhoneNumber(PhoneManager.generateRandomPhoneNumber()); - account.setBankMoney(4000); - Onset.print("Phone number generated : " + account.getPhoneNumber()); - - evt.getPlayer().setSpawnLocation(new Vector(serverConfig.getSpawnPointX(), - serverConfig.getSpawnPointY(), serverConfig.getSpawnPointZ()), 0); - CharacterManager.teleportWithLevelLoading(evt.getPlayer(), new Location(serverConfig.getSpawnPointX(), - serverConfig.getSpawnPointY(), serverConfig.getSpawnPointZ(), serverConfig.getSpawnPointH())); - } else { - evt.getPlayer().setSpawnLocation(new Vector(account.getSaveX(), account.getSaveY(), account.getSaveZ()), 0); - //Onset.broadcast("" + account.getCharacterName() + " est de retour !"); - } - - if(account.getOriginalStyle().equals("")) { - account.setOriginalStyle(account.getCharacterStyle()); - } - // Set weapons - for(Map.Entry weaponEntry : - ((HashMap)new Gson().fromJson(account.getWeapons(), new TypeToken>(){}.getType())).entrySet()) { - evt.getPlayer().setWeapon(weaponEntry.getKey(), weaponEntry.getValue()); - } - } - - // Insert the account in the cache if not exist - if(!WorldManager.getAccounts().containsKey(account.getId())) { - WorldManager.getAccounts().put(account.getId(), account); - } - - JobManager.initCharacterJobs(evt.getPlayer()); - if(CharacterManager.getCharacterStateByPlayer(evt.getPlayer()) == null) - CharacterManager.getCharacterStates().put(evt.getPlayer().getSteamId(), new CharacterState()); - - // Generate a phone number for the player - if(account.getPhoneNumber().trim().equals("")) { - account.setPhoneNumber(PhoneManager.generateRandomPhoneNumber()); - AccountDAO.updateAccount(account, null); - Onset.print("Phone number generated : " + account.getPhoneNumber()); - } - - // Attach bag - if(account.getBagId() != -1) { - Account finalAccount = account; - Bag bag = ItemManager.bags.stream().filter(x -> x.getModelId() == finalAccount.getBagId()) - .findFirst().orElse(null); - state.attachBag(bag, evt.getPlayer()); - } - - // If the player is dead - if(account.getIsDead() == 1) { - evt.getPlayer().setHealth(0); - } else { - evt.getPlayer().setHealth(account.getHealth()); - } - - // Set current time - TimeManager.setCurrentHourForPlayer(evt.getPlayer()); - - // Set modding objects - for(ModdingCustomModel customModel : ModdingManager.getModdingFile().getCustomModels()) { - evt.getPlayer().callRemoteEvent("Modding:AddCustomObject", customModel.getId(), customModel.getPath()); - } - } catch (Exception e) { - e.printStackTrace(); - evt.getPlayer().kick("There is a error for retrieving your account: " + e.toString()); - } - } - - @EventHandler - public void onQuit(PlayerQuitEvent evt) { - Onset.print("Player quit steamId=" + evt.getPlayer().getSteamId()); - WorldManager.handleObjectEditPlacementCancel(evt.getPlayer()); - Account account = WorldManager.getPlayerAccount(evt.getPlayer()); - Location location = evt.getPlayer().getLocationAndHeading(); - account.setSaveX(location.getX()); - account.setSaveY(location.getY()); - account.setSaveZ(location.getZ()); - account.setSaveH(location.getHeading()); - CharacterState state = CharacterManager.getCharacterStateByPlayer(evt.getPlayer()); - if(state != null) { - if(state.getCurrentPhoneCall() != null ){ - state.getCurrentPhoneCall().end(); - } - CharacterManager.getCharacterStates().remove(evt.getPlayer().getSteamId()); - } - WorldManager.savePlayer(evt.getPlayer()); - } - - @EventHandler - public void onRemoteEvent(PlayerRemoteEvent evt) { - try { - Onset.print("Receive remote event name=" + evt.getName()); - switch (evt.getName()) { - case "Inventory:RequestContent": - InventoryManager.handleRequestContent(evt.getPlayer(), new Gson().fromJson((evt.getArgs()[0]).toString(), - RequestInventoryContentPayload.class)); - break; - - case "Inventory:UseItem": - ItemManager.handleItemUse(evt.getPlayer(), new Gson().fromJson((evt.getArgs()[0]).toString(), - RequestUseItemPayload.class)); - break; - - case "GlobalUI:ToogleWindow": - UIStateManager.handleUIToogle(evt.getPlayer(), (evt.getArgs()[0]).toString()); - break; - - case "Object:Interact": - WorldManager.handleInteract(evt.getPlayer()); - break; - - case "ATM:Deposit": - ATMManager.handleATMDeposit(evt.getPlayer(), (int)Float.parseFloat((evt.getArgs()[0]).toString())); - break; - - case "ATM:Withdraw": - ATMManager.handleATMWithdraw(evt.getPlayer(), (int)Float.parseFloat((evt.getArgs()[0]).toString())); - break; - - case "ATM:GetInfos": - ATMManager.handleATMGetInfos(evt.getPlayer()); - break; - - case "Vehicle:RequestLockToogle": - VehicleManager.handleVehicleLockRequest(evt.getPlayer()); - break; - - case "Garage:RequestVehicle": - GarageManager.handleRequestVehicle(evt.getPlayer(), (evt.getArgs()[0]).toString()); - break; - - case "Garage:BuyVehicle": - GarageManager.handleRequestBuyVehicle(evt.getPlayer(), new Gson().fromJson((evt.getArgs()[0]).toString(), - RequestBuyVehiclePayload.class)); - break; - - case "Character:Style:SavePart": - CharacterManager.handleStyleSavePart(evt.getPlayer(), new Gson().fromJson((evt.getArgs()[0]).toString(), - StyleSavePartPayload.class)); - break; - - case "Character:Style:CustomDone": - CharacterManager.handleCharacterCustomDone(evt.getPlayer(), (evt.getArgs()[0]).toString()); - break; - - case "Global:UIReady": - UIStateManager.handleUIReady(evt.getPlayer()); - break; - - case "Job:WearObject": - JobManager.handleWearObjectRequest(evt.getPlayer(), (evt.getArgs()[0]).toString()); - break; - - case "Character:RequestWearFromVehicleChest": - VehicleManager.handleRequestWearFromVehicleChest(evt.getPlayer(), (evt.getArgs()[0]).toString()); - break; - - case "Inventory:ThrowItem": - InventoryManager.handleThrowItem(evt.getPlayer(), new Gson().fromJson((evt.getArgs()[0]).toString(), - RequestThrowItemPayload.class)); - break; - - case "Job:CharacterJobRequest": - JobManager.handleRequestCharacterJobs(evt.getPlayer()); - break; - - case "Seller:BuySellItem": - WorldManager.handleBuySellItemSeller(evt.getPlayer(), new Gson().fromJson((evt.getArgs()[0]).toString(), - BuySellItemRequestPayload.class)); - break; - - case "Object:EditPlacement": - WorldManager.handleObjectRequestPlacement(evt.getPlayer()); - break; - - case "Object:EditPlacementCancel": - WorldManager.handleObjectEditPlacementCancel(evt.getPlayer()); - break; - - case "Object:EditPlacementDone": - WorldManager.handleObjectPlacementDone(evt.getPlayer(), - new Vector(Double.parseDouble((evt.getArgs()[0]).toString()), - Double.parseDouble((evt.getArgs()[1]).toString()), Double.parseDouble((evt.getArgs()[2]).toString())), - new Vector(Double.parseDouble((evt.getArgs()[3]).toString()), - Double.parseDouble((evt.getArgs()[4]).toString()), Double.parseDouble((evt.getArgs()[5]).toString()))); - break; - - case "Job:UseJobTool": - JobManager.handleUseJobTool(evt.getPlayer(), (evt.getArgs()[0]).toString()); - break; - - case "Growbox:Destroy": - GrowboxManager.handleGrowboxDestroy(evt.getPlayer(), (evt.getArgs()[0]).toString()); - break; - - case "Growbox:FillWaterPot": - GrowboxManager.handleGrowboxFillWaterPot(evt.getPlayer(), new Gson().fromJson((evt.getArgs()[0]).toString(), - GrowboxFillWaterPotPayload.class)); - break; - - case "Growbox:FillSeedPot": - GrowboxManager.handleGrowboxFillSeedPot(evt.getPlayer(), new Gson().fromJson((evt.getArgs()[0]).toString(), - GrowboxFillWaterPotPayload.class)); - break; - - case "Growbox:HarvestPot": - GrowboxManager.handleGrowboxHarvestRequest(evt.getPlayer(), new Gson().fromJson((evt.getArgs()[0]).toString(), - GrowboxFillWaterPotPayload.class)); - break; - - case "Growbox:TakePot": - GrowboxManager.handleGrowboxTakePotRequest(evt.getPlayer(), new Gson().fromJson((evt.getArgs()[0]).toString(), - GrowboxFillWaterPotPayload.class)); - break; - - case "Phone:RequestContacts": - PhoneManager.handleRequestPhoneContacts(evt.getPlayer()); - break; - - case "Phone:AddContact": - PhoneManager.handleAddPhoneContact(evt.getPlayer(), new Gson().fromJson((evt.getArgs()[0]).toString(), - PhoneAddContactPayload.class)); - break; - - case "Phone:RequestSendMessage": - PhoneManager.handleRequestSendMessage(evt.getPlayer(), new Gson().fromJson((evt.getArgs()[0]).toString(), - RequestPhoneSendMessagePayload.class)); - break; - - case "Phone:RequestConversation": - PhoneManager.handleRequestConversation(evt.getPlayer(), (evt.getArgs()[0]).toString()); - break; - - case "Phone:RequestConversationsList": - PhoneManager.handleRequestConversationsList(evt.getPlayer()); - break; - - case "House:RequestHouseMenu": - HouseManager.handleHouseMenu(evt.getPlayer(), evt.getPlayer().getLocation()); - break; - - case "House:RequestBuy": - HouseManager.handleBuyHouseRequest(evt.getPlayer()); - break; - - case "Object:EditExistingPlacement": - WorldManager.handleEditExistingPlacement(evt.getPlayer(), Integer.parseInt((evt.getArgs()[0]).toString())); - break; - - case "Phone:RequestBuyItemShop": - HouseManager.handleRequestBuyItemShop(evt.getPlayer(), Integer.parseInt((evt.getArgs()[0]).toString())); - break; - - case "Weapon:StoreWeapon": - WeaponManager.storeWeapon(evt.getPlayer()); - break; - - case "Phone:RequestCall": - PhoneManager.handleRequestCall(evt.getPlayer(), (evt.getArgs()[0]).toString()); - break; - - case "Phone:RequestAnswer": - PhoneManager.handleCallAnswer(evt.getPlayer()); - break; - - case "Phone:RequestEndCall": - PhoneManager.handleCallEnd(evt.getPlayer()); - break; - - case "Phone:RequestAttachPhone": - PhoneManager.handleAttachPhone(evt.getPlayer(), (evt.getArgs()[0]).toString()); - break; - - case "SetPlayerEditor": - ModdingManager.onEditorOpen(evt.getPlayer()); - break; - - case "Phone:RequestUrgency": - PhoneManager.handleUrgencyRequest(evt.getPlayer(), new Gson().fromJson((evt.getArgs()[0]).toString(), - UrgencyRequestPayload.class)); - break; - - case "Phone:RequestListUrgency": - PhoneManager.handleUrgencyListRequest(evt.getPlayer()); - break; - - case "Phone:SolveUrgency": - PhoneManager.handleUrgencySolveRequest(evt.getPlayer(), new Gson().fromJson((evt.getArgs()[0]).toString(), - SolveUrgencyPayload.class)); - break; - - case "Compagny:Create": - CompagnyManager.handleCreateRequest(evt.getPlayer(), (evt.getArgs()[0]).toString()); - break; - - case "Compagny:InviteEmployee": - CompagnyManager.handleInviteEmployee(evt.getPlayer(), (evt.getArgs()[0]).toString()); - break; - - case "Compagny:AcceptInvitation": - CompagnyManager.handleAcceptInvitation(evt.getPlayer()); - break; - - case "Compagny:DeclineInvitation": - CompagnyManager.handleDeclineInvitation(evt.getPlayer()); - break; - - case "Compagny:KickEmployee": - CompagnyManager.handleKickEmployee(evt.getPlayer(), (evt.getArgs()[0]).toString()); - break; - - case "Character:Interact": - CharacterManager.handleCharacterInteract(evt.getPlayer()); - break; - - case "GenericMenu:Dismiss": - CharacterManager.handleGenericMenuDismiss(evt.getPlayer()); - break; - - case "Character:InspectCharacter": - CharacterManager.handleInspectCharacter(evt.getPlayer(), Integer.parseInt((evt.getArgs()[0]).toString())); - break; - - case "Character:GiveHouseKey": - HouseManager.handleGiveHouseKey(evt.getPlayer(), Integer.parseInt((evt.getArgs()[0]).toString())); - break; - } - } - catch (Exception ex) { - StringWriter sw = new StringWriter(); - ex.printStackTrace(new PrintWriter(sw)); - Onset.print(sw.toString()); - } - } - - @EventHandler - public void onPlayerVehicleEnter(PlayerEnterVehicleEvent evt) { - Onset.print("Player entered in the vehicle seat="+evt.getSeat()); - VehicleManager.onPlayerEnterVehicle(evt.getPlayer(), evt.getVehicle(), evt.getSeat()); - } - - @EventHandler - public void onPlayerVehicleExit(PlayerExitVehicleEvent evt) { - Onset.print("Player exit in the vehicle seat="+evt.getSeat()); - VehicleManager.onPlayerVehicleExit(evt.getPlayer(), evt.getVehicle(), evt.getSeat()); - } - - @EventHandler - public void onPlayerInteractDoor(PlayerInteractDoorEvent evt) { - House house = HouseManager.getHouseAtLocation(evt.getDoor().getLocation()); - if(house != null) { - Account account = WorldManager.getPlayerAccount(evt.getPlayer()); - if(house.getAccountId() == -1) { - HouseManager.handleHouseMenu(evt.getPlayer(), evt.getDoor().getLocation()); - return; - } - if(!HouseManager.canBuildInHouse(evt.getPlayer(), house) && house.isLocked()) { - SoundManager.playSound3D("sounds/toctoc.mp3", evt.getPlayer().getLocation(), 800, 1); - UIStateManager.sendNotification(evt.getPlayer(), ToastTypeEnum.ERROR, I18n.t(account.getLang(), "toast.house.dont_own_it")); - return; - } - } - - // Check Restricted Zone - for(RestrictedZone restrictedZone : WorldManager.getRestrictedZones()) { - if(!restrictedZone.canInteractWithDoor(evt.getPlayer(), evt.getDoor())) { - UIStateManager.sendNotification(evt.getPlayer(), ToastTypeEnum.ERROR, "Vous n'avez pas le droit d'intéragir avec cette porte"); - return; - } - } - - if(VehicleManager.getNearestVehicle(evt.getPlayer().getLocation()) != null) { - if(VehicleManager.getNearestVehicle(evt.getPlayer().getLocation()) - .getLocation().distance(evt.getPlayer().getLocation()) < VehicleManager.getInteractionDistance(VehicleManager.getNearestVehicle(evt.getPlayer().getLocation()))) { - return; - } else { - - evt.getDoor().setOpen(evt.getDoor().isOpen() ? false : true); - } - } else { - evt.getDoor().setOpen(evt.getDoor().isOpen() ? false : true); - } - } - - @EventHandler - public void onPlayerDead(PlayerDeathEvent evt) { - Account account = WorldManager.getPlayerAccount(evt.getPlayer()); - Location location = evt.getPlayer().getLocationAndHeading(); - account.setSaveX(location.getX()); - account.setSaveY(location.getY()); - account.setSaveZ(location.getZ()); - account.setSaveH(location.getHeading()); - - CharacterManager.onPlayerDeath(evt.getPlayer(), evt.getKiller()); - } - - @EventHandler - public void onPlayerSpawn(PlayerSpawnEvent evt) { - Onset.print("Player spawn steamid="+evt.getPlayer().getSteamId()); - CharacterManager.onPlayerSpawn(evt.getPlayer()); - } - - @EventHandler - public void onPlayerChatMessage(PlayerChatEvent evt) { - Onset.print("Player chat message="+evt.getMessage()); - Account account = WorldManager.getPlayerAccount(evt.getPlayer()); - if(account.getAdminLevel() > 0) { - String color = "ff0000"; - String name = "Staff"; - switch (account.getCommandLevel()) { - case 1: - color = "984fff"; - name = "Helpeur"; - break; - - case 2: - color = "0c42f2"; - name = "Modérateur"; - break; - - case 3: - color = "577eff"; - name = "Modérateur+"; - break; - - case 4: - color = "fc0097"; - name = "Administrateur"; - break; - - case 5: - color = "00ff2a"; - name = "Fondateur"; - break; - } - Onset.broadcast("[" + name + "] " + account.getCharacterName() + "(" + evt.getPlayer().getId() + "): " - + evt.getMessage()); - } else { - Onset.broadcast("[Citoyen] " + account.getCharacterName() + "(" + evt.getPlayer().getId() + "): " - + evt.getMessage()); - } - } -} +package fr.yuki.YukiRPFramework; + +import com.google.gson.Gson; +import com.google.gson.reflect.TypeToken; +import eu.bebendorf.ajorm.Repo; +import fr.yuki.YukiRPFramework.luaapi.LuaAPIManager; +import fr.yuki.YukiRPFramework.character.CharacterState; +import fr.yuki.YukiRPFramework.commands.*; +import fr.yuki.YukiRPFramework.dao.InventoryDAO; +import fr.yuki.YukiRPFramework.enums.ToastTypeEnum; +import fr.yuki.YukiRPFramework.i18n.I18n; +import fr.yuki.YukiRPFramework.inventory.Inventory; +import fr.yuki.YukiRPFramework.manager.*; +import fr.yuki.YukiRPFramework.modding.ModdingCustomModel; +import fr.yuki.YukiRPFramework.model.*; +import fr.yuki.YukiRPFramework.net.payload.*; +import fr.yuki.YukiRPFramework.utils.ServerConfig; +import fr.yuki.YukiRPFramework.world.RestrictedZone; +import net.onfirenetwork.onsetjava.Onset; +import net.onfirenetwork.onsetjava.data.Location; +import net.onfirenetwork.onsetjava.data.Vector; +import net.onfirenetwork.onsetjava.data.Weapon; +import net.onfirenetwork.onsetjava.plugin.Plugin; +import net.onfirenetwork.onsetjava.plugin.event.EventHandler; +import net.onfirenetwork.onsetjava.plugin.event.player.*; + +import java.io.PrintWriter; +import java.io.StringWriter; +import java.util.HashMap; +import java.util.Map; + +@Plugin(name = "YukiRPFramework", author = "Yuki") +public class YukiRPFrameworkPlugin { + + public void onEnable() { + try { + WorldManager.initServerConfig(); + I18n.init(); + Database.init(); + Onset.registerListener(this); + ModdingManager.init(); + MapManager.init(); + InventoryManager.init(); + ItemManager.init(); + CharacterManager.init(); + VehicleManager.init(); + GarageManager.init(); + SoundManager.init(); + WorldManager.init(); + JobManager.init(); + AccountManager.init(); + GrowboxManager.init(); + FuelManager.init(); + PhoneManager.init(); + HouseManager.init(); + TimeManager.init(); + CompagnyManager.init(); + TebexManager.init(); + LuaAPIManager.init(); + + // Register commands + Onset.registerCommand("item", new ItemCommand()); + Onset.registerCommand("loc", new LocCommand()); + Onset.registerCommand("v", new VCommand()); + Onset.registerCommand("vmove", new MoveCommand()); + Onset.registerCommand("dv", new DVCommand()); + Onset.registerCommand("addgatheritem", new AddGatherItemCommand()); + Onset.registerCommand("listgatheritem", new ShowGatherItemListCommand()); + Onset.registerCommand("dct", new DebugCharacterToolCommand()); + Onset.registerCommand("dvsl", new DebugVehicleStorageLayoutCommand()); + Onset.registerCommand("adddelivery", new AddDeliveryPointCommand()); + Onset.registerCommand("setadmin", new SetAdminLevelCommand()); + Onset.registerCommand("ban", new BanCommand()); + Onset.registerCommand("goto", new GotoCommand()); + Onset.registerCommand("bring", new BringCommand()); + Onset.registerCommand("flip", new FlipCommand()); + Onset.registerCommand("lang", new SetLangCommand()); + Onset.registerCommand("dop", new DebugObjectPlacementCommand()); + Onset.registerCommand("setwhitelist", new SetWhitelistCommand()); + Onset.registerCommand("cuff", new CuffCommand()); + Onset.registerCommand("revive", new ReviveCommand()); + Onset.registerCommand("nitro", new NitroCommand()); + Onset.registerCommand("dhouse", new DebugHouseCommand()); + Onset.registerCommand("chouse", new CreateHouseCommand()); + Onset.registerCommand("fhouse", new FreeHouseCommand()); + Onset.registerCommand("houseprops", new SetHousePropsCommand()); + Onset.registerCommand("givehousekey", new GiveHouseKeyCommand()); + Onset.registerCommand("settime", new SetTimeCommand()); + Onset.registerCommand("getid", new GetIdCommand()); + Onset.registerCommand("setcommandlevel", new SetCommandLevelCommand()); + Onset.registerCommand("requestcreation", new RequestCharacterCreationCommand()); + Onset.registerCommand("invis", new InvisCommand()); + Onset.registerCommand("regenphone", new RegenPhoneNumberCommand()); + Onset.registerCommand("ann", new AnnCommand()); + Onset.registerCommand("itemall", new AddItemAllCommand()); + Onset.registerCommand("fgc", new ForceGarbageCommand()); + Onset.registerCommand("debugtest", new DebugTestCommand()); + Onset.registerCommand("kick", new KickCommand()); + Onset.registerCommand("setclothe", new SetClotheCommand()); + Onset.registerCommand("setcharacterscale", new SetCharacterScaleCommand()); + + // Register remote events + Onset.registerRemoteEvent("GlobalUI:ToogleWindow"); + Onset.registerRemoteEvent("Inventory:RequestContent"); + Onset.registerRemoteEvent("Inventory:UseItem"); + Onset.registerRemoteEvent("Object:Interact"); + Onset.registerRemoteEvent("ATM:Deposit"); + Onset.registerRemoteEvent("ATM:Withdraw"); + Onset.registerRemoteEvent("Vehicle:RequestLockToogle"); + Onset.registerRemoteEvent("Garage:RequestVehicle"); + Onset.registerRemoteEvent("Garage:BuyVehicle"); + Onset.registerRemoteEvent("Character:Style:SavePart"); + Onset.registerRemoteEvent("Character:Style:CustomDone"); + Onset.registerRemoteEvent("Global:UIReady"); + Onset.registerRemoteEvent("Job:WearObject"); + Onset.registerRemoteEvent("Job:CharacterJobRequest"); + Onset.registerRemoteEvent("Character:RequestWearFromVehicleChest"); + Onset.registerRemoteEvent("Inventory:ThrowItem"); + Onset.registerRemoteEvent("Seller:BuySellItem"); + Onset.registerRemoteEvent("Object:EditPlacementCancel"); + Onset.registerRemoteEvent("Object:EditPlacement"); + Onset.registerRemoteEvent("Object:EditPlacementDone"); + Onset.registerRemoteEvent("Job:UseJobTool"); + Onset.registerRemoteEvent("Growbox:FillWaterPot"); + Onset.registerRemoteEvent("Growbox:FillSeedPot"); + Onset.registerRemoteEvent("Growbox:HarvestPot"); + Onset.registerRemoteEvent("Growbox:TakePot"); + Onset.registerRemoteEvent("Phone:AddContact"); + Onset.registerRemoteEvent("Phone:RequestContacts"); + Onset.registerRemoteEvent("Phone:RequestSendMessage"); + Onset.registerRemoteEvent("Phone:RequestConversation"); + Onset.registerRemoteEvent("Phone:RequestConversationsList"); + Onset.registerRemoteEvent("House:RequestHouseMenu"); + Onset.registerRemoteEvent("House:RequestBuy"); + Onset.registerRemoteEvent("Object:EditExistingPlacement"); + Onset.registerRemoteEvent("Phone:RequestBuyItemShop"); + Onset.registerRemoteEvent("Weapon:StoreWeapon"); + Onset.registerRemoteEvent("Growbox:Destroy"); + Onset.registerRemoteEvent("ATM:GetInfos"); + Onset.registerRemoteEvent("Phone:RequestCall"); + Onset.registerRemoteEvent("Phone:RequestAnswer"); + Onset.registerRemoteEvent("Phone:RequestEndCall"); + Onset.registerRemoteEvent("Phone:RequestAttachPhone"); + Onset.registerRemoteEvent("SetPlayerEditor"); + Onset.registerRemoteEvent("Phone:RequestUrgency"); + Onset.registerRemoteEvent("Phone:RequestListUrgency"); + Onset.registerRemoteEvent("Phone:SolveUrgency"); + Onset.registerRemoteEvent("Compagny:Create"); + Onset.registerRemoteEvent("Compagny:InviteEmployee"); + Onset.registerRemoteEvent("Compagny:AcceptInvitation"); + Onset.registerRemoteEvent("Compagny:DeclineInvitation"); + Onset.registerRemoteEvent("Compagny:KickEmployee"); + Onset.registerRemoteEvent("Character:Interact"); + Onset.registerRemoteEvent("Character:InspectCharacter"); + Onset.registerRemoteEvent("GenericMenu:Dismiss"); + Onset.registerRemoteEvent("Character:GiveHouseKey"); + } catch (Exception ex) { + ex.printStackTrace(); + Onset.print("Can't start the plugin because : " + ex.toString()); + } + } + + @EventHandler + public void onJoin(PlayerSteamAuthEvent evt) { + // Create or update the account + try { + Onset.print("Player joining steamId=" + evt.getPlayer().getSteamId()); + Account account = Repo.get(Account.class).where("steamId", evt.getPlayer().getSteamId()).get(); + ServerConfig serverConfig = WorldManager.getServerConfig(); + + // Clear state + CharacterState state = CharacterManager.getCharacterStateByPlayer(evt.getPlayer()); + if(state != null) { + state.setCurrentPhoneCall(null); + state.setCurrentObjectPlacementInstance(null); + state.setCuffed(false); + } + + // Create the account if doesnt exist + if(account == null) { + Onset.print("Create the account for the steamId=" + evt.getPlayer().getSteamId()); + + account = new Account(); + account.setSteamName(evt.getPlayer().getName()); + account.setSteamId(evt.getPlayer().getSteamId()); + account.setPhoneNumber(PhoneManager.generateRandomPhoneNumber()); + account.setSaveX(serverConfig.getSpawnPointX()); + account.setSaveY(serverConfig.getSpawnPointY()); + account.setSaveZ(serverConfig.getSpawnPointZ()); + account.setSaveH(serverConfig.getSpawnPointH()); + account.save(); + WorldManager.getAccounts().put(account.getId(), account); + + // Set spawn location + evt.getPlayer().setSpawnLocation(new Vector(serverConfig.getSpawnPointX(), + serverConfig.getSpawnPointY(), serverConfig.getSpawnPointZ()), serverConfig.getSpawnPointH()); + evt.getPlayer().setLocation(new Vector(serverConfig.getSpawnPointX(), + serverConfig.getSpawnPointY(), serverConfig.getSpawnPointZ())); + evt.getPlayer().setHeading(serverConfig.getSpawnPointH()); + CharacterManager.teleportWithLevelLoading(evt.getPlayer(), new Location(serverConfig.getSpawnPointX(), + serverConfig.getSpawnPointY(), serverConfig.getSpawnPointZ(), serverConfig.getSpawnPointH())); + + // Create the default inventory for character + Inventory inventory = InventoryDAO.createInventory(); + Onset.print("Inventory created id=" + inventory.getId()); + inventory.setInventoryType(1); + inventory.setCharacterId(account.getId()); + InventoryManager.getInventories().put(inventory.getId(), inventory); + inventory.save(); + + // Set properties for the player + evt.getPlayer().setProperty("accountId", account.getId(), true); + } + else { + if(account.isBanned()) { + evt.getPlayer().kick("You have been banned, bye bye"); + return; + } + + // Set properties for the player + evt.getPlayer().setProperty("accountId", account.getId(), true); + + // evt.getPlayer().setLocation(new Vector(account.getSaveX(), account.getSaveY(), account.getSaveZ())); + CharacterManager.teleportWithLevelLoading(evt.getPlayer(), new Location(account.getSaveX(), + account.getSaveY(), + account.getSaveZ() + 50, + account.getSaveH())); + + if(account.getCharacterName().equals("Unknown")) { // Recovery + account.setCharacterCreationRequest(true); + account.setPhoneNumber(PhoneManager.generateRandomPhoneNumber()); + account.setBankMoney(4000); + Onset.print("Phone number generated : " + account.getPhoneNumber()); + + evt.getPlayer().setSpawnLocation(new Vector(serverConfig.getSpawnPointX(), + serverConfig.getSpawnPointY(), serverConfig.getSpawnPointZ()), 0); + CharacterManager.teleportWithLevelLoading(evt.getPlayer(), new Location(serverConfig.getSpawnPointX(), + serverConfig.getSpawnPointY(), serverConfig.getSpawnPointZ(), serverConfig.getSpawnPointH())); + } else { + evt.getPlayer().setSpawnLocation(new Vector(account.getSaveX(), account.getSaveY(), account.getSaveZ()), 0); + //Onset.broadcast("" + account.getCharacterName() + " est de retour !"); + } + + if(account.getOriginalStyle().equals("")) { + account.setOriginalStyle(account.getCharacterStyle()); + } + // Set weapons + for(Map.Entry weaponEntry : + ((HashMap)new Gson().fromJson(account.getWeapons(), new TypeToken>(){}.getType())).entrySet()) { + evt.getPlayer().setWeapon(weaponEntry.getKey(), weaponEntry.getValue()); + } + } + + // Insert the account in the cache if not exist + if(!WorldManager.getAccounts().containsKey(account.getId())) { + WorldManager.getAccounts().put(account.getId(), account); + } + + JobManager.initCharacterJobs(evt.getPlayer()); + if(CharacterManager.getCharacterStateByPlayer(evt.getPlayer()) == null) + CharacterManager.getCharacterStates().put(evt.getPlayer().getSteamId(), new CharacterState()); + + // Generate a phone number for the player + if(account.getPhoneNumber().trim().equals("")) { + account.setPhoneNumber(PhoneManager.generateRandomPhoneNumber()); + account.save(); + Onset.print("Phone number generated : " + account.getPhoneNumber()); + } + + // Attach bag + if(account.getBagId() != -1) { + Account finalAccount = account; + Bag bag = ItemManager.bags.stream().filter(x -> x.getModelId() == finalAccount.getBagId()) + .findFirst().orElse(null); + state.attachBag(bag, evt.getPlayer()); + } + + // If the player is dead + if(account.isDead()) { + evt.getPlayer().setHealth(0); + } else { + evt.getPlayer().setHealth(account.getHealth()); + } + + // Set current time + TimeManager.setCurrentHourForPlayer(evt.getPlayer()); + + // Set modding objects + for(ModdingCustomModel customModel : ModdingManager.getModdingFile().getCustomModels()) { + evt.getPlayer().callRemoteEvent("Modding:AddCustomObject", customModel.getId(), customModel.getPath()); + } + } catch (Exception e) { + e.printStackTrace(); + evt.getPlayer().kick("There is a error for retrieving your account: " + e.toString()); + } + } + + @EventHandler + public void onQuit(PlayerQuitEvent evt) { + Onset.print("Player quit steamId=" + evt.getPlayer().getSteamId()); + WorldManager.handleObjectEditPlacementCancel(evt.getPlayer()); + Account account = WorldManager.getPlayerAccount(evt.getPlayer()); + Location location = evt.getPlayer().getLocationAndHeading(); + account.setSaveX(location.getX()); + account.setSaveY(location.getY()); + account.setSaveZ(location.getZ()); + account.setSaveH(location.getHeading()); + CharacterState state = CharacterManager.getCharacterStateByPlayer(evt.getPlayer()); + if(state != null) { + if(state.getCurrentPhoneCall() != null ){ + state.getCurrentPhoneCall().end(); + } + CharacterManager.getCharacterStates().remove(evt.getPlayer().getSteamId()); + } + WorldManager.savePlayer(evt.getPlayer()); + } + + @EventHandler + public void onRemoteEvent(PlayerRemoteEvent evt) { + try { + Onset.print("Receive remote event name=" + evt.getName()); + switch (evt.getName()) { + case "Inventory:RequestContent": + InventoryManager.handleRequestContent(evt.getPlayer(), new Gson().fromJson((evt.getArgs()[0]).toString(), + RequestInventoryContentPayload.class)); + break; + + case "Inventory:UseItem": + ItemManager.handleItemUse(evt.getPlayer(), new Gson().fromJson((evt.getArgs()[0]).toString(), + RequestUseItemPayload.class)); + break; + + case "GlobalUI:ToogleWindow": + UIStateManager.handleUIToogle(evt.getPlayer(), (evt.getArgs()[0]).toString()); + break; + + case "Object:Interact": + WorldManager.handleInteract(evt.getPlayer()); + break; + + case "ATM:Deposit": + ATMManager.handleATMDeposit(evt.getPlayer(), (int)Float.parseFloat((evt.getArgs()[0]).toString())); + break; + + case "ATM:Withdraw": + ATMManager.handleATMWithdraw(evt.getPlayer(), (int)Float.parseFloat((evt.getArgs()[0]).toString())); + break; + + case "ATM:GetInfos": + ATMManager.handleATMGetInfos(evt.getPlayer()); + break; + + case "Vehicle:RequestLockToogle": + VehicleManager.handleVehicleLockRequest(evt.getPlayer()); + break; + + case "Garage:RequestVehicle": + GarageManager.handleRequestVehicle(evt.getPlayer(), (evt.getArgs()[0]).toString()); + break; + + case "Garage:BuyVehicle": + GarageManager.handleRequestBuyVehicle(evt.getPlayer(), new Gson().fromJson((evt.getArgs()[0]).toString(), + RequestBuyVehiclePayload.class)); + break; + + case "Character:Style:SavePart": + CharacterManager.handleStyleSavePart(evt.getPlayer(), new Gson().fromJson((evt.getArgs()[0]).toString(), + StyleSavePartPayload.class)); + break; + + case "Character:Style:CustomDone": + CharacterManager.handleCharacterCustomDone(evt.getPlayer(), (evt.getArgs()[0]).toString()); + break; + + case "Global:UIReady": + UIStateManager.handleUIReady(evt.getPlayer()); + break; + + case "Job:WearObject": + JobManager.handleWearObjectRequest(evt.getPlayer(), (evt.getArgs()[0]).toString()); + break; + + case "Character:RequestWearFromVehicleChest": + VehicleManager.handleRequestWearFromVehicleChest(evt.getPlayer(), (evt.getArgs()[0]).toString()); + break; + + case "Inventory:ThrowItem": + InventoryManager.handleThrowItem(evt.getPlayer(), new Gson().fromJson((evt.getArgs()[0]).toString(), + RequestThrowItemPayload.class)); + break; + + case "Job:CharacterJobRequest": + JobManager.handleRequestCharacterJobs(evt.getPlayer()); + break; + + case "Seller:BuySellItem": + WorldManager.handleBuySellItemSeller(evt.getPlayer(), new Gson().fromJson((evt.getArgs()[0]).toString(), + BuySellItemRequestPayload.class)); + break; + + case "Object:EditPlacement": + WorldManager.handleObjectRequestPlacement(evt.getPlayer()); + break; + + case "Object:EditPlacementCancel": + WorldManager.handleObjectEditPlacementCancel(evt.getPlayer()); + break; + + case "Object:EditPlacementDone": + WorldManager.handleObjectPlacementDone(evt.getPlayer(), + new Vector(Double.parseDouble((evt.getArgs()[0]).toString()), + Double.parseDouble((evt.getArgs()[1]).toString()), Double.parseDouble((evt.getArgs()[2]).toString())), + new Vector(Double.parseDouble((evt.getArgs()[3]).toString()), + Double.parseDouble((evt.getArgs()[4]).toString()), Double.parseDouble((evt.getArgs()[5]).toString()))); + break; + + case "Job:UseJobTool": + JobManager.handleUseJobTool(evt.getPlayer(), (evt.getArgs()[0]).toString()); + break; + + case "Growbox:Destroy": + GrowboxManager.handleGrowboxDestroy(evt.getPlayer(), (evt.getArgs()[0]).toString()); + break; + + case "Growbox:FillWaterPot": + GrowboxManager.handleGrowboxFillWaterPot(evt.getPlayer(), new Gson().fromJson((evt.getArgs()[0]).toString(), + GrowboxFillWaterPotPayload.class)); + break; + + case "Growbox:FillSeedPot": + GrowboxManager.handleGrowboxFillSeedPot(evt.getPlayer(), new Gson().fromJson((evt.getArgs()[0]).toString(), + GrowboxFillWaterPotPayload.class)); + break; + + case "Growbox:HarvestPot": + GrowboxManager.handleGrowboxHarvestRequest(evt.getPlayer(), new Gson().fromJson((evt.getArgs()[0]).toString(), + GrowboxFillWaterPotPayload.class)); + break; + + case "Growbox:TakePot": + GrowboxManager.handleGrowboxTakePotRequest(evt.getPlayer(), new Gson().fromJson((evt.getArgs()[0]).toString(), + GrowboxFillWaterPotPayload.class)); + break; + + case "Phone:RequestContacts": + PhoneManager.handleRequestPhoneContacts(evt.getPlayer()); + break; + + case "Phone:AddContact": + PhoneManager.handleAddPhoneContact(evt.getPlayer(), new Gson().fromJson((evt.getArgs()[0]).toString(), + PhoneAddContactPayload.class)); + break; + + case "Phone:RequestSendMessage": + PhoneManager.handleRequestSendMessage(evt.getPlayer(), new Gson().fromJson((evt.getArgs()[0]).toString(), + RequestPhoneSendMessagePayload.class)); + break; + + case "Phone:RequestConversation": + PhoneManager.handleRequestConversation(evt.getPlayer(), (evt.getArgs()[0]).toString()); + break; + + case "Phone:RequestConversationsList": + PhoneManager.handleRequestConversationsList(evt.getPlayer()); + break; + + case "House:RequestHouseMenu": + HouseManager.handleHouseMenu(evt.getPlayer(), evt.getPlayer().getLocation()); + break; + + case "House:RequestBuy": + HouseManager.handleBuyHouseRequest(evt.getPlayer()); + break; + + case "Object:EditExistingPlacement": + WorldManager.handleEditExistingPlacement(evt.getPlayer(), Integer.parseInt((evt.getArgs()[0]).toString())); + break; + + case "Phone:RequestBuyItemShop": + HouseManager.handleRequestBuyItemShop(evt.getPlayer(), Integer.parseInt((evt.getArgs()[0]).toString())); + break; + + case "Weapon:StoreWeapon": + WeaponManager.storeWeapon(evt.getPlayer()); + break; + + case "Phone:RequestCall": + PhoneManager.handleRequestCall(evt.getPlayer(), (evt.getArgs()[0]).toString()); + break; + + case "Phone:RequestAnswer": + PhoneManager.handleCallAnswer(evt.getPlayer()); + break; + + case "Phone:RequestEndCall": + PhoneManager.handleCallEnd(evt.getPlayer()); + break; + + case "Phone:RequestAttachPhone": + PhoneManager.handleAttachPhone(evt.getPlayer(), (evt.getArgs()[0]).toString()); + break; + + case "SetPlayerEditor": + ModdingManager.onEditorOpen(evt.getPlayer()); + break; + + case "Phone:RequestUrgency": + PhoneManager.handleUrgencyRequest(evt.getPlayer(), new Gson().fromJson((evt.getArgs()[0]).toString(), + UrgencyRequestPayload.class)); + break; + + case "Phone:RequestListUrgency": + PhoneManager.handleUrgencyListRequest(evt.getPlayer()); + break; + + case "Phone:SolveUrgency": + PhoneManager.handleUrgencySolveRequest(evt.getPlayer(), new Gson().fromJson((evt.getArgs()[0]).toString(), + SolveUrgencyPayload.class)); + break; + + case "Compagny:Create": + CompagnyManager.handleCreateRequest(evt.getPlayer(), (evt.getArgs()[0]).toString()); + break; + + case "Compagny:InviteEmployee": + CompagnyManager.handleInviteEmployee(evt.getPlayer(), (evt.getArgs()[0]).toString()); + break; + + case "Compagny:AcceptInvitation": + CompagnyManager.handleAcceptInvitation(evt.getPlayer()); + break; + + case "Compagny:DeclineInvitation": + CompagnyManager.handleDeclineInvitation(evt.getPlayer()); + break; + + case "Compagny:KickEmployee": + CompagnyManager.handleKickEmployee(evt.getPlayer(), (evt.getArgs()[0]).toString()); + break; + + case "Character:Interact": + CharacterManager.handleCharacterInteract(evt.getPlayer()); + break; + + case "GenericMenu:Dismiss": + CharacterManager.handleGenericMenuDismiss(evt.getPlayer()); + break; + + case "Character:InspectCharacter": + CharacterManager.handleInspectCharacter(evt.getPlayer(), Integer.parseInt((evt.getArgs()[0]).toString())); + break; + + case "Character:GiveHouseKey": + HouseManager.handleGiveHouseKey(evt.getPlayer(), Integer.parseInt((evt.getArgs()[0]).toString())); + break; + } + } + catch (Exception ex) { + StringWriter sw = new StringWriter(); + ex.printStackTrace(new PrintWriter(sw)); + Onset.print(sw.toString()); + } + } + + @EventHandler + public void onPlayerVehicleEnter(PlayerEnterVehicleEvent evt) { + Onset.print("Player entered in the vehicle seat="+evt.getSeat()); + VehicleManager.onPlayerEnterVehicle(evt.getPlayer(), evt.getVehicle(), evt.getSeat()); + } + + @EventHandler + public void onPlayerVehicleExit(PlayerExitVehicleEvent evt) { + Onset.print("Player exit in the vehicle seat="+evt.getSeat()); + VehicleManager.onPlayerVehicleExit(evt.getPlayer(), evt.getVehicle(), evt.getSeat()); + } + + @EventHandler + public void onPlayerInteractDoor(PlayerInteractDoorEvent evt) { + House house = HouseManager.getHouseAtLocation(evt.getDoor().getLocation()); + if(house != null) { + Account account = WorldManager.getPlayerAccount(evt.getPlayer()); + if(house.getAccountId() == -1) { + HouseManager.handleHouseMenu(evt.getPlayer(), evt.getDoor().getLocation()); + return; + } + if(!HouseManager.canBuildInHouse(evt.getPlayer(), house) && house.isLocked()) { + SoundManager.playSound3D("sounds/toctoc.mp3", evt.getPlayer().getLocation(), 800, 1); + UIStateManager.sendNotification(evt.getPlayer(), ToastTypeEnum.ERROR, I18n.t(account.getLang(), "toast.house.dont_own_it")); + return; + } + } + + // Check Restricted Zone + for(RestrictedZone restrictedZone : WorldManager.getRestrictedZones()) { + if(!restrictedZone.canInteractWithDoor(evt.getPlayer(), evt.getDoor())) { + UIStateManager.sendNotification(evt.getPlayer(), ToastTypeEnum.ERROR, "Vous n'avez pas le droit d'intéragir avec cette porte"); + return; + } + } + + if(VehicleManager.getNearestVehicle(evt.getPlayer().getLocation()) != null) { + if(VehicleManager.getNearestVehicle(evt.getPlayer().getLocation()) + .getLocation().distance(evt.getPlayer().getLocation()) < VehicleManager.getInteractionDistance(VehicleManager.getNearestVehicle(evt.getPlayer().getLocation()))) { + return; + } else { + + evt.getDoor().setOpen(evt.getDoor().isOpen() ? false : true); + } + } else { + evt.getDoor().setOpen(evt.getDoor().isOpen() ? false : true); + } + } + + @EventHandler + public void onPlayerDead(PlayerDeathEvent evt) { + Account account = WorldManager.getPlayerAccount(evt.getPlayer()); + Location location = evt.getPlayer().getLocationAndHeading(); + account.setSaveX(location.getX()); + account.setSaveY(location.getY()); + account.setSaveZ(location.getZ()); + account.setSaveH(location.getHeading()); + + CharacterManager.onPlayerDeath(evt.getPlayer(), evt.getKiller()); + } + + @EventHandler + public void onPlayerSpawn(PlayerSpawnEvent evt) { + Onset.print("Player spawn steamid="+evt.getPlayer().getSteamId()); + CharacterManager.onPlayerSpawn(evt.getPlayer()); + } + + @EventHandler + public void onPlayerChatMessage(PlayerChatEvent evt) { + Onset.print("Player chat message="+evt.getMessage()); + Account account = WorldManager.getPlayerAccount(evt.getPlayer()); + if(account.getAdminLevel() > 0) { + String color = "ff0000"; + String name = "Staff"; + switch (account.getCommandLevel()) { + case 1: + color = "984fff"; + name = "Helpeur"; + break; + + case 2: + color = "0c42f2"; + name = "Modérateur"; + break; + + case 3: + color = "577eff"; + name = "Modérateur+"; + break; + + case 4: + color = "fc0097"; + name = "Administrateur"; + break; + + case 5: + color = "00ff2a"; + name = "Fondateur"; + break; + } + Onset.broadcast("[" + name + "] " + account.getCharacterName() + "(" + evt.getPlayer().getId() + "): " + + evt.getMessage()); + } else { + Onset.broadcast("[Citoyen] " + account.getCharacterName() + "(" + evt.getPlayer().getId() + "): " + + evt.getMessage()); + } + } +} diff --git a/src/main/java/fr/yuki/YukiRPFramework/character/CharacterState.java b/src/main/java/fr/yuki/YukiRPFramework/character/CharacterState.java index 781fb59..361127c 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/character/CharacterState.java +++ b/src/main/java/fr/yuki/YukiRPFramework/character/CharacterState.java @@ -1,235 +1,225 @@ -package fr.yuki.YukiRPFramework.character; - -import fr.yuki.YukiRPFramework.dao.AccountDAO; -import fr.yuki.YukiRPFramework.job.ObjectPlacementInstance; -import fr.yuki.YukiRPFramework.job.WearableWorldObject; -import fr.yuki.YukiRPFramework.manager.ModdingManager; -import fr.yuki.YukiRPFramework.manager.WorldManager; -import fr.yuki.YukiRPFramework.modding.Line3D; -import fr.yuki.YukiRPFramework.model.Account; -import fr.yuki.YukiRPFramework.model.Bag; -import fr.yuki.YukiRPFramework.model.Mask; -import fr.yuki.YukiRPFramework.phone.PhoneCall; -import fr.yuki.YukiRPFramework.ui.GenericMenu; -import fr.yuki.YukiRPFramework.ui.UIState; -import net.onfirenetwork.onsetjava.Onset; -import net.onfirenetwork.onsetjava.data.Vector; -import net.onfirenetwork.onsetjava.entity.Player; -import net.onfirenetwork.onsetjava.entity.WorldObject; - -import java.sql.SQLException; -import java.util.ArrayList; - -public class CharacterState { - private WearableWorldObject wearableWorldObject; - private boolean isDead = false; - private boolean firstSpawn = true; - private boolean hasUIReady = false; - private ObjectPlacementInstance currentObjectPlacementInstance = null; - private boolean cuffed = false; - private UIState uiState = null; - private Line3D currentDisplayedLine3D = null; - private ArrayList lastLocationsRequest = new ArrayList<>(); - private Mask currentMask = null; - private WorldObject maskWorldObject = null; - private Bag currentBag = null; - private WorldObject bagWorldObject = null; - private PhoneCall currentPhoneCall = null; - private int currentCompagnyInvited = -1; - private CharacterToolAnimation currentPhoneAttached = null; - private GenericMenu currentGenericMenu = null; - private boolean isInvisible = false; - - public CharacterState() { - this.uiState = new UIState(); - } - - public WearableWorldObject getWearableWorldObject() { - return wearableWorldObject; - } - - public void setWearableWorldObject(Player player, WearableWorldObject wearableWorldObject) { - this.wearableWorldObject = wearableWorldObject; - if(this.wearableWorldObject != null) { - player.setProperty("wearId", this.wearableWorldObject.getUuid(), true); - } else { - player.setProperty("wearId", "", true); - } - } - - public boolean isDead() { - return isDead; - } - - public void setDead(boolean dead) { - isDead = dead; - } - - public boolean isFirstSpawn() { - return firstSpawn; - } - - public void setFirstSpawn(boolean firstSpawn) { - Onset.print("FirstSpawn: " + firstSpawn); - this.firstSpawn = firstSpawn; - } - - public ObjectPlacementInstance getCurrentObjectPlacementInstance() { - return currentObjectPlacementInstance; - } - - public void setCurrentObjectPlacementInstance(ObjectPlacementInstance currentObjectPlacementInstance) { - this.currentObjectPlacementInstance = currentObjectPlacementInstance; - } - - public boolean isCuffed() { - return cuffed; - } - - public void setCuffed(boolean cuffed) { - this.cuffed = cuffed; - } - - public boolean canInteract() { - if(this.isDead) return false; - if(this.cuffed) return false; - if(this.getCurrentObjectPlacementInstance() != null) return false; - return true; - } - - public UIState getUiState() { - return uiState; - } - - public Line3D getCurrentDisplayedLine3D() { - return currentDisplayedLine3D; - } - - public void setCurrentDisplayedLine3D(Line3D currentDisplayedLine3D) { - this.currentDisplayedLine3D = currentDisplayedLine3D; - } - - public ArrayList getLastLocationsRequest() { - return lastLocationsRequest; - } - - public void setLastLocationsRequest(ArrayList lastLocationsRequest) { - this.lastLocationsRequest = lastLocationsRequest; - } - - public void attachMask(Mask mask, Player player) { - if(this.maskWorldObject != null) { - this.maskWorldObject.destroy(); - } - this.currentMask = mask; - Onset.print("Attach mask id: " + mask.getModelId()); - this.maskWorldObject = Onset.getServer().createObject(new Vector(0, 0, 0), mask.getModelId()); - this.maskWorldObject.attach(player, new Vector(mask.getX(), mask.getY(), mask.getZ()), new Vector(mask.getRx(), mask.getRy(), mask.getRz()), mask.getSocket()); - if(ModdingManager.isCustomModelId(mask.getModelId())) ModdingManager.assignCustomModel(this.maskWorldObject, mask.getModelId()); - this.maskWorldObject.setScale(new Vector(mask.getSx(), mask.getSy(), mask.getSz())); - } - - public void unattachMask() { - if(this.maskWorldObject != null) { - this.maskWorldObject.destroy(); - } - this.currentMask = null; - } - - public void attachBag(Bag bag, Player player) { - if(this.bagWorldObject != null) { - this.bagWorldObject.destroy(); - } - Account account = WorldManager.getPlayerAccount(player); - this.currentBag = bag; - Onset.print("Attach bag id: " + bag.getModelId()); - this.bagWorldObject = Onset.getServer().createObject(new Vector(0, 0, 0), bag.getModelId()); - this.bagWorldObject.attach(player, new Vector(bag.getX(), bag.getY(), bag.getZ()), new Vector(bag.getRx(), bag.getRy(), bag.getRz()), bag.getSocket()); - if(ModdingManager.isCustomModelId(bag.getModelId())) ModdingManager.assignCustomModel(this.bagWorldObject, bag.getModelId()); - this.bagWorldObject.setScale(new Vector(bag.getSx(), bag.getSy(), bag.getSz())); - account.setBagId(this.currentBag.getModelId()); - try { - AccountDAO.updateAccount(account, null); - } catch (SQLException throwables) { - throwables.printStackTrace(); - } - } - - public void unattachBag(Player player) { - if(this.bagWorldObject != null) { - this.bagWorldObject.destroy(); - } - Account account = WorldManager.getPlayerAccount(player); - this.currentBag = null; - account.setBagId(-1); - try { - AccountDAO.updateAccount(account, null); - } catch (SQLException throwables) { - throwables.printStackTrace(); - } - } - - public Mask getCurrentMask() { - return currentMask; - } - - public void setCurrentMask(Mask currentMask) { - this.currentMask = currentMask; - } - - public Bag getCurrentBag() { - return currentBag; - } - - public void setCurrentBag(Bag currentBag) { - this.currentBag = currentBag; - } - - public boolean isHasUIReady() { - return hasUIReady; - } - - public void setHasUIReady(boolean hasUIReady) { - this.hasUIReady = hasUIReady; - } - - public PhoneCall getCurrentPhoneCall() { - return currentPhoneCall; - } - - public void setCurrentPhoneCall(PhoneCall currentPhoneCall) { - this.currentPhoneCall = currentPhoneCall; - } - - public CharacterToolAnimation getCurrentPhoneAttached() { - return currentPhoneAttached; - } - - public void setCurrentPhoneAttached(CharacterToolAnimation currentPhoneAttached) { - this.currentPhoneAttached = currentPhoneAttached; - } - - public int getCurrentCompagnyInvited() { - return currentCompagnyInvited; - } - - public void setCurrentCompagnyInvited(int currentCompagnyInvited) { - this.currentCompagnyInvited = currentCompagnyInvited; - } - - public GenericMenu getCurrentGenericMenu() { - return currentGenericMenu; - } - - public void setCurrentGenericMenu(GenericMenu currentGenericMenu) { - this.currentGenericMenu = currentGenericMenu; - } - - public boolean isInvisible() { - return isInvisible; - } - - public void setInvisible(boolean invisible) { - isInvisible = invisible; - } -} +package fr.yuki.YukiRPFramework.character; + +import fr.yuki.YukiRPFramework.job.ObjectPlacementInstance; +import fr.yuki.YukiRPFramework.job.WearableWorldObject; +import fr.yuki.YukiRPFramework.manager.ModdingManager; +import fr.yuki.YukiRPFramework.manager.WorldManager; +import fr.yuki.YukiRPFramework.modding.Line3D; +import fr.yuki.YukiRPFramework.model.Account; +import fr.yuki.YukiRPFramework.model.Bag; +import fr.yuki.YukiRPFramework.model.Mask; +import fr.yuki.YukiRPFramework.phone.PhoneCall; +import fr.yuki.YukiRPFramework.ui.GenericMenu; +import fr.yuki.YukiRPFramework.ui.UIState; +import net.onfirenetwork.onsetjava.Onset; +import net.onfirenetwork.onsetjava.data.Vector; +import net.onfirenetwork.onsetjava.entity.Player; +import net.onfirenetwork.onsetjava.entity.WorldObject; + +import java.util.ArrayList; + +public class CharacterState { + private WearableWorldObject wearableWorldObject; + private boolean isDead = false; + private boolean firstSpawn = true; + private boolean hasUIReady = false; + private ObjectPlacementInstance currentObjectPlacementInstance = null; + private boolean cuffed = false; + private UIState uiState = null; + private Line3D currentDisplayedLine3D = null; + private ArrayList lastLocationsRequest = new ArrayList<>(); + private Mask currentMask = null; + private WorldObject maskWorldObject = null; + private Bag currentBag = null; + private WorldObject bagWorldObject = null; + private PhoneCall currentPhoneCall = null; + private int currentCompagnyInvited = -1; + private CharacterToolAnimation currentPhoneAttached = null; + private GenericMenu currentGenericMenu = null; + private boolean isInvisible = false; + + public CharacterState() { + this.uiState = new UIState(); + } + + public WearableWorldObject getWearableWorldObject() { + return wearableWorldObject; + } + + public void setWearableWorldObject(Player player, WearableWorldObject wearableWorldObject) { + this.wearableWorldObject = wearableWorldObject; + if(this.wearableWorldObject != null) { + player.setProperty("wearId", this.wearableWorldObject.getUuid(), true); + } else { + player.setProperty("wearId", "", true); + } + } + + public boolean isDead() { + return isDead; + } + + public void setDead(boolean dead) { + isDead = dead; + } + + public boolean isFirstSpawn() { + return firstSpawn; + } + + public void setFirstSpawn(boolean firstSpawn) { + Onset.print("FirstSpawn: " + firstSpawn); + this.firstSpawn = firstSpawn; + } + + public ObjectPlacementInstance getCurrentObjectPlacementInstance() { + return currentObjectPlacementInstance; + } + + public void setCurrentObjectPlacementInstance(ObjectPlacementInstance currentObjectPlacementInstance) { + this.currentObjectPlacementInstance = currentObjectPlacementInstance; + } + + public boolean isCuffed() { + return cuffed; + } + + public void setCuffed(boolean cuffed) { + this.cuffed = cuffed; + } + + public boolean canInteract() { + if(this.isDead) return false; + if(this.cuffed) return false; + if(this.getCurrentObjectPlacementInstance() != null) return false; + return true; + } + + public UIState getUiState() { + return uiState; + } + + public Line3D getCurrentDisplayedLine3D() { + return currentDisplayedLine3D; + } + + public void setCurrentDisplayedLine3D(Line3D currentDisplayedLine3D) { + this.currentDisplayedLine3D = currentDisplayedLine3D; + } + + public ArrayList getLastLocationsRequest() { + return lastLocationsRequest; + } + + public void setLastLocationsRequest(ArrayList lastLocationsRequest) { + this.lastLocationsRequest = lastLocationsRequest; + } + + public void attachMask(Mask mask, Player player) { + if(this.maskWorldObject != null) { + this.maskWorldObject.destroy(); + } + this.currentMask = mask; + Onset.print("Attach mask id: " + mask.getModelId()); + this.maskWorldObject = Onset.getServer().createObject(new Vector(0, 0, 0), mask.getModelId()); + this.maskWorldObject.attach(player, new Vector(mask.getX(), mask.getY(), mask.getZ()), new Vector(mask.getRx(), mask.getRy(), mask.getRz()), mask.getSocket()); + if(ModdingManager.isCustomModelId(mask.getModelId())) ModdingManager.assignCustomModel(this.maskWorldObject, mask.getModelId()); + this.maskWorldObject.setScale(new Vector(mask.getSx(), mask.getSy(), mask.getSz())); + } + + public void unattachMask() { + if(this.maskWorldObject != null) { + this.maskWorldObject.destroy(); + } + this.currentMask = null; + } + + public void attachBag(Bag bag, Player player) { + if(this.bagWorldObject != null) { + this.bagWorldObject.destroy(); + } + Account account = WorldManager.getPlayerAccount(player); + this.currentBag = bag; + Onset.print("Attach bag id: " + bag.getModelId()); + this.bagWorldObject = Onset.getServer().createObject(new Vector(0, 0, 0), bag.getModelId()); + this.bagWorldObject.attach(player, new Vector(bag.getX(), bag.getY(), bag.getZ()), new Vector(bag.getRx(), bag.getRy(), bag.getRz()), bag.getSocket()); + if(ModdingManager.isCustomModelId(bag.getModelId())) ModdingManager.assignCustomModel(this.bagWorldObject, bag.getModelId()); + this.bagWorldObject.setScale(new Vector(bag.getSx(), bag.getSy(), bag.getSz())); + account.setBagId(this.currentBag.getModelId()); + account.save(); + } + + public void unattachBag(Player player) { + if(this.bagWorldObject != null) { + this.bagWorldObject.destroy(); + } + Account account = WorldManager.getPlayerAccount(player); + this.currentBag = null; + account.setBagId(-1); + account.save(); + } + + public Mask getCurrentMask() { + return currentMask; + } + + public void setCurrentMask(Mask currentMask) { + this.currentMask = currentMask; + } + + public Bag getCurrentBag() { + return currentBag; + } + + public void setCurrentBag(Bag currentBag) { + this.currentBag = currentBag; + } + + public boolean isHasUIReady() { + return hasUIReady; + } + + public void setHasUIReady(boolean hasUIReady) { + this.hasUIReady = hasUIReady; + } + + public PhoneCall getCurrentPhoneCall() { + return currentPhoneCall; + } + + public void setCurrentPhoneCall(PhoneCall currentPhoneCall) { + this.currentPhoneCall = currentPhoneCall; + } + + public CharacterToolAnimation getCurrentPhoneAttached() { + return currentPhoneAttached; + } + + public void setCurrentPhoneAttached(CharacterToolAnimation currentPhoneAttached) { + this.currentPhoneAttached = currentPhoneAttached; + } + + public int getCurrentCompagnyInvited() { + return currentCompagnyInvited; + } + + public void setCurrentCompagnyInvited(int currentCompagnyInvited) { + this.currentCompagnyInvited = currentCompagnyInvited; + } + + public GenericMenu getCurrentGenericMenu() { + return currentGenericMenu; + } + + public void setCurrentGenericMenu(GenericMenu currentGenericMenu) { + this.currentGenericMenu = currentGenericMenu; + } + + public boolean isInvisible() { + return isInvisible; + } + + public void setInvisible(boolean invisible) { + isInvisible = invisible; + } +} diff --git a/src/main/java/fr/yuki/YukiRPFramework/commands/BanCommand.java b/src/main/java/fr/yuki/YukiRPFramework/commands/BanCommand.java index e73268f..6c91b19 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/commands/BanCommand.java +++ b/src/main/java/fr/yuki/YukiRPFramework/commands/BanCommand.java @@ -1,27 +1,27 @@ -package fr.yuki.YukiRPFramework.commands; - -import fr.yuki.YukiRPFramework.manager.WorldManager; -import fr.yuki.YukiRPFramework.model.Account; -import net.onfirenetwork.onsetjava.Onset; -import net.onfirenetwork.onsetjava.entity.Player; -import net.onfirenetwork.onsetjava.plugin.CommandExecutor; - -public class BanCommand implements CommandExecutor { - @Override - public boolean onCommand(Player player, String s, String[] args) { - if(WorldManager.getPlayerAccount(player).getAdminLevel() == 0) return false; - if(WorldManager.getPlayerAccount(player).getCommandLevel() < 3) { - player.sendMessage("You don't have the level required for this command"); - return true; - } - Player playerTarget = Onset.getPlayers().stream().filter(x -> x.getId() == Integer.parseInt(args[0])) - .findFirst().orElse(null); - if(playerTarget == null) return true; - Account account = WorldManager.getPlayerAccount(playerTarget); - account.setIsBanned(1); - WorldManager.savePlayer(playerTarget); - playerTarget.kick("You have been banned, bye bye"); - - return true; - } -} +package fr.yuki.YukiRPFramework.commands; + +import fr.yuki.YukiRPFramework.manager.WorldManager; +import fr.yuki.YukiRPFramework.model.Account; +import net.onfirenetwork.onsetjava.Onset; +import net.onfirenetwork.onsetjava.entity.Player; +import net.onfirenetwork.onsetjava.plugin.CommandExecutor; + +public class BanCommand implements CommandExecutor { + @Override + public boolean onCommand(Player player, String s, String[] args) { + if(WorldManager.getPlayerAccount(player).getAdminLevel() == 0) return false; + if(WorldManager.getPlayerAccount(player).getCommandLevel() < 3) { + player.sendMessage("You don't have the level required for this command"); + return true; + } + Player playerTarget = Onset.getPlayers().stream().filter(x -> x.getId() == Integer.parseInt(args[0])) + .findFirst().orElse(null); + if(playerTarget == null) return true; + Account account = WorldManager.getPlayerAccount(playerTarget); + account.setBanned(true); + WorldManager.savePlayer(playerTarget); + playerTarget.kick("You have been banned, bye bye"); + + return true; + } +} diff --git a/src/main/java/fr/yuki/YukiRPFramework/commands/RegenPhoneNumberCommand.java b/src/main/java/fr/yuki/YukiRPFramework/commands/RegenPhoneNumberCommand.java index bfc733e..6b773d3 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/commands/RegenPhoneNumberCommand.java +++ b/src/main/java/fr/yuki/YukiRPFramework/commands/RegenPhoneNumberCommand.java @@ -1,35 +1,28 @@ -package fr.yuki.YukiRPFramework.commands; - -import fr.yuki.YukiRPFramework.dao.AccountDAO; -import fr.yuki.YukiRPFramework.manager.PhoneManager; -import fr.yuki.YukiRPFramework.manager.WorldManager; -import fr.yuki.YukiRPFramework.model.Account; -import net.onfirenetwork.onsetjava.Onset; -import net.onfirenetwork.onsetjava.entity.Player; -import net.onfirenetwork.onsetjava.plugin.CommandExecutor; - -import java.sql.SQLException; - -public class RegenPhoneNumberCommand implements CommandExecutor { - @Override - public boolean onCommand(Player player, String s, String[] args) { - if(WorldManager.getPlayerAccount(player).getAdminLevel() == 0) return false; - if(WorldManager.getPlayerAccount(player).getCommandLevel() < 2) { - player.sendMessage("You don't have the level required for this command"); - return true; - } - Player playerTarget = Onset.getPlayers().stream().filter(x -> x.getId() == Integer.parseInt(args[0])) - .findFirst().orElse(null); - if(playerTarget == null) return true; - Account account = WorldManager.getPlayerAccount(playerTarget); - account.setPhoneNumber(PhoneManager.generateRandomPhoneNumber()); - try { - AccountDAO.updateAccount(account, null); - } catch (SQLException throwables) { - throwables.printStackTrace(); - } - Onset.print("Phone number generated : " + account.getPhoneNumber()); - - return true; - } -} +package fr.yuki.YukiRPFramework.commands; + +import fr.yuki.YukiRPFramework.manager.PhoneManager; +import fr.yuki.YukiRPFramework.manager.WorldManager; +import fr.yuki.YukiRPFramework.model.Account; +import net.onfirenetwork.onsetjava.Onset; +import net.onfirenetwork.onsetjava.entity.Player; +import net.onfirenetwork.onsetjava.plugin.CommandExecutor; + +public class RegenPhoneNumberCommand implements CommandExecutor { + @Override + public boolean onCommand(Player player, String s, String[] args) { + if(WorldManager.getPlayerAccount(player).getAdminLevel() == 0) return false; + if(WorldManager.getPlayerAccount(player).getCommandLevel() < 2) { + player.sendMessage("You don't have the level required for this command"); + return true; + } + Player playerTarget = Onset.getPlayers().stream().filter(x -> x.getId() == Integer.parseInt(args[0])) + .findFirst().orElse(null); + if(playerTarget == null) return true; + Account account = WorldManager.getPlayerAccount(playerTarget); + account.setPhoneNumber(PhoneManager.generateRandomPhoneNumber()); + account.save(); + Onset.print("Phone number generated : " + account.getPhoneNumber()); + + return true; + } +} diff --git a/src/main/java/fr/yuki/YukiRPFramework/commands/RequestCharacterCreationCommand.java b/src/main/java/fr/yuki/YukiRPFramework/commands/RequestCharacterCreationCommand.java index e053782..d37ce86 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/commands/RequestCharacterCreationCommand.java +++ b/src/main/java/fr/yuki/YukiRPFramework/commands/RequestCharacterCreationCommand.java @@ -1,35 +1,28 @@ -package fr.yuki.YukiRPFramework.commands; - -import fr.yuki.YukiRPFramework.dao.AccountDAO; -import fr.yuki.YukiRPFramework.manager.UIStateManager; -import fr.yuki.YukiRPFramework.manager.WorldManager; -import fr.yuki.YukiRPFramework.model.Account; -import net.onfirenetwork.onsetjava.Onset; -import net.onfirenetwork.onsetjava.entity.Player; -import net.onfirenetwork.onsetjava.plugin.CommandExecutor; - -import java.sql.SQLException; - -public class RequestCharacterCreationCommand implements CommandExecutor { - @Override - public boolean onCommand(Player player, String s, String[] args) { - if(WorldManager.getPlayerAccount(player).getAdminLevel() == 0) return false; - if(WorldManager.getPlayerAccount(player).getCommandLevel() < 2) { - player.sendMessage("You don't have the level required for this command"); - return true; - } - Player playerTarget = Onset.getPlayers().stream().filter(x -> x.getId() == Integer.parseInt(args[0])) - .findFirst().orElse(null); - if(playerTarget == null) return true; - Account account = WorldManager.getPlayerAccount(playerTarget); - account.setCharacterCreationRequest(1); - try { - AccountDAO.updateAccount(account, null); - } catch (SQLException throwables) { - throwables.printStackTrace(); - } - - UIStateManager.handleUIToogle(playerTarget, "customCharacter"); - return false; - } -} +package fr.yuki.YukiRPFramework.commands; + +import fr.yuki.YukiRPFramework.manager.UIStateManager; +import fr.yuki.YukiRPFramework.manager.WorldManager; +import fr.yuki.YukiRPFramework.model.Account; +import net.onfirenetwork.onsetjava.Onset; +import net.onfirenetwork.onsetjava.entity.Player; +import net.onfirenetwork.onsetjava.plugin.CommandExecutor; + +public class RequestCharacterCreationCommand implements CommandExecutor { + @Override + public boolean onCommand(Player player, String s, String[] args) { + if(WorldManager.getPlayerAccount(player).getAdminLevel() == 0) return false; + if(WorldManager.getPlayerAccount(player).getCommandLevel() < 2) { + player.sendMessage("You don't have the level required for this command"); + return true; + } + Player playerTarget = Onset.getPlayers().stream().filter(x -> x.getId() == Integer.parseInt(args[0])) + .findFirst().orElse(null); + if(playerTarget == null) return true; + Account account = WorldManager.getPlayerAccount(playerTarget); + account.setCharacterCreationRequest(true); + account.save(); + + UIStateManager.handleUIToogle(playerTarget, "customCharacter"); + return false; + } +} diff --git a/src/main/java/fr/yuki/YukiRPFramework/commands/SetCommandLevelCommand.java b/src/main/java/fr/yuki/YukiRPFramework/commands/SetCommandLevelCommand.java index deb3f76..b466a8a 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/commands/SetCommandLevelCommand.java +++ b/src/main/java/fr/yuki/YukiRPFramework/commands/SetCommandLevelCommand.java @@ -1,33 +1,26 @@ -package fr.yuki.YukiRPFramework.commands; - -import fr.yuki.YukiRPFramework.dao.AccountDAO; -import fr.yuki.YukiRPFramework.manager.WorldManager; -import fr.yuki.YukiRPFramework.model.Account; -import net.onfirenetwork.onsetjava.Onset; -import net.onfirenetwork.onsetjava.entity.Player; -import net.onfirenetwork.onsetjava.plugin.CommandExecutor; - -import java.sql.SQLException; - -public class SetCommandLevelCommand implements CommandExecutor { - @Override - public boolean onCommand(Player player, String s, String[] args) { - if(WorldManager.getPlayerAccount(player).getAdminLevel() == 0) return false; - if(WorldManager.getPlayerAccount(player).getCommandLevel() < 5) { - player.sendMessage("You don't have the level required for this command"); - return true; - } - Player playerTarget = Onset.getPlayers().stream().filter(x -> x.getId() == Integer.parseInt(args[0])) - .findFirst().orElse(null); - if(playerTarget == null) return true; - Account account = WorldManager.getPlayerAccount(playerTarget); - account.setCommandLevel(Integer.parseInt(args[1])); - try { - AccountDAO.updateAccount(account, null); - } catch (SQLException throwables) { - throwables.printStackTrace(); - } - player.sendMessage("Command level set to " + args[1] + " for " + account.getCharacterName()); - return true; - } -} +package fr.yuki.YukiRPFramework.commands; + +import fr.yuki.YukiRPFramework.manager.WorldManager; +import fr.yuki.YukiRPFramework.model.Account; +import net.onfirenetwork.onsetjava.Onset; +import net.onfirenetwork.onsetjava.entity.Player; +import net.onfirenetwork.onsetjava.plugin.CommandExecutor; + +public class SetCommandLevelCommand implements CommandExecutor { + @Override + public boolean onCommand(Player player, String s, String[] args) { + if(WorldManager.getPlayerAccount(player).getAdminLevel() == 0) return false; + if(WorldManager.getPlayerAccount(player).getCommandLevel() < 5) { + player.sendMessage("You don't have the level required for this command"); + return true; + } + Player playerTarget = Onset.getPlayers().stream().filter(x -> x.getId() == Integer.parseInt(args[0])) + .findFirst().orElse(null); + if(playerTarget == null) return true; + Account account = WorldManager.getPlayerAccount(playerTarget); + account.setCommandLevel(Integer.parseInt(args[1])); + account.save(); + player.sendMessage("Command level set to " + args[1] + " for " + account.getCharacterName()); + return true; + } +} diff --git a/src/main/java/fr/yuki/YukiRPFramework/dao/AccountDAO.java b/src/main/java/fr/yuki/YukiRPFramework/dao/AccountDAO.java deleted file mode 100644 index 516217e..0000000 --- a/src/main/java/fr/yuki/YukiRPFramework/dao/AccountDAO.java +++ /dev/null @@ -1,206 +0,0 @@ -package fr.yuki.YukiRPFramework.dao; - -import com.google.gson.Gson; -import fr.yuki.YukiRPFramework.Database; -import fr.yuki.YukiRPFramework.manager.PhoneManager; -import fr.yuki.YukiRPFramework.manager.WeaponManager; -import fr.yuki.YukiRPFramework.manager.WorldManager; -import fr.yuki.YukiRPFramework.model.Account; -import fr.yuki.YukiRPFramework.utils.ServerConfig; -import net.onfirenetwork.onsetjava.Onset; -import net.onfirenetwork.onsetjava.data.Location; -import net.onfirenetwork.onsetjava.entity.Player; -import net.onfirenetwork.onsetjava.enums.Animation; - -import java.sql.*; - -public class AccountDAO { - /** - * Find the account for a player steam id - * @param steamId The steam id - * @return The account - */ - public static Account findAccountBySteamId(String steamId) throws SQLException { - Account account = null; - PreparedStatement preparedStatement = Database.getConnection() - .prepareStatement("SELECT * FROM tbl_account WHERE steam_id=?"); - preparedStatement.setString(1, steamId); - ResultSet resultSet = preparedStatement.executeQuery(); - if(resultSet.next()) { - account = fetchResultSet(resultSet); - } - resultSet.close(); - preparedStatement.close(); - return account; - } - - public static Account findAccountById(int id) throws SQLException { - Account account = null; - PreparedStatement preparedStatement = Database.getConnection() - .prepareStatement("SELECT * FROM tbl_account WHERE id_account=?"); - preparedStatement.setInt(1, id); - ResultSet resultSet = preparedStatement.executeQuery(); - if(resultSet.next()) { - account = fetchResultSet(resultSet); - } - resultSet.close(); - preparedStatement.close(); - return account; - } - - private static Account fetchResultSet(ResultSet resultSet) throws SQLException { - Account account = null; - account = new Account(); - account.setId(resultSet.getInt("id_account")); - account.setSteamName(resultSet.getString("steam_account_name")); - account.setSteamId(resultSet.getString("steam_id")); - account.setIsBanned(resultSet.getInt("is_banned")); - account.setBankMoney(resultSet.getInt("bank_money")); - account.setSaveX(resultSet.getDouble("save_x")); - account.setSaveY(resultSet.getDouble("save_y")); - account.setSaveZ(resultSet.getDouble("save_z")); - account.setSaveH(resultSet.getDouble("save_h")); - account.setCharacterCreationRequest(resultSet.getInt("character_creation_request")); - account.setCharacterStyle(resultSet.getString("character_style")); - account.setCharacterName(resultSet.getString("character_name")); - account.setJobLevels(resultSet.getString("job_levels")); - account.setIsDead(resultSet.getInt("is_dead")); - account.setLang(resultSet.getString("lang")); - account.setAdminLevel(resultSet.getInt("admin_level")); - account.setFoodState(resultSet.getInt("food_state")); - account.setDrinkState(resultSet.getInt("drink_state")); - account.setPhoneNumber(resultSet.getString("phone_number")); - account.setWeapons(resultSet.getString("weapons")); - account.setBagId(resultSet.getInt("id_bag")); - account.setCompagnyId(resultSet.getInt("id_compagny")); - account.setIsInService(resultSet.getInt("is_in_service")); - account.setOriginalStyle(resultSet.getString("original_style")); - account.setHealth(resultSet.getDouble("health")); - account.setCommandLevel(resultSet.getInt("command_level")); - account.setCreatedAt(resultSet.getDate("created_at")); - account.setUpdatedAt(resultSet.getDate("updated_at")); - return account; - } - - public static Account createAccount(Player player) throws SQLException { - ServerConfig serverConfig = WorldManager.getServerConfig(); - - // Create the account object - Account account = new Account(); - account.setSteamName(player.getName()); - account.setSteamId(player.getSteamId()); - account.setIsBanned(0); - account.setCharacterCreationRequest(1); - account.setCharacterStyle(""); - account.setCharacterName("Unknown"); - account.setJobLevels("[]"); - account.setIsDead(0); - account.setAdminLevel(0); - account.setLang("fr"); - account.setFoodState(100); - account.setDrinkState(100); - account.setPhoneNumber(""); - account.setBagId(-1); - account.setCompagnyId(-1); - account.setOriginalStyle(""); - account.setIsInService(0); - account.setHealth(100); - account.setCommandLevel(0); - account.setBankMoney(4000); - account.setPhoneNumber(PhoneManager.generateRandomPhoneNumber()); - account.setSaveX(serverConfig.getSpawnPointX()); - account.setSaveY(serverConfig.getSpawnPointY()); - account.setSaveZ(serverConfig.getSpawnPointZ()); - account.setSaveH(serverConfig.getSpawnPointH()); - account.setCreatedAt(new java.util.Date()); - account.setUpdatedAt(new java.util.Date()); - - // Execute the query - PreparedStatement preparedStatement = Database.getConnection() - .prepareStatement("INSERT INTO tbl_account " + - "(steam_account_name, steam_id, is_banned, created_at, updated_at, character_creation_request," + - " character_style, character_name, save_x, save_y, save_z, save_h, id_compagny, health, bank_money, phone_number) VALUES " + - "(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)", Statement.RETURN_GENERATED_KEYS); - - preparedStatement.setString(1, account.getSteamName()); - preparedStatement.setString(2, account.getSteamId()); - preparedStatement.setInt(3, account.getIsBanned()); - preparedStatement.setDate(4, new Date(account.getCreatedAt().getTime())); - preparedStatement.setDate(5, new Date(account.getUpdatedAt().getTime())); - preparedStatement.setInt(6, account.getCharacterCreationRequest()); - preparedStatement.setString(7, account.getCharacterStyle()); - preparedStatement.setString(8, account.getCharacterName()); - preparedStatement.setDouble(9, account.getSaveX()); - preparedStatement.setDouble(10, account.getSaveY()); - preparedStatement.setDouble(11, account.getSaveZ()); - preparedStatement.setDouble(12, account.getSaveH()); - preparedStatement.setInt(13, account.getCompagnyId()); - preparedStatement.setDouble(14, account.getHealth()); - preparedStatement.setInt(15, account.getBankMoney()); - preparedStatement.setString(16, account.getPhoneNumber()); - preparedStatement.executeUpdate(); - - ResultSet returnId = preparedStatement.getGeneratedKeys(); - if(returnId.next()) { - account.setId(returnId.getInt(1)); - } else { - return null; - } - returnId.close(); - preparedStatement.close(); - return account; - } - - public static void updateAccount(Account account, Player player) throws SQLException { - PreparedStatement preparedStatement = Database.getConnection() - .prepareStatement("UPDATE tbl_account SET is_banned=?, bank_money=?, save_x=?, save_y=?, save_z=?, save_h=?, character_creation_request=?," + - "character_style=?, character_name=?, job_levels=?, is_dead=?, admin_level=?, lang=?," + - "food_state=?, drink_state=?, phone_number=?, weapons=?, id_bag=?, id_compagny=?, is_in_service=?, original_style=?," + - "health=?, command_level=? WHERE id_account=?"); - preparedStatement.setInt(1, account.getIsBanned()); - preparedStatement.setInt(2, account.getBankMoney()); - if(player == null) { - preparedStatement.setDouble(3, account.getSaveX()); - preparedStatement.setDouble(4, account.getSaveY()); - preparedStatement.setDouble(5, account.getSaveZ()); - preparedStatement.setDouble(6, account.getSaveH()); - } else { - Location loc = player.getLocationAndHeading(); - preparedStatement.setDouble(3, loc.getX()); - preparedStatement.setDouble(4, loc.getY()); - preparedStatement.setDouble(5, loc.getZ()); - preparedStatement.setDouble(6, loc.getHeading()); - } - preparedStatement.setInt(7, account.getCharacterCreationRequest()); - preparedStatement.setString(8, account.getCharacterStyle()); - preparedStatement.setString(9, account.getCharacterName()); - preparedStatement.setString(10, account.getJobLevels()); - preparedStatement.setInt(11, account.getIsDead()); - preparedStatement.setInt(12, account.getAdminLevel()); - preparedStatement.setString(13, account.getLang()); - preparedStatement.setInt(14, account.getFoodState()); - preparedStatement.setInt(15, account.getDrinkState()); - preparedStatement.setString(16, account.getPhoneNumber()); - if(player == null) { - preparedStatement.setString(17, account.getWeapons()); - } - else { - account.setWeapons(new Gson().toJson(WeaponManager.getPlayerWeapons(player))); - preparedStatement.setString(17, account.getWeapons()); - } - preparedStatement.setDouble(18, account.getBagId()); - preparedStatement.setInt(19, account.getCompagnyId()); - preparedStatement.setInt(20, account.getIsInService()); - preparedStatement.setString(21, account.getOriginalStyle()); - if(player == null) { - preparedStatement.setDouble(22, account.getHealth()); - } - else { - preparedStatement.setDouble(22, player.getHealth()); - } - preparedStatement.setDouble(23, account.getCommandLevel()); - preparedStatement.setDouble(24, account.getId()); - preparedStatement.execute(); - preparedStatement.close(); - } -} diff --git a/src/main/java/fr/yuki/YukiRPFramework/manager/CharacterManager.java b/src/main/java/fr/yuki/YukiRPFramework/manager/CharacterManager.java index 353c86c..e6b6d23 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/manager/CharacterManager.java +++ b/src/main/java/fr/yuki/YukiRPFramework/manager/CharacterManager.java @@ -1,309 +1,302 @@ -package fr.yuki.YukiRPFramework.manager; - -import com.google.gson.Gson; -import fr.yuki.YukiRPFramework.character.CharacterState; -import fr.yuki.YukiRPFramework.character.CharacterStyle; -import fr.yuki.YukiRPFramework.dao.AccountDAO; -import fr.yuki.YukiRPFramework.enums.ItemTemplateEnum; -import fr.yuki.YukiRPFramework.enums.ToastTypeEnum; -import fr.yuki.YukiRPFramework.i18n.I18n; -import fr.yuki.YukiRPFramework.inventory.Inventory; -import fr.yuki.YukiRPFramework.inventory.InventoryItem; -import fr.yuki.YukiRPFramework.model.Account; -import fr.yuki.YukiRPFramework.net.payload.AddToastPayload; -import fr.yuki.YukiRPFramework.net.payload.RequestThrowItemPayload; -import fr.yuki.YukiRPFramework.net.payload.SetFoodPayload; -import fr.yuki.YukiRPFramework.net.payload.StyleSavePartPayload; -import fr.yuki.YukiRPFramework.ui.GenericMenu; -import fr.yuki.YukiRPFramework.ui.GenericMenuItem; -import net.onfirenetwork.onsetjava.Onset; -import net.onfirenetwork.onsetjava.data.Location; -import net.onfirenetwork.onsetjava.data.Vector; -import net.onfirenetwork.onsetjava.entity.Player; - -import java.sql.SQLException; -import java.util.HashMap; -import java.util.stream.Collectors; - -public class CharacterManager { - - private static HashMap characterStates; - - public static void init() { - characterStates = new HashMap(); - - // Decrease food - Onset.timer(60000 * 2, () -> { - for(Player player : Onset.getPlayers()) { - if(WorldManager.getPlayerAccount(player) == null) continue; - applyFoodChange(player, -1); - } - }); - - // Decrease drink - Onset.timer(40000 * 2, () -> { - for(Player player : Onset.getPlayers()) { - if(WorldManager.getPlayerAccount(player) == null) continue; - applyDrinkChange(player, -1); - } - }); - } - - public static void applyFoodChange(Player player, int value) { - Account account = WorldManager.getPlayerAccount(player); - if(account == null) return; - CharacterState state = CharacterManager.getCharacterStateByPlayer(player); - if(state.isDead()) return; - account.setFoodState(account.getFoodState() + value); - if(account.getFoodState() < 0) account.setFoodState(0); - if(account.getFoodState() > 100) account.setFoodState(100); - refreshFood(player); - if(account.getFoodState() <= 0) { - player.setHealth(player.getHealth() - 1); - } - } - - public static void applyDrinkChange(Player player, int value) { - Account account = WorldManager.getPlayerAccount(player); - if(account == null) return; - CharacterState state = CharacterManager.getCharacterStateByPlayer(player); - if(state.isDead()) return; - account.setDrinkState(account.getDrinkState() + value); - if(account.getDrinkState() < 0) account.setDrinkState(0); - if(account.getDrinkState() > 100) account.setDrinkState(100); - refreshFood(player); - if(account.getDrinkState() <= 0) { - player.setHealth(player.getHealth() - 1); - } - } - - public static CharacterState getCharacterStateByPlayer(Player player) { - if(!characterStates.containsKey(player.getSteamId())) return null; - return characterStates.get(player.getSteamId()); - } - - /** - * Save part of the player style - * @param player The player - * @param payload The payload - */ - public static void handleStyleSavePart(Player player, StyleSavePartPayload payload) { - Onset.print("Update style player part="+ payload.getPartType() + " value=" + payload.getValue()); - Account account = WorldManager.getPlayerAccount(player); - CharacterStyle characterStyle = account.decodeCharacterStyle(); - switch (payload.getPartType()) { - case "gender": - characterStyle.setGender(payload.getValue()); - break; - - case "body": - characterStyle.setBody(payload.getValue()); - break; - - case "hair": - characterStyle.setHair(payload.getValue()); - break; - - case "hair_color": - characterStyle.setHairColor(payload.getValue()); - break; - - case "top": - characterStyle.setTop(payload.getValue()); - break; - - case "pant": - characterStyle.setPant(payload.getValue()); - break; - - case "shoes": - characterStyle.setShoes(payload.getValue()); - break; - - case "name": - account.setCharacterName(payload.getValue()); - String msg = WorldManager.getServerConfig().getWelcomeMessage(); - msg = msg.replace("%name%", account.getCharacterName()); - Onset.broadcast("" + msg + ""); - break; - } - account.setCharacterStyle(characterStyle); - account.setOriginalStyle(new Gson().toJson(characterStyle)); - WorldManager.savePlayer(player); - } - - public static void handleCharacterCustomDone(Player player, String type) { - Account account = WorldManager.getPlayerAccount(player); - CharacterStyle characterStyle = account.decodeCharacterStyle(); - characterStyle.attachStyleToPlayer(player); - - player.setName(account.getCharacterName()); - player.setProperty("characterName", account.getCharacterName(), true); - account.setCharacterCreationRequest(0); - WorldManager.savePlayer(player); - if(type.equals("character")) { - UIStateManager.handleUIToogle(player, "customCharacter"); - } else { - UIStateManager.handleUIToogle(player, "customOutfit"); - } - } - - /** - * Freeze/Unfreeze a player - * @param player The player - * @param freeze Freeze state - */ - public static void setCharacterFreeze(Player player, boolean freeze) { - if(freeze) { - player.callRemoteEvent("Character:FreezePlayer"); - } else { - player.callRemoteEvent("Character:UnFreezePlayer"); - } - } - - public static void onPlayerDeath(Player player, Player killer) { - // Update state - CharacterState characterState = getCharacterStateByPlayer(player); - characterState.setDead(true); - setCharacterFreeze(player, true); - - if(characterState.getCurrentBag() != null) { - characterState.unattachBag(player); - return; - } - - // Update account - Account account = WorldManager.getPlayerAccount(player); - account.setIsDead(1); - try { - AccountDAO.updateAccount(account, null); - } catch (Exception ex) { - Onset.print("Can't save account: " + ex.toString()); - } - player.setSpawnLocation(new Vector(account.getSaveX(), account.getSaveY(), account.getSaveZ()), 0); - UIStateManager.handleUIToogle(player, "death"); - player.setRespawnTime(WorldManager.getServerConfig().getDeathRespawnDelay()); - - Inventory inventory = InventoryManager.getMainInventory(player); - for(InventoryItem inventoryItem : inventory.getInventoryItems().stream().collect(Collectors.toList())) { - if(inventoryItem.getTemplate().getId() == Integer.parseInt(ItemTemplateEnum.VKEY.id)) continue; - RequestThrowItemPayload throwItemPayload = new RequestThrowItemPayload(); - throwItemPayload.setId(inventoryItem.getId()); - throwItemPayload.setQuantity(inventoryItem.getAmount()); - InventoryManager.handleThrowItem(player, throwItemPayload); - } - WeaponManager.clearWeapons(player); - } - - public static void onPlayerSpawn(Player player) { - if(CharacterManager.getCharacterStateByPlayer(player) == null) { - Onset.print("No state found for " + player.getSteamId()); - CharacterManager.getCharacterStates().put(player.getSteamId(), new CharacterState()); - } - - CharacterState characterState = getCharacterStateByPlayer(player); - if(characterState.isFirstSpawn()) { - characterState.setFirstSpawn(false); - Onset.print("First spawn for player"); - } else { - Account account = WorldManager.getPlayerAccount(player); - if(account != null) { - if(account.getIsDead() == 1) { - UIStateManager.handleUIToogle(player, "death"); - account.setIsDead(0); - CharacterManager.setCharacterFreeze(player, false); - Onset.print("Player respawned after death"); - //UIStateManager.sendNotification(player, ToastTypeEnum.WARN, - // "Après un moment a l'hôpital vous êtes sortis du coma, vous avez du mal à vous rappeler des derniers événements"); - teleportWithLevelLoading(player, new Location(WorldManager.getServerConfig().getDeathRespawnX(), - WorldManager.getServerConfig().getDeathRespawnY(), - WorldManager.getServerConfig().getDeathRespawnZ() + 50, - WorldManager.getServerConfig().getDeathRespawnH())); - characterState.setDead(false); - WorldManager.savePlayer(player); - } - setCharacterStyle(player); - } - } - } - - public static void refreshFood(Player player) { - Account account = WorldManager.getPlayerAccount(player); - if(account == null) return; - - player.callRemoteEvent("GlobalUI:DispatchToUI", new Gson().toJson(new SetFoodPayload(account.getFoodState(), - account.getDrinkState()))); - } - - public static void setCharacterStyle(Player player) { - Account account = WorldManager.getPlayerAccount(player); - account.decodeCharacterStyle().attachStyleToPlayer(player); - player.setProperty("characterName", account.getCharacterName(), true); - player.setName(account.getCharacterName()); - } - - public static void teleportWithLevelLoading(Player player, Location location) { - player.setLocationAndHeading(location); - player.callRemoteEvent("Game:TriggerLoadLevel"); - Onset.delay(150, () -> { - player.callRemoteEvent("Game:TriggerLoadLevel"); - player.setLocationAndHeading(location); - player.callRemoteEvent("Game:TriggerLoadLevel"); - }); - } - - public static void handleCharacterInteract(Player player) { - Player nearestPlayer = WorldManager.getNearestPlayer(player); - //nearestPlayer = player; // Temp test - if(nearestPlayer == null) return; - if(nearestPlayer.getLocation().distance(player.getLocation()) < 200) { - // Build generic menu - CharacterState characterState = CharacterManager.getCharacterStateByPlayer(player); - GenericMenu genericMenu = new GenericMenu(player); - genericMenu.getItems().add(new GenericMenuItem("Fouiller la personne", "window.CallEvent(\"RemoteCallInterface\"," + - " \"Character:InspectCharacter\", \"" + nearestPlayer.getId() + "\");")); - genericMenu.getItems().add(new GenericMenuItem("Donner les clés de la maison", "window.CallEvent(\"RemoteCallInterface\"," + - " \"Character:GiveHouseKey\", \"" + nearestPlayer.getId() + "\");")); - genericMenu.addCloseItem(); - genericMenu.show(); - characterState.setCurrentGenericMenu(genericMenu); - } - } - - public static HashMap getCharacterStates() { - return characterStates; - } - - public static void handleGenericMenuDismiss(Player player) { - CharacterState characterState = CharacterManager.getCharacterStateByPlayer(player); - if(characterState.getCurrentGenericMenu() != null) { - characterState.getCurrentGenericMenu().hide(); - characterState.setCurrentGenericMenu(null); - } - } - - public static void handleInspectCharacter(Player player, int inspectPlayerId) { - handleGenericMenuDismiss(player); // Close generic menu - - Player target = Onset.getPlayer(inspectPlayerId); - if(target == null) return; - CharacterState targetState = CharacterManager.getCharacterStateByPlayer(target); - if(!targetState.isCuffed()) { - UIStateManager.sendNotification(player, ToastTypeEnum.ERROR, "La personne n'est pas fouillable"); - return; - } - Account account = WorldManager.getPlayerAccount(player); - - // Display items - CharacterState characterState = CharacterManager.getCharacterStateByPlayer(player); - GenericMenu genericMenu = new GenericMenu(player); - Inventory inventory = InventoryManager.getMainInventory(target); - for(InventoryItem item : inventory.getInventoryItems()) { - String itemName = I18n.t(account.getLang(), "item.name." + item.getTemplateId()); - genericMenu.getItems().add(new GenericMenuItem("x" + item.getAmount() + " " + itemName, "")); - } - genericMenu.addCloseItem(); - genericMenu.show(); - characterState.setCurrentGenericMenu(genericMenu); - } -} +package fr.yuki.YukiRPFramework.manager; + +import com.google.gson.Gson; +import fr.yuki.YukiRPFramework.character.CharacterState; +import fr.yuki.YukiRPFramework.character.CharacterStyle; +import fr.yuki.YukiRPFramework.enums.ItemTemplateEnum; +import fr.yuki.YukiRPFramework.enums.ToastTypeEnum; +import fr.yuki.YukiRPFramework.i18n.I18n; +import fr.yuki.YukiRPFramework.inventory.Inventory; +import fr.yuki.YukiRPFramework.inventory.InventoryItem; +import fr.yuki.YukiRPFramework.model.Account; +import fr.yuki.YukiRPFramework.net.payload.RequestThrowItemPayload; +import fr.yuki.YukiRPFramework.net.payload.SetFoodPayload; +import fr.yuki.YukiRPFramework.net.payload.StyleSavePartPayload; +import fr.yuki.YukiRPFramework.ui.GenericMenu; +import fr.yuki.YukiRPFramework.ui.GenericMenuItem; +import net.onfirenetwork.onsetjava.Onset; +import net.onfirenetwork.onsetjava.data.Location; +import net.onfirenetwork.onsetjava.data.Vector; +import net.onfirenetwork.onsetjava.entity.Player; + +import java.util.HashMap; +import java.util.stream.Collectors; + +public class CharacterManager { + + private static HashMap characterStates; + + public static void init() { + characterStates = new HashMap(); + + // Decrease food + Onset.timer(60000 * 2, () -> { + for(Player player : Onset.getPlayers()) { + if(WorldManager.getPlayerAccount(player) == null) continue; + applyFoodChange(player, -1); + } + }); + + // Decrease drink + Onset.timer(40000 * 2, () -> { + for(Player player : Onset.getPlayers()) { + if(WorldManager.getPlayerAccount(player) == null) continue; + applyDrinkChange(player, -1); + } + }); + } + + public static void applyFoodChange(Player player, int value) { + Account account = WorldManager.getPlayerAccount(player); + if(account == null) return; + CharacterState state = CharacterManager.getCharacterStateByPlayer(player); + if(state.isDead()) return; + account.setFoodState(account.getFoodState() + value); + if(account.getFoodState() < 0) account.setFoodState(0); + if(account.getFoodState() > 100) account.setFoodState(100); + refreshFood(player); + if(account.getFoodState() <= 0) { + player.setHealth(player.getHealth() - 1); + } + } + + public static void applyDrinkChange(Player player, int value) { + Account account = WorldManager.getPlayerAccount(player); + if(account == null) return; + CharacterState state = CharacterManager.getCharacterStateByPlayer(player); + if(state.isDead()) return; + account.setDrinkState(account.getDrinkState() + value); + if(account.getDrinkState() < 0) account.setDrinkState(0); + if(account.getDrinkState() > 100) account.setDrinkState(100); + refreshFood(player); + if(account.getDrinkState() <= 0) { + player.setHealth(player.getHealth() - 1); + } + } + + public static CharacterState getCharacterStateByPlayer(Player player) { + if(!characterStates.containsKey(player.getSteamId())) return null; + return characterStates.get(player.getSteamId()); + } + + /** + * Save part of the player style + * @param player The player + * @param payload The payload + */ + public static void handleStyleSavePart(Player player, StyleSavePartPayload payload) { + Onset.print("Update style player part="+ payload.getPartType() + " value=" + payload.getValue()); + Account account = WorldManager.getPlayerAccount(player); + CharacterStyle characterStyle = account.decodeCharacterStyle(); + switch (payload.getPartType()) { + case "gender": + characterStyle.setGender(payload.getValue()); + break; + + case "body": + characterStyle.setBody(payload.getValue()); + break; + + case "hair": + characterStyle.setHair(payload.getValue()); + break; + + case "hair_color": + characterStyle.setHairColor(payload.getValue()); + break; + + case "top": + characterStyle.setTop(payload.getValue()); + break; + + case "pant": + characterStyle.setPant(payload.getValue()); + break; + + case "shoes": + characterStyle.setShoes(payload.getValue()); + break; + + case "name": + account.setCharacterName(payload.getValue()); + String msg = WorldManager.getServerConfig().getWelcomeMessage(); + msg = msg.replace("%name%", account.getCharacterName()); + Onset.broadcast("" + msg + ""); + break; + } + account.setCharacterStyle(characterStyle); + account.setOriginalStyle(new Gson().toJson(characterStyle)); + WorldManager.savePlayer(player); + } + + public static void handleCharacterCustomDone(Player player, String type) { + Account account = WorldManager.getPlayerAccount(player); + CharacterStyle characterStyle = account.decodeCharacterStyle(); + characterStyle.attachStyleToPlayer(player); + + player.setName(account.getCharacterName()); + player.setProperty("characterName", account.getCharacterName(), true); + account.setCharacterCreationRequest(true); + WorldManager.savePlayer(player); + if(type.equals("character")) { + UIStateManager.handleUIToogle(player, "customCharacter"); + } else { + UIStateManager.handleUIToogle(player, "customOutfit"); + } + } + + /** + * Freeze/Unfreeze a player + * @param player The player + * @param freeze Freeze state + */ + public static void setCharacterFreeze(Player player, boolean freeze) { + if(freeze) { + player.callRemoteEvent("Character:FreezePlayer"); + } else { + player.callRemoteEvent("Character:UnFreezePlayer"); + } + } + + public static void onPlayerDeath(Player player, Player killer) { + // Update state + CharacterState characterState = getCharacterStateByPlayer(player); + characterState.setDead(true); + setCharacterFreeze(player, true); + + if(characterState.getCurrentBag() != null) { + characterState.unattachBag(player); + return; + } + + // Update account + Account account = WorldManager.getPlayerAccount(player); + account.setDead(true); + account.save(); + player.setSpawnLocation(new Vector(account.getSaveX(), account.getSaveY(), account.getSaveZ()), 0); + UIStateManager.handleUIToogle(player, "death"); + player.setRespawnTime(WorldManager.getServerConfig().getDeathRespawnDelay()); + + Inventory inventory = InventoryManager.getMainInventory(player); + for(InventoryItem inventoryItem : inventory.getInventoryItems().stream().collect(Collectors.toList())) { + if(inventoryItem.getTemplate().getId() == Integer.parseInt(ItemTemplateEnum.VKEY.id)) continue; + RequestThrowItemPayload throwItemPayload = new RequestThrowItemPayload(); + throwItemPayload.setId(inventoryItem.getId()); + throwItemPayload.setQuantity(inventoryItem.getAmount()); + InventoryManager.handleThrowItem(player, throwItemPayload); + } + WeaponManager.clearWeapons(player); + } + + public static void onPlayerSpawn(Player player) { + if(CharacterManager.getCharacterStateByPlayer(player) == null) { + Onset.print("No state found for " + player.getSteamId()); + CharacterManager.getCharacterStates().put(player.getSteamId(), new CharacterState()); + } + + CharacterState characterState = getCharacterStateByPlayer(player); + if(characterState.isFirstSpawn()) { + characterState.setFirstSpawn(false); + Onset.print("First spawn for player"); + } else { + Account account = WorldManager.getPlayerAccount(player); + if(account != null) { + if(account.isDead()) { + UIStateManager.handleUIToogle(player, "death"); + account.setDead(false); + CharacterManager.setCharacterFreeze(player, false); + Onset.print("Player respawned after death"); + //UIStateManager.sendNotification(player, ToastTypeEnum.WARN, + // "Après un moment a l'hôpital vous êtes sortis du coma, vous avez du mal à vous rappeler des derniers événements"); + teleportWithLevelLoading(player, new Location(WorldManager.getServerConfig().getDeathRespawnX(), + WorldManager.getServerConfig().getDeathRespawnY(), + WorldManager.getServerConfig().getDeathRespawnZ() + 50, + WorldManager.getServerConfig().getDeathRespawnH())); + characterState.setDead(false); + WorldManager.savePlayer(player); + } + setCharacterStyle(player); + } + } + } + + public static void refreshFood(Player player) { + Account account = WorldManager.getPlayerAccount(player); + if(account == null) return; + + player.callRemoteEvent("GlobalUI:DispatchToUI", new Gson().toJson(new SetFoodPayload(account.getFoodState(), + account.getDrinkState()))); + } + + public static void setCharacterStyle(Player player) { + Account account = WorldManager.getPlayerAccount(player); + account.decodeCharacterStyle().attachStyleToPlayer(player); + player.setProperty("characterName", account.getCharacterName(), true); + player.setName(account.getCharacterName()); + } + + public static void teleportWithLevelLoading(Player player, Location location) { + player.setLocationAndHeading(location); + player.callRemoteEvent("Game:TriggerLoadLevel"); + Onset.delay(150, () -> { + player.callRemoteEvent("Game:TriggerLoadLevel"); + player.setLocationAndHeading(location); + player.callRemoteEvent("Game:TriggerLoadLevel"); + }); + } + + public static void handleCharacterInteract(Player player) { + Player nearestPlayer = WorldManager.getNearestPlayer(player); + //nearestPlayer = player; // Temp test + if(nearestPlayer == null) return; + if(nearestPlayer.getLocation().distance(player.getLocation()) < 200) { + // Build generic menu + CharacterState characterState = CharacterManager.getCharacterStateByPlayer(player); + GenericMenu genericMenu = new GenericMenu(player); + genericMenu.getItems().add(new GenericMenuItem("Fouiller la personne", "window.CallEvent(\"RemoteCallInterface\"," + + " \"Character:InspectCharacter\", \"" + nearestPlayer.getId() + "\");")); + genericMenu.getItems().add(new GenericMenuItem("Donner les clés de la maison", "window.CallEvent(\"RemoteCallInterface\"," + + " \"Character:GiveHouseKey\", \"" + nearestPlayer.getId() + "\");")); + genericMenu.addCloseItem(); + genericMenu.show(); + characterState.setCurrentGenericMenu(genericMenu); + } + } + + public static HashMap getCharacterStates() { + return characterStates; + } + + public static void handleGenericMenuDismiss(Player player) { + CharacterState characterState = CharacterManager.getCharacterStateByPlayer(player); + if(characterState.getCurrentGenericMenu() != null) { + characterState.getCurrentGenericMenu().hide(); + characterState.setCurrentGenericMenu(null); + } + } + + public static void handleInspectCharacter(Player player, int inspectPlayerId) { + handleGenericMenuDismiss(player); // Close generic menu + + Player target = Onset.getPlayer(inspectPlayerId); + if(target == null) return; + CharacterState targetState = CharacterManager.getCharacterStateByPlayer(target); + if(!targetState.isCuffed()) { + UIStateManager.sendNotification(player, ToastTypeEnum.ERROR, "La personne n'est pas fouillable"); + return; + } + Account account = WorldManager.getPlayerAccount(player); + + // Display items + CharacterState characterState = CharacterManager.getCharacterStateByPlayer(player); + GenericMenu genericMenu = new GenericMenu(player); + Inventory inventory = InventoryManager.getMainInventory(target); + for(InventoryItem item : inventory.getInventoryItems()) { + String itemName = I18n.t(account.getLang(), "item.name." + item.getTemplateId()); + genericMenu.getItems().add(new GenericMenuItem("x" + item.getAmount() + " " + itemName, "")); + } + genericMenu.addCloseItem(); + genericMenu.show(); + characterState.setCurrentGenericMenu(genericMenu); + } +} diff --git a/src/main/java/fr/yuki/YukiRPFramework/manager/CompagnyManager.java b/src/main/java/fr/yuki/YukiRPFramework/manager/CompagnyManager.java index 08bfa26..8fa3492 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/manager/CompagnyManager.java +++ b/src/main/java/fr/yuki/YukiRPFramework/manager/CompagnyManager.java @@ -1,190 +1,184 @@ -package fr.yuki.YukiRPFramework.manager; - -import com.google.gson.Gson; -import fr.yuki.YukiRPFramework.character.CharacterState; -import fr.yuki.YukiRPFramework.dao.AccountDAO; -import fr.yuki.YukiRPFramework.dao.CompagnyDAO; -import fr.yuki.YukiRPFramework.enums.ToastTypeEnum; -import fr.yuki.YukiRPFramework.model.Account; -import fr.yuki.YukiRPFramework.model.Compagny; -import fr.yuki.YukiRPFramework.net.payload.AddCompagnyEmployeePayload; -import fr.yuki.YukiRPFramework.net.payload.ClearCompagnyEmployeesPayload; -import fr.yuki.YukiRPFramework.net.payload.ClearPhoneUrgencyPayload; -import fr.yuki.YukiRPFramework.net.payload.SetCompagnyPayload; -import fr.yuki.YukiRPFramework.ui.GenericMenu; -import fr.yuki.YukiRPFramework.ui.GenericMenuItem; -import net.onfirenetwork.onsetjava.Onset; -import net.onfirenetwork.onsetjava.entity.Player; - -import java.sql.SQLException; -import java.util.ArrayList; - -public class CompagnyManager { - public static ArrayList compagnies = new ArrayList<>(); - - public static void init() throws SQLException { - compagnies = CompagnyDAO.loadCompagnies(); - Onset.print("Loaded " + compagnies.size() + " compagnie(s) from the database"); - } - - public static Compagny getCompagnyById(int id) { - return compagnies.stream().filter(x -> x.getId() == id).findFirst().orElse(null); - } - - public static Compagny getCompagnyByName(String name) { - return compagnies.stream().filter(x -> x.getName().equals(name)).findFirst().orElse(null); - } - - public static void destroyCompagny() { - - } - - public static void handleCreateRequest(Player player, String name) throws SQLException { - Account account = WorldManager.getPlayerAccount(player); - if(account.getCompagnyId() != -1) return; - if(getCompagnyByName(name.trim()) != null) { - UIStateManager.sendNotification(player, ToastTypeEnum.ERROR, "Ce nom est déjà pris"); - return; - } - if(account.getBankMoney() < 10000) { // TODO: Put this in config - UIStateManager.sendNotification(player, ToastTypeEnum.ERROR, "Pas assez d'argent en banque"); - return; - } - ATMManager.removeCashFromBank(player, 10000); - Compagny compagny = new Compagny(); - compagny.setName(name.trim()); - compagny.setBankCash(0); - compagny.setOwner(player.getSteamId()); - compagny.setMaxMember(5); - CompagnyDAO.insertCompagny(compagny); - account.setCompagnyId(compagny.getId()); - WorldManager.savePlayer(player); - compagnies.add(compagny); - Onset.print("Compagny " + name + " created"); - - refreshCompagny(player); - } - - public static ArrayList getOnlineEmployees(Compagny compagny) { - ArrayList players = new ArrayList<>(); - for(Player player : Onset.getPlayers()) { - try { - Account account = WorldManager.getPlayerAccount(player); - if(account == null) continue; - if(account.getCompagnyId() == compagny.getId()) players.add(player); - } catch (Exception ex) {} - } - return players; - } - - public static void refreshCompagny(Player player) { - Account account = WorldManager.getPlayerAccount(player); - if(account.getCompagnyId() == -1) { // No compagny - player.callRemoteEvent("GlobalUI:DispatchToUI", new Gson().toJson(new SetCompagnyPayload( - -1, "", 0,0 - ))); - } else { // Has compagny - Compagny compagny = getCompagnyById(account.getCompagnyId()); - if(compagny == null) { // Can't find the compagny - player.callRemoteEvent("GlobalUI:DispatchToUI", new Gson().toJson(new SetCompagnyPayload( - -1, "", 0,0 - ))); - account.setCompagnyId(-1); - try { - AccountDAO.updateAccount(account, null); - } catch (SQLException throwables) { - throwables.printStackTrace(); - } - UIStateManager.sendNotification(player, ToastTypeEnum.ERROR, "Votre entreprise n'existe plus"); - return; - } - player.callRemoteEvent("GlobalUI:DispatchToUI", new Gson().toJson(new SetCompagnyPayload( - compagny.getId(), compagny.getName(), compagny.isOwner(player) ? 1:0,compagny.getBankCash() - ))); - - // Refresh employees - player.callRemoteEvent("GlobalUI:DispatchToUI", new Gson().toJson(new ClearCompagnyEmployeesPayload())); - for(Player employee : getOnlineEmployees(compagny)) { - Account eAccount = WorldManager.getPlayerAccount(employee); - player.callRemoteEvent("GlobalUI:DispatchToUI", new Gson().toJson(new AddCompagnyEmployeePayload( - employee.getSteamId(), eAccount.getCharacterName(), compagny.isOwner(employee) ? 1 : 0, true - ))); - } - } - } - - public static void handleInviteEmployee(Player player, String phoneNumber) { - Player invitedPlayer = WorldManager.getPlayerByPhoneNumber(phoneNumber); - if(invitedPlayer == null) { - UIStateManager.sendNotification(player, ToastTypeEnum.ERROR, "Cette personne n'est pas en ligne ou n'existe pas"); - return; - } - Account account = WorldManager.getPlayerAccount(player); - Compagny compagny = getCompagnyById(account.getCompagnyId()); - if(compagny == null) return; - UIStateManager.sendNotification(player, ToastTypeEnum.SUCCESS, "Invitation envoyée"); - CharacterState characterState = CharacterManager.getCharacterStateByPlayer(invitedPlayer); - characterState.setCurrentCompagnyInvited(compagny.getId()); - - // Build generic menu - GenericMenu genericMenu = new GenericMenu(invitedPlayer); - genericMenu.getItems().add(new GenericMenuItem("Voulez-vous rejoindre " + compagny.getName() + " ?", "")); - genericMenu.getItems().add(new GenericMenuItem("Accepter", "window.CallEvent(\"RemoteCallInterface\", \"Compagny:AcceptInvitation\");")); - genericMenu.getItems().add(new GenericMenuItem("Refuser", "window.CallEvent(\"RemoteCallInterface\", \"Compagny:DeclineInvitation\");")); - genericMenu.show(); - characterState.setCurrentGenericMenu(genericMenu); - } - - public static void handleAcceptInvitation(Player player) { - Account account = WorldManager.getPlayerAccount(player); - CharacterState characterState = CharacterManager.getCharacterStateByPlayer(player); - Compagny compagny = getCompagnyById(characterState.getCurrentCompagnyInvited()); - account.setCompagnyId(compagny.getId()); - WorldManager.savePlayer(player); - - // Reset invitation - characterState.setCurrentCompagnyInvited(-1); - if(characterState.getCurrentGenericMenu() != null) { - characterState.getCurrentGenericMenu().hide(); - characterState.setCurrentGenericMenu(null); - } - - for (Player employee : getOnlineEmployees(compagny)) { - refreshCompagny(employee); - UIStateManager.sendNotification(employee, ToastTypeEnum.SUCCESS, account.getCharacterName() + " fait désormais partie de l'entreprise"); - } - } - - public static void handleDeclineInvitation(Player player) { - CharacterState characterState = CharacterManager.getCharacterStateByPlayer(player); - - // Reset invitation - characterState.setCurrentCompagnyInvited(-1); - if(characterState.getCurrentGenericMenu() != null) { - characterState.getCurrentGenericMenu().hide(); - characterState.setCurrentGenericMenu(null); - } - } - - public static void handleKickEmployee(Player player, String steamid) { - Account account = WorldManager.getPlayerAccount(player); - Compagny compagny = getCompagnyById(account.getCompagnyId()); - if(!compagny.isOwner(player)) return; - Player targetPlayer = WorldManager.findPlayerBySteamId(steamid); - if(targetPlayer == null) return; - Account targetAccount = WorldManager.getPlayerAccount(targetPlayer); - if(targetAccount.getId() == account.getId() && compagny.isOwner(player)) { - UIStateManager.sendNotification(targetPlayer, ToastTypeEnum.ERROR, "Action impossible, contactez un administrateur pour supprimer l'entreprise"); - return; - } - targetAccount.setCompagnyId(-1); - WorldManager.savePlayer(targetPlayer); - - for (Player employee : getOnlineEmployees(compagny)) { - refreshCompagny(employee); - UIStateManager.sendNotification(employee, ToastTypeEnum.WARN, targetAccount.getCharacterName() + " fait désormais plus partie de l'entreprise"); - } - UIStateManager.sendNotification(targetPlayer, ToastTypeEnum.ERROR, "Vous avez été licencier de l'entreprise " + compagny.getName()); - refreshCompagny(targetPlayer); - } -} +package fr.yuki.YukiRPFramework.manager; + +import com.google.gson.Gson; +import fr.yuki.YukiRPFramework.character.CharacterState; +import fr.yuki.YukiRPFramework.dao.CompagnyDAO; +import fr.yuki.YukiRPFramework.enums.ToastTypeEnum; +import fr.yuki.YukiRPFramework.model.Account; +import fr.yuki.YukiRPFramework.model.Compagny; +import fr.yuki.YukiRPFramework.net.payload.AddCompagnyEmployeePayload; +import fr.yuki.YukiRPFramework.net.payload.ClearCompagnyEmployeesPayload; +import fr.yuki.YukiRPFramework.net.payload.SetCompagnyPayload; +import fr.yuki.YukiRPFramework.ui.GenericMenu; +import fr.yuki.YukiRPFramework.ui.GenericMenuItem; +import net.onfirenetwork.onsetjava.Onset; +import net.onfirenetwork.onsetjava.entity.Player; + +import java.sql.SQLException; +import java.util.ArrayList; + +public class CompagnyManager { + public static ArrayList compagnies = new ArrayList<>(); + + public static void init() throws SQLException { + compagnies = CompagnyDAO.loadCompagnies(); + Onset.print("Loaded " + compagnies.size() + " compagnie(s) from the database"); + } + + public static Compagny getCompagnyById(int id) { + return compagnies.stream().filter(x -> x.getId() == id).findFirst().orElse(null); + } + + public static Compagny getCompagnyByName(String name) { + return compagnies.stream().filter(x -> x.getName().equals(name)).findFirst().orElse(null); + } + + public static void destroyCompagny() { + + } + + public static void handleCreateRequest(Player player, String name) throws SQLException { + Account account = WorldManager.getPlayerAccount(player); + if(account.getCompanyId() != -1) return; + if(getCompagnyByName(name.trim()) != null) { + UIStateManager.sendNotification(player, ToastTypeEnum.ERROR, "Ce nom est déjà pris"); + return; + } + if(account.getBankMoney() < 10000) { // TODO: Put this in config + UIStateManager.sendNotification(player, ToastTypeEnum.ERROR, "Pas assez d'argent en banque"); + return; + } + ATMManager.removeCashFromBank(player, 10000); + Compagny compagny = new Compagny(); + compagny.setName(name.trim()); + compagny.setBankCash(0); + compagny.setOwner(player.getSteamId()); + compagny.setMaxMember(5); + CompagnyDAO.insertCompagny(compagny); + account.setCompanyId(compagny.getId()); + WorldManager.savePlayer(player); + compagnies.add(compagny); + Onset.print("Compagny " + name + " created"); + + refreshCompagny(player); + } + + public static ArrayList getOnlineEmployees(Compagny compagny) { + ArrayList players = new ArrayList<>(); + for(Player player : Onset.getPlayers()) { + try { + Account account = WorldManager.getPlayerAccount(player); + if(account == null) continue; + if(account.getCompanyId() == compagny.getId()) players.add(player); + } catch (Exception ex) {} + } + return players; + } + + public static void refreshCompagny(Player player) { + Account account = WorldManager.getPlayerAccount(player); + if(account.getCompanyId() == -1) { // No compagny + player.callRemoteEvent("GlobalUI:DispatchToUI", new Gson().toJson(new SetCompagnyPayload( + -1, "", 0,0 + ))); + } else { // Has compagny + Compagny compagny = getCompagnyById(account.getCompanyId()); + if(compagny == null) { // Can't find the compagny + player.callRemoteEvent("GlobalUI:DispatchToUI", new Gson().toJson(new SetCompagnyPayload( + -1, "", 0,0 + ))); + account.setCompanyId(-1); + account.save(); + UIStateManager.sendNotification(player, ToastTypeEnum.ERROR, "Votre entreprise n'existe plus"); + return; + } + player.callRemoteEvent("GlobalUI:DispatchToUI", new Gson().toJson(new SetCompagnyPayload( + compagny.getId(), compagny.getName(), compagny.isOwner(player) ? 1:0,compagny.getBankCash() + ))); + + // Refresh employees + player.callRemoteEvent("GlobalUI:DispatchToUI", new Gson().toJson(new ClearCompagnyEmployeesPayload())); + for(Player employee : getOnlineEmployees(compagny)) { + Account eAccount = WorldManager.getPlayerAccount(employee); + player.callRemoteEvent("GlobalUI:DispatchToUI", new Gson().toJson(new AddCompagnyEmployeePayload( + employee.getSteamId(), eAccount.getCharacterName(), compagny.isOwner(employee) ? 1 : 0, true + ))); + } + } + } + + public static void handleInviteEmployee(Player player, String phoneNumber) { + Player invitedPlayer = WorldManager.getPlayerByPhoneNumber(phoneNumber); + if(invitedPlayer == null) { + UIStateManager.sendNotification(player, ToastTypeEnum.ERROR, "Cette personne n'est pas en ligne ou n'existe pas"); + return; + } + Account account = WorldManager.getPlayerAccount(player); + Compagny compagny = getCompagnyById(account.getCompanyId()); + if(compagny == null) return; + UIStateManager.sendNotification(player, ToastTypeEnum.SUCCESS, "Invitation envoyée"); + CharacterState characterState = CharacterManager.getCharacterStateByPlayer(invitedPlayer); + characterState.setCurrentCompagnyInvited(compagny.getId()); + + // Build generic menu + GenericMenu genericMenu = new GenericMenu(invitedPlayer); + genericMenu.getItems().add(new GenericMenuItem("Voulez-vous rejoindre " + compagny.getName() + " ?", "")); + genericMenu.getItems().add(new GenericMenuItem("Accepter", "window.CallEvent(\"RemoteCallInterface\", \"Compagny:AcceptInvitation\");")); + genericMenu.getItems().add(new GenericMenuItem("Refuser", "window.CallEvent(\"RemoteCallInterface\", \"Compagny:DeclineInvitation\");")); + genericMenu.show(); + characterState.setCurrentGenericMenu(genericMenu); + } + + public static void handleAcceptInvitation(Player player) { + Account account = WorldManager.getPlayerAccount(player); + CharacterState characterState = CharacterManager.getCharacterStateByPlayer(player); + Compagny compagny = getCompagnyById(characterState.getCurrentCompagnyInvited()); + account.setCompanyId(compagny.getId()); + WorldManager.savePlayer(player); + + // Reset invitation + characterState.setCurrentCompagnyInvited(-1); + if(characterState.getCurrentGenericMenu() != null) { + characterState.getCurrentGenericMenu().hide(); + characterState.setCurrentGenericMenu(null); + } + + for (Player employee : getOnlineEmployees(compagny)) { + refreshCompagny(employee); + UIStateManager.sendNotification(employee, ToastTypeEnum.SUCCESS, account.getCharacterName() + " fait désormais partie de l'entreprise"); + } + } + + public static void handleDeclineInvitation(Player player) { + CharacterState characterState = CharacterManager.getCharacterStateByPlayer(player); + + // Reset invitation + characterState.setCurrentCompagnyInvited(-1); + if(characterState.getCurrentGenericMenu() != null) { + characterState.getCurrentGenericMenu().hide(); + characterState.setCurrentGenericMenu(null); + } + } + + public static void handleKickEmployee(Player player, String steamid) { + Account account = WorldManager.getPlayerAccount(player); + Compagny compagny = getCompagnyById(account.getCompanyId()); + if(!compagny.isOwner(player)) return; + Player targetPlayer = WorldManager.findPlayerBySteamId(steamid); + if(targetPlayer == null) return; + Account targetAccount = WorldManager.getPlayerAccount(targetPlayer); + if(targetAccount.getId() == account.getId() && compagny.isOwner(player)) { + UIStateManager.sendNotification(targetPlayer, ToastTypeEnum.ERROR, "Action impossible, contactez un administrateur pour supprimer l'entreprise"); + return; + } + targetAccount.setCompanyId(-1); + WorldManager.savePlayer(targetPlayer); + + for (Player employee : getOnlineEmployees(compagny)) { + refreshCompagny(employee); + UIStateManager.sendNotification(employee, ToastTypeEnum.WARN, targetAccount.getCharacterName() + " fait désormais plus partie de l'entreprise"); + } + UIStateManager.sendNotification(targetPlayer, ToastTypeEnum.ERROR, "Vous avez été licencier de l'entreprise " + compagny.getName()); + refreshCompagny(targetPlayer); + } +} diff --git a/src/main/java/fr/yuki/YukiRPFramework/manager/HouseManager.java b/src/main/java/fr/yuki/YukiRPFramework/manager/HouseManager.java index bad3111..fd35c69 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/manager/HouseManager.java +++ b/src/main/java/fr/yuki/YukiRPFramework/manager/HouseManager.java @@ -1,183 +1,176 @@ -package fr.yuki.YukiRPFramework.manager; - -import com.google.gson.Gson; -import com.google.gson.reflect.TypeToken; -import fr.yuki.YukiRPFramework.character.CharacterState; -import fr.yuki.YukiRPFramework.dao.AccountDAO; -import fr.yuki.YukiRPFramework.dao.HouseDAO; -import fr.yuki.YukiRPFramework.dao.HouseItemDAO; -import fr.yuki.YukiRPFramework.enums.ItemTemplateEnum; -import fr.yuki.YukiRPFramework.enums.ToastTypeEnum; -import fr.yuki.YukiRPFramework.i18n.I18n; -import fr.yuki.YukiRPFramework.inventory.Inventory; -import fr.yuki.YukiRPFramework.job.JobConfig; -import fr.yuki.YukiRPFramework.job.JobSpawn; -import fr.yuki.YukiRPFramework.job.ObjectPlacementInstance; -import fr.yuki.YukiRPFramework.job.placementObject.GenericPlacementInstance; -import fr.yuki.YukiRPFramework.model.*; -import fr.yuki.YukiRPFramework.net.payload.AddPhoneMessagePayload; -import fr.yuki.YukiRPFramework.net.payload.SetHouseInfosPayload; -import net.onfirenetwork.onsetjava.Onset; -import net.onfirenetwork.onsetjava.data.Vector; -import net.onfirenetwork.onsetjava.entity.Door; -import net.onfirenetwork.onsetjava.entity.Player; - -import java.io.File; -import java.io.FileReader; -import java.sql.SQLException; -import java.util.ArrayList; - -public class HouseManager { - public static ArrayList houses; - public static ArrayList itemShopObjects; - - public static void init() throws SQLException { - houses = HouseDAO.loadHouses(); - Onset.print("Loaded " + houses.size() + " house(s) from the database"); - - loadItemsShop(); - spawnHouseItems(); - } - - private static void loadItemsShop() { - try { - new File("yrpf").mkdir(); - itemShopObjects = new Gson().fromJson(new FileReader("yrpf/itemshop.json"), new TypeToken>(){}.getType()); - Onset.print("Loaded " + itemShopObjects.size() + " item(s) shop from the cache"); - } catch (Exception e) { - Onset.print("Can't load job cache: " + e.toString()); - } - } - - public static void spawnHouseItems() throws SQLException { - for(HouseItemObject houseItemObject : HouseItemDAO.loadHouseItems()) { - House house = getHouseAtLocation(houseItemObject.getPosition()); - if(house == null) { - Onset.print("Can't find the house for item: " + houseItemObject.getId()); - return; - } - houseItemObject.setHouse(house); - house.getHouseItemObjects().add(houseItemObject); - houseItemObject.spawn(); - } - } - - public static House getHouseAtLocation(Vector position) { - return houses.stream().filter(x -> x.getLine3D().isInside(position)).findFirst().orElse(null); - } - - public static void handleHouseMenu(Player player, Vector origin) { - House house = getHouseAtLocation(origin); - if(house == null) return; - Account account = WorldManager.getPlayerAccount(player); - if(house.getAccountId() != -1) { - UIStateManager.sendNotification(player, ToastTypeEnum.ERROR, I18n.t(account.getLang(), "toast.house.already_buy")); - return; - } - if(!UIStateManager.handleUIToogle(player, "houseBuy")) { - return; - } - player.callRemoteEvent("GlobalUI:DispatchToUI", new Gson().toJson(new SetHouseInfosPayload - (house.getPrice(), house.getName()))); - } - - public static void handleBuyHouseRequest(Player player) throws SQLException { - House house = HouseManager.getHouseAtLocation(player.getLocation()); - if(house == null) { - Onset.print("houseid by door: " + house.getId()); - house = HouseManager.getHouseAtLocation(WorldManager.getNearestDoor(player.getLocation()).getLocation()); - } - else { - Onset.print("houseid by playerloc: " + house.getId()); - } - if(house == null) return; - Account account = WorldManager.getPlayerAccount(player); - if(house.getAccountId() != -1) { - UIStateManager.sendNotification(player, ToastTypeEnum.ERROR, I18n.t(account.getLang(), "toast.house.already_buy")); - return; - } - Inventory inventory = InventoryManager.getMainInventory(player); - if(inventory.getCashAmount() < house.getPrice()) { - UIStateManager.sendNotification(player, ToastTypeEnum.ERROR, I18n.t(account.getLang(), "toast.house.no_enought_money_on_me")); - return; - } - - // Open doors - for(Door door : house.getLine3D().getDoorsInside()) { - door.open(); - } - inventory.removeItem(inventory.getItemByType(ItemTemplateEnum.CASH.id), house.getPrice()); - house.setAccountId(account.getId()); - HouseDAO.saveHouse(house); - UIStateManager.sendNotification(player, ToastTypeEnum.SUCCESS, I18n.t(account.getLang(), "toast.house.success_buy")); - UIStateManager.handleUIToogle(player, "houseBuy"); - } - - public static void handleRequestBuyItemShop(Player player, int modelId) { - CharacterState characterState = CharacterManager.getCharacterStateByPlayer(player); - if(characterState.getCurrentObjectPlacementInstance() != null) return; - if(characterState.getWearableWorldObject() != null) return; - Account account = WorldManager.getPlayerAccount(player); - - Inventory inventory = InventoryManager.getMainInventory(player); - ItemShopObject itemShopObject = itemShopObjects.stream().filter(x -> x.getModelId() == modelId).findFirst().orElse(null); - if(itemShopObject == null) return; - if(itemShopObject.getPrice() > inventory.getCashAmount()) { - UIStateManager.sendNotification(player, ToastTypeEnum.ERROR, I18n.t(account.getLang(), "toast.house.no_enought_money_on_me")); - return; - } - - UIStateManager.handleUIToogle(player, "phone"); - ObjectPlacementInstance objectPlacementInstance = new GenericPlacementInstance(player.getLocation(), modelId, itemShopObject.getPrice()); - characterState.setCurrentObjectPlacementInstance(objectPlacementInstance); - objectPlacementInstance.spawn(); - objectPlacementInstance.setEditableBy(player); - } - - public static void handleGiveHouseKey(Player player, int target) { - Player playerTarget = Onset.getPlayers().stream().filter(x -> x.getId() == target) - .findFirst().orElse(null); - if(playerTarget == null) return; - House house = HouseManager.getHouseAtLocation(player.getLocation()); - if(house == null) return; - if(!HouseManager.canBuildInHouse(player, house)) return; - Account targetAccount = WorldManager.getPlayerAccount(playerTarget); - if(house.getAllowedPlayers().contains(targetAccount) || playerTarget.getId() == house.getAccountId()) return; - house.getAllowedPlayers().add(targetAccount.getId()); - UIStateManager.sendNotification(playerTarget, ToastTypeEnum.SUCCESS, "Vous avez désormais les clés de la maison"); - } - - public static boolean canBuildInHouse(Player player, House house) { - try { - Account account = WorldManager.getPlayerAccount(player); - if(account.getId() == house.getAccountId()) { - return true; - } - if(house.getAllowedPlayers().contains(account.getId())) { - return true; - } - - // Check same compagny - if(account.getCompagnyId() != -1) { - Account ownerAccount = AccountDAO.findAccountById(house.getAccountId()); - if(ownerAccount != null) { - if(account.getCompagnyId() == ownerAccount.getCompagnyId()) { - return true; - } - } - } - } catch (SQLException throwables) { - throwables.printStackTrace(); - } - - return false; - } - - public static ArrayList getHouses() { - return houses; - } - - public static ArrayList getItemShopObjects() { - return itemShopObjects; - } -} +package fr.yuki.YukiRPFramework.manager; + +import com.google.gson.Gson; +import com.google.gson.reflect.TypeToken; +import eu.bebendorf.ajorm.Repo; +import fr.yuki.YukiRPFramework.character.CharacterState; +import fr.yuki.YukiRPFramework.dao.HouseDAO; +import fr.yuki.YukiRPFramework.dao.HouseItemDAO; +import fr.yuki.YukiRPFramework.enums.ItemTemplateEnum; +import fr.yuki.YukiRPFramework.enums.ToastTypeEnum; +import fr.yuki.YukiRPFramework.i18n.I18n; +import fr.yuki.YukiRPFramework.inventory.Inventory; +import fr.yuki.YukiRPFramework.job.ObjectPlacementInstance; +import fr.yuki.YukiRPFramework.job.placementObject.GenericPlacementInstance; +import fr.yuki.YukiRPFramework.model.*; +import fr.yuki.YukiRPFramework.net.payload.SetHouseInfosPayload; +import net.onfirenetwork.onsetjava.Onset; +import net.onfirenetwork.onsetjava.data.Vector; +import net.onfirenetwork.onsetjava.entity.Door; +import net.onfirenetwork.onsetjava.entity.Player; + +import java.io.File; +import java.io.FileReader; +import java.sql.SQLException; +import java.util.ArrayList; + +public class HouseManager { + public static ArrayList houses; + public static ArrayList itemShopObjects; + + public static void init() throws SQLException { + houses = HouseDAO.loadHouses(); + Onset.print("Loaded " + houses.size() + " house(s) from the database"); + + loadItemsShop(); + spawnHouseItems(); + } + + private static void loadItemsShop() { + try { + new File("yrpf").mkdir(); + itemShopObjects = new Gson().fromJson(new FileReader("yrpf/itemshop.json"), new TypeToken>(){}.getType()); + Onset.print("Loaded " + itemShopObjects.size() + " item(s) shop from the cache"); + } catch (Exception e) { + Onset.print("Can't load job cache: " + e.toString()); + } + } + + public static void spawnHouseItems() throws SQLException { + for(HouseItemObject houseItemObject : HouseItemDAO.loadHouseItems()) { + House house = getHouseAtLocation(houseItemObject.getPosition()); + if(house == null) { + Onset.print("Can't find the house for item: " + houseItemObject.getId()); + return; + } + houseItemObject.setHouse(house); + house.getHouseItemObjects().add(houseItemObject); + houseItemObject.spawn(); + } + } + + public static House getHouseAtLocation(Vector position) { + return houses.stream().filter(x -> x.getLine3D().isInside(position)).findFirst().orElse(null); + } + + public static void handleHouseMenu(Player player, Vector origin) { + House house = getHouseAtLocation(origin); + if(house == null) return; + Account account = WorldManager.getPlayerAccount(player); + if(house.getAccountId() != -1) { + UIStateManager.sendNotification(player, ToastTypeEnum.ERROR, I18n.t(account.getLang(), "toast.house.already_buy")); + return; + } + if(!UIStateManager.handleUIToogle(player, "houseBuy")) { + return; + } + player.callRemoteEvent("GlobalUI:DispatchToUI", new Gson().toJson(new SetHouseInfosPayload + (house.getPrice(), house.getName()))); + } + + public static void handleBuyHouseRequest(Player player) throws SQLException { + House house = HouseManager.getHouseAtLocation(player.getLocation()); + if(house == null) { + Onset.print("houseid by door: " + house.getId()); + house = HouseManager.getHouseAtLocation(WorldManager.getNearestDoor(player.getLocation()).getLocation()); + } + else { + Onset.print("houseid by playerloc: " + house.getId()); + } + if(house == null) return; + Account account = WorldManager.getPlayerAccount(player); + if(house.getAccountId() != -1) { + UIStateManager.sendNotification(player, ToastTypeEnum.ERROR, I18n.t(account.getLang(), "toast.house.already_buy")); + return; + } + Inventory inventory = InventoryManager.getMainInventory(player); + if(inventory.getCashAmount() < house.getPrice()) { + UIStateManager.sendNotification(player, ToastTypeEnum.ERROR, I18n.t(account.getLang(), "toast.house.no_enought_money_on_me")); + return; + } + + // Open doors + for(Door door : house.getLine3D().getDoorsInside()) { + door.open(); + } + inventory.removeItem(inventory.getItemByType(ItemTemplateEnum.CASH.id), house.getPrice()); + house.setAccountId(account.getId()); + HouseDAO.saveHouse(house); + UIStateManager.sendNotification(player, ToastTypeEnum.SUCCESS, I18n.t(account.getLang(), "toast.house.success_buy")); + UIStateManager.handleUIToogle(player, "houseBuy"); + } + + public static void handleRequestBuyItemShop(Player player, int modelId) { + CharacterState characterState = CharacterManager.getCharacterStateByPlayer(player); + if(characterState.getCurrentObjectPlacementInstance() != null) return; + if(characterState.getWearableWorldObject() != null) return; + Account account = WorldManager.getPlayerAccount(player); + + Inventory inventory = InventoryManager.getMainInventory(player); + ItemShopObject itemShopObject = itemShopObjects.stream().filter(x -> x.getModelId() == modelId).findFirst().orElse(null); + if(itemShopObject == null) return; + if(itemShopObject.getPrice() > inventory.getCashAmount()) { + UIStateManager.sendNotification(player, ToastTypeEnum.ERROR, I18n.t(account.getLang(), "toast.house.no_enought_money_on_me")); + return; + } + + UIStateManager.handleUIToogle(player, "phone"); + ObjectPlacementInstance objectPlacementInstance = new GenericPlacementInstance(player.getLocation(), modelId, itemShopObject.getPrice()); + characterState.setCurrentObjectPlacementInstance(objectPlacementInstance); + objectPlacementInstance.spawn(); + objectPlacementInstance.setEditableBy(player); + } + + public static void handleGiveHouseKey(Player player, int target) { + Player playerTarget = Onset.getPlayers().stream().filter(x -> x.getId() == target) + .findFirst().orElse(null); + if(playerTarget == null) return; + House house = HouseManager.getHouseAtLocation(player.getLocation()); + if(house == null) return; + if(!HouseManager.canBuildInHouse(player, house)) return; + Account targetAccount = WorldManager.getPlayerAccount(playerTarget); + if(house.getAllowedPlayers().contains(targetAccount) || playerTarget.getId() == house.getAccountId()) return; + house.getAllowedPlayers().add(targetAccount.getId()); + UIStateManager.sendNotification(playerTarget, ToastTypeEnum.SUCCESS, "Vous avez désormais les clés de la maison"); + } + + public static boolean canBuildInHouse(Player player, House house) { + Account account = WorldManager.getPlayerAccount(player); + if(account.getId() == house.getAccountId()) { + return true; + } + if(house.getAllowedPlayers().contains(account.getId())) { + return true; + } + + // Check same compagny + if(account.getCompanyId() != -1) { + Account ownerAccount = Repo.get(Account.class).get(house.getAccountId()); + if(ownerAccount != null) { + if(account.getCompanyId() == ownerAccount.getCompanyId()) { + return true; + } + } + } + + return false; + } + + public static ArrayList getHouses() { + return houses; + } + + public static ArrayList getItemShopObjects() { + return itemShopObjects; + } +} diff --git a/src/main/java/fr/yuki/YukiRPFramework/manager/JobManager.java b/src/main/java/fr/yuki/YukiRPFramework/manager/JobManager.java index 4d401af..bfe0efc 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/manager/JobManager.java +++ b/src/main/java/fr/yuki/YukiRPFramework/manager/JobManager.java @@ -1,535 +1,535 @@ -package fr.yuki.YukiRPFramework.manager; - -import com.google.gson.Gson; -import fr.yuki.YukiRPFramework.character.CharacterJobLevel; -import fr.yuki.YukiRPFramework.character.CharacterState; -import fr.yuki.YukiRPFramework.character.CharacterStyle; -import fr.yuki.YukiRPFramework.dao.*; -import fr.yuki.YukiRPFramework.enums.ItemTemplateEnum; -import fr.yuki.YukiRPFramework.enums.JobEnum; -import fr.yuki.YukiRPFramework.enums.ToastTypeEnum; -import fr.yuki.YukiRPFramework.i18n.I18n; -import fr.yuki.YukiRPFramework.inventory.Inventory; -import fr.yuki.YukiRPFramework.inventory.InventoryItem; -import fr.yuki.YukiRPFramework.job.*; -import fr.yuki.YukiRPFramework.model.*; -import fr.yuki.YukiRPFramework.net.payload.AddCharacterJobPayload; -import fr.yuki.YukiRPFramework.net.payload.AddToastPayload; -import fr.yuki.YukiRPFramework.net.payload.AddXpBarItemPayload; -import fr.yuki.YukiRPFramework.ui.UIState; -import net.onfirenetwork.onsetjava.Onset; -import net.onfirenetwork.onsetjava.data.Color; -import net.onfirenetwork.onsetjava.data.Vector; -import net.onfirenetwork.onsetjava.entity.Pickup; -import net.onfirenetwork.onsetjava.entity.Player; -import net.onfirenetwork.onsetjava.enums.Animation; - -import java.io.File; -import java.io.FileReader; -import java.io.FileWriter; -import java.io.IOException; -import java.sql.SQLException; -import java.util.*; -import java.util.stream.Collectors; - -public class JobManager { - private static LinkedHashMap jobs; - private static ArrayList wearableWorldObjects; - private static ArrayList jobNPCS; - private static ArrayList jobTools; - private static ArrayList jobLevels; - private static ArrayList jobVehicleRentals; - private static DeliveryPointConfig deliveryPointConfig; - private static ArrayList jobOutfits; - - public static void init() throws SQLException, IOException { - jobNPCS = JobNPCDAO.loadJobNPCS(); - Onset.print("Loaded " + jobNPCS.size() + " job npc(s) from the database"); - - jobOutfits = JobOutfitDAO.loadJobOutfits(); - Onset.print("Loaded " + jobOutfits.size() + " job outfit(s) from the database"); - - jobTools = JobToolDAO.loadJobTools(); - Onset.print("Loaded " + jobTools.size() + " job tool(s) from the database"); - - jobLevels = JobLevelDAO.loadJobLevels(); - Onset.print("Loaded " + jobLevels.size() + " job level(s) from the database"); - - jobVehicleRentals = JobVehicleRentalDAO.loadJobVehicleRental(); - Onset.print("Loaded " + jobVehicleRentals.size() + " job vehicle(s) from the database"); - - loadDeliveryPoints(); - - wearableWorldObjects = new ArrayList<>(); - jobs = new LinkedHashMap<>(); - jobs.put(JobEnum.LUMBERJACK.type, new LumberjackJob()); - jobs.put(JobEnum.GARBAGE.type, new GarbageJob()); - jobs.put(JobEnum.DELIVERY.type, new DeliveryJob()); - jobs.put(JobEnum.MINER.type, new MinerJob()); - jobs.put(JobEnum.FISHER.type, new FisherJob()); - jobs.put(JobEnum.POLICE.type, new PoliceJob()); - jobs.put(JobEnum.WEED.type, new WeedJob()); - jobs.put(JobEnum.EMS.type, new EMSJob()); - - spawnJobOutfitsPoint(); - spawnVehicleRentalSpawns(); - initPaycheck(); - //initWorldWearableObjectExpiration(); - } - - public static void initWorldWearableObjectExpiration() { - Onset.timer(60000, () -> { - for(WearableWorldObject wearableWorldObject : wearableWorldObjects.stream().filter(x -> !x.isWeared() && x.getVehicleUUID().equals("")) - .collect(Collectors.toList())) { - try { - if(wearableWorldObject.isExpired()) wearableWorldObject.deleteObject(); - }catch (Exception ex) {} - } - }); - } - - public static void initPaycheck() { - int paycheckAmount = 1000; - Onset.timer(60000 * 30, () -> { - for(Player player : Onset.getPlayers()) { - try { - Account account = WorldManager.getPlayerAccount(player); - AccountJobWhitelist accountJobWhitelist = AccountManager.getAccountJobWhitelists().stream() - .filter(x -> x.getAccountId() == account.getId()) - .findFirst().orElse(null); - if(accountJobWhitelist != null){ - UIStateManager.sendNotification(player, ToastTypeEnum.SUCCESS, "Salaire +" + paycheckAmount + "$ !"); - account.setBankMoney(account.getBankMoney() + paycheckAmount); - } - } catch (Exception ex) {} - } - }); - } - - private static void loadDeliveryPoints() throws IOException { - new File("yrpf").mkdir(); - if(new File("yrpf/delivery_config.json").exists()) { - deliveryPointConfig = new Gson().fromJson(new FileReader("yrpf/delivery_config.json"), DeliveryPointConfig.class); - } else { - deliveryPointConfig = new DeliveryPointConfig(); - deliveryPointConfig.setPoints(new HashMap<>()); - deliveryPointConfig.getPoints().put("houses", new ArrayList<>()); - new File("yrpf/delivery_config.json").createNewFile(); - FileWriter fileWriter = new FileWriter("yrpf/delivery_config.json"); - fileWriter.write(new Gson().toJson(deliveryPointConfig)); - fileWriter.close(); - } - } - - public static void saveDeliveryPoints() { - try { - FileWriter fileWriter = new FileWriter("yrpf/delivery_config.json"); - fileWriter.write(new Gson().toJson(deliveryPointConfig)); - fileWriter.close(); - } catch (IOException e) { - e.printStackTrace(); - } - } - - /** - * Init job levels for the character - * @param player The player - */ - public static void initCharacterJobs(Player player) { - Account account = WorldManager.getPlayerAccount(player); - ArrayList characterJobLevels = account.decodeCharacterJob(); - for(Map.Entry job : jobs.entrySet()) { - if(characterJobLevels.stream().filter(x -> x.getJobId().equals(job.getKey())).findFirst().orElse(null) == null) { - CharacterJobLevel characterJobLevel = new CharacterJobLevel(); - characterJobLevel.setJobId(job.getKey()); - characterJobLevel.setExp(0); - characterJobLevels.add(characterJobLevel); - } - } - account.setJobLevels(characterJobLevels); - } - - private static void spawnVehicleRentalSpawns() { - for(JobVehicleRental jobVehicleRental : jobVehicleRentals) { - Pickup pickup = Onset.getServer().createPickup(new net.onfirenetwork.onsetjava.data.Vector - (jobVehicleRental.getX(), jobVehicleRental.getY(), jobVehicleRental.getZ()-100), 336); - pickup.setScale(new Vector(4,4,0.3d)); - pickup.setProperty("color", "0096a3", true); - Onset.getServer().createText3D(jobVehicleRental.getName() + " [Utiliser]", 20, - jobVehicleRental.getX(), jobVehicleRental.getY(), jobVehicleRental.getZ() + 150, 0 , 0 ,0); - } - } - - private static void spawnJobOutfitsPoint() { - for(JobOutfit jobOutfit : jobOutfits) { - Pickup pickup = Onset.getServer().createPickup(new net.onfirenetwork.onsetjava.data.Vector - (jobOutfit.getX(), jobOutfit.getY(), jobOutfit.getZ()-100), 336); - pickup.setScale(new Vector(4,4,0.3d)); - pickup.setProperty("color", "0030a1", true); - Onset.getServer().createText3D(jobOutfit.getName() + " [" + I18n.t(WorldManager.getServerConfig().getServerLanguage(), "ui.common.use") + "]", 17, - jobOutfit.getX(), jobOutfit.getY(), jobOutfit.getZ() + 150, 0 , 0 ,0); - } - } - - private static JobOutfit getNearbyJobOutfit(Player player) { - for(JobOutfit jobOutfit : jobOutfits) { - if(jobOutfit.isNear(player)) return jobOutfit; - } - return null; - } - - public static boolean handleJobOutfitRequest(Player player) { - JobOutfit jobOutfit = getNearbyJobOutfit(player); - if(jobOutfit == null) return false; - Account account = WorldManager.getPlayerAccount(player); - Job job = jobs.values().stream().filter(x -> x.getJobType().equals(jobOutfit.getJobId())).findFirst().orElse(null); - if(job == null) return false; - - // Check level and whitelist level - if(job.isWhitelisted()) { - AccountJobWhitelist accountJobWhitelist = AccountManager.getAccountJobWhitelists().stream() - .filter(x -> x.getAccountId() == account.getId() && x.getJobId().equals(job.getJobType())) - .findFirst().orElse(null); - if(accountJobWhitelist == null) { - UIStateManager.sendNotification(player, ToastTypeEnum.ERROR, I18n.t(account.getLang(), "toast.outfit.level_required")); - return true; - } - if(accountJobWhitelist.getJobLevel() < jobOutfit.getLevelRequired()) { - UIStateManager.sendNotification(player, ToastTypeEnum.ERROR, I18n.t(account.getLang(), "toast.outfit.level_required")); - return true; - } - } else { - ArrayList characterJobLevels = account.decodeCharacterJob(); - CharacterJobLevel characterJobLevel = characterJobLevels.stream().filter(x -> x.getJobId().equals(jobOutfit.getJobId())).findFirst().orElse(null); - if(characterJobLevel == null) return false; - if(characterJobLevel.getJobLevel().getLevel() < jobOutfit.getLevelRequired()) { - UIStateManager.sendNotification(player, ToastTypeEnum.ERROR, I18n.t(account.getLang(), "toast.outfit.level_required")); - return true; - } - } - - if(account.getIsInService() == 1) { - CharacterStyle characterStyle = account.decodeOriginalCharacterStyle(); - account.setCharacterStyle(characterStyle); - characterStyle.attachStyleToPlayer(player); - account.setIsInService(0); - } else { - // Apply the outfit - CharacterStyle characterStyle = account.decodeCharacterStyle(); - for(JobOutfitItem jobOutfitItem : jobOutfit.decodeOutfit()) { - switch (jobOutfitItem.getType().toLowerCase()) { - case "top": - characterStyle.setTop(jobOutfitItem.getValue()); - break; - - case "pant": - characterStyle.setPant(jobOutfitItem.getValue()); - break; - - case "shoes": - characterStyle.setShoes(jobOutfitItem.getValue()); - break; - } - } - account.setCharacterStyle(characterStyle); - characterStyle.attachStyleToPlayer(player); - account.setIsInService(1); - } - SoundManager.playSound3D("sounds/zip.mp3", player.getLocation(), 500, 0.2); - WorldManager.savePlayer(player); - UIStateManager.sendNotification(player, ToastTypeEnum.SUCCESS, I18n.t(account.getLang(), "toast.outfit.success_change")); - - return true; - } - - public static int getJobLevelForPlayer(Player player, String job) { - Account account = WorldManager.getPlayerAccount(player); - ArrayList characterJobLevels = account.decodeCharacterJob(); - CharacterJobLevel characterJobLevel = characterJobLevels.stream().filter(x -> x.getJobId().equals(job)).findFirst().orElse(null); - return characterJobLevel.getJobLevel().getLevel(); - } - - /** - * Try to find a object to harvest for the player - * @param player The player - */ - public static boolean tryToHarvest(Player player) { - if(player.getVehicle() != null) return false; - - CharacterState state = CharacterManager.getCharacterStateByPlayer(player); - if(!state.canInteract()) return false; - - Account account = WorldManager.getPlayerAccount(player); - for(Map.Entry job : jobs.entrySet()) { - for(WorldHarvestObject worldHarvestObject : job.getValue().getWorldHarvestObjects()) { - try { - if(worldHarvestObject.isNear(player)) { - if(CharacterManager.getCharacterStateByPlayer(player).getWearableWorldObject() != null) { - UIStateManager.sendNotification(player, ToastTypeEnum.ERROR, I18n.t(account.getLang(), "action.vehicle.wearSomething")); - return true; - } - - - worldHarvestObject.harvest(player); - return true; - } - } catch (Exception ex) {} - } - } - return false; - } - - public static void addExp(Player player, String job, int amount) { - if(amount <= 0) return; - amount = amount * WorldManager.getServerConfig().getXpRate(); - Account account = WorldManager.getPlayerAccount(player); - ArrayList characterJobLevels = account.decodeCharacterJob(); - CharacterJobLevel characterJobLevel = characterJobLevels.stream().filter(x -> x.getJobId().equals(job)).findFirst().orElse(null); - if(characterJobLevel == null) return; - - JobLevel previousJobLevel = characterJobLevel.getJobLevel(); - characterJobLevel.setExp(characterJobLevel.getExp() + amount); - account.setJobLevels(characterJobLevels); - player.callRemoteEvent("GlobalUI:DispatchToUI", new Gson().toJson(new AddXpBarItemPayload("+" + amount + " XP " + - I18n.t(account.getLang(), "ui.characterJob.jobLevel_" + characterJobLevel.getJobLevel().getTranslateName())))); - JobLevel nextJobLevel = characterJobLevel.getJobLevel(); - if(previousJobLevel.getLevel() != nextJobLevel.getLevel()) { - SoundManager.playSound3D("sounds/success_1.mp3", player.getLocation(), 200, 1); - String translatedJobName = I18n.t(account.getLang(), "ui.characterJob.jobLevel_" + characterJobLevel.getJobLevel().getTranslateName()); - player.callRemoteEvent("GlobalUI:DispatchToUI", new Gson().toJson(new AddXpBarItemPayload( - I18n.t(account.getLang(), "toast.xp.level_up", translatedJobName)))); - } - - WorldManager.savePlayer(player); - } - - /** - * Request to wear a object in the world - * @param player The player - * @param uuid The object uuid - */ - public static void handleWearObjectRequest(Player player, String uuid) { - Account account = WorldManager.getPlayerAccount(player); - WearableWorldObject wearableWorldObject = wearableWorldObjects.stream().filter(x -> x.getUuid().equals(uuid)).findFirst().orElse(null); - if(wearableWorldObject == null) { - UIStateManager.sendNotification(player, ToastTypeEnum.ERROR, I18n.t(account.getLang(), "toast.wear.not_found")); - return; - } - if(CharacterManager.getCharacterStateByPlayer(player).getWearableWorldObject() != null) { - UIStateManager.sendNotification(player, ToastTypeEnum.ERROR, I18n.t(account.getLang(), "action.vehicle.wearSomething")); - return; - } - wearableWorldObject.requestWear(player); - } - - public static boolean handleSellJobNpcInventoryItem(Player player) { - JobNPC jobNPCNearby = getNearbyJobNPC(player); - if(jobNPCNearby == null) return false; - Inventory inventory = InventoryManager.getMainInventory(player); - for (JobNPCListItem sellListItem : jobNPCNearby.getBuyList()) { - if(!sellListItem.getType().equals("item")) continue; - InventoryItem inventoryItem = inventory.getItemByType(String.valueOf(sellListItem.getItemId())); - if(inventoryItem == null) continue; - Onset.print("Selling item to the npc price=" + sellListItem.getPrice()); - inventory.removeItem(inventoryItem, 1); - SoundManager.playSound3D("sounds/cash_register.mp3", player.getLocation(), 200, 0.8); - //UIStateManager.sendNotification(player, ToastTypeEnum.SUCCESS, "Vous avez vendu votre " + inventoryItem.getTemplate().getName() + - // " pour " + sellListItem.getPrice() + "$"); - jobNPCNearby.getNpc().setAnimation(Animation.THUMBSUP); - InventoryManager.addItemToPlayer(player, ItemTemplateEnum.CASH.id, sellListItem.getPrice(), false); - } - return true; - } - - public static void handleUnwearObject(Player player) { - if(CharacterManager.getCharacterStateByPlayer(player).getWearableWorldObject() == null) return; - Account account = WorldManager.getPlayerAccount(player); - - // Try to sell it to the nearby npc - JobNPC jobNPCNearby = getNearbyJobNPC(player); - if(jobNPCNearby != null) { - JobNPCListItem jobNPCListItem = jobNPCNearby.getBuyItemByWearableItem(CharacterManager.getCharacterStateByPlayer(player).getWearableWorldObject()); - if(jobNPCListItem != null) { - Onset.print("Selling item to the npc price=" + jobNPCListItem.getPrice()); - InventoryManager.addItemToPlayer(player, ItemTemplateEnum.CASH.id, jobNPCListItem.getPrice(), false); - CharacterManager.getCharacterStateByPlayer(player).getWearableWorldObject().requestUnwear(player, true); - jobNPCNearby.getNpc().setAnimation(Animation.THUMBSUP); - SoundManager.playSound3D("sounds/cash_register.mp3", player.getLocation(), 200, 1); - //UIStateManager.sendNotification(player, ToastTypeEnum.SUCCESS, "Vous avez vendu votre ressource pour " + jobNPCListItem.getPrice() + "$"); - } else { - UIStateManager.sendNotification(player, ToastTypeEnum.ERROR, I18n.t(account.getLang(), "toast.npc.no_buy_kind_item")); - } - return; - } - - // Try to use a job tool nearby - JobTool jobToolNearby = getNearbyJobTool(player); - if(jobToolNearby != null) { - if(!jobToolNearby.getJobToolHandler().hasLevelRequired(player)) { - UIStateManager.sendNotification(player, ToastTypeEnum.ERROR, I18n.t(account.getLang(), "toast.tool.no_level_required")); - return; - } - - if(jobToolNearby.getJobToolHandler().canInteract(player)) { - Onset.print("Use job tool type="+jobToolNearby.getJobToolType()); - if(jobToolNearby.getJobToolHandler().onUnwear(player, CharacterManager.getCharacterStateByPlayer(player).getWearableWorldObject())) { - CharacterManager.getCharacterStateByPlayer(player).getWearableWorldObject().requestUnwear(player, true); - } - } - else { - UIStateManager.sendNotification(player, ToastTypeEnum.ERROR, I18n.t(account.getLang(), "toast.tool.no_kind_item")); - } - return; - } - - // Unwear the item - CharacterManager.getCharacterStateByPlayer(player).getWearableWorldObject().requestUnwear(player, false); - } - - public static boolean requestVehicleRental(Player player) { - JobVehicleRental nearbyJobVehicleRental = getNearbyVehicleRental(player); - if(nearbyJobVehicleRental == null) return false; - if(player.getVehicle() != null) return false; - - Account account = WorldManager.getPlayerAccount(player); - - // Check vehicle around - Vector spawnPoint = new Vector(nearbyJobVehicleRental.getSpawnX(), nearbyJobVehicleRental.getSpawnY(), nearbyJobVehicleRental.getSpawnZ()); - if(VehicleManager.getNearestVehicle(spawnPoint) != null) { - if(VehicleManager.getNearestVehicle(spawnPoint).getLocation().distance(spawnPoint) < 600) { - UIStateManager.sendNotification(player, ToastTypeEnum.ERROR, I18n.t(account.getLang(), "toast.garage.vehicle_block_spawn")); - return true; - } - } - - Job job = jobs.values().stream().filter(x -> x.getJobType().equals(nearbyJobVehicleRental.getJobId())).findFirst().orElse(null); - if(job == null) return false; - - // Check level and whitelist level - if(job.isWhitelisted()) { - AccountJobWhitelist accountJobWhitelist = AccountManager.getAccountJobWhitelists().stream() - .filter(x -> x.getAccountId() == account.getId() && x.getJobId().equals(job.getJobType())) - .findFirst().orElse(null); - if(accountJobWhitelist == null) { - UIStateManager.sendNotification(player, ToastTypeEnum.ERROR, I18n.t(account.getLang(), "toast.job.not_whitelisted")); - return true; - } - if(accountJobWhitelist.getJobLevel() < nearbyJobVehicleRental.getLevelRequired()) { - UIStateManager.sendNotification(player, ToastTypeEnum.ERROR, I18n.t(account.getLang(), "toast.job.not_whitelisted")); - return true; - } - } else { - ArrayList characterJobLevels = account.decodeCharacterJob(); - CharacterJobLevel characterJobLevel = characterJobLevels.stream().filter(x -> x.getJobId().equals(nearbyJobVehicleRental.getJobId())).findFirst().orElse(null); - if(characterJobLevel == null) return false; - if(characterJobLevel.getJobLevel().getLevel() < nearbyJobVehicleRental.getLevelRequired()) { - UIStateManager.sendNotification(player, ToastTypeEnum.ERROR, I18n.t(account.getLang(), "toast.job.not_whitelisted")); - return true; - } - } - - destroyRentalVehiclesForPlayer(player); - - VehicleManager.CreateVehicleResult result = VehicleManager.createVehicle(nearbyJobVehicleRental.getVehicleModelId(), - new Vector(nearbyJobVehicleRental.getSpawnX(), nearbyJobVehicleRental.getSpawnY(), nearbyJobVehicleRental.getSpawnZ()), - player.getLocationAndHeading().getHeading(), player, null, true); - - java.awt.Color color = java.awt.Color.decode(nearbyJobVehicleRental.getColor()); - result.getVehicle().setColor(new Color(color.getRed(), color.getGreen(), color.getBlue())); - UIStateManager.sendNotification(player, ToastTypeEnum.SUCCESS, I18n.t(account.getLang(), "toast.job_vehicle.success_rental", - String.valueOf(nearbyJobVehicleRental.getCost()))); - return true; - } - - public static void destroyRentalVehiclesForPlayer(Player player) { - Account account = WorldManager.getPlayerAccount(player); - for(VehicleGarage vehicleGarage : GarageManager.getVehicleGarages().stream() - .filter(x -> x.isRental() && x.getOwner() == account.getId()).collect(Collectors.toList())) { - if(vehicleGarage.getVehicle() != null) { - VehicleManager.clearKeysForVehicle(vehicleGarage.getVehicle(), player); - } - vehicleGarage.destroy(); - GarageManager.getVehicleGarages().remove(vehicleGarage); - } - } - - public static void handleRequestCharacterJobs(Player player) { - if(!UIStateManager.handleUIToogle(player, "characterjob")) return; - Account account = WorldManager.getPlayerAccount(player); - ArrayList characterJobLevels = account.decodeCharacterJob(); - for(CharacterJobLevel characterJobLevel : characterJobLevels) { - player.callRemoteEvent("GlobalUI:DispatchToUI", new Gson().toJson(new AddCharacterJobPayload(characterJobLevel))); - } - } - - public static void handleUseJobTool(Player player, String uuid) { - JobTool jobTool = jobTools.stream().filter(x -> x.getUuid().equals(uuid)).findFirst().orElse(null); - if(jobTool == null) return; - jobTool.getJobToolHandler().onUse(player); - } - - public static ArrayList getWhitelistedPlayersForJob(JobEnum jobEnum) { - ArrayList players = new ArrayList<>(); - for(Player player : Onset.getPlayers()) { - try { - Account account = WorldManager.getPlayerAccount(player); - AccountJobWhitelist accountJobWhitelist = AccountManager.getAccountJobWhitelists().stream() - .filter(x -> x.getAccountId() == account.getId() && x.getJobId().equals(jobEnum.type)) - .findFirst().orElse(null); - if(accountJobWhitelist != null) { - players.add(player); - } - }catch (Exception exception) {} - } - return players; - } - - public static JobVehicleRental getNearbyVehicleRental(Player player) { - for(JobVehicleRental jobVehicleRental : jobVehicleRentals) { - if(jobVehicleRental.isNear(player)) return jobVehicleRental; - } - return null; - } - - public static JobNPC getNearbyJobNPC(Player player) { - for(JobNPC jobNPC : jobNPCS) { - if(jobNPC.isNear(player)) return jobNPC; - } - return null; - } - - public static JobTool getNearbyJobTool(Player player) { - for(JobTool jobTool : jobTools) { - if(jobTool.isNear(player)) return jobTool; - } - return null; - } - - public static LinkedHashMap getJobs() { - return jobs; - } - - public static ArrayList getWearableWorldObjects() { - return wearableWorldObjects; - } - - public static ArrayList getJobNPCS() { - return jobNPCS; - } - - public static ArrayList getJobTools() { - return jobTools; - } - - public static ArrayList getJobLevels() { - return jobLevels; - } - - public static ArrayList getJobVehicleRentals() { - return jobVehicleRentals; - } - - public static DeliveryPointConfig getDeliveryPointConfig() { - return deliveryPointConfig; - } -} +package fr.yuki.YukiRPFramework.manager; + +import com.google.gson.Gson; +import fr.yuki.YukiRPFramework.character.CharacterJobLevel; +import fr.yuki.YukiRPFramework.character.CharacterState; +import fr.yuki.YukiRPFramework.character.CharacterStyle; +import fr.yuki.YukiRPFramework.dao.*; +import fr.yuki.YukiRPFramework.enums.ItemTemplateEnum; +import fr.yuki.YukiRPFramework.enums.JobEnum; +import fr.yuki.YukiRPFramework.enums.ToastTypeEnum; +import fr.yuki.YukiRPFramework.i18n.I18n; +import fr.yuki.YukiRPFramework.inventory.Inventory; +import fr.yuki.YukiRPFramework.inventory.InventoryItem; +import fr.yuki.YukiRPFramework.job.*; +import fr.yuki.YukiRPFramework.model.*; +import fr.yuki.YukiRPFramework.net.payload.AddCharacterJobPayload; +import fr.yuki.YukiRPFramework.net.payload.AddToastPayload; +import fr.yuki.YukiRPFramework.net.payload.AddXpBarItemPayload; +import fr.yuki.YukiRPFramework.ui.UIState; +import net.onfirenetwork.onsetjava.Onset; +import net.onfirenetwork.onsetjava.data.Color; +import net.onfirenetwork.onsetjava.data.Vector; +import net.onfirenetwork.onsetjava.entity.Pickup; +import net.onfirenetwork.onsetjava.entity.Player; +import net.onfirenetwork.onsetjava.enums.Animation; + +import java.io.File; +import java.io.FileReader; +import java.io.FileWriter; +import java.io.IOException; +import java.sql.SQLException; +import java.util.*; +import java.util.stream.Collectors; + +public class JobManager { + private static LinkedHashMap jobs; + private static ArrayList wearableWorldObjects; + private static ArrayList jobNPCS; + private static ArrayList jobTools; + private static ArrayList jobLevels; + private static ArrayList jobVehicleRentals; + private static DeliveryPointConfig deliveryPointConfig; + private static ArrayList jobOutfits; + + public static void init() throws SQLException, IOException { + jobNPCS = JobNPCDAO.loadJobNPCS(); + Onset.print("Loaded " + jobNPCS.size() + " job npc(s) from the database"); + + jobOutfits = JobOutfitDAO.loadJobOutfits(); + Onset.print("Loaded " + jobOutfits.size() + " job outfit(s) from the database"); + + jobTools = JobToolDAO.loadJobTools(); + Onset.print("Loaded " + jobTools.size() + " job tool(s) from the database"); + + jobLevels = JobLevelDAO.loadJobLevels(); + Onset.print("Loaded " + jobLevels.size() + " job level(s) from the database"); + + jobVehicleRentals = JobVehicleRentalDAO.loadJobVehicleRental(); + Onset.print("Loaded " + jobVehicleRentals.size() + " job vehicle(s) from the database"); + + loadDeliveryPoints(); + + wearableWorldObjects = new ArrayList<>(); + jobs = new LinkedHashMap<>(); + jobs.put(JobEnum.LUMBERJACK.type, new LumberjackJob()); + jobs.put(JobEnum.GARBAGE.type, new GarbageJob()); + jobs.put(JobEnum.DELIVERY.type, new DeliveryJob()); + jobs.put(JobEnum.MINER.type, new MinerJob()); + jobs.put(JobEnum.FISHER.type, new FisherJob()); + jobs.put(JobEnum.POLICE.type, new PoliceJob()); + jobs.put(JobEnum.WEED.type, new WeedJob()); + jobs.put(JobEnum.EMS.type, new EMSJob()); + + spawnJobOutfitsPoint(); + spawnVehicleRentalSpawns(); + initPaycheck(); + //initWorldWearableObjectExpiration(); + } + + public static void initWorldWearableObjectExpiration() { + Onset.timer(60000, () -> { + for(WearableWorldObject wearableWorldObject : wearableWorldObjects.stream().filter(x -> !x.isWeared() && x.getVehicleUUID().equals("")) + .collect(Collectors.toList())) { + try { + if(wearableWorldObject.isExpired()) wearableWorldObject.deleteObject(); + }catch (Exception ex) {} + } + }); + } + + public static void initPaycheck() { + int paycheckAmount = 1000; + Onset.timer(60000 * 30, () -> { + for(Player player : Onset.getPlayers()) { + try { + Account account = WorldManager.getPlayerAccount(player); + AccountJobWhitelist accountJobWhitelist = AccountManager.getAccountJobWhitelists().stream() + .filter(x -> x.getAccountId() == account.getId()) + .findFirst().orElse(null); + if(accountJobWhitelist != null){ + UIStateManager.sendNotification(player, ToastTypeEnum.SUCCESS, "Salaire +" + paycheckAmount + "$ !"); + account.setBankMoney(account.getBankMoney() + paycheckAmount); + } + } catch (Exception ex) {} + } + }); + } + + private static void loadDeliveryPoints() throws IOException { + new File("yrpf").mkdir(); + if(new File("yrpf/delivery_config.json").exists()) { + deliveryPointConfig = new Gson().fromJson(new FileReader("yrpf/delivery_config.json"), DeliveryPointConfig.class); + } else { + deliveryPointConfig = new DeliveryPointConfig(); + deliveryPointConfig.setPoints(new HashMap<>()); + deliveryPointConfig.getPoints().put("houses", new ArrayList<>()); + new File("yrpf/delivery_config.json").createNewFile(); + FileWriter fileWriter = new FileWriter("yrpf/delivery_config.json"); + fileWriter.write(new Gson().toJson(deliveryPointConfig)); + fileWriter.close(); + } + } + + public static void saveDeliveryPoints() { + try { + FileWriter fileWriter = new FileWriter("yrpf/delivery_config.json"); + fileWriter.write(new Gson().toJson(deliveryPointConfig)); + fileWriter.close(); + } catch (IOException e) { + e.printStackTrace(); + } + } + + /** + * Init job levels for the character + * @param player The player + */ + public static void initCharacterJobs(Player player) { + Account account = WorldManager.getPlayerAccount(player); + ArrayList characterJobLevels = account.decodeCharacterJob(); + for(Map.Entry job : jobs.entrySet()) { + if(characterJobLevels.stream().filter(x -> x.getJobId().equals(job.getKey())).findFirst().orElse(null) == null) { + CharacterJobLevel characterJobLevel = new CharacterJobLevel(); + characterJobLevel.setJobId(job.getKey()); + characterJobLevel.setExp(0); + characterJobLevels.add(characterJobLevel); + } + } + account.setJobLevels(characterJobLevels); + } + + private static void spawnVehicleRentalSpawns() { + for(JobVehicleRental jobVehicleRental : jobVehicleRentals) { + Pickup pickup = Onset.getServer().createPickup(new net.onfirenetwork.onsetjava.data.Vector + (jobVehicleRental.getX(), jobVehicleRental.getY(), jobVehicleRental.getZ()-100), 336); + pickup.setScale(new Vector(4,4,0.3d)); + pickup.setProperty("color", "0096a3", true); + Onset.getServer().createText3D(jobVehicleRental.getName() + " [Utiliser]", 20, + jobVehicleRental.getX(), jobVehicleRental.getY(), jobVehicleRental.getZ() + 150, 0 , 0 ,0); + } + } + + private static void spawnJobOutfitsPoint() { + for(JobOutfit jobOutfit : jobOutfits) { + Pickup pickup = Onset.getServer().createPickup(new net.onfirenetwork.onsetjava.data.Vector + (jobOutfit.getX(), jobOutfit.getY(), jobOutfit.getZ()-100), 336); + pickup.setScale(new Vector(4,4,0.3d)); + pickup.setProperty("color", "0030a1", true); + Onset.getServer().createText3D(jobOutfit.getName() + " [" + I18n.t(WorldManager.getServerConfig().getServerLanguage(), "ui.common.use") + "]", 17, + jobOutfit.getX(), jobOutfit.getY(), jobOutfit.getZ() + 150, 0 , 0 ,0); + } + } + + private static JobOutfit getNearbyJobOutfit(Player player) { + for(JobOutfit jobOutfit : jobOutfits) { + if(jobOutfit.isNear(player)) return jobOutfit; + } + return null; + } + + public static boolean handleJobOutfitRequest(Player player) { + JobOutfit jobOutfit = getNearbyJobOutfit(player); + if(jobOutfit == null) return false; + Account account = WorldManager.getPlayerAccount(player); + Job job = jobs.values().stream().filter(x -> x.getJobType().equals(jobOutfit.getJobId())).findFirst().orElse(null); + if(job == null) return false; + + // Check level and whitelist level + if(job.isWhitelisted()) { + AccountJobWhitelist accountJobWhitelist = AccountManager.getAccountJobWhitelists().stream() + .filter(x -> x.getAccountId() == account.getId() && x.getJobId().equals(job.getJobType())) + .findFirst().orElse(null); + if(accountJobWhitelist == null) { + UIStateManager.sendNotification(player, ToastTypeEnum.ERROR, I18n.t(account.getLang(), "toast.outfit.level_required")); + return true; + } + if(accountJobWhitelist.getJobLevel() < jobOutfit.getLevelRequired()) { + UIStateManager.sendNotification(player, ToastTypeEnum.ERROR, I18n.t(account.getLang(), "toast.outfit.level_required")); + return true; + } + } else { + ArrayList characterJobLevels = account.decodeCharacterJob(); + CharacterJobLevel characterJobLevel = characterJobLevels.stream().filter(x -> x.getJobId().equals(jobOutfit.getJobId())).findFirst().orElse(null); + if(characterJobLevel == null) return false; + if(characterJobLevel.getJobLevel().getLevel() < jobOutfit.getLevelRequired()) { + UIStateManager.sendNotification(player, ToastTypeEnum.ERROR, I18n.t(account.getLang(), "toast.outfit.level_required")); + return true; + } + } + + if(account.isInService()) { + CharacterStyle characterStyle = account.decodeOriginalCharacterStyle(); + account.setCharacterStyle(characterStyle); + characterStyle.attachStyleToPlayer(player); + account.setInService(false); + } else { + // Apply the outfit + CharacterStyle characterStyle = account.decodeCharacterStyle(); + for(JobOutfitItem jobOutfitItem : jobOutfit.decodeOutfit()) { + switch (jobOutfitItem.getType().toLowerCase()) { + case "top": + characterStyle.setTop(jobOutfitItem.getValue()); + break; + + case "pant": + characterStyle.setPant(jobOutfitItem.getValue()); + break; + + case "shoes": + characterStyle.setShoes(jobOutfitItem.getValue()); + break; + } + } + account.setCharacterStyle(characterStyle); + characterStyle.attachStyleToPlayer(player); + account.setInService(true); + } + SoundManager.playSound3D("sounds/zip.mp3", player.getLocation(), 500, 0.2); + WorldManager.savePlayer(player); + UIStateManager.sendNotification(player, ToastTypeEnum.SUCCESS, I18n.t(account.getLang(), "toast.outfit.success_change")); + + return true; + } + + public static int getJobLevelForPlayer(Player player, String job) { + Account account = WorldManager.getPlayerAccount(player); + ArrayList characterJobLevels = account.decodeCharacterJob(); + CharacterJobLevel characterJobLevel = characterJobLevels.stream().filter(x -> x.getJobId().equals(job)).findFirst().orElse(null); + return characterJobLevel.getJobLevel().getLevel(); + } + + /** + * Try to find a object to harvest for the player + * @param player The player + */ + public static boolean tryToHarvest(Player player) { + if(player.getVehicle() != null) return false; + + CharacterState state = CharacterManager.getCharacterStateByPlayer(player); + if(!state.canInteract()) return false; + + Account account = WorldManager.getPlayerAccount(player); + for(Map.Entry job : jobs.entrySet()) { + for(WorldHarvestObject worldHarvestObject : job.getValue().getWorldHarvestObjects()) { + try { + if(worldHarvestObject.isNear(player)) { + if(CharacterManager.getCharacterStateByPlayer(player).getWearableWorldObject() != null) { + UIStateManager.sendNotification(player, ToastTypeEnum.ERROR, I18n.t(account.getLang(), "action.vehicle.wearSomething")); + return true; + } + + + worldHarvestObject.harvest(player); + return true; + } + } catch (Exception ex) {} + } + } + return false; + } + + public static void addExp(Player player, String job, int amount) { + if(amount <= 0) return; + amount = amount * WorldManager.getServerConfig().getXpRate(); + Account account = WorldManager.getPlayerAccount(player); + ArrayList characterJobLevels = account.decodeCharacterJob(); + CharacterJobLevel characterJobLevel = characterJobLevels.stream().filter(x -> x.getJobId().equals(job)).findFirst().orElse(null); + if(characterJobLevel == null) return; + + JobLevel previousJobLevel = characterJobLevel.getJobLevel(); + characterJobLevel.setExp(characterJobLevel.getExp() + amount); + account.setJobLevels(characterJobLevels); + player.callRemoteEvent("GlobalUI:DispatchToUI", new Gson().toJson(new AddXpBarItemPayload("+" + amount + " XP " + + I18n.t(account.getLang(), "ui.characterJob.jobLevel_" + characterJobLevel.getJobLevel().getTranslateName())))); + JobLevel nextJobLevel = characterJobLevel.getJobLevel(); + if(previousJobLevel.getLevel() != nextJobLevel.getLevel()) { + SoundManager.playSound3D("sounds/success_1.mp3", player.getLocation(), 200, 1); + String translatedJobName = I18n.t(account.getLang(), "ui.characterJob.jobLevel_" + characterJobLevel.getJobLevel().getTranslateName()); + player.callRemoteEvent("GlobalUI:DispatchToUI", new Gson().toJson(new AddXpBarItemPayload( + I18n.t(account.getLang(), "toast.xp.level_up", translatedJobName)))); + } + + WorldManager.savePlayer(player); + } + + /** + * Request to wear a object in the world + * @param player The player + * @param uuid The object uuid + */ + public static void handleWearObjectRequest(Player player, String uuid) { + Account account = WorldManager.getPlayerAccount(player); + WearableWorldObject wearableWorldObject = wearableWorldObjects.stream().filter(x -> x.getUuid().equals(uuid)).findFirst().orElse(null); + if(wearableWorldObject == null) { + UIStateManager.sendNotification(player, ToastTypeEnum.ERROR, I18n.t(account.getLang(), "toast.wear.not_found")); + return; + } + if(CharacterManager.getCharacterStateByPlayer(player).getWearableWorldObject() != null) { + UIStateManager.sendNotification(player, ToastTypeEnum.ERROR, I18n.t(account.getLang(), "action.vehicle.wearSomething")); + return; + } + wearableWorldObject.requestWear(player); + } + + public static boolean handleSellJobNpcInventoryItem(Player player) { + JobNPC jobNPCNearby = getNearbyJobNPC(player); + if(jobNPCNearby == null) return false; + Inventory inventory = InventoryManager.getMainInventory(player); + for (JobNPCListItem sellListItem : jobNPCNearby.getBuyList()) { + if(!sellListItem.getType().equals("item")) continue; + InventoryItem inventoryItem = inventory.getItemByType(String.valueOf(sellListItem.getItemId())); + if(inventoryItem == null) continue; + Onset.print("Selling item to the npc price=" + sellListItem.getPrice()); + inventory.removeItem(inventoryItem, 1); + SoundManager.playSound3D("sounds/cash_register.mp3", player.getLocation(), 200, 0.8); + //UIStateManager.sendNotification(player, ToastTypeEnum.SUCCESS, "Vous avez vendu votre " + inventoryItem.getTemplate().getName() + + // " pour " + sellListItem.getPrice() + "$"); + jobNPCNearby.getNpc().setAnimation(Animation.THUMBSUP); + InventoryManager.addItemToPlayer(player, ItemTemplateEnum.CASH.id, sellListItem.getPrice(), false); + } + return true; + } + + public static void handleUnwearObject(Player player) { + if(CharacterManager.getCharacterStateByPlayer(player).getWearableWorldObject() == null) return; + Account account = WorldManager.getPlayerAccount(player); + + // Try to sell it to the nearby npc + JobNPC jobNPCNearby = getNearbyJobNPC(player); + if(jobNPCNearby != null) { + JobNPCListItem jobNPCListItem = jobNPCNearby.getBuyItemByWearableItem(CharacterManager.getCharacterStateByPlayer(player).getWearableWorldObject()); + if(jobNPCListItem != null) { + Onset.print("Selling item to the npc price=" + jobNPCListItem.getPrice()); + InventoryManager.addItemToPlayer(player, ItemTemplateEnum.CASH.id, jobNPCListItem.getPrice(), false); + CharacterManager.getCharacterStateByPlayer(player).getWearableWorldObject().requestUnwear(player, true); + jobNPCNearby.getNpc().setAnimation(Animation.THUMBSUP); + SoundManager.playSound3D("sounds/cash_register.mp3", player.getLocation(), 200, 1); + //UIStateManager.sendNotification(player, ToastTypeEnum.SUCCESS, "Vous avez vendu votre ressource pour " + jobNPCListItem.getPrice() + "$"); + } else { + UIStateManager.sendNotification(player, ToastTypeEnum.ERROR, I18n.t(account.getLang(), "toast.npc.no_buy_kind_item")); + } + return; + } + + // Try to use a job tool nearby + JobTool jobToolNearby = getNearbyJobTool(player); + if(jobToolNearby != null) { + if(!jobToolNearby.getJobToolHandler().hasLevelRequired(player)) { + UIStateManager.sendNotification(player, ToastTypeEnum.ERROR, I18n.t(account.getLang(), "toast.tool.no_level_required")); + return; + } + + if(jobToolNearby.getJobToolHandler().canInteract(player)) { + Onset.print("Use job tool type="+jobToolNearby.getJobToolType()); + if(jobToolNearby.getJobToolHandler().onUnwear(player, CharacterManager.getCharacterStateByPlayer(player).getWearableWorldObject())) { + CharacterManager.getCharacterStateByPlayer(player).getWearableWorldObject().requestUnwear(player, true); + } + } + else { + UIStateManager.sendNotification(player, ToastTypeEnum.ERROR, I18n.t(account.getLang(), "toast.tool.no_kind_item")); + } + return; + } + + // Unwear the item + CharacterManager.getCharacterStateByPlayer(player).getWearableWorldObject().requestUnwear(player, false); + } + + public static boolean requestVehicleRental(Player player) { + JobVehicleRental nearbyJobVehicleRental = getNearbyVehicleRental(player); + if(nearbyJobVehicleRental == null) return false; + if(player.getVehicle() != null) return false; + + Account account = WorldManager.getPlayerAccount(player); + + // Check vehicle around + Vector spawnPoint = new Vector(nearbyJobVehicleRental.getSpawnX(), nearbyJobVehicleRental.getSpawnY(), nearbyJobVehicleRental.getSpawnZ()); + if(VehicleManager.getNearestVehicle(spawnPoint) != null) { + if(VehicleManager.getNearestVehicle(spawnPoint).getLocation().distance(spawnPoint) < 600) { + UIStateManager.sendNotification(player, ToastTypeEnum.ERROR, I18n.t(account.getLang(), "toast.garage.vehicle_block_spawn")); + return true; + } + } + + Job job = jobs.values().stream().filter(x -> x.getJobType().equals(nearbyJobVehicleRental.getJobId())).findFirst().orElse(null); + if(job == null) return false; + + // Check level and whitelist level + if(job.isWhitelisted()) { + AccountJobWhitelist accountJobWhitelist = AccountManager.getAccountJobWhitelists().stream() + .filter(x -> x.getAccountId() == account.getId() && x.getJobId().equals(job.getJobType())) + .findFirst().orElse(null); + if(accountJobWhitelist == null) { + UIStateManager.sendNotification(player, ToastTypeEnum.ERROR, I18n.t(account.getLang(), "toast.job.not_whitelisted")); + return true; + } + if(accountJobWhitelist.getJobLevel() < nearbyJobVehicleRental.getLevelRequired()) { + UIStateManager.sendNotification(player, ToastTypeEnum.ERROR, I18n.t(account.getLang(), "toast.job.not_whitelisted")); + return true; + } + } else { + ArrayList characterJobLevels = account.decodeCharacterJob(); + CharacterJobLevel characterJobLevel = characterJobLevels.stream().filter(x -> x.getJobId().equals(nearbyJobVehicleRental.getJobId())).findFirst().orElse(null); + if(characterJobLevel == null) return false; + if(characterJobLevel.getJobLevel().getLevel() < nearbyJobVehicleRental.getLevelRequired()) { + UIStateManager.sendNotification(player, ToastTypeEnum.ERROR, I18n.t(account.getLang(), "toast.job.not_whitelisted")); + return true; + } + } + + destroyRentalVehiclesForPlayer(player); + + VehicleManager.CreateVehicleResult result = VehicleManager.createVehicle(nearbyJobVehicleRental.getVehicleModelId(), + new Vector(nearbyJobVehicleRental.getSpawnX(), nearbyJobVehicleRental.getSpawnY(), nearbyJobVehicleRental.getSpawnZ()), + player.getLocationAndHeading().getHeading(), player, null, true); + + java.awt.Color color = java.awt.Color.decode(nearbyJobVehicleRental.getColor()); + result.getVehicle().setColor(new Color(color.getRed(), color.getGreen(), color.getBlue())); + UIStateManager.sendNotification(player, ToastTypeEnum.SUCCESS, I18n.t(account.getLang(), "toast.job_vehicle.success_rental", + String.valueOf(nearbyJobVehicleRental.getCost()))); + return true; + } + + public static void destroyRentalVehiclesForPlayer(Player player) { + Account account = WorldManager.getPlayerAccount(player); + for(VehicleGarage vehicleGarage : GarageManager.getVehicleGarages().stream() + .filter(x -> x.isRental() && x.getOwner() == account.getId()).collect(Collectors.toList())) { + if(vehicleGarage.getVehicle() != null) { + VehicleManager.clearKeysForVehicle(vehicleGarage.getVehicle(), player); + } + vehicleGarage.destroy(); + GarageManager.getVehicleGarages().remove(vehicleGarage); + } + } + + public static void handleRequestCharacterJobs(Player player) { + if(!UIStateManager.handleUIToogle(player, "characterjob")) return; + Account account = WorldManager.getPlayerAccount(player); + ArrayList characterJobLevels = account.decodeCharacterJob(); + for(CharacterJobLevel characterJobLevel : characterJobLevels) { + player.callRemoteEvent("GlobalUI:DispatchToUI", new Gson().toJson(new AddCharacterJobPayload(characterJobLevel))); + } + } + + public static void handleUseJobTool(Player player, String uuid) { + JobTool jobTool = jobTools.stream().filter(x -> x.getUuid().equals(uuid)).findFirst().orElse(null); + if(jobTool == null) return; + jobTool.getJobToolHandler().onUse(player); + } + + public static ArrayList getWhitelistedPlayersForJob(JobEnum jobEnum) { + ArrayList players = new ArrayList<>(); + for(Player player : Onset.getPlayers()) { + try { + Account account = WorldManager.getPlayerAccount(player); + AccountJobWhitelist accountJobWhitelist = AccountManager.getAccountJobWhitelists().stream() + .filter(x -> x.getAccountId() == account.getId() && x.getJobId().equals(jobEnum.type)) + .findFirst().orElse(null); + if(accountJobWhitelist != null) { + players.add(player); + } + }catch (Exception exception) {} + } + return players; + } + + public static JobVehicleRental getNearbyVehicleRental(Player player) { + for(JobVehicleRental jobVehicleRental : jobVehicleRentals) { + if(jobVehicleRental.isNear(player)) return jobVehicleRental; + } + return null; + } + + public static JobNPC getNearbyJobNPC(Player player) { + for(JobNPC jobNPC : jobNPCS) { + if(jobNPC.isNear(player)) return jobNPC; + } + return null; + } + + public static JobTool getNearbyJobTool(Player player) { + for(JobTool jobTool : jobTools) { + if(jobTool.isNear(player)) return jobTool; + } + return null; + } + + public static LinkedHashMap getJobs() { + return jobs; + } + + public static ArrayList getWearableWorldObjects() { + return wearableWorldObjects; + } + + public static ArrayList getJobNPCS() { + return jobNPCS; + } + + public static ArrayList getJobTools() { + return jobTools; + } + + public static ArrayList getJobLevels() { + return jobLevels; + } + + public static ArrayList getJobVehicleRentals() { + return jobVehicleRentals; + } + + public static DeliveryPointConfig getDeliveryPointConfig() { + return deliveryPointConfig; + } +} diff --git a/src/main/java/fr/yuki/YukiRPFramework/manager/UIStateManager.java b/src/main/java/fr/yuki/YukiRPFramework/manager/UIStateManager.java index 885c478..254ae82 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/manager/UIStateManager.java +++ b/src/main/java/fr/yuki/YukiRPFramework/manager/UIStateManager.java @@ -1,249 +1,247 @@ -package fr.yuki.YukiRPFramework.manager; - -import com.google.gson.Gson; -import fr.yuki.YukiRPFramework.character.CharacterState; -import fr.yuki.YukiRPFramework.dao.AccountDAO; -import fr.yuki.YukiRPFramework.enums.ItemTemplateEnum; -import fr.yuki.YukiRPFramework.enums.ToastTypeEnum; -import fr.yuki.YukiRPFramework.inventory.Inventory; -import fr.yuki.YukiRPFramework.model.Account; -import fr.yuki.YukiRPFramework.net.payload.*; -import fr.yuki.YukiRPFramework.ui.UIState; -import fr.yuki.YukiRPFramework.utils.Basic; -import net.onfirenetwork.onsetjava.Onset; -import net.onfirenetwork.onsetjava.data.Location; -import net.onfirenetwork.onsetjava.entity.Player; - -import java.sql.SQLException; - -public class UIStateManager { - /** - * Toogle the window requested by the player - * @param player The player - * @param windowType The window type requested - */ - public static boolean handleUIToogle(Player player, String windowType) { - Onset.print("Toogle UI type="+windowType); - CharacterState characterState = CharacterManager.getCharacterStateByPlayer(player); - UIState uiState = characterState.getUiState(); - boolean r = false; - switch (windowType) { - case "inventory": - uiState.setInventory(!uiState.isInventory()); - r = uiState.isInventory(); - player.callRemoteEvent("GlobalUI:DispatchToUI", new Gson().toJson(new SetWindowStatePayload - ("inventory", uiState.isInventory()))); - break; - - case "atm": - uiState.setAtm(!uiState.isAtm()); - r = uiState.isAtm(); - player.callRemoteEvent("GlobalUI:DispatchToUI", new Gson().toJson(new SetWindowStatePayload - ("atm", uiState.isAtm()))); - break; - - case "garage": - uiState.setGarage(!uiState.isGarage()); - r = uiState.isGarage(); - player.callRemoteEvent("GlobalUI:DispatchToUI", new Gson().toJson(new SetWindowStatePayload - ("garage", uiState.isGarage()))); - break; - - case "vseller": - uiState.setVseller(!uiState.isVseller()); - r = uiState.isVseller(); - player.callRemoteEvent("GlobalUI:DispatchToUI", new Gson().toJson(new SetWindowStatePayload - ("vseller", uiState.isVseller()))); - break; - - case "customCharacter": - uiState.setCustomCharacter(!uiState.isCustomCharacter()); - r = uiState.isCustomCharacter(); - player.callRemoteEvent("GlobalUI:DispatchToUI", new Gson().toJson(new SetWindowStatePayload - ("customCharacter", uiState.isCustomCharacter()))); - break; - - case "vchest": - uiState.setVchest(!uiState.isVchest()); - r = uiState.isVchest(); - player.callRemoteEvent("GlobalUI:DispatchToUI", new Gson().toJson(new SetWindowStatePayload - ("vchest", uiState.isVchest()))); - break; - - case "bigmap": - uiState.setBigmap(!uiState.isBigmap()); - r = uiState.isBigmap(); - player.callRemoteEvent("GlobalUI:DispatchToUI", new Gson().toJson(new SetWindowStatePayload - ("bigmap", uiState.isBigmap()))); - break; - - case "death": - uiState.setDeath(!uiState.isDeath()); - r = uiState.isDeath(); - player.callRemoteEvent("GlobalUI:DispatchToUI", new Gson().toJson(new SetWindowStatePayload - ("death", uiState.isDeath()))); - break; - - case "characterjob": - uiState.setCharacterJob(!uiState.isCharacterJob()); - r = uiState.isCharacterJob(); - player.callRemoteEvent("GlobalUI:DispatchToUI", new Gson().toJson(new SetWindowStatePayload - ("characterjob", uiState.isCharacterJob()))); - break; - - case "seller": - uiState.setSeller(!uiState.isSeller()); - r = uiState.isSeller(); - if(!r) CharacterManager.setCharacterFreeze(player, false); - player.callRemoteEvent("GlobalUI:DispatchToUI", new Gson().toJson(new SetWindowStatePayload - ("seller", uiState.isSeller()))); - break; - - case "statewindow": - uiState.setStatewindow(!uiState.isStatewindow()); - r = uiState.isStatewindow(); - player.callRemoteEvent("GlobalUI:DispatchToUI", new Gson().toJson(new SetWindowStatePayload - ("statewindow", uiState.isStatewindow()))); - break; - - case "growboxmenu": - uiState.setGrowboxmenu(!uiState.isGrowboxmenu()); - r = uiState.isGrowboxmenu(); - player.callRemoteEvent("GlobalUI:DispatchToUI", new Gson().toJson(new SetWindowStatePayload - ("growboxmenu", uiState.isGrowboxmenu()))); - break; - - case "phone": - uiState.setPhone(!uiState.isPhone()); - r = uiState.isPhone(); - player.callRemoteEvent("GlobalUI:DispatchToUI", new Gson().toJson(new SetWindowStatePayload - ("phone", uiState.isPhone()))); - break; - - case "houseBuy": - uiState.setHouseBuy(!uiState.isHouseBuy()); - r = uiState.isHouseBuy(); - player.callRemoteEvent("GlobalUI:DispatchToUI", new Gson().toJson(new SetWindowStatePayload - ("houseBuy", uiState.isHouseBuy()))); - break; - - case "genericMenu": - uiState.setGenericMenu(!uiState.isGenericMenu()); - r = uiState.isGenericMenu(); - player.callRemoteEvent("GlobalUI:DispatchToUI", new Gson().toJson(new SetWindowStatePayload - ("genericMenu", uiState.isGenericMenu()))); - break; - - case "customOutfit": - uiState.setCustomOutfit(!uiState.isCustomOutfit()); - r = uiState.isCustomOutfit(); - player.callRemoteEvent("GlobalUI:DispatchToUI", new Gson().toJson(new SetWindowStatePayload - ("customOutfit", uiState.isCustomOutfit()))); - break; - - } - return r; - } - - /** - * Send a notification to the player - * @param player The player - * @param type The toast type - * @param message The message - */ - public static void sendNotification(Player player, ToastTypeEnum type, String message) { - player.callRemoteEvent("GlobalUI:DispatchToUI", new Gson().toJson(new AddToastPayload(type.type, message))); - } - - public static void sendNotification(Player player, String type, String message) { - player.callRemoteEvent("GlobalUI:DispatchToUI", new Gson().toJson(new AddToastPayload(type, message))); - } - - public static void setLang(Player player, String lang) { - Account account = WorldManager.getPlayerAccount(player); - account.setLang(lang); - player.callRemoteEvent("GlobalUI:DispatchToUI", new Gson().toJson(new SetLangPayload(account.getLang()))); - } - - public static void handleUIReady(Player player) throws SQLException { - Account account = WorldManager.getPlayerAccount(player); - MapManager.setupGameMap(player); - - // Temp for beta - Inventory inventory = InventoryManager.getMainInventory(player); - /** - if(inventory.getItemByType(ItemTemplateEnum.LUMBERJACK_HATCHET_1.id) == null) { - InventoryManager.addItemToPlayer(player, ItemTemplateEnum.LUMBERJACK_HATCHET_1.id, 1); - } - if(inventory.getItemByType(ItemTemplateEnum.MINER_PICKAXE_1.id) == null) { - InventoryManager.addItemToPlayer(player, ItemTemplateEnum.MINER_PICKAXE_1.id, 1); - } - if(inventory.getItemByType(ItemTemplateEnum.FISHING_ROD.id) == null) { - InventoryManager.addItemToPlayer(player, ItemTemplateEnum.FISHING_ROD.id, 1); - }*/ - - CharacterManager.getCharacterStateByPlayer(player).setHasUIReady(true); - - // Set lang to the UI - setLang(player, account.getLang()); - CharacterManager.refreshFood(player); - - // Set phone number - player.callRemoteEvent("GlobalUI:DispatchToUI", new Gson().toJson(new SetPhoneNumberPayload(account.getPhoneNumber()))); - - // Send compagny - CompagnyManager.refreshCompagny(player); - - // Generate a phone number for the player - if(account.getPhoneNumber().trim().equals("")) { - account.setPhoneNumber(PhoneManager.generateRandomPhoneNumber()); - AccountDAO.updateAccount(account, null); - Onset.print("Phone number generated : " + account.getPhoneNumber()); - } - - // Apply style to character if there is one saved - if(account.getCharacterCreationRequest() == 0) { - CharacterManager.setCharacterStyle(player); - - if(account.getIsDead() == 0) { - player.setRagdoll(false); - CharacterManager.teleportWithLevelLoading(player, new Location(account.getSaveX(), - account.getSaveY(), - account.getSaveZ() + 50, - account.getSaveH())); - } - else { - CharacterManager.teleportWithLevelLoading(player, new Location(account.getSaveX(), - account.getSaveY(), - account.getSaveZ() + 50, - account.getSaveH())); - CharacterManager.setCharacterFreeze(player, true); - Onset.delay(1500, () -> { - player.setRagdoll(true); - CharacterManager.setCharacterStyle(player); - player.setHealth(0); - - // Apply interface - UIState uiState = new Gson().fromJson(player.getProperty("uiState").toString(), UIState.class); - uiState.setDeath(true); - player.setProperty("uiState", new Gson().toJson(uiState), true); - player.callRemoteEvent("GlobalUI:DispatchToUI", new Gson().toJson(new SetWindowStatePayload - ("death", uiState.isDeath()))); - WorldManager.savePlayer(player); - }); - } - } else if(account.getCharacterCreationRequest() == 1) { // Request character creation if no style set - CharacterManager.teleportWithLevelLoading(player, new Location(WorldManager.getServerConfig().getSpawnPointX() + Basic.randomNumber(-30,30), - WorldManager.getServerConfig().getSpawnPointY() + Basic.randomNumber(-30,30), WorldManager.getServerConfig().getSpawnPointZ(), - WorldManager.getServerConfig().getSpawnPointH())); - Onset.delay(1000, () -> { - CharacterManager.teleportWithLevelLoading(player, new Location(WorldManager.getServerConfig().getSpawnPointX() + Basic.randomNumber(-30,30), - WorldManager.getServerConfig().getSpawnPointY() + Basic.randomNumber(-30,30), WorldManager.getServerConfig().getSpawnPointZ(), - WorldManager.getServerConfig().getSpawnPointH())); - Onset.delay(500, () -> { - UIStateManager.handleUIToogle(player, "customCharacter"); - }); - }); - } - } -} +package fr.yuki.YukiRPFramework.manager; + +import com.google.gson.Gson; +import fr.yuki.YukiRPFramework.character.CharacterState; +import fr.yuki.YukiRPFramework.enums.ToastTypeEnum; +import fr.yuki.YukiRPFramework.inventory.Inventory; +import fr.yuki.YukiRPFramework.model.Account; +import fr.yuki.YukiRPFramework.net.payload.*; +import fr.yuki.YukiRPFramework.ui.UIState; +import fr.yuki.YukiRPFramework.utils.Basic; +import net.onfirenetwork.onsetjava.Onset; +import net.onfirenetwork.onsetjava.data.Location; +import net.onfirenetwork.onsetjava.entity.Player; + +import java.sql.SQLException; + +public class UIStateManager { + /** + * Toogle the window requested by the player + * @param player The player + * @param windowType The window type requested + */ + public static boolean handleUIToogle(Player player, String windowType) { + Onset.print("Toogle UI type="+windowType); + CharacterState characterState = CharacterManager.getCharacterStateByPlayer(player); + UIState uiState = characterState.getUiState(); + boolean r = false; + switch (windowType) { + case "inventory": + uiState.setInventory(!uiState.isInventory()); + r = uiState.isInventory(); + player.callRemoteEvent("GlobalUI:DispatchToUI", new Gson().toJson(new SetWindowStatePayload + ("inventory", uiState.isInventory()))); + break; + + case "atm": + uiState.setAtm(!uiState.isAtm()); + r = uiState.isAtm(); + player.callRemoteEvent("GlobalUI:DispatchToUI", new Gson().toJson(new SetWindowStatePayload + ("atm", uiState.isAtm()))); + break; + + case "garage": + uiState.setGarage(!uiState.isGarage()); + r = uiState.isGarage(); + player.callRemoteEvent("GlobalUI:DispatchToUI", new Gson().toJson(new SetWindowStatePayload + ("garage", uiState.isGarage()))); + break; + + case "vseller": + uiState.setVseller(!uiState.isVseller()); + r = uiState.isVseller(); + player.callRemoteEvent("GlobalUI:DispatchToUI", new Gson().toJson(new SetWindowStatePayload + ("vseller", uiState.isVseller()))); + break; + + case "customCharacter": + uiState.setCustomCharacter(!uiState.isCustomCharacter()); + r = uiState.isCustomCharacter(); + player.callRemoteEvent("GlobalUI:DispatchToUI", new Gson().toJson(new SetWindowStatePayload + ("customCharacter", uiState.isCustomCharacter()))); + break; + + case "vchest": + uiState.setVchest(!uiState.isVchest()); + r = uiState.isVchest(); + player.callRemoteEvent("GlobalUI:DispatchToUI", new Gson().toJson(new SetWindowStatePayload + ("vchest", uiState.isVchest()))); + break; + + case "bigmap": + uiState.setBigmap(!uiState.isBigmap()); + r = uiState.isBigmap(); + player.callRemoteEvent("GlobalUI:DispatchToUI", new Gson().toJson(new SetWindowStatePayload + ("bigmap", uiState.isBigmap()))); + break; + + case "death": + uiState.setDeath(!uiState.isDeath()); + r = uiState.isDeath(); + player.callRemoteEvent("GlobalUI:DispatchToUI", new Gson().toJson(new SetWindowStatePayload + ("death", uiState.isDeath()))); + break; + + case "characterjob": + uiState.setCharacterJob(!uiState.isCharacterJob()); + r = uiState.isCharacterJob(); + player.callRemoteEvent("GlobalUI:DispatchToUI", new Gson().toJson(new SetWindowStatePayload + ("characterjob", uiState.isCharacterJob()))); + break; + + case "seller": + uiState.setSeller(!uiState.isSeller()); + r = uiState.isSeller(); + if(!r) CharacterManager.setCharacterFreeze(player, false); + player.callRemoteEvent("GlobalUI:DispatchToUI", new Gson().toJson(new SetWindowStatePayload + ("seller", uiState.isSeller()))); + break; + + case "statewindow": + uiState.setStatewindow(!uiState.isStatewindow()); + r = uiState.isStatewindow(); + player.callRemoteEvent("GlobalUI:DispatchToUI", new Gson().toJson(new SetWindowStatePayload + ("statewindow", uiState.isStatewindow()))); + break; + + case "growboxmenu": + uiState.setGrowboxmenu(!uiState.isGrowboxmenu()); + r = uiState.isGrowboxmenu(); + player.callRemoteEvent("GlobalUI:DispatchToUI", new Gson().toJson(new SetWindowStatePayload + ("growboxmenu", uiState.isGrowboxmenu()))); + break; + + case "phone": + uiState.setPhone(!uiState.isPhone()); + r = uiState.isPhone(); + player.callRemoteEvent("GlobalUI:DispatchToUI", new Gson().toJson(new SetWindowStatePayload + ("phone", uiState.isPhone()))); + break; + + case "houseBuy": + uiState.setHouseBuy(!uiState.isHouseBuy()); + r = uiState.isHouseBuy(); + player.callRemoteEvent("GlobalUI:DispatchToUI", new Gson().toJson(new SetWindowStatePayload + ("houseBuy", uiState.isHouseBuy()))); + break; + + case "genericMenu": + uiState.setGenericMenu(!uiState.isGenericMenu()); + r = uiState.isGenericMenu(); + player.callRemoteEvent("GlobalUI:DispatchToUI", new Gson().toJson(new SetWindowStatePayload + ("genericMenu", uiState.isGenericMenu()))); + break; + + case "customOutfit": + uiState.setCustomOutfit(!uiState.isCustomOutfit()); + r = uiState.isCustomOutfit(); + player.callRemoteEvent("GlobalUI:DispatchToUI", new Gson().toJson(new SetWindowStatePayload + ("customOutfit", uiState.isCustomOutfit()))); + break; + + } + return r; + } + + /** + * Send a notification to the player + * @param player The player + * @param type The toast type + * @param message The message + */ + public static void sendNotification(Player player, ToastTypeEnum type, String message) { + player.callRemoteEvent("GlobalUI:DispatchToUI", new Gson().toJson(new AddToastPayload(type.type, message))); + } + + public static void sendNotification(Player player, String type, String message) { + player.callRemoteEvent("GlobalUI:DispatchToUI", new Gson().toJson(new AddToastPayload(type, message))); + } + + public static void setLang(Player player, String lang) { + Account account = WorldManager.getPlayerAccount(player); + account.setLang(lang); + player.callRemoteEvent("GlobalUI:DispatchToUI", new Gson().toJson(new SetLangPayload(account.getLang()))); + } + + public static void handleUIReady(Player player) throws SQLException { + Account account = WorldManager.getPlayerAccount(player); + MapManager.setupGameMap(player); + + // Temp for beta + Inventory inventory = InventoryManager.getMainInventory(player); + /** + if(inventory.getItemByType(ItemTemplateEnum.LUMBERJACK_HATCHET_1.id) == null) { + InventoryManager.addItemToPlayer(player, ItemTemplateEnum.LUMBERJACK_HATCHET_1.id, 1); + } + if(inventory.getItemByType(ItemTemplateEnum.MINER_PICKAXE_1.id) == null) { + InventoryManager.addItemToPlayer(player, ItemTemplateEnum.MINER_PICKAXE_1.id, 1); + } + if(inventory.getItemByType(ItemTemplateEnum.FISHING_ROD.id) == null) { + InventoryManager.addItemToPlayer(player, ItemTemplateEnum.FISHING_ROD.id, 1); + }*/ + + CharacterManager.getCharacterStateByPlayer(player).setHasUIReady(true); + + // Set lang to the UI + setLang(player, account.getLang()); + CharacterManager.refreshFood(player); + + // Set phone number + player.callRemoteEvent("GlobalUI:DispatchToUI", new Gson().toJson(new SetPhoneNumberPayload(account.getPhoneNumber()))); + + // Send compagny + CompagnyManager.refreshCompagny(player); + + // Generate a phone number for the player + if(account.getPhoneNumber().trim().equals("")) { + account.setPhoneNumber(PhoneManager.generateRandomPhoneNumber()); + account.save(); + Onset.print("Phone number generated : " + account.getPhoneNumber()); + } + + // Apply style to character if there is one saved + if(!account.isCharacterCreationRequest()) { + CharacterManager.setCharacterStyle(player); + + if(!account.isDead()) { + player.setRagdoll(false); + CharacterManager.teleportWithLevelLoading(player, new Location(account.getSaveX(), + account.getSaveY(), + account.getSaveZ() + 50, + account.getSaveH())); + } + else { + CharacterManager.teleportWithLevelLoading(player, new Location(account.getSaveX(), + account.getSaveY(), + account.getSaveZ() + 50, + account.getSaveH())); + CharacterManager.setCharacterFreeze(player, true); + Onset.delay(1500, () -> { + player.setRagdoll(true); + CharacterManager.setCharacterStyle(player); + player.setHealth(0); + + // Apply interface + UIState uiState = new Gson().fromJson(player.getProperty("uiState").toString(), UIState.class); + uiState.setDeath(true); + player.setProperty("uiState", new Gson().toJson(uiState), true); + player.callRemoteEvent("GlobalUI:DispatchToUI", new Gson().toJson(new SetWindowStatePayload + ("death", uiState.isDeath()))); + WorldManager.savePlayer(player); + }); + } + } else if(account.isCharacterCreationRequest()) { // Request character creation if no style set + CharacterManager.teleportWithLevelLoading(player, new Location(WorldManager.getServerConfig().getSpawnPointX() + Basic.randomNumber(-30,30), + WorldManager.getServerConfig().getSpawnPointY() + Basic.randomNumber(-30,30), WorldManager.getServerConfig().getSpawnPointZ(), + WorldManager.getServerConfig().getSpawnPointH())); + Onset.delay(1000, () -> { + CharacterManager.teleportWithLevelLoading(player, new Location(WorldManager.getServerConfig().getSpawnPointX() + Basic.randomNumber(-30,30), + WorldManager.getServerConfig().getSpawnPointY() + Basic.randomNumber(-30,30), WorldManager.getServerConfig().getSpawnPointZ(), + WorldManager.getServerConfig().getSpawnPointH())); + Onset.delay(500, () -> { + UIStateManager.handleUIToogle(player, "customCharacter"); + }); + }); + } + } +} diff --git a/src/main/java/fr/yuki/YukiRPFramework/manager/WorldManager.java b/src/main/java/fr/yuki/YukiRPFramework/manager/WorldManager.java index 6ef4fce..10d9597 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/manager/WorldManager.java +++ b/src/main/java/fr/yuki/YukiRPFramework/manager/WorldManager.java @@ -1,635 +1,631 @@ -package fr.yuki.YukiRPFramework.manager; - -import com.google.gson.Gson; -import fr.yuki.YukiRPFramework.character.CharacterJobLevel; -import fr.yuki.YukiRPFramework.character.CharacterLoopAnimation; -import fr.yuki.YukiRPFramework.character.CharacterState; -import fr.yuki.YukiRPFramework.dao.*; -import fr.yuki.YukiRPFramework.enums.ItemTemplateEnum; -import fr.yuki.YukiRPFramework.enums.ToastTypeEnum; -import fr.yuki.YukiRPFramework.i18n.I18n; -import fr.yuki.YukiRPFramework.inventory.Inventory; -import fr.yuki.YukiRPFramework.inventory.InventoryItem; -import fr.yuki.YukiRPFramework.job.DeliveryPointConfig; -import fr.yuki.YukiRPFramework.job.Job; -import fr.yuki.YukiRPFramework.job.ObjectPlacementInstance; -import fr.yuki.YukiRPFramework.job.placementObject.GenericPlacementInstance; -import fr.yuki.YukiRPFramework.modding.Line3D; -import fr.yuki.YukiRPFramework.model.*; -import fr.yuki.YukiRPFramework.net.payload.AddSellerItemPayload; -import fr.yuki.YukiRPFramework.net.payload.AddToastPayload; -import fr.yuki.YukiRPFramework.net.payload.BuySellItemRequestPayload; -import fr.yuki.YukiRPFramework.net.payload.SetWindowStatePayload; -import fr.yuki.YukiRPFramework.ui.UIState; -import fr.yuki.YukiRPFramework.utils.ServerConfig; -import fr.yuki.YukiRPFramework.world.RestrictedZone; -import net.onfirenetwork.onsetjava.Onset; -import net.onfirenetwork.onsetjava.data.Location; -import net.onfirenetwork.onsetjava.data.Vector; -import net.onfirenetwork.onsetjava.entity.*; -import net.onfirenetwork.onsetjava.enums.Animation; - -import java.io.*; -import java.sql.SQLException; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.Collections; -import java.util.HashMap; - -public class WorldManager { - private static ServerConfig serverConfig; - private static HashMap accounts; - private static ArrayList atms; - private static ArrayList garages; - private static ArrayList vehicleSellers; - private static ArrayList groundItems; - private static ArrayList sellers; - private static ArrayList restrictedZones; - private static ArrayList outfitPoints; - - /** - * Init the world manager - * @throws SQLException - */ - public static void init() throws SQLException, IOException { - accounts = new HashMap<>(); - groundItems = new ArrayList<>(); - restrictedZones = new ArrayList<>(); - - // Load atms - atms = ATMDAO.loadATMs(); - spawnATMs(); - Onset.print("Loaded " + atms.size() + " atm(s) from the database"); - - // Load garages - garages = GarageDAO.loadGarages(); - spawnGarages(); - Onset.print("Loaded " + garages.size() + " garage(s) from the database"); - - // Load vehicle sellers - vehicleSellers = VehicleSellerDAO.loadVehicleSellers(); - Onset.print("Loaded " + vehicleSellers.size() + " vehicle seller(s) from the database"); - spawnVehicleSellers(); - - // Load sellers - sellers = SellerDAO.loadSellers(); - Onset.print("Loaded " + sellers.size() + " seller(s) from the database"); - spawnSellers(); - - // Load outfit points - outfitPoints = OutfitPointDAO.loadOutfitPoint(); - Onset.print("Loaded " + outfitPoints.size() + " outfit point(s) from the database"); - spawnOutfitPoints(); - } - - public static void initServerConfig() throws IOException { - new File("yrpf").mkdir(); - if(new File("yrpf/server_config.json").exists()) { - serverConfig = new Gson().fromJson(new FileReader("yrpf/server_config.json"), ServerConfig.class); - } else { - serverConfig = new ServerConfig(); - new File("yrpf/server_config.json").createNewFile(); - FileWriter fileWriter = new FileWriter("yrpf/server_config.json"); - fileWriter.write(new Gson().toJson(serverConfig)); - fileWriter.close(); - } - } - - private static void spawnOutfitPoints() { - for(OutfitPoint outfitPoint : outfitPoints) { - try { - Pickup pickup = Onset.getServer().createPickup(new Vector(outfitPoint.getX(), outfitPoint.getY(), outfitPoint.getZ()-100), 336); - pickup.setScale(new Vector(1,1,0.1d)); - pickup.setProperty("color", "5314b8", true); - Onset.getServer().createText3D("Changer de style [" + I18n.t(WorldManager.getServerConfig().getServerLanguage(), "ui.common.use") + "]", 15, outfitPoint.getX(), outfitPoint.getY(), outfitPoint.getZ() + 150, 0 , 0 ,0); - } - catch(Exception ex) { - Onset.print("Can't spawn the atm: " + ex.toString()); - } - } - } - - /** - * Spanw atms in the world - */ - private static void spawnATMs() { - for(ATM atm : atms) { - try { - Pickup pickup = Onset.getServer().createPickup(new Vector(atm.getX(), atm.getY(), atm.getZ()-100), 336); - pickup.setScale(new Vector(1,1,0.1d)); - pickup.setProperty("color", "02e630", true); - atm.setPickup(pickup); - Onset.getServer().createText3D("ATM [" + I18n.t(WorldManager.getServerConfig().getServerLanguage(), "ui.common.use") + "]", 15, atm.getX(), atm.getY(), atm.getZ() + 150, 0 , 0 ,0); - - GameMapMarker mapMarker = new GameMapMarker(); - mapMarker.setType("atm"); - mapMarker.setIcon("icon_atm"); - mapMarker.setPosition(new ArrayList<>()); - mapMarker.getPosition().add((int)atm.getY()); - mapMarker.getPosition().add((int)atm.getX()); - MapManager.getMapConfig().getMarkers().add(mapMarker); - } - catch(Exception ex) { - Onset.print("Can't spawn the atm: " + ex.toString()); - } - } - } - - /** - * Spawns garages in the world - */ - private static void spawnGarages() { - for(Garage garage : garages) { - Pickup pickup = Onset.getServer().createPickup(new Vector(garage.getX(), garage.getY(), garage.getZ()-100), 336); - pickup.setScale(new Vector(3,3,0.1d)); - pickup.setProperty("color", "6500bd", true); - Onset.getServer().createText3D("Garage [" + I18n.t(WorldManager.getServerConfig().getServerLanguage(), "ui.common.use") + "]", 20, garage.getX(), garage.getY(), garage.getZ() + 150, 0 , 0 ,0); - } - } - - private static void spawnVehicleSellers() { - for(VehicleSeller vehicleSeller : vehicleSellers) { - Pickup pickup = Onset.getServer().createPickup(new Vector(vehicleSeller.getX(), vehicleSeller.getY(), - vehicleSeller.getZ()-100), 336); - pickup.setScale(new Vector(1,1,0.1d)); - pickup.setProperty("color", "ffa600", true); - Onset.getServer().createText3D("Vendeur " + vehicleSeller.getName() + " [" + I18n.t(WorldManager.getServerConfig().getServerLanguage(), "ui.common.use") + "]", 20, vehicleSeller.getX(), - vehicleSeller.getY(), vehicleSeller.getZ() + 150, 0 , 0 ,0); - NPC npc = Onset.getServer().createNPC(new Location(vehicleSeller.getX(), vehicleSeller.getY(), - vehicleSeller.getZ(), vehicleSeller.getH())); - npc.setRespawnTime(1); - npc.setHealth(999999); - npc.setProperty("clothing", vehicleSeller.getNpcClothing(), true); - } - } - - public static void spawnSellers() { - for(Seller seller : sellers) { - Onset.getServer().createText3D(seller.getName() + " [" + I18n.t(WorldManager.getServerConfig().getServerLanguage(), "ui.common.use") + "]", 20, seller.getX(), - seller.getY(), seller.getZ() + 150, 0 , 0 ,0); - NPC npc = Onset.getServer().createNPC(new Location(seller.getX(), seller.getY(), - seller.getZ(), seller.getH())); - npc.setRespawnTime(1); - npc.setHealth(999999); - npc.setProperty("clothing", seller.getNpcClothing(), true); - } - } - - /** - * Find a player by the steam id - * @param steamId The steam id - * @return The player - */ - public static Player findPlayerBySteamId(final String steamId) { - for(Player p : Onset.getPlayers()) { - if(p.getSteamId().equals(steamId)) return p; - } - return null; - } - - /** - * Find a player by the account id - * @param accountId The account id - * @return The player - */ - public static Player findPlayerByAccountId(int accountId) { - for (Player p : Onset.getPlayers()) { - try { - if(CharacterManager.getCharacterStateByPlayer(p) == null) continue; - if(p.getProperty("accountId") == null) continue; - if(p.getPropertyInt("accountId") == accountId) { - return p; - } - } - catch (Exception ex) {} - } - return null; - } - - /** - * Handle the interaction request and send it to all interactible elements - * @param player The player - */ - public static void handleInteract(Player player) { - try { - if(CharacterManager.getCharacterStateByPlayer(player).isDead()) { - return; - } - - CharacterState state = CharacterManager.getCharacterStateByPlayer(player); - if(!state.canInteract()) return; - - // Check weared object - if(CharacterManager.getCharacterStateByPlayer(player).getWearableWorldObject() != null && player.getVehicle() == null) { - JobManager.handleUnwearObject(player); - return; - } - - if(ATMManager.handleATMInteract(player)) return; - if(handleOutfitPointsInteract(player)) return; - if(GarageManager.handleVSellerInteract(player)) return; - if(player.getVehicle() == null) - if(handlePickupGroundItem(player)) return; - if(FuelManager.interactFuelPoint(player, false)) return; - if(JobManager.tryToHarvest(player)) return; - if(player.getVehicle() == null) { - if(VehicleManager.handleVehicleChestStorageRequest(player)) return; - } - if(GarageManager.handleGarageInteract(player)) return; - if(player.getVehicle() == null){ - if(JobManager.requestVehicleRental(player)) return; - } else { - if(JobManager.getNearbyVehicleRental(player) != null) { - JobManager.destroyRentalVehiclesForPlayer(player); - return; - } - } - if(player.getVehicle() == null) - if(JobManager.handleSellJobNpcInventoryItem(player)) return; - if(player.getVehicle() == null) if(JobManager.handleJobOutfitRequest(player)) return; - if(player.getVehicle() == null) if(handleSellerInteract(player)) return; - } catch (Exception ex) { - ex.printStackTrace(); - } - } - - public static boolean handleOutfitPointsInteract(Player player) { - OutfitPoint outfitPoint = getNearbyOutfitPoint(player); - if(outfitPoint == null) return false; - UIStateManager.handleUIToogle(player, "customOutfit"); - return true; - } - - /** - * Save the player account (position, inventory ..) - * @param player The player - */ - public static void savePlayer(Player player) { - try { - Account account = getPlayerAccount(player); - AccountDAO.updateAccount(account, player); - } catch (Exception ex) { - Onset.print("Can't save the account: " + ex.toString()); - } - } - - public static GroundItem getNearestGroundItem(Vector position) { - GroundItem nearestGroundItem = null; - for(GroundItem groundItem : groundItems) { - try { - if(nearestGroundItem == null) { - if(groundItem.getPosition().distance(position) < 150) { - nearestGroundItem = groundItem; - } - } - else { - if(groundItem.getPosition().distance(position) < nearestGroundItem.getPosition().distance(position)) { - nearestGroundItem = groundItem; - } - } - }catch (Exception ex) { - continue; - } - } - return nearestGroundItem; - } - - public static boolean handlePickupGroundItem(Player player) { - try { - GroundItem groundItem = getNearestGroundItem(player.getLocation()); - if(groundItem == null) return false; - CharacterState characterState = CharacterManager.getCharacterStateByPlayer(player); - if(!characterState.canInteract()) return false; - groundItem.pickByPlayer(player); - return true; - } catch (Exception ex) { - Onset.print("Can't pick up the object on the ground: " + ex.toString()); - return false; - } - } - - public static boolean handleSellerInteract(Player player) { - for(Seller seller : sellers) { - if(seller.isNear(player)) { - openSeller(player, seller); - return true; - } - } - return false; - } - - public static OutfitPoint getNearbyOutfitPoint(Player player) { - for(OutfitPoint outfitPoint : outfitPoints) { - if(outfitPoint.isNear(player)) { - return outfitPoint; - } - } - return null; - } - - public static Seller getNearbySeller(Player player) { - for(Seller seller : sellers) { - if(seller.isNear(player)) { - return seller; - } - } - return null; - } - - public static void openSeller(Player player, Seller seller) { - // Check job - if(!seller.getJobRequired().equals("")) { - Account account = WorldManager.getPlayerAccount(player); - Job job = JobManager.getJobs().values().stream().filter(x -> x.getJobType().equals(seller.getJobRequired())).findFirst().orElse(null); - if(job == null) return; - - // Check level and whitelist level - if(job.isWhitelisted()) { - AccountJobWhitelist accountJobWhitelist = AccountManager.getAccountJobWhitelists().stream() - .filter(x -> x.getAccountId() == account.getId() && x.getJobId().equals(job.getJobType())) - .findFirst().orElse(null); - if(accountJobWhitelist == null) { - UIStateManager.sendNotification(player, ToastTypeEnum.ERROR, I18n.t(account.getLang(), "toast.job.not_whitelisted")); - return; - } - if(accountJobWhitelist.getJobLevel() < seller.getJobLevelRequired()) { - UIStateManager.sendNotification(player, ToastTypeEnum.ERROR, I18n.t(account.getLang(), "toast.job.not_whitelisted")); - return; - } - } else { - ArrayList characterJobLevels = account.decodeCharacterJob(); - CharacterJobLevel characterJobLevel = characterJobLevels.stream().filter(x -> x.getJobId().equals(seller.getJobRequired())).findFirst().orElse(null); - if(characterJobLevel == null) return; - if(characterJobLevel.getJobLevel().getLevel() < seller.getJobLevelRequired()) { - UIStateManager.sendNotification(player, ToastTypeEnum.ERROR, I18n.t(account.getLang(), "toast.job.not_whitelisted")); - return; - } - } - } - - if(!UIStateManager.handleUIToogle(player, "seller")) { - CharacterManager.setCharacterFreeze(player, false); - return; - } - - CharacterManager.setCharacterFreeze(player, true); - for(SellerItem sellerItem : seller.decodeItems()) { - ItemTemplate itemTemplate = InventoryManager.getItemTemplates().get(sellerItem.getId()); - player.callRemoteEvent("GlobalUI:DispatchToUI", new Gson().toJson(new AddSellerItemPayload - (String.valueOf(sellerItem.getId()), itemTemplate.getName(), sellerItem.getPrice()))); - } - } - - public static void handleBuySellItemSeller(Player player, BuySellItemRequestPayload payload) { - Seller seller = getNearbySeller(player); - if(seller == null) return; - SellerItem sellerItem = seller.decodeItems().stream().filter(x -> x.getId() == Integer.parseInt(payload.getId())) - .findFirst().orElse(null); - if(sellerItem == null) return; - if(payload.getQuantity() <= 0) return; - - Account account = WorldManager.getPlayerAccount(player); - - ItemTemplate itemTemplate = InventoryManager.getItemTemplates().get(sellerItem.getId()); - Inventory inventory = InventoryManager.getMainInventory(player); - if(sellerItem.getPrice() >= 0) { - // Buy - int totalPrice = sellerItem.getPrice() * payload.getQuantity(); - if(inventory.getCashAmount() < totalPrice) { - UIStateManager.sendNotification(player, ToastTypeEnum.ERROR, - I18n.t(account.getLang(), "toast.seller.no_enought_money_on_me", String.valueOf(payload.getQuantity()),itemTemplate.getName())); - return; - } - if(InventoryManager.addItemToPlayer(player, String.valueOf(itemTemplate.getId()), payload.getQuantity(), true) == null) { - return; - } - inventory.removeItem(inventory.getItemByType(ItemTemplateEnum.CASH.id), totalPrice); - UIStateManager.sendNotification(player, ToastTypeEnum.SUCCESS, I18n.t(account.getLang(), "toast.seller.success_buy", String.valueOf(payload.getQuantity()),itemTemplate.getName())); - } else { - // Sell - InventoryItem inventoryItem = inventory.getItemByType(payload.getId()); - if(inventoryItem == null) return; - if(inventoryItem.getAmount() < payload.getQuantity()) { - UIStateManager.sendNotification(player, ToastTypeEnum.ERROR, - I18n.t(account.getLang(), "toast.seller.no_enought_item_on_me", String.valueOf(payload.getQuantity()),itemTemplate.getName())); - return; - } - int totalPrice = (-(sellerItem.getPrice())) * payload.getQuantity(); - inventory.removeItem(inventoryItem, payload.getQuantity()); - InventoryManager.addItemToPlayer(player, ItemTemplateEnum.CASH.id, totalPrice, false); - UIStateManager.sendNotification(player, ToastTypeEnum.SUCCESS, - I18n.t(account.getLang(), "toast.seller.sell_success", String.valueOf(payload.getQuantity()),itemTemplate.getName())); - } - WorldManager.savePlayer(player); - } - - public static void handleObjectRequestPlacement(Player player) { - UIStateManager.handleUIToogle(player, "statewindow"); - } - - public static void handleObjectEditPlacementCancel(Player player) { - CharacterState state = CharacterManager.getCharacterStateByPlayer(player); - if(state == null) return; - if(state.getCurrentObjectPlacementInstance() == null) { - return; - } - Account account = WorldManager.getPlayerAccount(player); - - if(state.getUiState().isStatewindow()) UIStateManager.handleUIToogle(player, "statewindow"); - ObjectPlacementInstance objectPlacementInstance = state.getCurrentObjectPlacementInstance(); - objectPlacementInstance.destroy(); - state.setCurrentObjectPlacementInstance(null); - Onset.print("Cancel placement of the object instance modelId="+objectPlacementInstance.getModelId() - + " uuid=" + objectPlacementInstance.getUuid()); - UIStateManager.sendNotification(player, ToastTypeEnum.WARN, I18n.t(account.getLang(), "toast.placement.cancel_placement")); - } - - public static void handleObjectPlacementDone(Player player, Vector position, Vector rotation) { - CharacterState state = CharacterManager.getCharacterStateByPlayer(player); - if(state == null) return; - if(state.getCurrentObjectPlacementInstance() == null) { - Onset.print("Can't cancel placement, there is instance for the player in the state"); - return; - } - House house = HouseManager.getHouseAtLocation(position); - Account account = WorldManager.getPlayerAccount(player); - if(house == null) { - handleObjectEditPlacementCancel(player); - UIStateManager.sendNotification(player, ToastTypeEnum.ERROR, I18n.t(account.getLang(), "toast.house.need_to_be_inside")); - return; - } - if(!HouseManager.canBuildInHouse(player, house)) { - handleObjectEditPlacementCancel(player); - UIStateManager.sendNotification(player, ToastTypeEnum.ERROR, I18n.t(account.getLang(), "toast.house.need_to_be_inside")); - return; - } - - // Remove interface - if(state.getUiState().isStatewindow()) UIStateManager.handleUIToogle(player, "statewindow"); - ObjectPlacementInstance objectPlacementInstance = state.getCurrentObjectPlacementInstance(); - objectPlacementInstance.destroy(); - state.setCurrentObjectPlacementInstance(null); - objectPlacementInstance.onPlacementDone(player, position, rotation); - } - - public static void handleEditExistingPlacement(Player player, int houseItemId) throws SQLException { - CharacterState state = CharacterManager.getCharacterStateByPlayer(player); - if(state == null) return; - if(state.getCurrentObjectPlacementInstance() != null) { - return; - } - House house = HouseManager.getHouseAtLocation(player.getLocation()); - Account account = WorldManager.getPlayerAccount(player); - if(house == null) return; - if(!HouseManager.canBuildInHouse(player, house)) - { - return; - } - HouseItemObject houseItemObject = house.getHouseItemObjects().stream() - .filter(x -> x.getId() == houseItemId).findFirst().orElse(null); - if(houseItemObject == null) return; - - houseItemObject.destroy(); - HouseItemDAO.deleteHouseItem(houseItemObject); - - ObjectPlacementInstance objectPlacementInstance = new GenericPlacementInstance(houseItemObject.getPosition(), - houseItemObject.getModelId(), 0); - state.setCurrentObjectPlacementInstance(objectPlacementInstance); - objectPlacementInstance.spawn(); - objectPlacementInstance.setEditableBy(player); - } - - public static void cuffPlayer(Player player) { - if(player.getVehicle() != null) return; - CharacterState state = CharacterManager.getCharacterStateByPlayer(player); - - if(state.isCuffed()) { - state.setCuffed(false); - player.setAnimation(Animation.STOP); - player.setProperty("cuffed", 0, true); - SoundManager.playSound3D("sounds/hand_cuff.mp3", player.getLocation(), 500, 1); - } else { - if(!state.canInteract()) { - return; - } - SoundManager.playSound3D("sounds/hand_cuff.mp3", player.getLocation(), 500, 1); - state.setCuffed(true); - player.setAnimation(Animation.CUFF); - player.setProperty("cuffed", 1, true); - } - } - - public static void revive(Player player, Player target) { - CharacterState targetState = CharacterManager.getCharacterStateByPlayer(target); - if(!targetState.isDead()) return; - CharacterLoopAnimation characterLoopAnimation = new CharacterLoopAnimation(player, Animation.REVIVE, - 5000, 2, "sounds/defibrilator.mp3"); - characterLoopAnimation.start(); - CharacterManager.setCharacterFreeze(player, true); - CharacterManager.setCharacterFreeze(target, true); - Onset.delay(10000, () -> { - - targetState.setDead(false); - Account account = WorldManager.getPlayerAccount(target); - account.setIsDead(0); - Location location = target.getLocationAndHeading(); - account.setSaveX(location.getX()); - account.setSaveY(location.getY()); - account.setSaveZ(location.getZ()); - account.setSaveH(location.getHeading()); - target.setRespawnTime(100); - - target.setRagdoll(false); - target.setHealth(100); - CharacterManager.setCharacterStyle(target); - WorldManager.savePlayer(target); - UIStateManager.handleUIToogle(target, "death"); - - characterLoopAnimation.stop(); - Onset.delay(500, () -> { - player.setAnimation(Animation.STOP); - target.setAnimation(Animation.PUSHUP_END); - CharacterManager.setCharacterFreeze(player, false); - CharacterManager.setCharacterFreeze(target, false); - }); - }); - } - - /** - * Get the account for the player - * @param player The player - * @return The account - */ - public static Account getPlayerAccount(Player player) { - return accounts.get(player.getPropertyInt("accountId")); - } - - public static Player getPlayerByPhoneNumber(String phoneNumber) { - for(Player player : Onset.getPlayers()) { - Account account = getPlayerAccount(player); - if(account.getPhoneNumber().equals(phoneNumber)) return player; - } - return null; - } - - public static ArrayList getAtms() { - return atms; - } - - public static HashMap getAccounts() { - return accounts; - } - - public static ArrayList getGarages() { - return garages; - } - - public static ArrayList getVehicleSellers() { - return vehicleSellers; - } - - public static ServerConfig getServerConfig() { - return serverConfig; - } - - public static ArrayList getGroundItems() { - return groundItems; - } - - public static Player getNearestPlayer(Player player) { - Player search = null; - double currentDistance = 99999; - for(Player p : Onset.getPlayers()) { - try { - if(p.getId() == player.getId()) continue;; - if(p.getLocation().distance(player.getLocation()) < currentDistance) { - search = p; - currentDistance = p.getLocation().distance(player.getLocation()); - } - }catch (Exception ex) { - continue; - } - } - return search; - } - - public static Door getNearestDoor(Vector position) { - Door search = null; - double currentDistance = 99999; - for(Door d : Onset.getDoors()) { - try { - if(d.getLocation().distance(position) < currentDistance) { - search = d; - currentDistance = d.getLocation().distance(position); - } - }catch (Exception ex) { - continue; - } - } - return search; - } - - public static ArrayList getRestrictedZones() { - return restrictedZones; - } -} +package fr.yuki.YukiRPFramework.manager; + +import com.google.gson.Gson; +import fr.yuki.YukiRPFramework.character.CharacterJobLevel; +import fr.yuki.YukiRPFramework.character.CharacterLoopAnimation; +import fr.yuki.YukiRPFramework.character.CharacterState; +import fr.yuki.YukiRPFramework.dao.*; +import fr.yuki.YukiRPFramework.enums.ItemTemplateEnum; +import fr.yuki.YukiRPFramework.enums.ToastTypeEnum; +import fr.yuki.YukiRPFramework.i18n.I18n; +import fr.yuki.YukiRPFramework.inventory.Inventory; +import fr.yuki.YukiRPFramework.inventory.InventoryItem; +import fr.yuki.YukiRPFramework.job.DeliveryPointConfig; +import fr.yuki.YukiRPFramework.job.Job; +import fr.yuki.YukiRPFramework.job.ObjectPlacementInstance; +import fr.yuki.YukiRPFramework.job.placementObject.GenericPlacementInstance; +import fr.yuki.YukiRPFramework.modding.Line3D; +import fr.yuki.YukiRPFramework.model.*; +import fr.yuki.YukiRPFramework.net.payload.AddSellerItemPayload; +import fr.yuki.YukiRPFramework.net.payload.AddToastPayload; +import fr.yuki.YukiRPFramework.net.payload.BuySellItemRequestPayload; +import fr.yuki.YukiRPFramework.net.payload.SetWindowStatePayload; +import fr.yuki.YukiRPFramework.ui.UIState; +import fr.yuki.YukiRPFramework.utils.ServerConfig; +import fr.yuki.YukiRPFramework.world.RestrictedZone; +import net.onfirenetwork.onsetjava.Onset; +import net.onfirenetwork.onsetjava.data.Location; +import net.onfirenetwork.onsetjava.data.Vector; +import net.onfirenetwork.onsetjava.entity.*; +import net.onfirenetwork.onsetjava.enums.Animation; + +import java.io.*; +import java.sql.SQLException; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Collections; +import java.util.HashMap; + +public class WorldManager { + private static ServerConfig serverConfig; + private static HashMap accounts; + private static ArrayList atms; + private static ArrayList garages; + private static ArrayList vehicleSellers; + private static ArrayList groundItems; + private static ArrayList sellers; + private static ArrayList restrictedZones; + private static ArrayList outfitPoints; + + /** + * Init the world manager + * @throws SQLException + */ + public static void init() throws SQLException, IOException { + accounts = new HashMap<>(); + groundItems = new ArrayList<>(); + restrictedZones = new ArrayList<>(); + + // Load atms + atms = ATMDAO.loadATMs(); + spawnATMs(); + Onset.print("Loaded " + atms.size() + " atm(s) from the database"); + + // Load garages + garages = GarageDAO.loadGarages(); + spawnGarages(); + Onset.print("Loaded " + garages.size() + " garage(s) from the database"); + + // Load vehicle sellers + vehicleSellers = VehicleSellerDAO.loadVehicleSellers(); + Onset.print("Loaded " + vehicleSellers.size() + " vehicle seller(s) from the database"); + spawnVehicleSellers(); + + // Load sellers + sellers = SellerDAO.loadSellers(); + Onset.print("Loaded " + sellers.size() + " seller(s) from the database"); + spawnSellers(); + + // Load outfit points + outfitPoints = OutfitPointDAO.loadOutfitPoint(); + Onset.print("Loaded " + outfitPoints.size() + " outfit point(s) from the database"); + spawnOutfitPoints(); + } + + public static void initServerConfig() throws IOException { + new File("yrpf").mkdir(); + if(new File("yrpf/server_config.json").exists()) { + serverConfig = new Gson().fromJson(new FileReader("yrpf/server_config.json"), ServerConfig.class); + } else { + serverConfig = new ServerConfig(); + new File("yrpf/server_config.json").createNewFile(); + FileWriter fileWriter = new FileWriter("yrpf/server_config.json"); + fileWriter.write(new Gson().toJson(serverConfig)); + fileWriter.close(); + } + } + + private static void spawnOutfitPoints() { + for(OutfitPoint outfitPoint : outfitPoints) { + try { + Pickup pickup = Onset.getServer().createPickup(new Vector(outfitPoint.getX(), outfitPoint.getY(), outfitPoint.getZ()-100), 336); + pickup.setScale(new Vector(1,1,0.1d)); + pickup.setProperty("color", "5314b8", true); + Onset.getServer().createText3D("Changer de style [" + I18n.t(WorldManager.getServerConfig().getServerLanguage(), "ui.common.use") + "]", 15, outfitPoint.getX(), outfitPoint.getY(), outfitPoint.getZ() + 150, 0 , 0 ,0); + } + catch(Exception ex) { + Onset.print("Can't spawn the atm: " + ex.toString()); + } + } + } + + /** + * Spanw atms in the world + */ + private static void spawnATMs() { + for(ATM atm : atms) { + try { + Pickup pickup = Onset.getServer().createPickup(new Vector(atm.getX(), atm.getY(), atm.getZ()-100), 336); + pickup.setScale(new Vector(1,1,0.1d)); + pickup.setProperty("color", "02e630", true); + atm.setPickup(pickup); + Onset.getServer().createText3D("ATM [" + I18n.t(WorldManager.getServerConfig().getServerLanguage(), "ui.common.use") + "]", 15, atm.getX(), atm.getY(), atm.getZ() + 150, 0 , 0 ,0); + + GameMapMarker mapMarker = new GameMapMarker(); + mapMarker.setType("atm"); + mapMarker.setIcon("icon_atm"); + mapMarker.setPosition(new ArrayList<>()); + mapMarker.getPosition().add((int)atm.getY()); + mapMarker.getPosition().add((int)atm.getX()); + MapManager.getMapConfig().getMarkers().add(mapMarker); + } + catch(Exception ex) { + Onset.print("Can't spawn the atm: " + ex.toString()); + } + } + } + + /** + * Spawns garages in the world + */ + private static void spawnGarages() { + for(Garage garage : garages) { + Pickup pickup = Onset.getServer().createPickup(new Vector(garage.getX(), garage.getY(), garage.getZ()-100), 336); + pickup.setScale(new Vector(3,3,0.1d)); + pickup.setProperty("color", "6500bd", true); + Onset.getServer().createText3D("Garage [" + I18n.t(WorldManager.getServerConfig().getServerLanguage(), "ui.common.use") + "]", 20, garage.getX(), garage.getY(), garage.getZ() + 150, 0 , 0 ,0); + } + } + + private static void spawnVehicleSellers() { + for(VehicleSeller vehicleSeller : vehicleSellers) { + Pickup pickup = Onset.getServer().createPickup(new Vector(vehicleSeller.getX(), vehicleSeller.getY(), + vehicleSeller.getZ()-100), 336); + pickup.setScale(new Vector(1,1,0.1d)); + pickup.setProperty("color", "ffa600", true); + Onset.getServer().createText3D("Vendeur " + vehicleSeller.getName() + " [" + I18n.t(WorldManager.getServerConfig().getServerLanguage(), "ui.common.use") + "]", 20, vehicleSeller.getX(), + vehicleSeller.getY(), vehicleSeller.getZ() + 150, 0 , 0 ,0); + NPC npc = Onset.getServer().createNPC(new Location(vehicleSeller.getX(), vehicleSeller.getY(), + vehicleSeller.getZ(), vehicleSeller.getH())); + npc.setRespawnTime(1); + npc.setHealth(999999); + npc.setProperty("clothing", vehicleSeller.getNpcClothing(), true); + } + } + + public static void spawnSellers() { + for(Seller seller : sellers) { + Onset.getServer().createText3D(seller.getName() + " [" + I18n.t(WorldManager.getServerConfig().getServerLanguage(), "ui.common.use") + "]", 20, seller.getX(), + seller.getY(), seller.getZ() + 150, 0 , 0 ,0); + NPC npc = Onset.getServer().createNPC(new Location(seller.getX(), seller.getY(), + seller.getZ(), seller.getH())); + npc.setRespawnTime(1); + npc.setHealth(999999); + npc.setProperty("clothing", seller.getNpcClothing(), true); + } + } + + /** + * Find a player by the steam id + * @param steamId The steam id + * @return The player + */ + public static Player findPlayerBySteamId(final String steamId) { + for(Player p : Onset.getPlayers()) { + if(p.getSteamId().equals(steamId)) return p; + } + return null; + } + + /** + * Find a player by the account id + * @param accountId The account id + * @return The player + */ + public static Player findPlayerByAccountId(int accountId) { + for (Player p : Onset.getPlayers()) { + try { + if(CharacterManager.getCharacterStateByPlayer(p) == null) continue; + if(p.getProperty("accountId") == null) continue; + if(p.getPropertyInt("accountId") == accountId) { + return p; + } + } + catch (Exception ex) {} + } + return null; + } + + /** + * Handle the interaction request and send it to all interactible elements + * @param player The player + */ + public static void handleInteract(Player player) { + try { + if(CharacterManager.getCharacterStateByPlayer(player).isDead()) { + return; + } + + CharacterState state = CharacterManager.getCharacterStateByPlayer(player); + if(!state.canInteract()) return; + + // Check weared object + if(CharacterManager.getCharacterStateByPlayer(player).getWearableWorldObject() != null && player.getVehicle() == null) { + JobManager.handleUnwearObject(player); + return; + } + + if(ATMManager.handleATMInteract(player)) return; + if(handleOutfitPointsInteract(player)) return; + if(GarageManager.handleVSellerInteract(player)) return; + if(player.getVehicle() == null) + if(handlePickupGroundItem(player)) return; + if(FuelManager.interactFuelPoint(player, false)) return; + if(JobManager.tryToHarvest(player)) return; + if(player.getVehicle() == null) { + if(VehicleManager.handleVehicleChestStorageRequest(player)) return; + } + if(GarageManager.handleGarageInteract(player)) return; + if(player.getVehicle() == null){ + if(JobManager.requestVehicleRental(player)) return; + } else { + if(JobManager.getNearbyVehicleRental(player) != null) { + JobManager.destroyRentalVehiclesForPlayer(player); + return; + } + } + if(player.getVehicle() == null) + if(JobManager.handleSellJobNpcInventoryItem(player)) return; + if(player.getVehicle() == null) if(JobManager.handleJobOutfitRequest(player)) return; + if(player.getVehicle() == null) if(handleSellerInteract(player)) return; + } catch (Exception ex) { + ex.printStackTrace(); + } + } + + public static boolean handleOutfitPointsInteract(Player player) { + OutfitPoint outfitPoint = getNearbyOutfitPoint(player); + if(outfitPoint == null) return false; + UIStateManager.handleUIToogle(player, "customOutfit"); + return true; + } + + /** + * Save the player account (position, inventory ..) + * @param player The player + */ + public static void savePlayer(Player player) { + Account account = getPlayerAccount(player); + account.save(player); + } + + public static GroundItem getNearestGroundItem(Vector position) { + GroundItem nearestGroundItem = null; + for(GroundItem groundItem : groundItems) { + try { + if(nearestGroundItem == null) { + if(groundItem.getPosition().distance(position) < 150) { + nearestGroundItem = groundItem; + } + } + else { + if(groundItem.getPosition().distance(position) < nearestGroundItem.getPosition().distance(position)) { + nearestGroundItem = groundItem; + } + } + }catch (Exception ex) { + continue; + } + } + return nearestGroundItem; + } + + public static boolean handlePickupGroundItem(Player player) { + try { + GroundItem groundItem = getNearestGroundItem(player.getLocation()); + if(groundItem == null) return false; + CharacterState characterState = CharacterManager.getCharacterStateByPlayer(player); + if(!characterState.canInteract()) return false; + groundItem.pickByPlayer(player); + return true; + } catch (Exception ex) { + Onset.print("Can't pick up the object on the ground: " + ex.toString()); + return false; + } + } + + public static boolean handleSellerInteract(Player player) { + for(Seller seller : sellers) { + if(seller.isNear(player)) { + openSeller(player, seller); + return true; + } + } + return false; + } + + public static OutfitPoint getNearbyOutfitPoint(Player player) { + for(OutfitPoint outfitPoint : outfitPoints) { + if(outfitPoint.isNear(player)) { + return outfitPoint; + } + } + return null; + } + + public static Seller getNearbySeller(Player player) { + for(Seller seller : sellers) { + if(seller.isNear(player)) { + return seller; + } + } + return null; + } + + public static void openSeller(Player player, Seller seller) { + // Check job + if(!seller.getJobRequired().equals("")) { + Account account = WorldManager.getPlayerAccount(player); + Job job = JobManager.getJobs().values().stream().filter(x -> x.getJobType().equals(seller.getJobRequired())).findFirst().orElse(null); + if(job == null) return; + + // Check level and whitelist level + if(job.isWhitelisted()) { + AccountJobWhitelist accountJobWhitelist = AccountManager.getAccountJobWhitelists().stream() + .filter(x -> x.getAccountId() == account.getId() && x.getJobId().equals(job.getJobType())) + .findFirst().orElse(null); + if(accountJobWhitelist == null) { + UIStateManager.sendNotification(player, ToastTypeEnum.ERROR, I18n.t(account.getLang(), "toast.job.not_whitelisted")); + return; + } + if(accountJobWhitelist.getJobLevel() < seller.getJobLevelRequired()) { + UIStateManager.sendNotification(player, ToastTypeEnum.ERROR, I18n.t(account.getLang(), "toast.job.not_whitelisted")); + return; + } + } else { + ArrayList characterJobLevels = account.decodeCharacterJob(); + CharacterJobLevel characterJobLevel = characterJobLevels.stream().filter(x -> x.getJobId().equals(seller.getJobRequired())).findFirst().orElse(null); + if(characterJobLevel == null) return; + if(characterJobLevel.getJobLevel().getLevel() < seller.getJobLevelRequired()) { + UIStateManager.sendNotification(player, ToastTypeEnum.ERROR, I18n.t(account.getLang(), "toast.job.not_whitelisted")); + return; + } + } + } + + if(!UIStateManager.handleUIToogle(player, "seller")) { + CharacterManager.setCharacterFreeze(player, false); + return; + } + + CharacterManager.setCharacterFreeze(player, true); + for(SellerItem sellerItem : seller.decodeItems()) { + ItemTemplate itemTemplate = InventoryManager.getItemTemplates().get(sellerItem.getId()); + player.callRemoteEvent("GlobalUI:DispatchToUI", new Gson().toJson(new AddSellerItemPayload + (String.valueOf(sellerItem.getId()), itemTemplate.getName(), sellerItem.getPrice()))); + } + } + + public static void handleBuySellItemSeller(Player player, BuySellItemRequestPayload payload) { + Seller seller = getNearbySeller(player); + if(seller == null) return; + SellerItem sellerItem = seller.decodeItems().stream().filter(x -> x.getId() == Integer.parseInt(payload.getId())) + .findFirst().orElse(null); + if(sellerItem == null) return; + if(payload.getQuantity() <= 0) return; + + Account account = WorldManager.getPlayerAccount(player); + + ItemTemplate itemTemplate = InventoryManager.getItemTemplates().get(sellerItem.getId()); + Inventory inventory = InventoryManager.getMainInventory(player); + if(sellerItem.getPrice() >= 0) { + // Buy + int totalPrice = sellerItem.getPrice() * payload.getQuantity(); + if(inventory.getCashAmount() < totalPrice) { + UIStateManager.sendNotification(player, ToastTypeEnum.ERROR, + I18n.t(account.getLang(), "toast.seller.no_enought_money_on_me", String.valueOf(payload.getQuantity()),itemTemplate.getName())); + return; + } + if(InventoryManager.addItemToPlayer(player, String.valueOf(itemTemplate.getId()), payload.getQuantity(), true) == null) { + return; + } + inventory.removeItem(inventory.getItemByType(ItemTemplateEnum.CASH.id), totalPrice); + UIStateManager.sendNotification(player, ToastTypeEnum.SUCCESS, I18n.t(account.getLang(), "toast.seller.success_buy", String.valueOf(payload.getQuantity()),itemTemplate.getName())); + } else { + // Sell + InventoryItem inventoryItem = inventory.getItemByType(payload.getId()); + if(inventoryItem == null) return; + if(inventoryItem.getAmount() < payload.getQuantity()) { + UIStateManager.sendNotification(player, ToastTypeEnum.ERROR, + I18n.t(account.getLang(), "toast.seller.no_enought_item_on_me", String.valueOf(payload.getQuantity()),itemTemplate.getName())); + return; + } + int totalPrice = (-(sellerItem.getPrice())) * payload.getQuantity(); + inventory.removeItem(inventoryItem, payload.getQuantity()); + InventoryManager.addItemToPlayer(player, ItemTemplateEnum.CASH.id, totalPrice, false); + UIStateManager.sendNotification(player, ToastTypeEnum.SUCCESS, + I18n.t(account.getLang(), "toast.seller.sell_success", String.valueOf(payload.getQuantity()),itemTemplate.getName())); + } + WorldManager.savePlayer(player); + } + + public static void handleObjectRequestPlacement(Player player) { + UIStateManager.handleUIToogle(player, "statewindow"); + } + + public static void handleObjectEditPlacementCancel(Player player) { + CharacterState state = CharacterManager.getCharacterStateByPlayer(player); + if(state == null) return; + if(state.getCurrentObjectPlacementInstance() == null) { + return; + } + Account account = WorldManager.getPlayerAccount(player); + + if(state.getUiState().isStatewindow()) UIStateManager.handleUIToogle(player, "statewindow"); + ObjectPlacementInstance objectPlacementInstance = state.getCurrentObjectPlacementInstance(); + objectPlacementInstance.destroy(); + state.setCurrentObjectPlacementInstance(null); + Onset.print("Cancel placement of the object instance modelId="+objectPlacementInstance.getModelId() + + " uuid=" + objectPlacementInstance.getUuid()); + UIStateManager.sendNotification(player, ToastTypeEnum.WARN, I18n.t(account.getLang(), "toast.placement.cancel_placement")); + } + + public static void handleObjectPlacementDone(Player player, Vector position, Vector rotation) { + CharacterState state = CharacterManager.getCharacterStateByPlayer(player); + if(state == null) return; + if(state.getCurrentObjectPlacementInstance() == null) { + Onset.print("Can't cancel placement, there is instance for the player in the state"); + return; + } + House house = HouseManager.getHouseAtLocation(position); + Account account = WorldManager.getPlayerAccount(player); + if(house == null) { + handleObjectEditPlacementCancel(player); + UIStateManager.sendNotification(player, ToastTypeEnum.ERROR, I18n.t(account.getLang(), "toast.house.need_to_be_inside")); + return; + } + if(!HouseManager.canBuildInHouse(player, house)) { + handleObjectEditPlacementCancel(player); + UIStateManager.sendNotification(player, ToastTypeEnum.ERROR, I18n.t(account.getLang(), "toast.house.need_to_be_inside")); + return; + } + + // Remove interface + if(state.getUiState().isStatewindow()) UIStateManager.handleUIToogle(player, "statewindow"); + ObjectPlacementInstance objectPlacementInstance = state.getCurrentObjectPlacementInstance(); + objectPlacementInstance.destroy(); + state.setCurrentObjectPlacementInstance(null); + objectPlacementInstance.onPlacementDone(player, position, rotation); + } + + public static void handleEditExistingPlacement(Player player, int houseItemId) throws SQLException { + CharacterState state = CharacterManager.getCharacterStateByPlayer(player); + if(state == null) return; + if(state.getCurrentObjectPlacementInstance() != null) { + return; + } + House house = HouseManager.getHouseAtLocation(player.getLocation()); + Account account = WorldManager.getPlayerAccount(player); + if(house == null) return; + if(!HouseManager.canBuildInHouse(player, house)) + { + return; + } + HouseItemObject houseItemObject = house.getHouseItemObjects().stream() + .filter(x -> x.getId() == houseItemId).findFirst().orElse(null); + if(houseItemObject == null) return; + + houseItemObject.destroy(); + HouseItemDAO.deleteHouseItem(houseItemObject); + + ObjectPlacementInstance objectPlacementInstance = new GenericPlacementInstance(houseItemObject.getPosition(), + houseItemObject.getModelId(), 0); + state.setCurrentObjectPlacementInstance(objectPlacementInstance); + objectPlacementInstance.spawn(); + objectPlacementInstance.setEditableBy(player); + } + + public static void cuffPlayer(Player player) { + if(player.getVehicle() != null) return; + CharacterState state = CharacterManager.getCharacterStateByPlayer(player); + + if(state.isCuffed()) { + state.setCuffed(false); + player.setAnimation(Animation.STOP); + player.setProperty("cuffed", 0, true); + SoundManager.playSound3D("sounds/hand_cuff.mp3", player.getLocation(), 500, 1); + } else { + if(!state.canInteract()) { + return; + } + SoundManager.playSound3D("sounds/hand_cuff.mp3", player.getLocation(), 500, 1); + state.setCuffed(true); + player.setAnimation(Animation.CUFF); + player.setProperty("cuffed", 1, true); + } + } + + public static void revive(Player player, Player target) { + CharacterState targetState = CharacterManager.getCharacterStateByPlayer(target); + if(!targetState.isDead()) return; + CharacterLoopAnimation characterLoopAnimation = new CharacterLoopAnimation(player, Animation.REVIVE, + 5000, 2, "sounds/defibrilator.mp3"); + characterLoopAnimation.start(); + CharacterManager.setCharacterFreeze(player, true); + CharacterManager.setCharacterFreeze(target, true); + Onset.delay(10000, () -> { + + targetState.setDead(false); + Account account = WorldManager.getPlayerAccount(target); + account.setDead(false); + Location location = target.getLocationAndHeading(); + account.setSaveX(location.getX()); + account.setSaveY(location.getY()); + account.setSaveZ(location.getZ()); + account.setSaveH(location.getHeading()); + target.setRespawnTime(100); + + target.setRagdoll(false); + target.setHealth(100); + CharacterManager.setCharacterStyle(target); + WorldManager.savePlayer(target); + UIStateManager.handleUIToogle(target, "death"); + + characterLoopAnimation.stop(); + Onset.delay(500, () -> { + player.setAnimation(Animation.STOP); + target.setAnimation(Animation.PUSHUP_END); + CharacterManager.setCharacterFreeze(player, false); + CharacterManager.setCharacterFreeze(target, false); + }); + }); + } + + /** + * Get the account for the player + * @param player The player + * @return The account + */ + public static Account getPlayerAccount(Player player) { + return accounts.get(player.getPropertyInt("accountId")); + } + + public static Player getPlayerByPhoneNumber(String phoneNumber) { + for(Player player : Onset.getPlayers()) { + Account account = getPlayerAccount(player); + if(account.getPhoneNumber().equals(phoneNumber)) return player; + } + return null; + } + + public static ArrayList getAtms() { + return atms; + } + + public static HashMap getAccounts() { + return accounts; + } + + public static ArrayList getGarages() { + return garages; + } + + public static ArrayList getVehicleSellers() { + return vehicleSellers; + } + + public static ServerConfig getServerConfig() { + return serverConfig; + } + + public static ArrayList getGroundItems() { + return groundItems; + } + + public static Player getNearestPlayer(Player player) { + Player search = null; + double currentDistance = 99999; + for(Player p : Onset.getPlayers()) { + try { + if(p.getId() == player.getId()) continue;; + if(p.getLocation().distance(player.getLocation()) < currentDistance) { + search = p; + currentDistance = p.getLocation().distance(player.getLocation()); + } + }catch (Exception ex) { + continue; + } + } + return search; + } + + public static Door getNearestDoor(Vector position) { + Door search = null; + double currentDistance = 99999; + for(Door d : Onset.getDoors()) { + try { + if(d.getLocation().distance(position) < currentDistance) { + search = d; + currentDistance = d.getLocation().distance(position); + } + }catch (Exception ex) { + continue; + } + } + return search; + } + + public static ArrayList getRestrictedZones() { + return restrictedZones; + } +} diff --git a/src/main/java/fr/yuki/YukiRPFramework/model/Account.java b/src/main/java/fr/yuki/YukiRPFramework/model/Account.java index 6383db9..db1d14f 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/model/Account.java +++ b/src/main/java/fr/yuki/YukiRPFramework/model/Account.java @@ -1,288 +1,115 @@ -package fr.yuki.YukiRPFramework.model; - -import com.google.gson.Gson; -import com.google.gson.reflect.TypeToken; -import fr.yuki.YukiRPFramework.character.CharacterJobLevel; -import fr.yuki.YukiRPFramework.character.CharacterStyle; -import fr.yuki.YukiRPFramework.net.payload.RequestBuyVehiclePayload; - -import java.util.ArrayList; -import java.util.Date; - -public class Account { - private int id; - private int adminLevel; - private String steamName; - private String steamId; - private Date createdAt; - private Date updatedAt; - private int isBanned; - private int bankMoney; - private double saveX; - private double saveY; - private double saveZ; - private double saveH; - private int characterCreationRequest; - private String characterStyle; - private String characterName; - private String jobLevels; - private int isDead; - private String lang; - private int foodState; - private int drinkState; - private String phoneNumber; - private String weapons; - private int bagId; - private int compagnyId; - private int isInService; - private String originalStyle; - private double health; - private int commandLevel; - - public int getId() { - return id; - } - - public void setId(int id) { - this.id = id; - } - - public String getSteamName() { - return steamName; - } - - public void setSteamName(String steamName) { - this.steamName = steamName; - } - - public String getSteamId() { - return steamId; - } - - public void setSteamId(String steamId) { - this.steamId = steamId; - } - - public Date getCreatedAt() { - return createdAt; - } - - public void setCreatedAt(Date createdAt) { - this.createdAt = createdAt; - } - - public Date getUpdatedAt() { - return updatedAt; - } - - public void setUpdatedAt(Date updatedAt) { - this.updatedAt = updatedAt; - } - - public int getIsBanned() { - return isBanned; - } - - public void setIsBanned(int isBanned) { - this.isBanned = isBanned; - } - - public int getBankMoney() { - return bankMoney; - } - - public void setBankMoney(int bankMoney) { - this.bankMoney = bankMoney; - } - - public double getSaveX() { - return saveX; - } - - public void setSaveX(double saveX) { - this.saveX = saveX; - } - - public double getSaveY() { - return saveY; - } - - public void setSaveY(double saveY) { - this.saveY = saveY; - } - - public double getSaveZ() { - return saveZ; - } - - public void setSaveZ(double saveZ) { - this.saveZ = saveZ; - } - - public double getSaveH() { - return saveH; - } - - public void setSaveH(double saveH) { - this.saveH = saveH; - } - - public int getFoodState() { - return foodState; - } - - public void setFoodState(int foodState) { - this.foodState = foodState; - } - - public int getDrinkState() { - return drinkState; - } - - public void setDrinkState(int drinkState) { - this.drinkState = drinkState; - } - - public int getCharacterCreationRequest() { - return characterCreationRequest; - } - - public void setCharacterCreationRequest(int characterCreationRequest) { - this.characterCreationRequest = characterCreationRequest; - } - - public String getCharacterStyle() { - return characterStyle; - } - - public void setCharacterStyle(String characterStyle) { - this.characterStyle = characterStyle; - } - - public void setCharacterStyle(CharacterStyle characterStyle) { - this.characterStyle = new Gson().toJson(characterStyle); - } - - public CharacterStyle decodeCharacterStyle() { - if(this.characterStyle.equals("")) return new CharacterStyle(); - return new Gson().fromJson(this.characterStyle, CharacterStyle.class); - } - - public CharacterStyle decodeOriginalCharacterStyle() { - if(this.originalStyle.equals("")) return new CharacterStyle(); - return new Gson().fromJson(this.originalStyle, CharacterStyle.class); - } - - public void setJobLevels(ArrayList jobLevels) { - this.jobLevels = new Gson().toJson(jobLevels); - } - - public ArrayList decodeCharacterJob() { - if(this.jobLevels.equals("")) return new ArrayList<>(); - return new Gson().fromJson(this.jobLevels, new TypeToken>(){}.getType()); - } - - public String getCharacterName() { - return characterName; - } - - public void setCharacterName(String characterName) { - this.characterName = characterName; - } - - public String getJobLevels() { - return jobLevels; - } - - public void setJobLevels(String jobLevels) { - this.jobLevels = jobLevels; - } - - public int getIsDead() { - return isDead; - } - - public void setIsDead(int isDead) { - this.isDead = isDead; - } - - public int getAdminLevel() { - return adminLevel; - } - - public void setAdminLevel(int adminLevel) { - this.adminLevel = adminLevel; - } - - public String getLang() { - return lang; - } - - public void setLang(String lang) { - this.lang = lang; - } - - public String getPhoneNumber() { - return phoneNumber; - } - - public void setPhoneNumber(String phoneNumber) { - this.phoneNumber = phoneNumber; - } - - public String getWeapons() { - return weapons; - } - - public void setWeapons(String weapons) { - this.weapons = weapons; - } - - public int getBagId() { - return bagId; - } - - public void setBagId(int bagId) { - this.bagId = bagId; - } - - public int getCompagnyId() { - return compagnyId; - } - - public void setCompagnyId(int compagnyId) { - this.compagnyId = compagnyId; - } - - public int getIsInService() { - return isInService; - } - - public void setIsInService(int isInService) { - this.isInService = isInService; - } - - public String getOriginalStyle() { - return originalStyle; - } - - public void setOriginalStyle(String originalStyle) { - this.originalStyle = originalStyle; - } - - public double getHealth() { - return health; - } - - public void setHealth(double health) { - this.health = health; - } - - public int getCommandLevel() { - return commandLevel; - } - - public void setCommandLevel(int commandLevel) { - this.commandLevel = commandLevel; - } -} +package fr.yuki.YukiRPFramework.model; + +import com.google.gson.Gson; +import com.google.gson.reflect.TypeToken; +import eu.bebendorf.ajorm.Model; +import eu.bebendorf.ajorm.annotation.Column; +import eu.bebendorf.ajorm.annotation.Dates; +import eu.bebendorf.ajorm.annotation.Table; +import fr.yuki.YukiRPFramework.character.CharacterJobLevel; +import fr.yuki.YukiRPFramework.character.CharacterStyle; +import fr.yuki.YukiRPFramework.manager.WeaponManager; +import lombok.Getter; +import lombok.Setter; +import net.onfirenetwork.onsetjava.data.Location; +import net.onfirenetwork.onsetjava.entity.Player; + +import java.sql.Timestamp; +import java.util.ArrayList; + +@Dates @Getter @Setter @Table("tbl_account") +public class Account extends Model { + @Column + private int id; + @Column + private int adminLevel = 0; + @Column(column = "steam_account_name") + private String steamName; + @Column + private String steamId; + @Column + private boolean isBanned = false; + @Column + private int bankMoney = 4000; + @Column + private double saveX; + @Column + private double saveY; + @Column + private double saveZ; + @Column + private double saveH; + @Column + private boolean characterCreationRequest = true; + @Column + private String characterStyle = ""; + @Column + private String characterName = "Unknown"; + @Column + private String jobLevels = "[]"; + @Column + private boolean isDead = false; + @Column + private String lang = "fr"; + @Column + private int foodState = 100; + @Column + private int drinkState = 100; + @Column + private String phoneNumber; + @Column + private String weapons = "[]"; + @Column + private int bagId = -1; + @Column + private int companyId = -1; + @Column + private boolean isInService = false; + @Column + private String originalStyle = ""; + @Column + private double health = 100; + @Column + private int commandLevel = 0; + @Column + private Timestamp createdAt; + @Column + private Timestamp updatedAt; + + public void setCharacterStyle(CharacterStyle characterStyle) { + this.characterStyle = new Gson().toJson(characterStyle); + } + + public CharacterStyle decodeCharacterStyle() { + if(this.characterStyle.equals("")) return new CharacterStyle(); + return new Gson().fromJson(this.characterStyle, CharacterStyle.class); + } + + public CharacterStyle decodeOriginalCharacterStyle() { + if(this.originalStyle.equals("")) return new CharacterStyle(); + return new Gson().fromJson(this.originalStyle, CharacterStyle.class); + } + + public void setJobLevels(ArrayList jobLevels) { + this.jobLevels = new Gson().toJson(jobLevels); + } + + public ArrayList decodeCharacterJob() { + if(this.jobLevels.equals("")) return new ArrayList<>(); + return new Gson().fromJson(this.jobLevels, new TypeToken>(){}.getType()); + } + + public void save(Player player){ + if(player != null){ + Location loc = player.getLocationAndHeading(); + health = player.getHealth(); + saveX = loc.getX(); + saveY = loc.getY(); + saveZ = loc.getZ(); + saveH = loc.getHeading(); + weapons = new Gson().toJson(WeaponManager.getPlayerWeapons(player)); + } + save(); + } + +} From c4ac4dba7e0dd7a4a6c785d74b5649e7f5bde063 Mon Sep 17 00:00:00 2001 From: JanHolger Date: Tue, 7 Jul 2020 21:55:56 +0200 Subject: [PATCH 3/5] Removed .idea and *.iml --- .idea/.gitignore | 3 - .idea/compiler.xml | 14 -- .idea/dictionaries/Nightwolf.xml | 7 - .idea/jarRepositories.xml | 25 ---- .idea/libraries/OnsetJava_API_0_1.xml | 9 -- .../com_google_code_gson_gson_2_8_6.xml | 10 -- .../mysql_mysql_connector_java_8_0_19.xml | 11 -- .idea/misc.xml | 17 --- .idea/uiDesigner.xml | 124 ------------------ .idea/vcs.xml | 6 - YukiRPFramework.iml | 2 - 11 files changed, 228 deletions(-) delete mode 100644 .idea/.gitignore delete mode 100644 .idea/compiler.xml delete mode 100644 .idea/dictionaries/Nightwolf.xml delete mode 100644 .idea/jarRepositories.xml delete mode 100644 .idea/libraries/OnsetJava_API_0_1.xml delete mode 100644 .idea/libraries/com_google_code_gson_gson_2_8_6.xml delete mode 100644 .idea/libraries/mysql_mysql_connector_java_8_0_19.xml delete mode 100644 .idea/misc.xml delete mode 100644 .idea/uiDesigner.xml delete mode 100644 .idea/vcs.xml delete mode 100644 YukiRPFramework.iml diff --git a/.idea/.gitignore b/.idea/.gitignore deleted file mode 100644 index eaf91e2..0000000 --- a/.idea/.gitignore +++ /dev/null @@ -1,3 +0,0 @@ -# Default ignored files -/shelf/ -/workspace.xml diff --git a/.idea/compiler.xml b/.idea/compiler.xml deleted file mode 100644 index 5fc769d..0000000 --- a/.idea/compiler.xml +++ /dev/null @@ -1,14 +0,0 @@ - - - - - - - - - - - - - - \ No newline at end of file diff --git a/.idea/dictionaries/Nightwolf.xml b/.idea/dictionaries/Nightwolf.xml deleted file mode 100644 index 0672d05..0000000 --- a/.idea/dictionaries/Nightwolf.xml +++ /dev/null @@ -1,7 +0,0 @@ - - - - tebex - - - \ No newline at end of file diff --git a/.idea/jarRepositories.xml b/.idea/jarRepositories.xml deleted file mode 100644 index 8248677..0000000 --- a/.idea/jarRepositories.xml +++ /dev/null @@ -1,25 +0,0 @@ - - - - - - - - - - - - - \ No newline at end of file diff --git a/.idea/libraries/OnsetJava_API_0_1.xml b/.idea/libraries/OnsetJava_API_0_1.xml deleted file mode 100644 index 2f345fb..0000000 --- a/.idea/libraries/OnsetJava_API_0_1.xml +++ /dev/null @@ -1,9 +0,0 @@ - - - - - - - - - \ No newline at end of file diff --git a/.idea/libraries/com_google_code_gson_gson_2_8_6.xml b/.idea/libraries/com_google_code_gson_gson_2_8_6.xml deleted file mode 100644 index 99c3b8a..0000000 --- a/.idea/libraries/com_google_code_gson_gson_2_8_6.xml +++ /dev/null @@ -1,10 +0,0 @@ - - - - - - - - - - \ No newline at end of file diff --git a/.idea/libraries/mysql_mysql_connector_java_8_0_19.xml b/.idea/libraries/mysql_mysql_connector_java_8_0_19.xml deleted file mode 100644 index 447b99e..0000000 --- a/.idea/libraries/mysql_mysql_connector_java_8_0_19.xml +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - - - \ No newline at end of file diff --git a/.idea/misc.xml b/.idea/misc.xml deleted file mode 100644 index 3ccb27b..0000000 --- a/.idea/misc.xml +++ /dev/null @@ -1,17 +0,0 @@ - - - - - - - - - - - - \ No newline at end of file diff --git a/.idea/uiDesigner.xml b/.idea/uiDesigner.xml deleted file mode 100644 index b93ac08..0000000 --- a/.idea/uiDesigner.xml +++ /dev/null @@ -1,124 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/.idea/vcs.xml b/.idea/vcs.xml deleted file mode 100644 index 9661ac7..0000000 --- a/.idea/vcs.xml +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/YukiRPFramework.iml b/YukiRPFramework.iml deleted file mode 100644 index 4098198..0000000 --- a/YukiRPFramework.iml +++ /dev/null @@ -1,2 +0,0 @@ - - \ No newline at end of file From 0881baaca81c0292cba8fd95e60eb4f120cf5407 Mon Sep 17 00:00:00 2001 From: JanHolger Date: Tue, 7 Jul 2020 23:10:32 +0200 Subject: [PATCH 4/5] Did a lot more refactoring --- .../fr/yuki/YukiRPFramework/dao/ATMDAO.java | 28 - .../dao/AccountJobWhitelistDAO.java | 43 - .../yuki/YukiRPFramework/dao/CompagnyDAO.java | 49 -- .../YukiRPFramework/dao/FuelPointDAO.java | 29 - .../yuki/YukiRPFramework/dao/GarageDAO.java | 29 - .../fr/yuki/YukiRPFramework/dao/HouseDAO.java | 70 -- .../YukiRPFramework/dao/VehicleSellerDAO.java | 45 - .../manager/AccountManager.java | 21 - .../fr/yuki/YukiRPFramework/model/ATM.java | 61 -- .../model/AccountJobWhitelist.java | 40 - .../yuki/YukiRPFramework/model/Compagny.java | 55 -- .../yuki/YukiRPFramework/model/FuelPoint.java | 57 -- .../fr/yuki/YukiRPFramework/model/Garage.java | 68 -- .../fr/yuki/YukiRPFramework/model/House.java | 130 --- .../YukiRPFramework/model/VehicleSeller.java | 124 --- .../{YukiRPFramework => yrpf}/Database.java | 15 +- .../YukiRPFrameworkPlugin.java | 40 +- .../character/CharacterJobLevel.java | 80 +- .../character/CharacterLoopAnimation.java | 278 +++--- .../character/CharacterState.java | 26 +- .../character/CharacterStyle.java | 182 ++-- .../character/CharacterToolAnimation.java | 83 +- .../commands/AddDeliveryPointCommand.java | 52 +- .../commands/AddGatherItemCommand.java | 71 +- .../commands/AddItemAllCommand.java | 63 +- .../commands/AnnCommand.java | 56 +- .../commands/BanCommand.java | 6 +- .../commands/BringCommand.java | 38 +- .../commands/CreateHouseCommand.java | 99 +-- .../commands/CuffCommand.java | 56 +- .../commands/DVCommand.java | 66 +- .../commands/DebugCharacterToolCommand.java | 54 +- .../commands/DebugHouseCommand.java | 89 +- .../commands/DebugObjectPlacementCommand.java | 53 +- .../commands/DebugTestCommand.java | 53 +- .../DebugVehicleStorageLayoutCommand.java | 75 +- .../commands/FlipCommand.java | 46 +- .../commands/ForceGarbageCommand.java | 40 +- .../commands/FreeHouseCommand.java | 79 +- .../commands/GetIdCommand.java | 50 +- .../commands/GiveHouseKeyCommand.java | 58 +- .../commands/GotoCommand.java | 39 +- .../commands/InvisCommand.java | 90 +- .../commands/ItemCommand.java | 47 +- .../commands/KickCommand.java | 47 +- .../commands/LocCommand.java | 42 +- .../commands/MoveCommand.java | 42 +- .../commands/NitroCommand.java | 38 +- .../commands/RegenPhoneNumberCommand.java | 8 +- .../RequestCharacterCreationCommand.java | 8 +- .../commands/ReviveCommand.java | 48 +- .../commands/SetAdminLevelCommand.java | 54 +- .../commands/SetCharacterScaleCommand.java | 38 +- .../commands/SetClotheCommand.java | 108 +-- .../commands/SetCommandLevelCommand.java | 6 +- .../commands/SetHousePropsCommand.java | 67 +- .../commands/SetLangCommand.java | 50 +- .../commands/SetTimeCommand.java | 38 +- .../commands/SetWhitelistCommand.java | 91 +- .../commands/ShowGatherItemListCommand.java | 63 +- .../commands/VCommand.java | 43 +- .../dao/GrowboxDAO.java | 121 ++- .../dao/HouseItemDAO.java | 115 ++- .../dao/InventoryDAO.java | 179 ++-- .../dao/ItemTemplateDAO.java | 72 +- .../dao/JobLevelDAO.java | 59 +- .../dao/JobNPCDAO.java | 80 +- .../dao/JobOutfitDAO.java | 63 +- .../dao/JobToolDAO.java | 84 +- .../dao/JobVehicleRentalDAO.java | 73 +- .../dao/OutfitPointDAO.java | 55 +- .../dao/PhoneContactDAO.java | 98 ++- .../dao/SellerDAO.java | 76 +- .../dao/VehicleGarageDAO.java | 159 ++-- .../enums/ItemTemplateEnum.java | 72 +- .../enums/JobEnum.java | 34 +- .../enums/ToastTypeEnum.java | 30 +- .../house/itembehavior/ATMBehavior.java | 64 +- .../house/itembehavior/ItemBehavior.java | 30 +- .../house/itembehavior/RadioBehavior.java | 90 +- .../{YukiRPFramework => yrpf}/i18n/I18n.java | 83 +- .../inventory/Inventory.java | 593 +++++++------ .../inventory/InventoryItem.java | 140 +-- .../job/CustomJob.java | 66 +- .../job/DeliveryJob.java | 71 +- .../job/DeliveryPointConfig.java | 34 +- .../{YukiRPFramework => yrpf}/job/EMSJob.java | 64 +- .../job/FisherJob.java | 77 +- .../job/GarbageJob.java | 71 +- .../{YukiRPFramework => yrpf}/job/Job.java | 365 ++++---- .../job/JobConfig.java | 41 +- .../job/JobSpawn.java | 67 +- .../job/JobSpawnPosition.java | 84 +- .../job/LumberjackJob.java | 88 +- .../job/MinerJob.java | 77 +- .../job/ObjectPlacementInstance.java | 100 +-- .../job/PoliceJob.java | 62 +- .../job/WearableWorldObject.java | 467 +++++----- .../job/WeedJob.java | 92 +- .../job/WorldHarvestObject.java | 262 +++--- .../job/customGoal/DeliveryPointGoal.java | 57 +- .../job/deliveryPackage/DeliveryPackage.java | 105 ++- .../GeneratorDeliveryPackage.java | 106 +-- .../GenericDeliveryPackage.java | 128 +-- .../GrowBoxDeliveryPackage.java | 148 ++-- .../job/harvest/CooperOre.java | 188 ++--- .../job/harvest/CustomHarvestableObject.java | 252 +++--- .../job/harvest/DeliveryPackage.java | 198 ++--- .../job/harvest/Garbage.java | 176 ++-- .../job/harvest/HarvestableObject.java | 50 +- .../job/harvest/IronOre.java | 188 ++--- .../job/harvest/LumberjackTreeCommon.java | 191 +++-- .../job/harvest/Salmon.java | 178 ++-- .../job/harvest/Turtle.java | 177 ++-- .../GeneratorPlacementInstance.java | 68 +- .../GenericPlacementInstance.java | 74 +- .../GrowBoxPlacementInstance.java | 73 +- .../job/tools/GarbageBin.java | 122 ++- .../job/tools/Generator.java | 191 +++-- .../job/tools/GrowBox.java | 492 ++++++----- .../job/tools/JobToolHandler.java | 24 +- .../job/tools/Sawmill.java | 174 ++-- .../job/tools/growbox/Pot.java | 228 ++--- .../luaapi/AddAmbiantSoundEF.java | 46 +- .../luaapi/AddItemEF.java | 41 +- .../luaapi/AddRestrictedZoneEF.java | 50 +- .../luaapi/GetAccountEF.java | 32 +- .../luaapi/GetAdminLevelEF.java | 30 +- .../luaapi/LuaAPIManager.java | 46 +- .../luaapi/SendToastEF.java | 42 +- .../job/AddItemResourceRequirementEF.java | 38 +- .../luaapi/job/AddJobLevelEF.java | 53 +- .../luaapi/job/AddJobResourceEF.java | 62 +- .../luaapi/job/CreateJobEF.java | 34 +- .../luaapi/job/SetHarvestAnimationEF.java | 46 +- .../manager/ATMManager.java | 197 +++-- .../fr/yuki/yrpf/manager/AccountManager.java | 19 + .../manager/CharacterManager.java | 28 +- .../manager/CompanyManager.java} | 111 ++- .../manager/FuelManager.java | 190 +++-- .../manager/GarageManager.java | 517 ++++++------ .../manager/GrowboxManager.java | 305 ++++--- .../manager/HouseManager.java | 42 +- .../manager/InventoryManager.java | 320 +++---- .../manager/ItemManager.java | 797 +++++++++--------- .../manager/JobManager.java | 32 +- .../manager/MapManager.java | 82 +- .../manager/ModdingManager.java | 109 ++- .../manager/PhoneManager.java | 659 +++++++-------- .../manager/SoundManager.java | 164 ++-- .../manager/TebexManager.java | 140 +-- .../manager/TimeManager.java | 98 +-- .../manager/UIStateManager.java | 18 +- .../manager/VehicleManager.java | 718 ++++++++-------- .../manager/WeaponManager.java | 146 ++-- .../manager/WorldManager.java | 106 +-- .../modding/Line3D.java | 161 ++-- .../modding/LoopSound3D.java | 126 +-- .../modding/ModdingCustomModel.java | 44 +- .../modding/ModdingFile.java | 30 +- src/main/java/fr/yuki/yrpf/model/ATM.java | 30 + .../model/Account.java | 10 +- .../yuki/yrpf/model/AccountJobWhitelist.java | 19 + .../{YukiRPFramework => yrpf}/model/Bag.java | 224 ++--- src/main/java/fr/yuki/yrpf/model/Company.java | 26 + .../java/fr/yuki/yrpf/model/FuelPoint.java | 28 + .../model/GameMapConfig.java | 48 +- .../model/GameMapMarker.java | 66 +- .../model/GameMapZone.java | 48 +- src/main/java/fr/yuki/yrpf/model/Garage.java | 32 + .../model/GroundItem.java | 162 ++-- .../model/GrowboxModel.java | 134 +-- src/main/java/fr/yuki/yrpf/model/House.java | 59 ++ .../model/HouseItemObject.java | 296 +++---- .../model/ItemShopObject.java | 62 +- .../model/ItemTemplate.java | 260 +++--- .../model/JobLevel.java | 106 +-- .../model/JobNPC.java | 248 +++--- .../model/JobNPCListItem.java | 62 +- .../model/JobOutfit.java | 184 ++-- .../model/JobOutfitItem.java | 44 +- .../model/JobTool.java | 474 +++++------ .../model/JobVehicleRental.java | 256 +++--- .../{YukiRPFramework => yrpf}/model/Mask.java | 206 ++--- .../model/OutfitPoint.java | 100 +-- .../model/PhoneContact.java | 80 +- .../model/SellListItem.java | 80 +- .../model/Seller.java | 246 +++--- .../model/SellerItem.java | 44 +- .../model/VehicleGarage.java | 347 ++++---- .../fr/yuki/yrpf/model/VehicleSeller.java | 72 ++ .../net/payload/AddCharacterJobPayload.java | 78 +- .../net/payload/AddClientContactPayload.java | 64 +- .../payload/AddCompagnyEmployeePayload.java | 74 +- .../net/payload/AddGameMapMarkerPayload.java | 42 +- .../net/payload/AddGameMapZonePayload.java | 43 +- .../payload/AddGenericMenuItemPayload.java | 50 +- .../payload/AddGrowboxMenuItemPayload.java | 78 +- .../net/payload/AddItemInventoryPayload.java | 104 +-- .../payload/AddPhoneConversationPayload.java | 50 +- .../net/payload/AddPhoneMessagePayload.java | 64 +- .../net/payload/AddPhoneUrgencyPayload.java | 110 +-- .../net/payload/AddSellerItemPayload.java | 62 +- .../net/payload/AddToastPayload.java | 50 +- .../net/payload/AddVChestItemPayload.java | 62 +- .../net/payload/AddVSellerVehiclePayload.java | 74 +- .../net/payload/AddVehicleGaragePayload.java | 74 +- .../net/payload/AddXpBarItemPayload.java | 38 +- .../payload/BuySellItemRequestPayload.java | 44 +- .../ClearCompagnyEmployeesPayload.java | 26 +- .../net/payload/ClearGenericMenuPayload.java | 26 +- .../net/payload/ClearPhoneUrgencyPayload.java | 26 +- .../payload/GrowboxFillWaterPotPayload.java | 44 +- .../net/payload/PhoneAddContactPayload.java | 44 +- .../payload/RemoteItemInventoryPayload.java | 32 +- .../net/payload/RequestBuyVehiclePayload.java | 56 +- .../RequestInventoryContentPayload.java | 26 +- .../RequestPhoneSendMessagePayload.java | 44 +- .../net/payload/RequestThrowItemPayload.java | 44 +- .../net/payload/RequestUseItemPayload.java | 26 +- .../payload/ResetVehicleGaragePayload.java | 26 +- .../net/payload/SetBankCashAmount.java | 50 +- .../net/payload/SetCompagnyPayload.java | 74 +- .../net/payload/SetFoodPayload.java | 50 +- .../net/payload/SetGrowboxPayload.java | 38 +- .../net/payload/SetHouseInfosPayload.java | 50 +- .../net/payload/SetLangPayload.java | 38 +- .../net/payload/SetPhoneCallStatePayload.java | 50 +- .../net/payload/SetPhoneNumberPayload.java | 38 +- .../net/payload/SetWindowStatePayload.java | 50 +- .../net/payload/SolveUrgencyPayload.java | 44 +- .../payload/StartPhoneCallTimerPayload.java | 26 +- .../net/payload/StyleSavePartPayload.java | 44 +- .../payload/UpdateInventoryWeightPayload.java | 50 +- .../payload/UpdateItemInventoryPayload.java | 90 +- .../net/payload/UrgencyRequestPayload.java | 44 +- .../phone/PhoneCall.java | 229 +++-- .../phone/PhoneMessage.java | 80 +- .../phone/UrgencyPhoneMessage.java | 66 +- .../tebex/TebexAPI.java | 174 ++-- .../tebex/responses/Account.java | 64 +- .../tebex/responses/Command.java | 54 +- .../tebex/responses/Conditions.java | 14 +- .../tebex/responses/Currency.java | 22 +- .../tebex/responses/PlayerMeta.java | 30 +- .../tebex/responses/Server.java | 22 +- .../tebex/responses/TebexCommandQueue.java | 24 +- .../responses/TebexCommandQueueMeta.java | 14 +- .../responses/TebexInformationResponse.java | 24 +- .../tebex/responses/TebexPlayer.java | 38 +- .../ui/GenericMenu.java | 84 +- .../ui/GenericMenuItem.java | 38 +- .../{YukiRPFramework => yrpf}/ui/UIState.java | 296 +++---- .../utils/Basic.java | 14 +- .../utils/ServerConfig.java | 368 ++++---- .../storeLayout/GarbageTruckStoreLayout.java | 99 ++- .../storeLayout/MiniPickupStoreLayout.java | 118 +-- .../storeLayout/MiniTruckStoreLayout.java | 122 +-- .../storeLayout/StoreLayoutTransform.java | 74 +- .../vehicle/storeLayout/TruckStoreLayout.java | 96 +-- .../storeLayout/VehicleStoreLayout.java | 74 +- .../world/RestrictedZone.java | 78 +- 262 files changed, 12641 insertions(+), 13394 deletions(-) delete mode 100644 src/main/java/fr/yuki/YukiRPFramework/dao/ATMDAO.java delete mode 100644 src/main/java/fr/yuki/YukiRPFramework/dao/AccountJobWhitelistDAO.java delete mode 100644 src/main/java/fr/yuki/YukiRPFramework/dao/CompagnyDAO.java delete mode 100644 src/main/java/fr/yuki/YukiRPFramework/dao/FuelPointDAO.java delete mode 100644 src/main/java/fr/yuki/YukiRPFramework/dao/GarageDAO.java delete mode 100644 src/main/java/fr/yuki/YukiRPFramework/dao/HouseDAO.java delete mode 100644 src/main/java/fr/yuki/YukiRPFramework/dao/VehicleSellerDAO.java delete mode 100644 src/main/java/fr/yuki/YukiRPFramework/manager/AccountManager.java delete mode 100644 src/main/java/fr/yuki/YukiRPFramework/model/ATM.java delete mode 100644 src/main/java/fr/yuki/YukiRPFramework/model/AccountJobWhitelist.java delete mode 100644 src/main/java/fr/yuki/YukiRPFramework/model/Compagny.java delete mode 100644 src/main/java/fr/yuki/YukiRPFramework/model/FuelPoint.java delete mode 100644 src/main/java/fr/yuki/YukiRPFramework/model/Garage.java delete mode 100644 src/main/java/fr/yuki/YukiRPFramework/model/House.java delete mode 100644 src/main/java/fr/yuki/YukiRPFramework/model/VehicleSeller.java rename src/main/java/fr/yuki/{YukiRPFramework => yrpf}/Database.java (71%) rename src/main/java/fr/yuki/{YukiRPFramework => yrpf}/YukiRPFrameworkPlugin.java (96%) rename src/main/java/fr/yuki/{YukiRPFramework => yrpf}/character/CharacterJobLevel.java (82%) rename src/main/java/fr/yuki/{YukiRPFramework => yrpf}/character/CharacterLoopAnimation.java (94%) rename src/main/java/fr/yuki/{YukiRPFramework => yrpf}/character/CharacterState.java (92%) rename src/main/java/fr/yuki/{YukiRPFramework => yrpf}/character/CharacterStyle.java (95%) rename src/main/java/fr/yuki/{YukiRPFramework => yrpf}/character/CharacterToolAnimation.java (86%) rename src/main/java/fr/yuki/{YukiRPFramework => yrpf}/commands/AddDeliveryPointCommand.java (82%) rename src/main/java/fr/yuki/{YukiRPFramework => yrpf}/commands/AddGatherItemCommand.java (73%) rename src/main/java/fr/yuki/{YukiRPFramework => yrpf}/commands/AddItemAllCommand.java (72%) rename src/main/java/fr/yuki/{YukiRPFramework => yrpf}/commands/AnnCommand.java (78%) rename src/main/java/fr/yuki/{YukiRPFramework => yrpf}/commands/BanCommand.java (87%) rename src/main/java/fr/yuki/{YukiRPFramework => yrpf}/commands/BringCommand.java (85%) rename src/main/java/fr/yuki/{YukiRPFramework => yrpf}/commands/CreateHouseCommand.java (72%) rename src/main/java/fr/yuki/{YukiRPFramework => yrpf}/commands/CuffCommand.java (81%) rename src/main/java/fr/yuki/{YukiRPFramework => yrpf}/commands/DVCommand.java (79%) rename src/main/java/fr/yuki/{YukiRPFramework => yrpf}/commands/DebugCharacterToolCommand.java (86%) rename src/main/java/fr/yuki/{YukiRPFramework => yrpf}/commands/DebugHouseCommand.java (78%) rename src/main/java/fr/yuki/{YukiRPFramework => yrpf}/commands/DebugObjectPlacementCommand.java (68%) rename src/main/java/fr/yuki/{YukiRPFramework => yrpf}/commands/DebugTestCommand.java (73%) rename src/main/java/fr/yuki/{YukiRPFramework => yrpf}/commands/DebugVehicleStorageLayoutCommand.java (81%) rename src/main/java/fr/yuki/{YukiRPFramework => yrpf}/commands/FlipCommand.java (83%) rename src/main/java/fr/yuki/{YukiRPFramework => yrpf}/commands/ForceGarbageCommand.java (84%) rename src/main/java/fr/yuki/{YukiRPFramework => yrpf}/commands/FreeHouseCommand.java (69%) rename src/main/java/fr/yuki/{YukiRPFramework => yrpf}/commands/GetIdCommand.java (82%) rename src/main/java/fr/yuki/{YukiRPFramework => yrpf}/commands/GiveHouseKeyCommand.java (78%) rename src/main/java/fr/yuki/{YukiRPFramework => yrpf}/commands/GotoCommand.java (80%) rename src/main/java/fr/yuki/{YukiRPFramework => yrpf}/commands/InvisCommand.java (82%) rename src/main/java/fr/yuki/{YukiRPFramework => yrpf}/commands/ItemCommand.java (69%) rename src/main/java/fr/yuki/{YukiRPFramework => yrpf}/commands/KickCommand.java (83%) rename src/main/java/fr/yuki/{YukiRPFramework => yrpf}/commands/LocCommand.java (68%) rename src/main/java/fr/yuki/{YukiRPFramework => yrpf}/commands/MoveCommand.java (81%) rename src/main/java/fr/yuki/{YukiRPFramework => yrpf}/commands/NitroCommand.java (85%) rename src/main/java/fr/yuki/{YukiRPFramework => yrpf}/commands/RegenPhoneNumberCommand.java (84%) rename src/main/java/fr/yuki/{YukiRPFramework => yrpf}/commands/RequestCharacterCreationCommand.java (84%) rename src/main/java/fr/yuki/{YukiRPFramework => yrpf}/commands/ReviveCommand.java (84%) rename src/main/java/fr/yuki/{YukiRPFramework => yrpf}/commands/SetAdminLevelCommand.java (86%) rename src/main/java/fr/yuki/{YukiRPFramework => yrpf}/commands/SetCharacterScaleCommand.java (85%) rename src/main/java/fr/yuki/{YukiRPFramework => yrpf}/commands/SetClotheCommand.java (83%) rename src/main/java/fr/yuki/{YukiRPFramework => yrpf}/commands/SetCommandLevelCommand.java (88%) rename src/main/java/fr/yuki/{YukiRPFramework => yrpf}/commands/SetHousePropsCommand.java (68%) rename src/main/java/fr/yuki/{YukiRPFramework => yrpf}/commands/SetLangCommand.java (75%) rename src/main/java/fr/yuki/{YukiRPFramework => yrpf}/commands/SetTimeCommand.java (79%) rename src/main/java/fr/yuki/{YukiRPFramework => yrpf}/commands/SetWhitelistCommand.java (74%) rename src/main/java/fr/yuki/{YukiRPFramework => yrpf}/commands/ShowGatherItemListCommand.java (68%) rename src/main/java/fr/yuki/{YukiRPFramework => yrpf}/commands/VCommand.java (77%) rename src/main/java/fr/yuki/{YukiRPFramework => yrpf}/dao/GrowboxDAO.java (87%) rename src/main/java/fr/yuki/{YukiRPFramework => yrpf}/dao/HouseItemDAO.java (92%) rename src/main/java/fr/yuki/{YukiRPFramework => yrpf}/dao/InventoryDAO.java (93%) rename src/main/java/fr/yuki/{YukiRPFramework => yrpf}/dao/ItemTemplateDAO.java (91%) rename src/main/java/fr/yuki/{YukiRPFramework => yrpf}/dao/JobLevelDAO.java (82%) rename src/main/java/fr/yuki/{YukiRPFramework => yrpf}/dao/JobNPCDAO.java (81%) rename src/main/java/fr/yuki/{YukiRPFramework => yrpf}/dao/JobOutfitDAO.java (84%) rename src/main/java/fr/yuki/{YukiRPFramework => yrpf}/dao/JobToolDAO.java (82%) rename src/main/java/fr/yuki/{YukiRPFramework => yrpf}/dao/JobVehicleRentalDAO.java (88%) rename src/main/java/fr/yuki/{YukiRPFramework => yrpf}/dao/OutfitPointDAO.java (81%) rename src/main/java/fr/yuki/{YukiRPFramework => yrpf}/dao/PhoneContactDAO.java (86%) rename src/main/java/fr/yuki/{YukiRPFramework => yrpf}/dao/SellerDAO.java (79%) rename src/main/java/fr/yuki/{YukiRPFramework => yrpf}/dao/VehicleGarageDAO.java (94%) rename src/main/java/fr/yuki/{YukiRPFramework => yrpf}/enums/ItemTemplateEnum.java (90%) rename src/main/java/fr/yuki/{YukiRPFramework => yrpf}/enums/JobEnum.java (84%) rename src/main/java/fr/yuki/{YukiRPFramework => yrpf}/enums/ToastTypeEnum.java (81%) rename src/main/java/fr/yuki/{YukiRPFramework => yrpf}/house/itembehavior/ATMBehavior.java (72%) rename src/main/java/fr/yuki/{YukiRPFramework => yrpf}/house/itembehavior/ItemBehavior.java (72%) rename src/main/java/fr/yuki/{YukiRPFramework => yrpf}/house/itembehavior/RadioBehavior.java (84%) rename src/main/java/fr/yuki/{YukiRPFramework => yrpf}/i18n/I18n.java (85%) rename src/main/java/fr/yuki/{YukiRPFramework => yrpf}/inventory/Inventory.java (89%) rename src/main/java/fr/yuki/{YukiRPFramework => yrpf}/inventory/InventoryItem.java (88%) rename src/main/java/fr/yuki/{YukiRPFramework => yrpf}/job/CustomJob.java (84%) rename src/main/java/fr/yuki/{YukiRPFramework => yrpf}/job/DeliveryJob.java (72%) rename src/main/java/fr/yuki/{YukiRPFramework => yrpf}/job/DeliveryPointConfig.java (87%) rename src/main/java/fr/yuki/{YukiRPFramework => yrpf}/job/EMSJob.java (80%) rename src/main/java/fr/yuki/{YukiRPFramework => yrpf}/job/FisherJob.java (70%) rename src/main/java/fr/yuki/{YukiRPFramework => yrpf}/job/GarbageJob.java (71%) rename src/main/java/fr/yuki/{YukiRPFramework => yrpf}/job/Job.java (91%) rename src/main/java/fr/yuki/{YukiRPFramework => yrpf}/job/JobConfig.java (72%) rename src/main/java/fr/yuki/{YukiRPFramework => yrpf}/job/JobSpawn.java (87%) rename src/main/java/fr/yuki/{YukiRPFramework => yrpf}/job/JobSpawnPosition.java (88%) rename src/main/java/fr/yuki/{YukiRPFramework => yrpf}/job/LumberjackJob.java (78%) rename src/main/java/fr/yuki/{YukiRPFramework => yrpf}/job/MinerJob.java (69%) rename src/main/java/fr/yuki/{YukiRPFramework => yrpf}/job/ObjectPlacementInstance.java (91%) rename src/main/java/fr/yuki/{YukiRPFramework => yrpf}/job/PoliceJob.java (81%) rename src/main/java/fr/yuki/{YukiRPFramework => yrpf}/job/WearableWorldObject.java (91%) rename src/main/java/fr/yuki/{YukiRPFramework => yrpf}/job/WeedJob.java (84%) rename src/main/java/fr/yuki/{YukiRPFramework => yrpf}/job/WorldHarvestObject.java (87%) rename src/main/java/fr/yuki/{YukiRPFramework => yrpf}/job/customGoal/DeliveryPointGoal.java (76%) rename src/main/java/fr/yuki/{YukiRPFramework => yrpf}/job/deliveryPackage/DeliveryPackage.java (80%) rename src/main/java/fr/yuki/{YukiRPFramework => yrpf}/job/deliveryPackage/GeneratorDeliveryPackage.java (85%) rename src/main/java/fr/yuki/{YukiRPFramework => yrpf}/job/deliveryPackage/GenericDeliveryPackage.java (83%) rename src/main/java/fr/yuki/{YukiRPFramework => yrpf}/job/deliveryPackage/GrowBoxDeliveryPackage.java (83%) rename src/main/java/fr/yuki/{YukiRPFramework => yrpf}/job/harvest/CooperOre.java (80%) rename src/main/java/fr/yuki/{YukiRPFramework => yrpf}/job/harvest/CustomHarvestableObject.java (85%) rename src/main/java/fr/yuki/{YukiRPFramework => yrpf}/job/harvest/DeliveryPackage.java (80%) rename src/main/java/fr/yuki/{YukiRPFramework => yrpf}/job/harvest/Garbage.java (81%) rename src/main/java/fr/yuki/{YukiRPFramework => yrpf}/job/harvest/HarvestableObject.java (72%) rename src/main/java/fr/yuki/{YukiRPFramework => yrpf}/job/harvest/IronOre.java (80%) rename src/main/java/fr/yuki/{YukiRPFramework => yrpf}/job/harvest/LumberjackTreeCommon.java (76%) rename src/main/java/fr/yuki/{YukiRPFramework => yrpf}/job/harvest/Salmon.java (79%) rename src/main/java/fr/yuki/{YukiRPFramework => yrpf}/job/harvest/Turtle.java (79%) rename src/main/java/fr/yuki/{YukiRPFramework => yrpf}/job/placementObject/GeneratorPlacementInstance.java (61%) rename src/main/java/fr/yuki/{YukiRPFramework => yrpf}/job/placementObject/GenericPlacementInstance.java (58%) rename src/main/java/fr/yuki/{YukiRPFramework => yrpf}/job/placementObject/GrowBoxPlacementInstance.java (68%) rename src/main/java/fr/yuki/{YukiRPFramework => yrpf}/job/tools/GarbageBin.java (67%) rename src/main/java/fr/yuki/{YukiRPFramework => yrpf}/job/tools/Generator.java (74%) rename src/main/java/fr/yuki/{YukiRPFramework => yrpf}/job/tools/GrowBox.java (86%) rename src/main/java/fr/yuki/{YukiRPFramework => yrpf}/job/tools/JobToolHandler.java (73%) rename src/main/java/fr/yuki/{YukiRPFramework => yrpf}/job/tools/Sawmill.java (82%) rename src/main/java/fr/yuki/{YukiRPFramework => yrpf}/job/tools/growbox/Pot.java (91%) rename src/main/java/fr/yuki/{YukiRPFramework => yrpf}/luaapi/AddAmbiantSoundEF.java (88%) rename src/main/java/fr/yuki/{YukiRPFramework => yrpf}/luaapi/AddItemEF.java (70%) rename src/main/java/fr/yuki/{YukiRPFramework => yrpf}/luaapi/AddRestrictedZoneEF.java (80%) rename src/main/java/fr/yuki/{YukiRPFramework => yrpf}/luaapi/GetAccountEF.java (74%) rename src/main/java/fr/yuki/{YukiRPFramework => yrpf}/luaapi/GetAdminLevelEF.java (73%) rename src/main/java/fr/yuki/{YukiRPFramework => yrpf}/luaapi/LuaAPIManager.java (90%) rename src/main/java/fr/yuki/{YukiRPFramework => yrpf}/luaapi/SendToastEF.java (72%) rename src/main/java/fr/yuki/{YukiRPFramework => yrpf}/luaapi/job/AddItemResourceRequirementEF.java (75%) rename src/main/java/fr/yuki/{YukiRPFramework => yrpf}/luaapi/job/AddJobLevelEF.java (76%) rename src/main/java/fr/yuki/{YukiRPFramework => yrpf}/luaapi/job/AddJobResourceEF.java (82%) rename src/main/java/fr/yuki/{YukiRPFramework => yrpf}/luaapi/job/CreateJobEF.java (75%) rename src/main/java/fr/yuki/{YukiRPFramework => yrpf}/luaapi/job/SetHarvestAnimationEF.java (75%) rename src/main/java/fr/yuki/{YukiRPFramework => yrpf}/manager/ATMManager.java (87%) create mode 100644 src/main/java/fr/yuki/yrpf/manager/AccountManager.java rename src/main/java/fr/yuki/{YukiRPFramework => yrpf}/manager/CharacterManager.java (94%) rename src/main/java/fr/yuki/{YukiRPFramework/manager/CompagnyManager.java => yrpf/manager/CompanyManager.java} (63%) rename src/main/java/fr/yuki/{YukiRPFramework => yrpf}/manager/FuelManager.java (82%) rename src/main/java/fr/yuki/{YukiRPFramework => yrpf}/manager/GarageManager.java (93%) rename src/main/java/fr/yuki/{YukiRPFramework => yrpf}/manager/GrowboxManager.java (90%) rename src/main/java/fr/yuki/{YukiRPFramework => yrpf}/manager/HouseManager.java (87%) rename src/main/java/fr/yuki/{YukiRPFramework => yrpf}/manager/InventoryManager.java (87%) rename src/main/java/fr/yuki/{YukiRPFramework => yrpf}/manager/ItemManager.java (91%) rename src/main/java/fr/yuki/{YukiRPFramework => yrpf}/manager/JobManager.java (96%) rename src/main/java/fr/yuki/{YukiRPFramework => yrpf}/manager/MapManager.java (70%) rename src/main/java/fr/yuki/{YukiRPFramework => yrpf}/manager/ModdingManager.java (89%) rename src/main/java/fr/yuki/{YukiRPFramework => yrpf}/manager/PhoneManager.java (92%) rename src/main/java/fr/yuki/{YukiRPFramework => yrpf}/manager/SoundManager.java (95%) rename src/main/java/fr/yuki/{YukiRPFramework => yrpf}/manager/TebexManager.java (88%) rename src/main/java/fr/yuki/{YukiRPFramework => yrpf}/manager/TimeManager.java (94%) rename src/main/java/fr/yuki/{YukiRPFramework => yrpf}/manager/UIStateManager.java (96%) rename src/main/java/fr/yuki/{YukiRPFramework => yrpf}/manager/VehicleManager.java (91%) rename src/main/java/fr/yuki/{YukiRPFramework => yrpf}/manager/WeaponManager.java (88%) rename src/main/java/fr/yuki/{YukiRPFramework => yrpf}/manager/WorldManager.java (90%) rename src/main/java/fr/yuki/{YukiRPFramework => yrpf}/modding/Line3D.java (93%) rename src/main/java/fr/yuki/{YukiRPFramework => yrpf}/modding/LoopSound3D.java (94%) rename src/main/java/fr/yuki/{YukiRPFramework => yrpf}/modding/ModdingCustomModel.java (83%) rename src/main/java/fr/yuki/{YukiRPFramework => yrpf}/modding/ModdingFile.java (85%) create mode 100644 src/main/java/fr/yuki/yrpf/model/ATM.java rename src/main/java/fr/yuki/{YukiRPFramework => yrpf}/model/Account.java (93%) create mode 100644 src/main/java/fr/yuki/yrpf/model/AccountJobWhitelist.java rename src/main/java/fr/yuki/{YukiRPFramework => yrpf}/model/Bag.java (92%) create mode 100644 src/main/java/fr/yuki/yrpf/model/Company.java create mode 100644 src/main/java/fr/yuki/yrpf/model/FuelPoint.java rename src/main/java/fr/yuki/{YukiRPFramework => yrpf}/model/GameMapConfig.java (88%) rename src/main/java/fr/yuki/{YukiRPFramework => yrpf}/model/GameMapMarker.java (89%) rename src/main/java/fr/yuki/{YukiRPFramework => yrpf}/model/GameMapZone.java (87%) create mode 100644 src/main/java/fr/yuki/yrpf/model/Garage.java rename src/main/java/fr/yuki/{YukiRPFramework => yrpf}/model/GroundItem.java (87%) rename src/main/java/fr/yuki/{YukiRPFramework => yrpf}/model/GrowboxModel.java (90%) create mode 100644 src/main/java/fr/yuki/yrpf/model/House.java rename src/main/java/fr/yuki/{YukiRPFramework => yrpf}/model/HouseItemObject.java (87%) rename src/main/java/fr/yuki/{YukiRPFramework => yrpf}/model/ItemShopObject.java (88%) rename src/main/java/fr/yuki/{YukiRPFramework => yrpf}/model/ItemTemplate.java (93%) rename src/main/java/fr/yuki/{YukiRPFramework => yrpf}/model/JobLevel.java (90%) rename src/main/java/fr/yuki/{YukiRPFramework => yrpf}/model/JobNPC.java (91%) rename src/main/java/fr/yuki/{YukiRPFramework => yrpf}/model/JobNPCListItem.java (87%) rename src/main/java/fr/yuki/{YukiRPFramework => yrpf}/model/JobOutfit.java (93%) rename src/main/java/fr/yuki/{YukiRPFramework => yrpf}/model/JobOutfitItem.java (85%) rename src/main/java/fr/yuki/{YukiRPFramework => yrpf}/model/JobTool.java (91%) rename src/main/java/fr/yuki/{YukiRPFramework => yrpf}/model/JobVehicleRental.java (93%) rename src/main/java/fr/yuki/{YukiRPFramework => yrpf}/model/Mask.java (91%) rename src/main/java/fr/yuki/{YukiRPFramework => yrpf}/model/OutfitPoint.java (90%) rename src/main/java/fr/yuki/{YukiRPFramework => yrpf}/model/PhoneContact.java (89%) rename src/main/java/fr/yuki/{YukiRPFramework => yrpf}/model/SellListItem.java (89%) rename src/main/java/fr/yuki/{YukiRPFramework => yrpf}/model/Seller.java (93%) rename src/main/java/fr/yuki/{YukiRPFramework => yrpf}/model/SellerItem.java (83%) rename src/main/java/fr/yuki/{YukiRPFramework => yrpf}/model/VehicleGarage.java (92%) create mode 100644 src/main/java/fr/yuki/yrpf/model/VehicleSeller.java rename src/main/java/fr/yuki/{YukiRPFramework => yrpf}/net/payload/AddCharacterJobPayload.java (84%) rename src/main/java/fr/yuki/{YukiRPFramework => yrpf}/net/payload/AddClientContactPayload.java (87%) rename src/main/java/fr/yuki/{YukiRPFramework => yrpf}/net/payload/AddCompagnyEmployeePayload.java (89%) rename src/main/java/fr/yuki/{YukiRPFramework => yrpf}/net/payload/AddGameMapMarkerPayload.java (75%) rename src/main/java/fr/yuki/{YukiRPFramework => yrpf}/net/payload/AddGameMapZonePayload.java (66%) rename src/main/java/fr/yuki/{YukiRPFramework => yrpf}/net/payload/AddGenericMenuItemPayload.java (87%) rename src/main/java/fr/yuki/{YukiRPFramework => yrpf}/net/payload/AddGrowboxMenuItemPayload.java (89%) rename src/main/java/fr/yuki/{YukiRPFramework => yrpf}/net/payload/AddItemInventoryPayload.java (88%) rename src/main/java/fr/yuki/{YukiRPFramework => yrpf}/net/payload/AddPhoneConversationPayload.java (88%) rename src/main/java/fr/yuki/{YukiRPFramework => yrpf}/net/payload/AddPhoneMessagePayload.java (89%) rename src/main/java/fr/yuki/{YukiRPFramework => yrpf}/net/payload/AddPhoneUrgencyPayload.java (91%) rename src/main/java/fr/yuki/{YukiRPFramework => yrpf}/net/payload/AddSellerItemPayload.java (87%) rename src/main/java/fr/yuki/{YukiRPFramework => yrpf}/net/payload/AddToastPayload.java (87%) rename src/main/java/fr/yuki/{YukiRPFramework => yrpf}/net/payload/AddVChestItemPayload.java (88%) rename src/main/java/fr/yuki/{YukiRPFramework => yrpf}/net/payload/AddVSellerVehiclePayload.java (90%) rename src/main/java/fr/yuki/{YukiRPFramework => yrpf}/net/payload/AddVehicleGaragePayload.java (89%) rename src/main/java/fr/yuki/{YukiRPFramework => yrpf}/net/payload/AddXpBarItemPayload.java (83%) rename src/main/java/fr/yuki/{YukiRPFramework => yrpf}/net/payload/BuySellItemRequestPayload.java (84%) rename src/main/java/fr/yuki/{YukiRPFramework => yrpf}/net/payload/ClearCompagnyEmployeesPayload.java (79%) rename src/main/java/fr/yuki/{YukiRPFramework => yrpf}/net/payload/ClearGenericMenuPayload.java (78%) rename src/main/java/fr/yuki/{YukiRPFramework => yrpf}/net/payload/ClearPhoneUrgencyPayload.java (78%) rename src/main/java/fr/yuki/{YukiRPFramework => yrpf}/net/payload/GrowboxFillWaterPotPayload.java (85%) rename src/main/java/fr/yuki/{YukiRPFramework => yrpf}/net/payload/PhoneAddContactPayload.java (84%) rename src/main/java/fr/yuki/{YukiRPFramework => yrpf}/net/payload/RemoteItemInventoryPayload.java (81%) rename src/main/java/fr/yuki/{YukiRPFramework => yrpf}/net/payload/RequestBuyVehiclePayload.java (86%) rename src/main/java/fr/yuki/{YukiRPFramework => yrpf}/net/payload/RequestInventoryContentPayload.java (77%) rename src/main/java/fr/yuki/{YukiRPFramework => yrpf}/net/payload/RequestPhoneSendMessagePayload.java (85%) rename src/main/java/fr/yuki/{YukiRPFramework => yrpf}/net/payload/RequestThrowItemPayload.java (84%) rename src/main/java/fr/yuki/{YukiRPFramework => yrpf}/net/payload/RequestUseItemPayload.java (75%) rename src/main/java/fr/yuki/{YukiRPFramework => yrpf}/net/payload/ResetVehicleGaragePayload.java (79%) rename src/main/java/fr/yuki/{YukiRPFramework => yrpf}/net/payload/SetBankCashAmount.java (87%) rename src/main/java/fr/yuki/{YukiRPFramework => yrpf}/net/payload/SetCompagnyPayload.java (89%) rename src/main/java/fr/yuki/{YukiRPFramework => yrpf}/net/payload/SetFoodPayload.java (87%) rename src/main/java/fr/yuki/{YukiRPFramework => yrpf}/net/payload/SetGrowboxPayload.java (82%) rename src/main/java/fr/yuki/{YukiRPFramework => yrpf}/net/payload/SetHouseInfosPayload.java (87%) rename src/main/java/fr/yuki/{YukiRPFramework => yrpf}/net/payload/SetLangPayload.java (82%) rename src/main/java/fr/yuki/{YukiRPFramework => yrpf}/net/payload/SetPhoneCallStatePayload.java (88%) rename src/main/java/fr/yuki/{YukiRPFramework => yrpf}/net/payload/SetPhoneNumberPayload.java (85%) rename src/main/java/fr/yuki/{YukiRPFramework => yrpf}/net/payload/SetWindowStatePayload.java (88%) rename src/main/java/fr/yuki/{YukiRPFramework => yrpf}/net/payload/SolveUrgencyPayload.java (83%) rename src/main/java/fr/yuki/{YukiRPFramework => yrpf}/net/payload/StartPhoneCallTimerPayload.java (79%) rename src/main/java/fr/yuki/{YukiRPFramework => yrpf}/net/payload/StyleSavePartPayload.java (85%) rename src/main/java/fr/yuki/{YukiRPFramework => yrpf}/net/payload/UpdateInventoryWeightPayload.java (88%) rename src/main/java/fr/yuki/{YukiRPFramework => yrpf}/net/payload/UpdateItemInventoryPayload.java (87%) rename src/main/java/fr/yuki/{YukiRPFramework => yrpf}/net/payload/UrgencyRequestPayload.java (84%) rename src/main/java/fr/yuki/{YukiRPFramework => yrpf}/phone/PhoneCall.java (87%) rename src/main/java/fr/yuki/{YukiRPFramework => yrpf}/phone/PhoneMessage.java (90%) rename src/main/java/fr/yuki/{YukiRPFramework => yrpf}/phone/UrgencyPhoneMessage.java (89%) rename src/main/java/fr/yuki/{YukiRPFramework => yrpf}/tebex/TebexAPI.java (89%) rename src/main/java/fr/yuki/{YukiRPFramework => yrpf}/tebex/responses/Account.java (92%) rename src/main/java/fr/yuki/{YukiRPFramework => yrpf}/tebex/responses/Command.java (92%) rename src/main/java/fr/yuki/{YukiRPFramework => yrpf}/tebex/responses/Conditions.java (73%) rename src/main/java/fr/yuki/{YukiRPFramework => yrpf}/tebex/responses/Currency.java (84%) rename src/main/java/fr/yuki/{YukiRPFramework => yrpf}/tebex/responses/PlayerMeta.java (88%) rename src/main/java/fr/yuki/{YukiRPFramework => yrpf}/tebex/responses/Server.java (81%) rename src/main/java/fr/yuki/{YukiRPFramework => yrpf}/tebex/responses/TebexCommandQueue.java (85%) rename src/main/java/fr/yuki/{YukiRPFramework => yrpf}/tebex/responses/TebexCommandQueueMeta.java (77%) rename src/main/java/fr/yuki/{YukiRPFramework => yrpf}/tebex/responses/TebexInformationResponse.java (84%) rename src/main/java/fr/yuki/{YukiRPFramework => yrpf}/tebex/responses/TebexPlayer.java (89%) rename src/main/java/fr/yuki/{YukiRPFramework => yrpf}/ui/GenericMenu.java (82%) rename src/main/java/fr/yuki/{YukiRPFramework => yrpf}/ui/GenericMenuItem.java (85%) rename src/main/java/fr/yuki/{YukiRPFramework => yrpf}/ui/UIState.java (94%) rename src/main/java/fr/yuki/{YukiRPFramework => yrpf}/utils/Basic.java (75%) rename src/main/java/fr/yuki/{YukiRPFramework => yrpf}/utils/ServerConfig.java (94%) rename src/main/java/fr/yuki/{YukiRPFramework => yrpf}/vehicle/storeLayout/GarbageTruckStoreLayout.java (88%) rename src/main/java/fr/yuki/{YukiRPFramework => yrpf}/vehicle/storeLayout/MiniPickupStoreLayout.java (94%) rename src/main/java/fr/yuki/{YukiRPFramework => yrpf}/vehicle/storeLayout/MiniTruckStoreLayout.java (94%) rename src/main/java/fr/yuki/{YukiRPFramework => yrpf}/vehicle/storeLayout/StoreLayoutTransform.java (89%) rename src/main/java/fr/yuki/{YukiRPFramework => yrpf}/vehicle/storeLayout/TruckStoreLayout.java (91%) rename src/main/java/fr/yuki/{YukiRPFramework => yrpf}/vehicle/storeLayout/VehicleStoreLayout.java (88%) rename src/main/java/fr/yuki/{YukiRPFramework => yrpf}/world/RestrictedZone.java (72%) diff --git a/src/main/java/fr/yuki/YukiRPFramework/dao/ATMDAO.java b/src/main/java/fr/yuki/YukiRPFramework/dao/ATMDAO.java deleted file mode 100644 index 8f51949..0000000 --- a/src/main/java/fr/yuki/YukiRPFramework/dao/ATMDAO.java +++ /dev/null @@ -1,28 +0,0 @@ -package fr.yuki.YukiRPFramework.dao; - -import fr.yuki.YukiRPFramework.Database; -import fr.yuki.YukiRPFramework.inventory.Inventory; -import fr.yuki.YukiRPFramework.model.ATM; - -import java.sql.PreparedStatement; -import java.sql.ResultSet; -import java.sql.SQLException; -import java.util.ArrayList; -import java.util.HashMap; - -public class ATMDAO { - public static ArrayList loadATMs() throws SQLException { - ArrayList atms = new ArrayList<>(); - PreparedStatement preparedStatement = Database.getConnection().prepareStatement("SELECT * FROM tbl_atm"); - ResultSet resultSet = preparedStatement.executeQuery(); - while(resultSet.next()) { - ATM atm = new ATM(); - atm.setId(resultSet.getInt("id_atm")); - atm.setX(resultSet.getFloat("x")); - atm.setY(resultSet.getFloat("y")); - atm.setZ(resultSet.getFloat("z")); - atms.add(atm); - } - return atms; - } -} diff --git a/src/main/java/fr/yuki/YukiRPFramework/dao/AccountJobWhitelistDAO.java b/src/main/java/fr/yuki/YukiRPFramework/dao/AccountJobWhitelistDAO.java deleted file mode 100644 index 735959c..0000000 --- a/src/main/java/fr/yuki/YukiRPFramework/dao/AccountJobWhitelistDAO.java +++ /dev/null @@ -1,43 +0,0 @@ -package fr.yuki.YukiRPFramework.dao; - -import fr.yuki.YukiRPFramework.Database; -import fr.yuki.YukiRPFramework.model.ATM; -import fr.yuki.YukiRPFramework.model.AccountJobWhitelist; - -import java.sql.*; -import java.util.ArrayList; - -public class AccountJobWhitelistDAO { - public static ArrayList loadAccountJobWhitelist() throws SQLException { - ArrayList accountJobWhitelists = new ArrayList<>(); - PreparedStatement preparedStatement = Database.getConnection().prepareStatement("SELECT * FROM tbl_account_job_whitelist"); - ResultSet resultSet = preparedStatement.executeQuery(); - while(resultSet.next()) { - AccountJobWhitelist accountJobWhitelist = new AccountJobWhitelist(); - accountJobWhitelist.setId(resultSet.getInt("id_account_job_whitelist")); - accountJobWhitelist.setAccountId(resultSet.getInt("id_account")); - accountJobWhitelist.setJobId(resultSet.getString("id_job")); - accountJobWhitelist.setJobLevel(resultSet.getInt("job_level")); - accountJobWhitelists.add(accountJobWhitelist); - } - return accountJobWhitelists; - } - - public static void insertAccountJobWhiteList(AccountJobWhitelist accountJobWhitelist) throws SQLException { - // Execute the query - PreparedStatement preparedStatement = Database.getConnection() - .prepareStatement("INSERT INTO tbl_account_job_whitelist " + - "(id_account, id_job, job_level) VALUES " + - "(?,?,?)", Statement.RETURN_GENERATED_KEYS); - - preparedStatement.setInt(1, accountJobWhitelist.getAccountId()); - preparedStatement.setString(2, accountJobWhitelist.getJobId()); - preparedStatement.setInt(3, accountJobWhitelist.getJobLevel()); - preparedStatement.executeUpdate(); - - ResultSet returnId = preparedStatement.getGeneratedKeys(); - if(returnId.next()) { - accountJobWhitelist.setId(returnId.getInt(1)); - } - } -} diff --git a/src/main/java/fr/yuki/YukiRPFramework/dao/CompagnyDAO.java b/src/main/java/fr/yuki/YukiRPFramework/dao/CompagnyDAO.java deleted file mode 100644 index cc3f2f8..0000000 --- a/src/main/java/fr/yuki/YukiRPFramework/dao/CompagnyDAO.java +++ /dev/null @@ -1,49 +0,0 @@ -package fr.yuki.YukiRPFramework.dao; - -import fr.yuki.YukiRPFramework.Database; -import fr.yuki.YukiRPFramework.model.Compagny; -import fr.yuki.YukiRPFramework.model.PhoneContact; - -import java.sql.PreparedStatement; -import java.sql.ResultSet; -import java.sql.SQLException; -import java.sql.Statement; -import java.util.ArrayList; - -public class CompagnyDAO { - public static ArrayList loadCompagnies() throws SQLException { - ArrayList compagnies = new ArrayList<>(); - PreparedStatement preparedStatement = Database.getConnection().prepareStatement("SELECT * FROM tbl_compagny"); - ResultSet resultSet = preparedStatement.executeQuery(); - while(resultSet.next()) { - Compagny compagny = new Compagny(); - compagny.setId(resultSet.getInt("id_compagny")); - compagny.setName(resultSet.getString("name")); - compagny.setBankCash(resultSet.getInt("bank_cash")); - compagny.setOwner(resultSet.getString("owner")); - compagny.setMaxMember(resultSet.getInt("max_member")); - - compagnies.add(compagny); - } - return compagnies; - } - - public static void insertCompagny(Compagny compagny) throws SQLException { - // Execute the query - PreparedStatement preparedStatement = Database.getConnection() - .prepareStatement("INSERT INTO tbl_compagny " + - "(name, bank_cash, owner, max_member) VALUES " + - "(?,?,?, ?)", Statement.RETURN_GENERATED_KEYS); - - preparedStatement.setString(1, compagny.getName()); - preparedStatement.setInt(2, compagny.getBankCash()); - preparedStatement.setString(3, compagny.getOwner()); - preparedStatement.setInt(4, compagny.getMaxMember()); - preparedStatement.executeUpdate(); - - ResultSet returnId = preparedStatement.getGeneratedKeys(); - if(returnId.next()) { - compagny.setId(returnId.getInt(1)); - } - } -} diff --git a/src/main/java/fr/yuki/YukiRPFramework/dao/FuelPointDAO.java b/src/main/java/fr/yuki/YukiRPFramework/dao/FuelPointDAO.java deleted file mode 100644 index fd2a378..0000000 --- a/src/main/java/fr/yuki/YukiRPFramework/dao/FuelPointDAO.java +++ /dev/null @@ -1,29 +0,0 @@ -package fr.yuki.YukiRPFramework.dao; - -import fr.yuki.YukiRPFramework.Database; -import fr.yuki.YukiRPFramework.model.FuelPoint; -import fr.yuki.YukiRPFramework.model.JobOutfit; - -import java.sql.PreparedStatement; -import java.sql.ResultSet; -import java.sql.SQLException; -import java.util.ArrayList; - -public class FuelPointDAO { - public static ArrayList loadFuelPoints() throws SQLException { - ArrayList fuelPoints = new ArrayList<>(); - PreparedStatement preparedStatement = Database.getConnection().prepareStatement("SELECT * FROM tbl_fuel_point"); - ResultSet resultSet = preparedStatement.executeQuery(); - while(resultSet.next()) { - FuelPoint fuelPoint = new FuelPoint(); - fuelPoint.setId(resultSet.getInt("id_fuel_point")); - fuelPoint.setX(resultSet.getDouble("x")); - fuelPoint.setY(resultSet.getDouble("y")); - fuelPoint.setZ(resultSet.getDouble("z")); - fuelPoint.setPrice(resultSet.getInt("price")); - - fuelPoints.add(fuelPoint); - } - return fuelPoints; - } -} diff --git a/src/main/java/fr/yuki/YukiRPFramework/dao/GarageDAO.java b/src/main/java/fr/yuki/YukiRPFramework/dao/GarageDAO.java deleted file mode 100644 index 5da8889..0000000 --- a/src/main/java/fr/yuki/YukiRPFramework/dao/GarageDAO.java +++ /dev/null @@ -1,29 +0,0 @@ -package fr.yuki.YukiRPFramework.dao; - -import fr.yuki.YukiRPFramework.Database; -import fr.yuki.YukiRPFramework.model.ATM; -import fr.yuki.YukiRPFramework.model.Garage; - -import java.sql.PreparedStatement; -import java.sql.ResultSet; -import java.sql.SQLException; -import java.util.ArrayList; - -public class GarageDAO { - public static ArrayList loadGarages() throws SQLException { - ArrayList garages = new ArrayList<>(); - PreparedStatement preparedStatement = Database.getConnection().prepareStatement("SELECT * FROM tbl_garage"); - ResultSet resultSet = preparedStatement.executeQuery(); - while(resultSet.next()) { - Garage garage = new Garage(); - garage.setId(resultSet.getInt("id_garage")); - garage.setName(resultSet.getString("name")); - garage.setCostToUse(resultSet.getInt("cost_to_use")); - garage.setX(resultSet.getDouble("x")); - garage.setY(resultSet.getDouble("y")); - garage.setZ(resultSet.getDouble("z")); - garages.add(garage); - } - return garages; - } -} diff --git a/src/main/java/fr/yuki/YukiRPFramework/dao/HouseDAO.java b/src/main/java/fr/yuki/YukiRPFramework/dao/HouseDAO.java deleted file mode 100644 index d3386aa..0000000 --- a/src/main/java/fr/yuki/YukiRPFramework/dao/HouseDAO.java +++ /dev/null @@ -1,70 +0,0 @@ -package fr.yuki.YukiRPFramework.dao; - -import fr.yuki.YukiRPFramework.Database; -import fr.yuki.YukiRPFramework.model.ATM; -import fr.yuki.YukiRPFramework.model.AccountJobWhitelist; -import fr.yuki.YukiRPFramework.model.House; -import fr.yuki.YukiRPFramework.model.VehicleGarage; - -import java.sql.PreparedStatement; -import java.sql.ResultSet; -import java.sql.SQLException; -import java.sql.Statement; -import java.util.ArrayList; - -public class HouseDAO { - public static ArrayList loadHouses() throws SQLException { - ArrayList houses = new ArrayList<>(); - PreparedStatement preparedStatement = Database.getConnection().prepareStatement("SELECT * FROM tbl_house"); - ResultSet resultSet = preparedStatement.executeQuery(); - while(resultSet.next()) { - House house = new House(); - house.setId(resultSet.getInt("id_house")); - house.setAccountId(resultSet.getInt("id_account")); - house.setPrice(resultSet.getInt("price")); - house.setName(resultSet.getString("name")); - house.setSx(resultSet.getDouble("sx")); - house.setSy(resultSet.getDouble("sy")); - house.setSz(resultSet.getDouble("sz")); - house.setEx(resultSet.getDouble("ex")); - house.setEy(resultSet.getDouble("ey")); - house.setEz(resultSet.getDouble("ez")); - houses.add(house); - } - return houses; - } - - public static void saveHouse(House house) throws SQLException { - PreparedStatement preparedStatement = Database.getConnection() - .prepareStatement("UPDATE tbl_house SET id_account=?, price=?, name=? WHERE id_house=?"); - preparedStatement.setInt(1, house.getAccountId()); - preparedStatement.setInt(2, house.getPrice()); - preparedStatement.setString(3, house.getName()); - preparedStatement.setInt(4, house.getId()); - preparedStatement.execute(); - } - - public static void insertHouse(House house) throws SQLException { - // Execute the query - PreparedStatement preparedStatement = Database.getConnection() - .prepareStatement("INSERT INTO tbl_house " + - "(id_account, price, name, sx,sy,sz,ex,ey,ez) VALUES " + - "(?,?,?,?,?,?,?,?,?)", Statement.RETURN_GENERATED_KEYS); - - preparedStatement.setInt(1, house.getAccountId()); - preparedStatement.setInt(2, house.getPrice()); - preparedStatement.setString(3, house.getName()); - preparedStatement.setDouble(4, house.getSx()); - preparedStatement.setDouble(5, house.getSy()); - preparedStatement.setDouble(6, house.getSz()); - preparedStatement.setDouble(7, house.getEx()); - preparedStatement.setDouble(8, house.getEy()); - preparedStatement.setDouble(9, house.getEz()); - preparedStatement.executeUpdate(); - - ResultSet returnId = preparedStatement.getGeneratedKeys(); - if(returnId.next()) { - house.setId(returnId.getInt(1)); - } - } -} diff --git a/src/main/java/fr/yuki/YukiRPFramework/dao/VehicleSellerDAO.java b/src/main/java/fr/yuki/YukiRPFramework/dao/VehicleSellerDAO.java deleted file mode 100644 index 0a61196..0000000 --- a/src/main/java/fr/yuki/YukiRPFramework/dao/VehicleSellerDAO.java +++ /dev/null @@ -1,45 +0,0 @@ -package fr.yuki.YukiRPFramework.dao; - -import com.google.gson.Gson; -import com.google.gson.reflect.TypeToken; -import fr.yuki.YukiRPFramework.Database; -import fr.yuki.YukiRPFramework.inventory.InventoryItem; -import fr.yuki.YukiRPFramework.model.SellListItem; -import fr.yuki.YukiRPFramework.model.VehicleGarage; -import fr.yuki.YukiRPFramework.model.VehicleSeller; - -import java.sql.PreparedStatement; -import java.sql.ResultSet; -import java.sql.SQLException; -import java.util.ArrayList; - -public class VehicleSellerDAO { - - public static ArrayList loadVehicleSellers() throws SQLException { - ArrayList vehicleSellers = new ArrayList<>(); - PreparedStatement preparedStatement = Database.getConnection().prepareStatement("SELECT * FROM tbl_vehicle_seller"); - ResultSet resultSet = preparedStatement.executeQuery(); - while(resultSet.next()) { - VehicleSeller vehicleSeller = new VehicleSeller(); - - vehicleSeller.setId(resultSet.getInt("id_vehicle_seller")); - vehicleSeller.setName(resultSet.getString("name")); - vehicleSeller.setNpcClothing(resultSet.getInt("npc_clothing")); - vehicleSeller.setX(resultSet.getDouble("x")); - vehicleSeller.setY(resultSet.getDouble("y")); - vehicleSeller.setZ(resultSet.getDouble("z")); - vehicleSeller.setH(resultSet.getDouble("h")); - vehicleSeller.setsX(resultSet.getDouble("s_x")); - vehicleSeller.setsY(resultSet.getDouble("s_y")); - vehicleSeller.setsZ(resultSet.getDouble("s_z")); - vehicleSeller.setsH(resultSet.getDouble("s_h")); - vehicleSeller.setSellList(new Gson().fromJson(resultSet.getString("sell_list"), - new TypeToken>(){}.getType())); - - vehicleSellers.add(vehicleSeller); - } - preparedStatement.close(); - resultSet.close(); - return vehicleSellers; - } -} diff --git a/src/main/java/fr/yuki/YukiRPFramework/manager/AccountManager.java b/src/main/java/fr/yuki/YukiRPFramework/manager/AccountManager.java deleted file mode 100644 index c094222..0000000 --- a/src/main/java/fr/yuki/YukiRPFramework/manager/AccountManager.java +++ /dev/null @@ -1,21 +0,0 @@ -package fr.yuki.YukiRPFramework.manager; - -import fr.yuki.YukiRPFramework.dao.AccountJobWhitelistDAO; -import fr.yuki.YukiRPFramework.model.AccountJobWhitelist; -import net.onfirenetwork.onsetjava.Onset; - -import java.sql.SQLException; -import java.util.ArrayList; - -public class AccountManager { - private static ArrayList accountJobWhitelists; - - public static void init() throws SQLException { - accountJobWhitelists = AccountJobWhitelistDAO.loadAccountJobWhitelist(); - Onset.print("Loaded " + accountJobWhitelists.size() + " account job whitelist(s) from database"); - } - - public static ArrayList getAccountJobWhitelists() { - return accountJobWhitelists; - } -} diff --git a/src/main/java/fr/yuki/YukiRPFramework/model/ATM.java b/src/main/java/fr/yuki/YukiRPFramework/model/ATM.java deleted file mode 100644 index a4d149e..0000000 --- a/src/main/java/fr/yuki/YukiRPFramework/model/ATM.java +++ /dev/null @@ -1,61 +0,0 @@ -package fr.yuki.YukiRPFramework.model; - -import net.onfirenetwork.onsetjava.Onset; -import net.onfirenetwork.onsetjava.data.Vector; -import net.onfirenetwork.onsetjava.entity.Pickup; -import net.onfirenetwork.onsetjava.entity.Player; - -public class ATM { - private int id; - private float x; - private float y; - private float z; - private Pickup pickup; - - public int getId() { - return id; - } - - public void setId(int id) { - this.id = id; - } - - public float getX() { - return x; - } - - public void setX(float x) { - this.x = x; - } - - public float getY() { - return y; - } - - public void setY(float y) { - this.y = y; - } - - public float getZ() { - return z; - } - - public void setZ(float z) { - this.z = z; - } - - public Pickup getPickup() { - return pickup; - } - - public void setPickup(Pickup pickup) { - this.pickup = pickup; - } - - public boolean isNear(Player player) { - if(player.getLocation().distance(new Vector(this.x, this.y, this.z)) < 150) { - return true; - } - return false; - } -} diff --git a/src/main/java/fr/yuki/YukiRPFramework/model/AccountJobWhitelist.java b/src/main/java/fr/yuki/YukiRPFramework/model/AccountJobWhitelist.java deleted file mode 100644 index d15b4da..0000000 --- a/src/main/java/fr/yuki/YukiRPFramework/model/AccountJobWhitelist.java +++ /dev/null @@ -1,40 +0,0 @@ -package fr.yuki.YukiRPFramework.model; - -public class AccountJobWhitelist { - private int id; - private int accountId; - private String jobId; - private int jobLevel; - - public int getId() { - return id; - } - - public void setId(int id) { - this.id = id; - } - - public int getAccountId() { - return accountId; - } - - public void setAccountId(int accountId) { - this.accountId = accountId; - } - - public String getJobId() { - return jobId; - } - - public void setJobId(String jobId) { - this.jobId = jobId; - } - - public int getJobLevel() { - return jobLevel; - } - - public void setJobLevel(int jobLevel) { - this.jobLevel = jobLevel; - } -} diff --git a/src/main/java/fr/yuki/YukiRPFramework/model/Compagny.java b/src/main/java/fr/yuki/YukiRPFramework/model/Compagny.java deleted file mode 100644 index b7d1b4e..0000000 --- a/src/main/java/fr/yuki/YukiRPFramework/model/Compagny.java +++ /dev/null @@ -1,55 +0,0 @@ -package fr.yuki.YukiRPFramework.model; - -import net.onfirenetwork.onsetjava.entity.Player; - -public class Compagny { - private int id; - private String name; - private int bankCash; - private String owner; - private int maxMember; - - public int getId() { - return id; - } - - public void setId(int id) { - this.id = id; - } - - public String getName() { - return name; - } - - public void setName(String name) { - this.name = name; - } - - public int getBankCash() { - return bankCash; - } - - public void setBankCash(int bankCash) { - this.bankCash = bankCash; - } - - public String getOwner() { - return owner; - } - - public void setOwner(String owner) { - this.owner = owner; - } - - public int getMaxMember() { - return maxMember; - } - - public void setMaxMember(int maxMember) { - this.maxMember = maxMember; - } - - public boolean isOwner(Player player) { - return this.owner.equals(player.getSteamId()); - } -} diff --git a/src/main/java/fr/yuki/YukiRPFramework/model/FuelPoint.java b/src/main/java/fr/yuki/YukiRPFramework/model/FuelPoint.java deleted file mode 100644 index 358e0d7..0000000 --- a/src/main/java/fr/yuki/YukiRPFramework/model/FuelPoint.java +++ /dev/null @@ -1,57 +0,0 @@ -package fr.yuki.YukiRPFramework.model; - -import net.onfirenetwork.onsetjava.data.Vector; -import net.onfirenetwork.onsetjava.entity.Player; - -public class FuelPoint { - private int id; - private double x; - private double y; - private double z; - private int price; - - public int getId() { - return id; - } - - public void setId(int id) { - this.id = id; - } - - public double getX() { - return x; - } - - public void setX(double x) { - this.x = x; - } - - public double getY() { - return y; - } - - public void setY(double y) { - this.y = y; - } - - public double getZ() { - return z; - } - - public void setZ(double z) { - this.z = z; - } - - public int getPrice() { - return price; - } - - public void setPrice(int price) { - this.price = price; - } - - public boolean isNear(Player player) { - if(player.getLocation().distance(new Vector(this.x, this.y, this.z)) < 200) return true; - return false; - } -} diff --git a/src/main/java/fr/yuki/YukiRPFramework/model/Garage.java b/src/main/java/fr/yuki/YukiRPFramework/model/Garage.java deleted file mode 100644 index 6b04f43..0000000 --- a/src/main/java/fr/yuki/YukiRPFramework/model/Garage.java +++ /dev/null @@ -1,68 +0,0 @@ -package fr.yuki.YukiRPFramework.model; - -import net.onfirenetwork.onsetjava.data.Vector; -import net.onfirenetwork.onsetjava.entity.Player; - -public class Garage { - private int id; - private String name; - private int costToUse; - private double x; - private double y; - private double z; - - public int getId() { - return id; - } - - public void setId(int id) { - this.id = id; - } - - public String getName() { - return name; - } - - public void setName(String name) { - this.name = name; - } - - public int getCostToUse() { - return costToUse; - } - - public void setCostToUse(int costToUse) { - this.costToUse = costToUse; - } - - public double getX() { - return x; - } - - public void setX(double x) { - this.x = x; - } - - public double getY() { - return y; - } - - public void setY(double y) { - this.y = y; - } - - public double getZ() { - return z; - } - - public void setZ(double z) { - this.z = z; - } - - public boolean isNear(Player player) { - if(player.getLocation().distance(new Vector(this.x, this.y, this.z)) < 200) { - return true; - } - return false; - } -} diff --git a/src/main/java/fr/yuki/YukiRPFramework/model/House.java b/src/main/java/fr/yuki/YukiRPFramework/model/House.java deleted file mode 100644 index 95d5209..0000000 --- a/src/main/java/fr/yuki/YukiRPFramework/model/House.java +++ /dev/null @@ -1,130 +0,0 @@ -package fr.yuki.YukiRPFramework.model; - -import fr.yuki.YukiRPFramework.modding.Line3D; - -import java.util.ArrayList; - -public class House { - private int id; - private int accountId; - private int price; - private String name; - private double sx; - private double sy; - private double sz; - private double ex; - private double ey; - private double ez; - - private boolean locked = true; - private ArrayList allowedPlayers = new ArrayList<>(); - private ArrayList houseItemObjects = new ArrayList<>(); - - public int getId() { - return id; - } - - public void setId(int id) { - this.id = id; - } - - public int getAccountId() { - return accountId; - } - - public void setAccountId(int accountId) { - this.accountId = accountId; - } - - public int getPrice() { - return price; - } - - public void setPrice(int price) { - this.price = price; - } - - public String getName() { - return name; - } - - public void setName(String name) { - this.name = name; - } - - public double getSx() { - return sx; - } - - public void setSx(double sx) { - this.sx = sx; - } - - public double getSy() { - return sy; - } - - public void setSy(double sy) { - this.sy = sy; - } - - public double getSz() { - return sz; - } - - public void setSz(double sz) { - this.sz = sz; - } - - public double getEx() { - return ex; - } - - public void setEx(double ex) { - this.ex = ex; - } - - public double getEy() { - return ey; - } - - public void setEy(double ey) { - this.ey = ey; - } - - public double getEz() { - return ez; - } - - public void setEz(double ez) { - this.ez = ez; - } - - public Line3D getLine3D() { - return new Line3D(this.sx, this.sy, this.sz, this.ex, this.ey, this.ez, 5); - } - - public boolean isLocked() { - return locked; - } - - public void setLocked(boolean locked) { - this.locked = locked; - } - - public ArrayList getHouseItemObjects() { - return houseItemObjects; - } - - public void setHouseItemObjects(ArrayList houseItemObjects) { - this.houseItemObjects = houseItemObjects; - } - - public ArrayList getAllowedPlayers() { - return allowedPlayers; - } - - public void setAllowedPlayers(ArrayList allowedPlayers) { - this.allowedPlayers = allowedPlayers; - } -} diff --git a/src/main/java/fr/yuki/YukiRPFramework/model/VehicleSeller.java b/src/main/java/fr/yuki/YukiRPFramework/model/VehicleSeller.java deleted file mode 100644 index 40b8004..0000000 --- a/src/main/java/fr/yuki/YukiRPFramework/model/VehicleSeller.java +++ /dev/null @@ -1,124 +0,0 @@ -package fr.yuki.YukiRPFramework.model; - -import net.onfirenetwork.onsetjava.data.Vector; -import net.onfirenetwork.onsetjava.entity.Player; - -import java.util.ArrayList; - -public class VehicleSeller { - private int id; - private String name; - private int npcClothing; - private double x; - private double y; - private double z; - private double h; - private double sX; - private double sY; - private double sZ; - private double sH; - private ArrayList sellList; - - public int getId() { - return id; - } - - public void setId(int id) { - this.id = id; - } - - public String getName() { - return name; - } - - public void setName(String name) { - this.name = name; - } - - public int getNpcClothing() { - return npcClothing; - } - - public void setNpcClothing(int npcClothing) { - this.npcClothing = npcClothing; - } - - public double getX() { - return x; - } - - public void setX(double x) { - this.x = x; - } - - public double getY() { - return y; - } - - public void setY(double y) { - this.y = y; - } - - public double getZ() { - return z; - } - - public void setZ(double z) { - this.z = z; - } - - public ArrayList getSellList() { - return sellList; - } - - public void setSellList(ArrayList sellList) { - this.sellList = sellList; - } - - public double getH() { - return h; - } - - public void setH(double h) { - this.h = h; - } - - public double getsX() { - return sX; - } - - public void setsX(double sX) { - this.sX = sX; - } - - public double getsY() { - return sY; - } - - public void setsY(double sY) { - this.sY = sY; - } - - public double getsZ() { - return sZ; - } - - public void setsZ(double sZ) { - this.sZ = sZ; - } - - public double getsH() { - return sH; - } - - public void setsH(double sH) { - this.sH = sH; - } - - public boolean isNear(Player player) { - if(player.getLocation().distance(new Vector(this.x, this.y, this.z)) < 250) { - return true; - } - return false; - } -} diff --git a/src/main/java/fr/yuki/YukiRPFramework/Database.java b/src/main/java/fr/yuki/yrpf/Database.java similarity index 71% rename from src/main/java/fr/yuki/YukiRPFramework/Database.java rename to src/main/java/fr/yuki/yrpf/Database.java index 1670714..ecd570b 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/Database.java +++ b/src/main/java/fr/yuki/yrpf/Database.java @@ -1,12 +1,12 @@ -package fr.yuki.YukiRPFramework; +package fr.yuki.yrpf; import eu.bebendorf.ajorm.AJORM; import eu.bebendorf.ajorm.AJORMConfig; import eu.bebendorf.ajorm.wrapper.MySQL; import eu.bebendorf.ajorm.wrapper.SQL; -import fr.yuki.YukiRPFramework.manager.WorldManager; -import fr.yuki.YukiRPFramework.model.Account; -import fr.yuki.YukiRPFramework.utils.ServerConfig; +import fr.yuki.yrpf.manager.WorldManager; +import fr.yuki.yrpf.model.*; +import fr.yuki.yrpf.utils.ServerConfig; import net.onfirenetwork.onsetjava.Onset; import java.sql.Connection; @@ -28,6 +28,13 @@ public static void init() { AJORMConfig config = new AJORMConfig() .setDefaultSize(255); AJORM.register(Account.class, sql, config); + AJORM.register(ATM.class, sql, config); + AJORM.register(AccountJobWhitelist.class, sql, config); + AJORM.register(Company.class, sql, config); + AJORM.register(VehicleSeller.class, sql, config); + AJORM.register(Garage.class, sql, config); + AJORM.register(House.class, sql, config); + AJORM.register(FuelPoint.class, sql, config); Onset.print("Connected to the database with success"); } catch (Exception e) { Onset.print("Error with database connection: " + e.toString()); diff --git a/src/main/java/fr/yuki/YukiRPFramework/YukiRPFrameworkPlugin.java b/src/main/java/fr/yuki/yrpf/YukiRPFrameworkPlugin.java similarity index 96% rename from src/main/java/fr/yuki/YukiRPFramework/YukiRPFrameworkPlugin.java rename to src/main/java/fr/yuki/yrpf/YukiRPFrameworkPlugin.java index 672f818..e493d53 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/YukiRPFrameworkPlugin.java +++ b/src/main/java/fr/yuki/yrpf/YukiRPFrameworkPlugin.java @@ -1,21 +1,21 @@ -package fr.yuki.YukiRPFramework; +package fr.yuki.yrpf; import com.google.gson.Gson; import com.google.gson.reflect.TypeToken; import eu.bebendorf.ajorm.Repo; -import fr.yuki.YukiRPFramework.luaapi.LuaAPIManager; -import fr.yuki.YukiRPFramework.character.CharacterState; -import fr.yuki.YukiRPFramework.commands.*; -import fr.yuki.YukiRPFramework.dao.InventoryDAO; -import fr.yuki.YukiRPFramework.enums.ToastTypeEnum; -import fr.yuki.YukiRPFramework.i18n.I18n; -import fr.yuki.YukiRPFramework.inventory.Inventory; -import fr.yuki.YukiRPFramework.manager.*; -import fr.yuki.YukiRPFramework.modding.ModdingCustomModel; -import fr.yuki.YukiRPFramework.model.*; -import fr.yuki.YukiRPFramework.net.payload.*; -import fr.yuki.YukiRPFramework.utils.ServerConfig; -import fr.yuki.YukiRPFramework.world.RestrictedZone; +import fr.yuki.yrpf.luaapi.LuaAPIManager; +import fr.yuki.yrpf.character.CharacterState; +import fr.yuki.yrpf.commands.*; +import fr.yuki.yrpf.dao.InventoryDAO; +import fr.yuki.yrpf.enums.ToastTypeEnum; +import fr.yuki.yrpf.i18n.I18n; +import fr.yuki.yrpf.inventory.Inventory; +import fr.yuki.yrpf.manager.*; +import fr.yuki.yrpf.modding.ModdingCustomModel; +import fr.yuki.yrpf.model.*; +import fr.yuki.yrpf.net.payload.*; +import fr.yuki.yrpf.utils.ServerConfig; +import fr.yuki.yrpf.world.RestrictedZone; import net.onfirenetwork.onsetjava.Onset; import net.onfirenetwork.onsetjava.data.Location; import net.onfirenetwork.onsetjava.data.Vector; @@ -54,7 +54,7 @@ public void onEnable() { PhoneManager.init(); HouseManager.init(); TimeManager.init(); - CompagnyManager.init(); + CompanyManager.init(); TebexManager.init(); LuaAPIManager.init(); @@ -519,23 +519,23 @@ public void onRemoteEvent(PlayerRemoteEvent evt) { break; case "Compagny:Create": - CompagnyManager.handleCreateRequest(evt.getPlayer(), (evt.getArgs()[0]).toString()); + CompanyManager.handleCreateRequest(evt.getPlayer(), (evt.getArgs()[0]).toString()); break; case "Compagny:InviteEmployee": - CompagnyManager.handleInviteEmployee(evt.getPlayer(), (evt.getArgs()[0]).toString()); + CompanyManager.handleInviteEmployee(evt.getPlayer(), (evt.getArgs()[0]).toString()); break; case "Compagny:AcceptInvitation": - CompagnyManager.handleAcceptInvitation(evt.getPlayer()); + CompanyManager.handleAcceptInvitation(evt.getPlayer()); break; case "Compagny:DeclineInvitation": - CompagnyManager.handleDeclineInvitation(evt.getPlayer()); + CompanyManager.handleDeclineInvitation(evt.getPlayer()); break; case "Compagny:KickEmployee": - CompagnyManager.handleKickEmployee(evt.getPlayer(), (evt.getArgs()[0]).toString()); + CompanyManager.handleKickEmployee(evt.getPlayer(), (evt.getArgs()[0]).toString()); break; case "Character:Interact": diff --git a/src/main/java/fr/yuki/YukiRPFramework/character/CharacterJobLevel.java b/src/main/java/fr/yuki/yrpf/character/CharacterJobLevel.java similarity index 82% rename from src/main/java/fr/yuki/YukiRPFramework/character/CharacterJobLevel.java rename to src/main/java/fr/yuki/yrpf/character/CharacterJobLevel.java index ff4b0ce..518ad21 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/character/CharacterJobLevel.java +++ b/src/main/java/fr/yuki/yrpf/character/CharacterJobLevel.java @@ -1,40 +1,40 @@ -package fr.yuki.YukiRPFramework.character; - -import fr.yuki.YukiRPFramework.manager.JobManager; -import fr.yuki.YukiRPFramework.model.JobLevel; - -import java.util.ArrayList; -import java.util.stream.Collectors; - -public class CharacterJobLevel { - private String jobId; - private int exp; - - public String getJobId() { - return jobId; - } - - public void setJobId(String jobId) { - this.jobId = jobId; - } - - public int getExp() { - return exp; - } - - public void setExp(int exp) { - this.exp = exp; - } - - public JobLevel getJobLevel() { - ArrayList levels = new ArrayList<>(JobManager.getJobLevels().stream() - .filter(x -> x.getJobId().equals(this.getJobId())).collect(Collectors.toList())); - JobLevel level = levels.get(0); - for(JobLevel l : levels) { - if(l.getLevel() > level.getLevel() && this.getExp() >= l.getExpFloor()) { - level = l; - } - } - return level; - } -} +package fr.yuki.yrpf.character; + +import fr.yuki.yrpf.manager.JobManager; +import fr.yuki.yrpf.model.JobLevel; + +import java.util.ArrayList; +import java.util.stream.Collectors; + +public class CharacterJobLevel { + private String jobId; + private int exp; + + public String getJobId() { + return jobId; + } + + public void setJobId(String jobId) { + this.jobId = jobId; + } + + public int getExp() { + return exp; + } + + public void setExp(int exp) { + this.exp = exp; + } + + public JobLevel getJobLevel() { + ArrayList levels = new ArrayList<>(JobManager.getJobLevels().stream() + .filter(x -> x.getJobId().equals(this.getJobId())).collect(Collectors.toList())); + JobLevel level = levels.get(0); + for(JobLevel l : levels) { + if(l.getLevel() > level.getLevel() && this.getExp() >= l.getExpFloor()) { + level = l; + } + } + return level; + } +} diff --git a/src/main/java/fr/yuki/YukiRPFramework/character/CharacterLoopAnimation.java b/src/main/java/fr/yuki/yrpf/character/CharacterLoopAnimation.java similarity index 94% rename from src/main/java/fr/yuki/YukiRPFramework/character/CharacterLoopAnimation.java rename to src/main/java/fr/yuki/yrpf/character/CharacterLoopAnimation.java index 145a86e..b19206a 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/character/CharacterLoopAnimation.java +++ b/src/main/java/fr/yuki/yrpf/character/CharacterLoopAnimation.java @@ -1,139 +1,139 @@ -package fr.yuki.YukiRPFramework.character; - -import fr.yuki.YukiRPFramework.manager.SoundManager; -import net.onfirenetwork.onsetjava.Onset; -import net.onfirenetwork.onsetjava.entity.Player; -import net.onfirenetwork.onsetjava.enums.Animation; - -public class CharacterLoopAnimation { - private Player player; - private String animation; - private int loopInterval; - private int loopAmount; - private String loopSound; - private boolean isActive = false; - private CharacterToolAnimation characterToolAnimation; - - public CharacterLoopAnimation(String animation, int loopInterval, int loopAmount, - String loopSound) { - this.animation = animation; - this.loopInterval = loopInterval; - this.loopAmount = loopAmount; - this.loopSound = loopSound; - } - - public CharacterLoopAnimation(Player player, String animation, int loopInterval, int loopAmount, - String loopSound) { - this.player = player; - this.animation = animation.toString(); - this.loopInterval = loopInterval; - this.loopAmount = loopAmount; - this.loopSound = loopSound; - } - - public CharacterLoopAnimation(Player player, Animation animation, int loopInterval, int loopAmount, - String loopSound) { - this.player = player; - this.animation = animation.toString(); - this.loopInterval = loopInterval; - this.loopAmount = loopAmount; - this.loopSound = loopSound; - } - - public void start() { - this.isActive = true; - if(!loopSound.equals("")) { - SoundManager.playSound3D(this.loopSound, this.player.getLocation(), 1500, 1); - } - - // Attach the tool - if(characterToolAnimation != null) { - this.attachTool(); - } - - this.player.setAnimation(this.animation); - for(int i = 1; i <= loopAmount; i++) { - int currentI = i; - Onset.delay(loopInterval * i, () -> { - if (!this.isActive) return; - this.player.setAnimation(this.animation); - - if(!loopSound.equals("") && currentI != loopAmount) { - SoundManager.playSound3D(this.loopSound, this.player.getLocation(), 1500, 1); - } - }); - } - } - - private void attachTool() { - this.characterToolAnimation.attach(this.player); - } - - public void setTool(CharacterToolAnimation characterToolAnimation) { - this.characterToolAnimation = characterToolAnimation; - } - - public void stop() { - this.isActive = false; - if(characterToolAnimation != null) { - this.characterToolAnimation.unAttach(); - } - this.player.setAnimation(Animation.STOP); - } - - public Player getPlayer() { - return player; - } - - public void setPlayer(Player player) { - this.player = player; - } - - public String getAnimation() { - return animation; - } - - public void setAnimation(String animation) { - this.animation = animation; - } - - public int getLoopInterval() { - return loopInterval; - } - - public void setLoopInterval(int loopInterval) { - this.loopInterval = loopInterval; - } - - public int getLoopAmount() { - return loopAmount; - } - - public void setLoopAmount(int loopAmount) { - this.loopAmount = loopAmount; - } - - public String getLoopSound() { - return loopSound; - } - - public void setLoopSound(String loopSound) { - this.loopSound = loopSound; - } - - public boolean isActive() { - return isActive; - } - - public void setActive(boolean active) { - isActive = active; - } - - public CharacterToolAnimation getCharacterToolAnimation() { - return characterToolAnimation; - } - - public void setCharacterToolAnimation(CharacterToolAnimation characterToolAnimation) { - this.characterToolAnimation = characterToolAnimation; - } -} +package fr.yuki.yrpf.character; + +import fr.yuki.yrpf.manager.SoundManager; +import net.onfirenetwork.onsetjava.Onset; +import net.onfirenetwork.onsetjava.entity.Player; +import net.onfirenetwork.onsetjava.enums.Animation; + +public class CharacterLoopAnimation { + private Player player; + private String animation; + private int loopInterval; + private int loopAmount; + private String loopSound; + private boolean isActive = false; + private CharacterToolAnimation characterToolAnimation; + + public CharacterLoopAnimation(String animation, int loopInterval, int loopAmount, + String loopSound) { + this.animation = animation; + this.loopInterval = loopInterval; + this.loopAmount = loopAmount; + this.loopSound = loopSound; + } + + public CharacterLoopAnimation(Player player, String animation, int loopInterval, int loopAmount, + String loopSound) { + this.player = player; + this.animation = animation.toString(); + this.loopInterval = loopInterval; + this.loopAmount = loopAmount; + this.loopSound = loopSound; + } + + public CharacterLoopAnimation(Player player, Animation animation, int loopInterval, int loopAmount, + String loopSound) { + this.player = player; + this.animation = animation.toString(); + this.loopInterval = loopInterval; + this.loopAmount = loopAmount; + this.loopSound = loopSound; + } + + public void start() { + this.isActive = true; + if(!loopSound.equals("")) { + SoundManager.playSound3D(this.loopSound, this.player.getLocation(), 1500, 1); + } + + // Attach the tool + if(characterToolAnimation != null) { + this.attachTool(); + } + + this.player.setAnimation(this.animation); + for(int i = 1; i <= loopAmount; i++) { + int currentI = i; + Onset.delay(loopInterval * i, () -> { + if (!this.isActive) return; + this.player.setAnimation(this.animation); + + if(!loopSound.equals("") && currentI != loopAmount) { + SoundManager.playSound3D(this.loopSound, this.player.getLocation(), 1500, 1); + } + }); + } + } + + private void attachTool() { + this.characterToolAnimation.attach(this.player); + } + + public void setTool(CharacterToolAnimation characterToolAnimation) { + this.characterToolAnimation = characterToolAnimation; + } + + public void stop() { + this.isActive = false; + if(characterToolAnimation != null) { + this.characterToolAnimation.unAttach(); + } + this.player.setAnimation(Animation.STOP); + } + + public Player getPlayer() { + return player; + } + + public void setPlayer(Player player) { + this.player = player; + } + + public String getAnimation() { + return animation; + } + + public void setAnimation(String animation) { + this.animation = animation; + } + + public int getLoopInterval() { + return loopInterval; + } + + public void setLoopInterval(int loopInterval) { + this.loopInterval = loopInterval; + } + + public int getLoopAmount() { + return loopAmount; + } + + public void setLoopAmount(int loopAmount) { + this.loopAmount = loopAmount; + } + + public String getLoopSound() { + return loopSound; + } + + public void setLoopSound(String loopSound) { + this.loopSound = loopSound; + } + + public boolean isActive() { + return isActive; + } + + public void setActive(boolean active) { + isActive = active; + } + + public CharacterToolAnimation getCharacterToolAnimation() { + return characterToolAnimation; + } + + public void setCharacterToolAnimation(CharacterToolAnimation characterToolAnimation) { + this.characterToolAnimation = characterToolAnimation; + } +} diff --git a/src/main/java/fr/yuki/YukiRPFramework/character/CharacterState.java b/src/main/java/fr/yuki/yrpf/character/CharacterState.java similarity index 92% rename from src/main/java/fr/yuki/YukiRPFramework/character/CharacterState.java rename to src/main/java/fr/yuki/yrpf/character/CharacterState.java index 361127c..dd01aee 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/character/CharacterState.java +++ b/src/main/java/fr/yuki/yrpf/character/CharacterState.java @@ -1,16 +1,16 @@ -package fr.yuki.YukiRPFramework.character; - -import fr.yuki.YukiRPFramework.job.ObjectPlacementInstance; -import fr.yuki.YukiRPFramework.job.WearableWorldObject; -import fr.yuki.YukiRPFramework.manager.ModdingManager; -import fr.yuki.YukiRPFramework.manager.WorldManager; -import fr.yuki.YukiRPFramework.modding.Line3D; -import fr.yuki.YukiRPFramework.model.Account; -import fr.yuki.YukiRPFramework.model.Bag; -import fr.yuki.YukiRPFramework.model.Mask; -import fr.yuki.YukiRPFramework.phone.PhoneCall; -import fr.yuki.YukiRPFramework.ui.GenericMenu; -import fr.yuki.YukiRPFramework.ui.UIState; +package fr.yuki.yrpf.character; + +import fr.yuki.yrpf.job.ObjectPlacementInstance; +import fr.yuki.yrpf.job.WearableWorldObject; +import fr.yuki.yrpf.manager.ModdingManager; +import fr.yuki.yrpf.manager.WorldManager; +import fr.yuki.yrpf.modding.Line3D; +import fr.yuki.yrpf.model.Account; +import fr.yuki.yrpf.model.Bag; +import fr.yuki.yrpf.model.Mask; +import fr.yuki.yrpf.phone.PhoneCall; +import fr.yuki.yrpf.ui.GenericMenu; +import fr.yuki.yrpf.ui.UIState; import net.onfirenetwork.onsetjava.Onset; import net.onfirenetwork.onsetjava.data.Vector; import net.onfirenetwork.onsetjava.entity.Player; diff --git a/src/main/java/fr/yuki/YukiRPFramework/character/CharacterStyle.java b/src/main/java/fr/yuki/yrpf/character/CharacterStyle.java similarity index 95% rename from src/main/java/fr/yuki/YukiRPFramework/character/CharacterStyle.java rename to src/main/java/fr/yuki/yrpf/character/CharacterStyle.java index 4135425..f9e9a2a 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/character/CharacterStyle.java +++ b/src/main/java/fr/yuki/yrpf/character/CharacterStyle.java @@ -1,91 +1,91 @@ -package fr.yuki.YukiRPFramework.character; - -import net.onfirenetwork.onsetjava.Onset; -import net.onfirenetwork.onsetjava.entity.Player; - -public class CharacterStyle { - private String gender; - private String body; - private String hair; - private String hairColor; - private String top; - private String pant; - private String shoes; - - public void attachStyleToPlayer(Player player) { - Onset.print("Attach player style to character"); - player.setProperty("gender", this.gender, true); - player.setProperty("body", this.body, true); - player.setProperty("hair", this.hair, true); - player.setProperty("hairColor", this.hairColor.substring(1), true); - player.setProperty("top", this.top, true); - player.setProperty("pant", this.pant, true); - player.setProperty("shoes", this.shoes, true); - - for(Player otherPlayer : Onset.getPlayers()) { - otherPlayer.callRemoteEvent("Character:Style:SetPart", player.getId(), "gender", this.gender); - otherPlayer.callRemoteEvent("Character:Style:SetPart", player.getId(), "body", this.body); - otherPlayer.callRemoteEvent("Character:Style:SetPart", player.getId(), "hair", this.hair); - otherPlayer.callRemoteEvent("Character:Style:SetPart", player.getId(), "hairColor", this.hairColor.substring(1)); - otherPlayer.callRemoteEvent("Character:Style:SetPart", player.getId(), "top", this.top); - otherPlayer.callRemoteEvent("Character:Style:SetPart", player.getId(), "pant", this.pant); - otherPlayer.callRemoteEvent("Character:Style:SetPart", player.getId(), "shoes", this.shoes); - } - } - - public String getGender() { - return gender; - } - - public void setGender(String gender) { - this.gender = gender; - } - - public String getBody() { - return body; - } - - public void setBody(String body) { - this.body = body; - } - - public String getHair() { - return hair; - } - - public void setHair(String hair) { - this.hair = hair; - } - - public String getHairColor() { - return hairColor; - } - - public void setHairColor(String hairColor) { - this.hairColor = hairColor; - } - - public String getTop() { - return top; - } - - public void setTop(String top) { - this.top = top; - } - - public String getPant() { - return pant; - } - - public void setPant(String pant) { - this.pant = pant; - } - - public String getShoes() { - return shoes; - } - - public void setShoes(String shoes) { - this.shoes = shoes; - } -} +package fr.yuki.yrpf.character; + +import net.onfirenetwork.onsetjava.Onset; +import net.onfirenetwork.onsetjava.entity.Player; + +public class CharacterStyle { + private String gender; + private String body; + private String hair; + private String hairColor; + private String top; + private String pant; + private String shoes; + + public void attachStyleToPlayer(Player player) { + Onset.print("Attach player style to character"); + player.setProperty("gender", this.gender, true); + player.setProperty("body", this.body, true); + player.setProperty("hair", this.hair, true); + player.setProperty("hairColor", this.hairColor.substring(1), true); + player.setProperty("top", this.top, true); + player.setProperty("pant", this.pant, true); + player.setProperty("shoes", this.shoes, true); + + for(Player otherPlayer : Onset.getPlayers()) { + otherPlayer.callRemoteEvent("Character:Style:SetPart", player.getId(), "gender", this.gender); + otherPlayer.callRemoteEvent("Character:Style:SetPart", player.getId(), "body", this.body); + otherPlayer.callRemoteEvent("Character:Style:SetPart", player.getId(), "hair", this.hair); + otherPlayer.callRemoteEvent("Character:Style:SetPart", player.getId(), "hairColor", this.hairColor.substring(1)); + otherPlayer.callRemoteEvent("Character:Style:SetPart", player.getId(), "top", this.top); + otherPlayer.callRemoteEvent("Character:Style:SetPart", player.getId(), "pant", this.pant); + otherPlayer.callRemoteEvent("Character:Style:SetPart", player.getId(), "shoes", this.shoes); + } + } + + public String getGender() { + return gender; + } + + public void setGender(String gender) { + this.gender = gender; + } + + public String getBody() { + return body; + } + + public void setBody(String body) { + this.body = body; + } + + public String getHair() { + return hair; + } + + public void setHair(String hair) { + this.hair = hair; + } + + public String getHairColor() { + return hairColor; + } + + public void setHairColor(String hairColor) { + this.hairColor = hairColor; + } + + public String getTop() { + return top; + } + + public void setTop(String top) { + this.top = top; + } + + public String getPant() { + return pant; + } + + public void setPant(String pant) { + this.pant = pant; + } + + public String getShoes() { + return shoes; + } + + public void setShoes(String shoes) { + this.shoes = shoes; + } +} diff --git a/src/main/java/fr/yuki/YukiRPFramework/character/CharacterToolAnimation.java b/src/main/java/fr/yuki/yrpf/character/CharacterToolAnimation.java similarity index 86% rename from src/main/java/fr/yuki/YukiRPFramework/character/CharacterToolAnimation.java rename to src/main/java/fr/yuki/yrpf/character/CharacterToolAnimation.java index 8c0fde1..cc964ab 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/character/CharacterToolAnimation.java +++ b/src/main/java/fr/yuki/yrpf/character/CharacterToolAnimation.java @@ -1,42 +1,41 @@ -package fr.yuki.YukiRPFramework.character; - -import fr.yuki.YukiRPFramework.manager.ModdingManager; -import net.onfirenetwork.onsetjava.Onset; -import net.onfirenetwork.onsetjava.data.Vector; -import net.onfirenetwork.onsetjava.entity.Player; -import net.onfirenetwork.onsetjava.entity.WorldObject; -import net.onfirenetwork.onsetjava.enums.AttachType; - -public class CharacterToolAnimation { - private WorldObject toolObject; - private int modelId; - private Vector position; - private Vector rotation; - private Vector scale; - private String attachSocket; - - public CharacterToolAnimation(int modelId, Vector position, Vector rotation, Vector scale, String attachSocket) { - this.modelId = modelId; - this.position = position; - this.rotation = rotation; - this.scale = scale; - this.attachSocket = attachSocket; - } - - public void attach(Player player) { - this.toolObject = Onset.getServer().createObject(new Vector(0, 0, 0), this.modelId); - if(ModdingManager.isCustomModelId(this.modelId)) { - ModdingManager.assignCustomModel(this.toolObject, this.modelId); - } - this.toolObject.attach(player, this.position, this.rotation, this.attachSocket); - this.toolObject.setScale(this.scale); - } - - public void unAttach() { - this.toolObject.destroy(); - } - - public Vector getScale() { - return scale; - } -} +package fr.yuki.yrpf.character; + +import fr.yuki.yrpf.manager.ModdingManager; +import net.onfirenetwork.onsetjava.Onset; +import net.onfirenetwork.onsetjava.data.Vector; +import net.onfirenetwork.onsetjava.entity.Player; +import net.onfirenetwork.onsetjava.entity.WorldObject; + +public class CharacterToolAnimation { + private WorldObject toolObject; + private int modelId; + private Vector position; + private Vector rotation; + private Vector scale; + private String attachSocket; + + public CharacterToolAnimation(int modelId, Vector position, Vector rotation, Vector scale, String attachSocket) { + this.modelId = modelId; + this.position = position; + this.rotation = rotation; + this.scale = scale; + this.attachSocket = attachSocket; + } + + public void attach(Player player) { + this.toolObject = Onset.getServer().createObject(new Vector(0, 0, 0), this.modelId); + if(ModdingManager.isCustomModelId(this.modelId)) { + ModdingManager.assignCustomModel(this.toolObject, this.modelId); + } + this.toolObject.attach(player, this.position, this.rotation, this.attachSocket); + this.toolObject.setScale(this.scale); + } + + public void unAttach() { + this.toolObject.destroy(); + } + + public Vector getScale() { + return scale; + } +} diff --git a/src/main/java/fr/yuki/YukiRPFramework/commands/AddDeliveryPointCommand.java b/src/main/java/fr/yuki/yrpf/commands/AddDeliveryPointCommand.java similarity index 82% rename from src/main/java/fr/yuki/YukiRPFramework/commands/AddDeliveryPointCommand.java rename to src/main/java/fr/yuki/yrpf/commands/AddDeliveryPointCommand.java index fbdeb60..3cca456 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/commands/AddDeliveryPointCommand.java +++ b/src/main/java/fr/yuki/yrpf/commands/AddDeliveryPointCommand.java @@ -1,26 +1,26 @@ -package fr.yuki.YukiRPFramework.commands; - -import fr.yuki.YukiRPFramework.job.JobSpawnPosition; -import fr.yuki.YukiRPFramework.manager.JobManager; -import fr.yuki.YukiRPFramework.manager.WorldManager; -import net.onfirenetwork.onsetjava.entity.Player; -import net.onfirenetwork.onsetjava.plugin.CommandExecutor; - -public class AddDeliveryPointCommand implements CommandExecutor { - @Override - public boolean onCommand(Player player, String s, String[] args) { - if(WorldManager.getPlayerAccount(player).getAdminLevel() == 0) return false; - if(WorldManager.getPlayerAccount(player).getCommandLevel() < 3) { - player.sendMessage("You don't have the level required for this command"); - return true; - } - JobSpawnPosition jobSpawnPosition = new JobSpawnPosition(); - jobSpawnPosition.setX(player.getLocation().getX()); - jobSpawnPosition.setY(player.getLocation().getY()); - jobSpawnPosition.setZ(player.getLocation().getZ()); - JobManager.getDeliveryPointConfig().getPoints().get(args[0]).add(jobSpawnPosition); - JobManager.saveDeliveryPoints(); - player.sendMessage("Add new delivery location at this location"); - return true; - } -} +package fr.yuki.yrpf.commands; + +import fr.yuki.yrpf.job.JobSpawnPosition; +import fr.yuki.yrpf.manager.JobManager; +import fr.yuki.yrpf.manager.WorldManager; +import net.onfirenetwork.onsetjava.entity.Player; +import net.onfirenetwork.onsetjava.plugin.CommandExecutor; + +public class AddDeliveryPointCommand implements CommandExecutor { + @Override + public boolean onCommand(Player player, String s, String[] args) { + if(WorldManager.getPlayerAccount(player).getAdminLevel() == 0) return false; + if(WorldManager.getPlayerAccount(player).getCommandLevel() < 3) { + player.sendMessage("You don't have the level required for this command"); + return true; + } + JobSpawnPosition jobSpawnPosition = new JobSpawnPosition(); + jobSpawnPosition.setX(player.getLocation().getX()); + jobSpawnPosition.setY(player.getLocation().getY()); + jobSpawnPosition.setZ(player.getLocation().getZ()); + JobManager.getDeliveryPointConfig().getPoints().get(args[0]).add(jobSpawnPosition); + JobManager.saveDeliveryPoints(); + player.sendMessage("Add new delivery location at this location"); + return true; + } +} diff --git a/src/main/java/fr/yuki/YukiRPFramework/commands/AddGatherItemCommand.java b/src/main/java/fr/yuki/yrpf/commands/AddGatherItemCommand.java similarity index 73% rename from src/main/java/fr/yuki/YukiRPFramework/commands/AddGatherItemCommand.java rename to src/main/java/fr/yuki/yrpf/commands/AddGatherItemCommand.java index 0100af5..5debea9 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/commands/AddGatherItemCommand.java +++ b/src/main/java/fr/yuki/yrpf/commands/AddGatherItemCommand.java @@ -1,37 +1,34 @@ -package fr.yuki.YukiRPFramework.commands; - -import fr.yuki.YukiRPFramework.enums.JobEnum; -import fr.yuki.YukiRPFramework.job.Job; -import fr.yuki.YukiRPFramework.job.JobSpawn; -import fr.yuki.YukiRPFramework.job.JobSpawnPosition; -import fr.yuki.YukiRPFramework.job.harvest.HarvestableObject; -import fr.yuki.YukiRPFramework.manager.JobManager; -import fr.yuki.YukiRPFramework.manager.WorldManager; -import net.onfirenetwork.onsetjava.data.Vector; -import net.onfirenetwork.onsetjava.entity.Player; -import net.onfirenetwork.onsetjava.plugin.CommandExecutor; - -import java.util.ArrayList; -import java.util.Map; - -public class AddGatherItemCommand implements CommandExecutor { - @Override - public boolean onCommand(Player player, String s, String[] args) { - if(WorldManager.getPlayerAccount(player).getAdminLevel() == 0) return false; - if(WorldManager.getPlayerAccount(player).getCommandLevel() < 3) { - player.sendMessage("You don't have the level required for this command"); - return true; - } - Job job = new ArrayList(JobManager.getJobs().values()).get(Integer.parseInt(args[0])); - JobSpawn jobSpawn = job.getJobConfig().getResources().get(Integer.parseInt(args[1])); - JobSpawnPosition jobSpawnPosition = new JobSpawnPosition(); - Vector playerLocation = player.getLocation(); - jobSpawnPosition.setX(playerLocation.getX()); - jobSpawnPosition.setY(playerLocation.getY()); - jobSpawnPosition.setZ(playerLocation.getZ()); - jobSpawn.getSpawns().add(jobSpawnPosition); - job.saveConfig(); - player.sendMessage("Added " + jobSpawn.getName() + " at this location"); - return true; - } -} +package fr.yuki.yrpf.commands; + +import fr.yuki.yrpf.job.Job; +import fr.yuki.yrpf.job.JobSpawn; +import fr.yuki.yrpf.job.JobSpawnPosition; +import fr.yuki.yrpf.manager.JobManager; +import fr.yuki.yrpf.manager.WorldManager; +import net.onfirenetwork.onsetjava.data.Vector; +import net.onfirenetwork.onsetjava.entity.Player; +import net.onfirenetwork.onsetjava.plugin.CommandExecutor; + +import java.util.ArrayList; + +public class AddGatherItemCommand implements CommandExecutor { + @Override + public boolean onCommand(Player player, String s, String[] args) { + if(WorldManager.getPlayerAccount(player).getAdminLevel() == 0) return false; + if(WorldManager.getPlayerAccount(player).getCommandLevel() < 3) { + player.sendMessage("You don't have the level required for this command"); + return true; + } + Job job = new ArrayList(JobManager.getJobs().values()).get(Integer.parseInt(args[0])); + JobSpawn jobSpawn = job.getJobConfig().getResources().get(Integer.parseInt(args[1])); + JobSpawnPosition jobSpawnPosition = new JobSpawnPosition(); + Vector playerLocation = player.getLocation(); + jobSpawnPosition.setX(playerLocation.getX()); + jobSpawnPosition.setY(playerLocation.getY()); + jobSpawnPosition.setZ(playerLocation.getZ()); + jobSpawn.getSpawns().add(jobSpawnPosition); + job.saveConfig(); + player.sendMessage("Added " + jobSpawn.getName() + " at this location"); + return true; + } +} diff --git a/src/main/java/fr/yuki/YukiRPFramework/commands/AddItemAllCommand.java b/src/main/java/fr/yuki/yrpf/commands/AddItemAllCommand.java similarity index 72% rename from src/main/java/fr/yuki/YukiRPFramework/commands/AddItemAllCommand.java rename to src/main/java/fr/yuki/yrpf/commands/AddItemAllCommand.java index 753264a..ec77995 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/commands/AddItemAllCommand.java +++ b/src/main/java/fr/yuki/yrpf/commands/AddItemAllCommand.java @@ -1,33 +1,30 @@ -package fr.yuki.YukiRPFramework.commands; - -import fr.yuki.YukiRPFramework.enums.ToastTypeEnum; -import fr.yuki.YukiRPFramework.manager.InventoryManager; -import fr.yuki.YukiRPFramework.manager.SoundManager; -import fr.yuki.YukiRPFramework.manager.UIStateManager; -import fr.yuki.YukiRPFramework.manager.WorldManager; -import fr.yuki.YukiRPFramework.model.Account; -import fr.yuki.YukiRPFramework.model.ItemTemplate; -import net.onfirenetwork.onsetjava.Onset; -import net.onfirenetwork.onsetjava.entity.Player; -import net.onfirenetwork.onsetjava.plugin.CommandExecutor; - -public class AddItemAllCommand implements CommandExecutor { - @Override - public boolean onCommand(Player player, String s, String[] args) { - if(WorldManager.getPlayerAccount(player).getAdminLevel() == 0) return false; - if(WorldManager.getPlayerAccount(player).getCommandLevel() < 5) { - player.sendMessage("You don't have the level required for this command"); - return true; - } - for(Player other : Onset.getPlayers()) { - try{ - Account otherAccount = WorldManager.getPlayerAccount(other); - if(otherAccount == null) continue; - ItemTemplate itemTemplate = InventoryManager.getItemTemplates().get(Integer.parseInt(args[0])); - InventoryManager.addItemToPlayer(other, String.valueOf(itemTemplate.getId()), Integer.parseInt(args[1]), true); - player.sendMessage("Added item to " + other.getName()); - }catch (Exception ex) {} - } - return true; - } -} +package fr.yuki.yrpf.commands; + +import fr.yuki.yrpf.manager.InventoryManager; +import fr.yuki.yrpf.manager.WorldManager; +import fr.yuki.yrpf.model.Account; +import fr.yuki.yrpf.model.ItemTemplate; +import net.onfirenetwork.onsetjava.Onset; +import net.onfirenetwork.onsetjava.entity.Player; +import net.onfirenetwork.onsetjava.plugin.CommandExecutor; + +public class AddItemAllCommand implements CommandExecutor { + @Override + public boolean onCommand(Player player, String s, String[] args) { + if(WorldManager.getPlayerAccount(player).getAdminLevel() == 0) return false; + if(WorldManager.getPlayerAccount(player).getCommandLevel() < 5) { + player.sendMessage("You don't have the level required for this command"); + return true; + } + for(Player other : Onset.getPlayers()) { + try{ + Account otherAccount = WorldManager.getPlayerAccount(other); + if(otherAccount == null) continue; + ItemTemplate itemTemplate = InventoryManager.getItemTemplates().get(Integer.parseInt(args[0])); + InventoryManager.addItemToPlayer(other, String.valueOf(itemTemplate.getId()), Integer.parseInt(args[1]), true); + player.sendMessage("Added item to " + other.getName()); + }catch (Exception ex) {} + } + return true; + } +} diff --git a/src/main/java/fr/yuki/YukiRPFramework/commands/AnnCommand.java b/src/main/java/fr/yuki/yrpf/commands/AnnCommand.java similarity index 78% rename from src/main/java/fr/yuki/YukiRPFramework/commands/AnnCommand.java rename to src/main/java/fr/yuki/yrpf/commands/AnnCommand.java index 7c74a81..6dd5d24 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/commands/AnnCommand.java +++ b/src/main/java/fr/yuki/yrpf/commands/AnnCommand.java @@ -1,28 +1,28 @@ -package fr.yuki.YukiRPFramework.commands; - -import fr.yuki.YukiRPFramework.enums.ToastTypeEnum; -import fr.yuki.YukiRPFramework.manager.SoundManager; -import fr.yuki.YukiRPFramework.manager.UIStateManager; -import fr.yuki.YukiRPFramework.manager.WorldManager; -import net.onfirenetwork.onsetjava.Onset; -import net.onfirenetwork.onsetjava.entity.Player; -import net.onfirenetwork.onsetjava.plugin.CommandExecutor; - -public class AnnCommand implements CommandExecutor { - @Override - public boolean onCommand(Player player, String s, String[] strings) { - if(WorldManager.getPlayerAccount(player).getAdminLevel() == 0) return false; - if(WorldManager.getPlayerAccount(player).getCommandLevel() < 3) { - player.sendMessage("You don't have the level required for this command"); - return true; - } - for(Player other : Onset.getPlayers()) { - try{ - UIStateManager.sendNotification(other, ToastTypeEnum.DEFAULT, "Par " + WorldManager.getPlayerAccount(player).getCharacterName() + - " : " + String.join(" ", strings)); - SoundManager.playSound2D(other, "notif", "sounds/success_1.mp3", 0.8); - }catch (Exception ex) {} - } - return true; - } -} +package fr.yuki.yrpf.commands; + +import fr.yuki.yrpf.enums.ToastTypeEnum; +import fr.yuki.yrpf.manager.SoundManager; +import fr.yuki.yrpf.manager.UIStateManager; +import fr.yuki.yrpf.manager.WorldManager; +import net.onfirenetwork.onsetjava.Onset; +import net.onfirenetwork.onsetjava.entity.Player; +import net.onfirenetwork.onsetjava.plugin.CommandExecutor; + +public class AnnCommand implements CommandExecutor { + @Override + public boolean onCommand(Player player, String s, String[] strings) { + if(WorldManager.getPlayerAccount(player).getAdminLevel() == 0) return false; + if(WorldManager.getPlayerAccount(player).getCommandLevel() < 3) { + player.sendMessage("You don't have the level required for this command"); + return true; + } + for(Player other : Onset.getPlayers()) { + try{ + UIStateManager.sendNotification(other, ToastTypeEnum.DEFAULT, "Par " + WorldManager.getPlayerAccount(player).getCharacterName() + + " : " + String.join(" ", strings)); + SoundManager.playSound2D(other, "notif", "sounds/success_1.mp3", 0.8); + }catch (Exception ex) {} + } + return true; + } +} diff --git a/src/main/java/fr/yuki/YukiRPFramework/commands/BanCommand.java b/src/main/java/fr/yuki/yrpf/commands/BanCommand.java similarity index 87% rename from src/main/java/fr/yuki/YukiRPFramework/commands/BanCommand.java rename to src/main/java/fr/yuki/yrpf/commands/BanCommand.java index 6c91b19..07f2e03 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/commands/BanCommand.java +++ b/src/main/java/fr/yuki/yrpf/commands/BanCommand.java @@ -1,7 +1,7 @@ -package fr.yuki.YukiRPFramework.commands; +package fr.yuki.yrpf.commands; -import fr.yuki.YukiRPFramework.manager.WorldManager; -import fr.yuki.YukiRPFramework.model.Account; +import fr.yuki.yrpf.manager.WorldManager; +import fr.yuki.yrpf.model.Account; import net.onfirenetwork.onsetjava.Onset; import net.onfirenetwork.onsetjava.entity.Player; import net.onfirenetwork.onsetjava.plugin.CommandExecutor; diff --git a/src/main/java/fr/yuki/YukiRPFramework/commands/BringCommand.java b/src/main/java/fr/yuki/yrpf/commands/BringCommand.java similarity index 85% rename from src/main/java/fr/yuki/YukiRPFramework/commands/BringCommand.java rename to src/main/java/fr/yuki/yrpf/commands/BringCommand.java index e828dbb..dd6e575 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/commands/BringCommand.java +++ b/src/main/java/fr/yuki/yrpf/commands/BringCommand.java @@ -1,19 +1,19 @@ -package fr.yuki.YukiRPFramework.commands; - -import fr.yuki.YukiRPFramework.manager.WorldManager; -import net.onfirenetwork.onsetjava.Onset; -import net.onfirenetwork.onsetjava.entity.Player; -import net.onfirenetwork.onsetjava.plugin.CommandExecutor; - -public class BringCommand implements CommandExecutor { - @Override - public boolean onCommand(Player player, String s, String[] args) { - if(WorldManager.getPlayerAccount(player).getAdminLevel() == 0) return false; - Player playerTarget = Onset.getPlayers().stream().filter(x -> x.getId() == Integer.parseInt(args[0])) - .findFirst().orElse(null); - if(playerTarget == null) return true; - playerTarget.setLocation(player.getLocation()); - - return true; - } -} +package fr.yuki.yrpf.commands; + +import fr.yuki.yrpf.manager.WorldManager; +import net.onfirenetwork.onsetjava.Onset; +import net.onfirenetwork.onsetjava.entity.Player; +import net.onfirenetwork.onsetjava.plugin.CommandExecutor; + +public class BringCommand implements CommandExecutor { + @Override + public boolean onCommand(Player player, String s, String[] args) { + if(WorldManager.getPlayerAccount(player).getAdminLevel() == 0) return false; + Player playerTarget = Onset.getPlayers().stream().filter(x -> x.getId() == Integer.parseInt(args[0])) + .findFirst().orElse(null); + if(playerTarget == null) return true; + playerTarget.setLocation(player.getLocation()); + + return true; + } +} diff --git a/src/main/java/fr/yuki/YukiRPFramework/commands/CreateHouseCommand.java b/src/main/java/fr/yuki/yrpf/commands/CreateHouseCommand.java similarity index 72% rename from src/main/java/fr/yuki/YukiRPFramework/commands/CreateHouseCommand.java rename to src/main/java/fr/yuki/yrpf/commands/CreateHouseCommand.java index c7d48bb..fcfa7bf 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/commands/CreateHouseCommand.java +++ b/src/main/java/fr/yuki/yrpf/commands/CreateHouseCommand.java @@ -1,53 +1,46 @@ -package fr.yuki.YukiRPFramework.commands; - -import fr.yuki.YukiRPFramework.character.CharacterState; -import fr.yuki.YukiRPFramework.dao.HouseDAO; -import fr.yuki.YukiRPFramework.manager.CharacterManager; -import fr.yuki.YukiRPFramework.manager.HouseManager; -import fr.yuki.YukiRPFramework.manager.WorldManager; -import fr.yuki.YukiRPFramework.model.Account; -import fr.yuki.YukiRPFramework.model.House; -import net.onfirenetwork.onsetjava.Onset; -import net.onfirenetwork.onsetjava.data.Vector; -import net.onfirenetwork.onsetjava.entity.Player; -import net.onfirenetwork.onsetjava.plugin.CommandExecutor; - -import java.sql.SQLException; - -public class CreateHouseCommand implements CommandExecutor { - @Override - public boolean onCommand(Player player, String s, String[] strings) { - if(WorldManager.getPlayerAccount(player).getAdminLevel() == 0) return false; - if(WorldManager.getPlayerAccount(player).getCommandLevel() < 3) { - player.sendMessage("You don't have the level required for this command"); - return true; - } - CharacterState state = CharacterManager.getCharacterStateByPlayer(player); - //if(state.getCurrentDisplayedLine3D() == null) return true; - - Vector firstLoc = state.getLastLocationsRequest().get(state.getLastLocationsRequest().size() - 1); - Vector secondLoc = state.getLastLocationsRequest().get(state.getLastLocationsRequest().size() - 2); - - Account account = WorldManager.getPlayerAccount(player); - House house = new House(); - house.setAccountId(account.getId()); - house.setPrice(2500); - house.setName("Maison"); - house.setSx(firstLoc.getX()); - house.setSy(firstLoc.getY()); - house.setSz(firstLoc.getZ()); - house.setEx(secondLoc.getX()); - house.setEy(secondLoc.getY()); - house.setEz(secondLoc.getZ()); - HouseManager.getHouses().add(house); - try { - HouseDAO.insertHouse(house); - } catch (SQLException throwables) { - throwables.printStackTrace(); - } - Onset.print("House created id: " + house.getId()); - player.sendMessage("House created id: " + house.getId()); - - return true; - } -} +package fr.yuki.yrpf.commands; + +import fr.yuki.yrpf.character.CharacterState; +import fr.yuki.yrpf.manager.CharacterManager; +import fr.yuki.yrpf.manager.HouseManager; +import fr.yuki.yrpf.manager.WorldManager; +import fr.yuki.yrpf.model.Account; +import fr.yuki.yrpf.model.House; +import net.onfirenetwork.onsetjava.Onset; +import net.onfirenetwork.onsetjava.data.Vector; +import net.onfirenetwork.onsetjava.entity.Player; +import net.onfirenetwork.onsetjava.plugin.CommandExecutor; + +public class CreateHouseCommand implements CommandExecutor { + @Override + public boolean onCommand(Player player, String s, String[] strings) { + if(WorldManager.getPlayerAccount(player).getAdminLevel() == 0) return false; + if(WorldManager.getPlayerAccount(player).getCommandLevel() < 3) { + player.sendMessage("You don't have the level required for this command"); + return true; + } + CharacterState state = CharacterManager.getCharacterStateByPlayer(player); + //if(state.getCurrentDisplayedLine3D() == null) return true; + + Vector firstLoc = state.getLastLocationsRequest().get(state.getLastLocationsRequest().size() - 1); + Vector secondLoc = state.getLastLocationsRequest().get(state.getLastLocationsRequest().size() - 2); + + Account account = WorldManager.getPlayerAccount(player); + House house = new House(); + house.setAccountId(account.getId()); + house.setPrice(2500); + house.setName("Maison"); + house.setSx(firstLoc.getX()); + house.setSy(firstLoc.getY()); + house.setSz(firstLoc.getZ()); + house.setEx(secondLoc.getX()); + house.setEy(secondLoc.getY()); + house.setEz(secondLoc.getZ()); + HouseManager.getHouses().add(house); + house.save(); + Onset.print("House created id: " + house.getId()); + player.sendMessage("House created id: " + house.getId()); + + return true; + } +} diff --git a/src/main/java/fr/yuki/YukiRPFramework/commands/CuffCommand.java b/src/main/java/fr/yuki/yrpf/commands/CuffCommand.java similarity index 81% rename from src/main/java/fr/yuki/YukiRPFramework/commands/CuffCommand.java rename to src/main/java/fr/yuki/yrpf/commands/CuffCommand.java index 6412b6d..a166860 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/commands/CuffCommand.java +++ b/src/main/java/fr/yuki/yrpf/commands/CuffCommand.java @@ -1,28 +1,28 @@ -package fr.yuki.YukiRPFramework.commands; - -import fr.yuki.YukiRPFramework.manager.CharacterManager; -import fr.yuki.YukiRPFramework.manager.WorldManager; -import fr.yuki.YukiRPFramework.model.Account; -import net.onfirenetwork.onsetjava.Onset; -import net.onfirenetwork.onsetjava.entity.Player; -import net.onfirenetwork.onsetjava.plugin.CommandExecutor; - -public class CuffCommand implements CommandExecutor { - @Override - public boolean onCommand(Player player, String s, String[] args) { - if(WorldManager.getPlayerAccount(player).getAdminLevel() == 0) return false; - if(WorldManager.getPlayerAccount(player).getCommandLevel() < 2) { - player.sendMessage("You don't have the level required for this command"); - return true; - } - Player playerTarget = Onset.getPlayers().stream().filter(x -> x.getId() == Integer.parseInt(args[0])) - .findFirst().orElse(null); - - if(playerTarget == null) return true; - Account account = WorldManager.getPlayerAccount(playerTarget); - WorldManager.cuffPlayer(playerTarget); - CharacterManager.setCharacterFreeze(playerTarget, false); - - return true; - } -} +package fr.yuki.yrpf.commands; + +import fr.yuki.yrpf.manager.CharacterManager; +import fr.yuki.yrpf.manager.WorldManager; +import fr.yuki.yrpf.model.Account; +import net.onfirenetwork.onsetjava.Onset; +import net.onfirenetwork.onsetjava.entity.Player; +import net.onfirenetwork.onsetjava.plugin.CommandExecutor; + +public class CuffCommand implements CommandExecutor { + @Override + public boolean onCommand(Player player, String s, String[] args) { + if(WorldManager.getPlayerAccount(player).getAdminLevel() == 0) return false; + if(WorldManager.getPlayerAccount(player).getCommandLevel() < 2) { + player.sendMessage("You don't have the level required for this command"); + return true; + } + Player playerTarget = Onset.getPlayers().stream().filter(x -> x.getId() == Integer.parseInt(args[0])) + .findFirst().orElse(null); + + if(playerTarget == null) return true; + Account account = WorldManager.getPlayerAccount(playerTarget); + WorldManager.cuffPlayer(playerTarget); + CharacterManager.setCharacterFreeze(playerTarget, false); + + return true; + } +} diff --git a/src/main/java/fr/yuki/YukiRPFramework/commands/DVCommand.java b/src/main/java/fr/yuki/yrpf/commands/DVCommand.java similarity index 79% rename from src/main/java/fr/yuki/YukiRPFramework/commands/DVCommand.java rename to src/main/java/fr/yuki/yrpf/commands/DVCommand.java index 48dc41e..c990218 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/commands/DVCommand.java +++ b/src/main/java/fr/yuki/yrpf/commands/DVCommand.java @@ -1,33 +1,33 @@ -package fr.yuki.YukiRPFramework.commands; - -import fr.yuki.YukiRPFramework.manager.GarageManager; -import fr.yuki.YukiRPFramework.manager.VehicleManager; -import fr.yuki.YukiRPFramework.manager.WorldManager; -import fr.yuki.YukiRPFramework.model.VehicleGarage; -import net.onfirenetwork.onsetjava.Onset; -import net.onfirenetwork.onsetjava.entity.Player; -import net.onfirenetwork.onsetjava.entity.Vehicle; -import net.onfirenetwork.onsetjava.plugin.CommandExecutor; - -public class DVCommand implements CommandExecutor { - @Override - public boolean onCommand(Player player, String s, String[] strings) { - if(WorldManager.getPlayerAccount(player).getAdminLevel() == 0) return false; - Vehicle vehicle = VehicleManager.getNearestVehicle(player.getLocation()); - if(vehicle == null) return true; - VehicleGarage vehicleGarage = GarageManager.getVehicleGarages().stream() - .filter(x -> x.getUuid().equals(vehicle.getPropertyString("uuid"))) - .findFirst().orElse(null); - if(vehicleGarage == null) return true; - if(!vehicleGarage.isRental()) { - vehicleGarage.setGarageId(vehicleGarage.getGarageLastId()); - vehicleGarage.save(); - } - if(vehicle.getDriver() != null) vehicle.getDriver().exitVehicle(); - - Onset.delay(1000, () -> { - vehicle.destroy(); - }); - return true; - } -} +package fr.yuki.yrpf.commands; + +import fr.yuki.yrpf.manager.GarageManager; +import fr.yuki.yrpf.manager.VehicleManager; +import fr.yuki.yrpf.manager.WorldManager; +import fr.yuki.yrpf.model.VehicleGarage; +import net.onfirenetwork.onsetjava.Onset; +import net.onfirenetwork.onsetjava.entity.Player; +import net.onfirenetwork.onsetjava.entity.Vehicle; +import net.onfirenetwork.onsetjava.plugin.CommandExecutor; + +public class DVCommand implements CommandExecutor { + @Override + public boolean onCommand(Player player, String s, String[] strings) { + if(WorldManager.getPlayerAccount(player).getAdminLevel() == 0) return false; + Vehicle vehicle = VehicleManager.getNearestVehicle(player.getLocation()); + if(vehicle == null) return true; + VehicleGarage vehicleGarage = GarageManager.getVehicleGarages().stream() + .filter(x -> x.getUuid().equals(vehicle.getPropertyString("uuid"))) + .findFirst().orElse(null); + if(vehicleGarage == null) return true; + if(!vehicleGarage.isRental()) { + vehicleGarage.setGarageId(vehicleGarage.getGarageLastId()); + vehicleGarage.save(); + } + if(vehicle.getDriver() != null) vehicle.getDriver().exitVehicle(); + + Onset.delay(1000, () -> { + vehicle.destroy(); + }); + return true; + } +} diff --git a/src/main/java/fr/yuki/YukiRPFramework/commands/DebugCharacterToolCommand.java b/src/main/java/fr/yuki/yrpf/commands/DebugCharacterToolCommand.java similarity index 86% rename from src/main/java/fr/yuki/YukiRPFramework/commands/DebugCharacterToolCommand.java rename to src/main/java/fr/yuki/yrpf/commands/DebugCharacterToolCommand.java index 4994844..7c360aa 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/commands/DebugCharacterToolCommand.java +++ b/src/main/java/fr/yuki/yrpf/commands/DebugCharacterToolCommand.java @@ -1,27 +1,27 @@ -package fr.yuki.YukiRPFramework.commands; - -import fr.yuki.YukiRPFramework.character.CharacterToolAnimation; -import fr.yuki.YukiRPFramework.manager.WorldManager; -import net.onfirenetwork.onsetjava.Onset; -import net.onfirenetwork.onsetjava.data.Vector; -import net.onfirenetwork.onsetjava.entity.Player; -import net.onfirenetwork.onsetjava.plugin.CommandExecutor; - -public class DebugCharacterToolCommand implements CommandExecutor { - @Override - public boolean onCommand(Player player, String s, String[] args) { - if(WorldManager.getPlayerAccount(player).getAdminLevel() == 0) return false; - CharacterToolAnimation characterToolAnimation = - new CharacterToolAnimation(Integer.parseInt(args[0]), - new Vector(Integer.parseInt(args[1]), Integer.parseInt(args[2]), Integer.parseInt(args[3])), - new Vector(Integer.parseInt(args[4]), Integer.parseInt(args[5]), Integer.parseInt(args[6])), - new Vector(Double.parseDouble(args[7]), Double.parseDouble(args[8]), Double.parseDouble(args[9])), - args[10]); - characterToolAnimation.attach(player); - player.setAnimation(args[11]); - Onset.delay(10000, () -> { - characterToolAnimation.unAttach(); - }); - return true; - } -} +package fr.yuki.yrpf.commands; + +import fr.yuki.yrpf.character.CharacterToolAnimation; +import fr.yuki.yrpf.manager.WorldManager; +import net.onfirenetwork.onsetjava.Onset; +import net.onfirenetwork.onsetjava.data.Vector; +import net.onfirenetwork.onsetjava.entity.Player; +import net.onfirenetwork.onsetjava.plugin.CommandExecutor; + +public class DebugCharacterToolCommand implements CommandExecutor { + @Override + public boolean onCommand(Player player, String s, String[] args) { + if(WorldManager.getPlayerAccount(player).getAdminLevel() == 0) return false; + CharacterToolAnimation characterToolAnimation = + new CharacterToolAnimation(Integer.parseInt(args[0]), + new Vector(Integer.parseInt(args[1]), Integer.parseInt(args[2]), Integer.parseInt(args[3])), + new Vector(Integer.parseInt(args[4]), Integer.parseInt(args[5]), Integer.parseInt(args[6])), + new Vector(Double.parseDouble(args[7]), Double.parseDouble(args[8]), Double.parseDouble(args[9])), + args[10]); + characterToolAnimation.attach(player); + player.setAnimation(args[11]); + Onset.delay(10000, () -> { + characterToolAnimation.unAttach(); + }); + return true; + } +} diff --git a/src/main/java/fr/yuki/YukiRPFramework/commands/DebugHouseCommand.java b/src/main/java/fr/yuki/yrpf/commands/DebugHouseCommand.java similarity index 78% rename from src/main/java/fr/yuki/YukiRPFramework/commands/DebugHouseCommand.java rename to src/main/java/fr/yuki/yrpf/commands/DebugHouseCommand.java index 4a171dd..cd8ee3a 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/commands/DebugHouseCommand.java +++ b/src/main/java/fr/yuki/yrpf/commands/DebugHouseCommand.java @@ -1,46 +1,43 @@ -package fr.yuki.YukiRPFramework.commands; - -import fr.yuki.YukiRPFramework.character.CharacterState; -import fr.yuki.YukiRPFramework.manager.CharacterManager; -import fr.yuki.YukiRPFramework.manager.HouseManager; -import fr.yuki.YukiRPFramework.manager.WorldManager; -import fr.yuki.YukiRPFramework.modding.Line3D; -import fr.yuki.YukiRPFramework.model.Account; -import fr.yuki.YukiRPFramework.model.House; -import net.onfirenetwork.onsetjava.data.Vector; -import net.onfirenetwork.onsetjava.entity.Door; -import net.onfirenetwork.onsetjava.entity.Player; -import net.onfirenetwork.onsetjava.plugin.CommandExecutor; - -public class DebugHouseCommand implements CommandExecutor { - @Override - public boolean onCommand(Player player, String s, String[] args) { - if(WorldManager.getPlayerAccount(player).getAdminLevel() == 0) return false; - if(WorldManager.getPlayerAccount(player).getCommandLevel() < 3) { - player.sendMessage("You don't have the level required for this command"); - return true; - } - CharacterState state = CharacterManager.getCharacterStateByPlayer(player); - Vector firstLoc = state.getLastLocationsRequest().get(state.getLastLocationsRequest().size() - 1); - Vector secondLoc = state.getLastLocationsRequest().get(state.getLastLocationsRequest().size() - 2); - - Line3D line3D = new Line3D(firstLoc.getX(), firstLoc.getY(), firstLoc.getZ(), - secondLoc.getX(), secondLoc.getY(), secondLoc.getZ(), 5); - if(state.getCurrentDisplayedLine3D() != null) { - state.getCurrentDisplayedLine3D().hide(player); - } - state.setCurrentDisplayedLine3D(line3D); - line3D.show(player); - player.sendMessage("IsInside : " + line3D.isInside(player.getLocation())); - for(Door door : line3D.getDoorsInside()) { - player.sendMessage("DoorId: " + door.getId()); - if(!door.isOpen()) { - door.open(); - } else { - door.close(); - } - } - - return true; - } -} +package fr.yuki.yrpf.commands; + +import fr.yuki.yrpf.character.CharacterState; +import fr.yuki.yrpf.manager.CharacterManager; +import fr.yuki.yrpf.manager.WorldManager; +import fr.yuki.yrpf.modding.Line3D; +import net.onfirenetwork.onsetjava.data.Vector; +import net.onfirenetwork.onsetjava.entity.Door; +import net.onfirenetwork.onsetjava.entity.Player; +import net.onfirenetwork.onsetjava.plugin.CommandExecutor; + +public class DebugHouseCommand implements CommandExecutor { + @Override + public boolean onCommand(Player player, String s, String[] args) { + if(WorldManager.getPlayerAccount(player).getAdminLevel() == 0) return false; + if(WorldManager.getPlayerAccount(player).getCommandLevel() < 3) { + player.sendMessage("You don't have the level required for this command"); + return true; + } + CharacterState state = CharacterManager.getCharacterStateByPlayer(player); + Vector firstLoc = state.getLastLocationsRequest().get(state.getLastLocationsRequest().size() - 1); + Vector secondLoc = state.getLastLocationsRequest().get(state.getLastLocationsRequest().size() - 2); + + Line3D line3D = new Line3D(firstLoc.getX(), firstLoc.getY(), firstLoc.getZ(), + secondLoc.getX(), secondLoc.getY(), secondLoc.getZ(), 5); + if(state.getCurrentDisplayedLine3D() != null) { + state.getCurrentDisplayedLine3D().hide(player); + } + state.setCurrentDisplayedLine3D(line3D); + line3D.show(player); + player.sendMessage("IsInside : " + line3D.isInside(player.getLocation())); + for(Door door : line3D.getDoorsInside()) { + player.sendMessage("DoorId: " + door.getId()); + if(!door.isOpen()) { + door.open(); + } else { + door.close(); + } + } + + return true; + } +} diff --git a/src/main/java/fr/yuki/YukiRPFramework/commands/DebugObjectPlacementCommand.java b/src/main/java/fr/yuki/yrpf/commands/DebugObjectPlacementCommand.java similarity index 68% rename from src/main/java/fr/yuki/YukiRPFramework/commands/DebugObjectPlacementCommand.java rename to src/main/java/fr/yuki/yrpf/commands/DebugObjectPlacementCommand.java index 548b55c..c80c1c6 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/commands/DebugObjectPlacementCommand.java +++ b/src/main/java/fr/yuki/yrpf/commands/DebugObjectPlacementCommand.java @@ -1,27 +1,26 @@ -package fr.yuki.YukiRPFramework.commands; - -import fr.yuki.YukiRPFramework.character.CharacterState; -import fr.yuki.YukiRPFramework.job.ObjectPlacementInstance; -import fr.yuki.YukiRPFramework.job.placementObject.GenericPlacementInstance; -import fr.yuki.YukiRPFramework.job.placementObject.GrowBoxPlacementInstance; -import fr.yuki.YukiRPFramework.manager.CharacterManager; -import fr.yuki.YukiRPFramework.manager.WorldManager; -import net.onfirenetwork.onsetjava.entity.Player; -import net.onfirenetwork.onsetjava.plugin.CommandExecutor; - -public class DebugObjectPlacementCommand implements CommandExecutor { - @Override - public boolean onCommand(Player player, String s, String[] args) { - if(WorldManager.getPlayerAccount(player).getAdminLevel() == 0) return false; - if(WorldManager.getPlayerAccount(player).getCommandLevel() < 3) { - player.sendMessage("You don't have the level required for this command"); - return true; - } - CharacterState characterState = CharacterManager.getCharacterStateByPlayer(player); - ObjectPlacementInstance objectPlacementInstance = new GenericPlacementInstance(player.getLocation(), Integer.parseInt(args[0]), 0); - characterState.setCurrentObjectPlacementInstance(objectPlacementInstance); - objectPlacementInstance.spawn(); - objectPlacementInstance.setEditableBy(player); - return true; - } -} +package fr.yuki.yrpf.commands; + +import fr.yuki.yrpf.character.CharacterState; +import fr.yuki.yrpf.job.ObjectPlacementInstance; +import fr.yuki.yrpf.job.placementObject.GenericPlacementInstance; +import fr.yuki.yrpf.manager.CharacterManager; +import fr.yuki.yrpf.manager.WorldManager; +import net.onfirenetwork.onsetjava.entity.Player; +import net.onfirenetwork.onsetjava.plugin.CommandExecutor; + +public class DebugObjectPlacementCommand implements CommandExecutor { + @Override + public boolean onCommand(Player player, String s, String[] args) { + if(WorldManager.getPlayerAccount(player).getAdminLevel() == 0) return false; + if(WorldManager.getPlayerAccount(player).getCommandLevel() < 3) { + player.sendMessage("You don't have the level required for this command"); + return true; + } + CharacterState characterState = CharacterManager.getCharacterStateByPlayer(player); + ObjectPlacementInstance objectPlacementInstance = new GenericPlacementInstance(player.getLocation(), Integer.parseInt(args[0]), 0); + characterState.setCurrentObjectPlacementInstance(objectPlacementInstance); + objectPlacementInstance.spawn(); + objectPlacementInstance.setEditableBy(player); + return true; + } +} diff --git a/src/main/java/fr/yuki/YukiRPFramework/commands/DebugTestCommand.java b/src/main/java/fr/yuki/yrpf/commands/DebugTestCommand.java similarity index 73% rename from src/main/java/fr/yuki/YukiRPFramework/commands/DebugTestCommand.java rename to src/main/java/fr/yuki/yrpf/commands/DebugTestCommand.java index 3bf0395..1613381 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/commands/DebugTestCommand.java +++ b/src/main/java/fr/yuki/yrpf/commands/DebugTestCommand.java @@ -1,27 +1,26 @@ -package fr.yuki.YukiRPFramework.commands; - -import fr.yuki.YukiRPFramework.job.Job; -import fr.yuki.YukiRPFramework.job.JobSpawn; -import fr.yuki.YukiRPFramework.manager.CharacterManager; -import fr.yuki.YukiRPFramework.manager.JobManager; -import fr.yuki.YukiRPFramework.manager.WorldManager; -import net.onfirenetwork.onsetjava.entity.Player; -import net.onfirenetwork.onsetjava.plugin.CommandExecutor; - -import java.util.Map; - -public class DebugTestCommand implements CommandExecutor { - @Override - public boolean onCommand(Player player, String s, String[] args) { - if(WorldManager.getPlayerAccount(player).getAdminLevel() == 0) return false; - if(WorldManager.getPlayerAccount(player).getCommandLevel() < 3) { - player.sendMessage("You don't have the level required for this command"); - return true; - } - for(Map.Entry job : JobManager.getJobs().entrySet()) { - player.sendMessage(job.getKey() + " : (" + job.getValue().getWorldHarvestObjects().size() + ")"); - } - player.sendMessage("States : (" + CharacterManager.getCharacterStates().size() + ")"); - return true; - } -} +package fr.yuki.yrpf.commands; + +import fr.yuki.yrpf.job.Job; +import fr.yuki.yrpf.manager.CharacterManager; +import fr.yuki.yrpf.manager.JobManager; +import fr.yuki.yrpf.manager.WorldManager; +import net.onfirenetwork.onsetjava.entity.Player; +import net.onfirenetwork.onsetjava.plugin.CommandExecutor; + +import java.util.Map; + +public class DebugTestCommand implements CommandExecutor { + @Override + public boolean onCommand(Player player, String s, String[] args) { + if(WorldManager.getPlayerAccount(player).getAdminLevel() == 0) return false; + if(WorldManager.getPlayerAccount(player).getCommandLevel() < 3) { + player.sendMessage("You don't have the level required for this command"); + return true; + } + for(Map.Entry job : JobManager.getJobs().entrySet()) { + player.sendMessage(job.getKey() + " : (" + job.getValue().getWorldHarvestObjects().size() + ")"); + } + player.sendMessage("States : (" + CharacterManager.getCharacterStates().size() + ")"); + return true; + } +} diff --git a/src/main/java/fr/yuki/YukiRPFramework/commands/DebugVehicleStorageLayoutCommand.java b/src/main/java/fr/yuki/yrpf/commands/DebugVehicleStorageLayoutCommand.java similarity index 81% rename from src/main/java/fr/yuki/YukiRPFramework/commands/DebugVehicleStorageLayoutCommand.java rename to src/main/java/fr/yuki/yrpf/commands/DebugVehicleStorageLayoutCommand.java index 0ef69b3..828cf70 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/commands/DebugVehicleStorageLayoutCommand.java +++ b/src/main/java/fr/yuki/yrpf/commands/DebugVehicleStorageLayoutCommand.java @@ -1,38 +1,37 @@ -package fr.yuki.YukiRPFramework.commands; - -import fr.yuki.YukiRPFramework.manager.CharacterManager; -import fr.yuki.YukiRPFramework.manager.VehicleManager; -import fr.yuki.YukiRPFramework.manager.WorldManager; -import fr.yuki.YukiRPFramework.vehicle.storeLayout.StoreLayoutTransform; -import net.onfirenetwork.onsetjava.Onset; -import net.onfirenetwork.onsetjava.data.Vector; -import net.onfirenetwork.onsetjava.entity.Player; -import net.onfirenetwork.onsetjava.entity.Vehicle; -import net.onfirenetwork.onsetjava.entity.WorldObject; -import net.onfirenetwork.onsetjava.plugin.CommandExecutor; - -public class DebugVehicleStorageLayoutCommand implements CommandExecutor { - @Override - public boolean onCommand(Player player, String s, String[] args) { - if(WorldManager.getPlayerAccount(player).getAdminLevel() == 0) return false; - if(CharacterManager.getCharacterStateByPlayer(player).getWearableWorldObject() == null) return true; - if(WorldManager.getPlayerAccount(player).getCommandLevel() < 3) { - player.sendMessage("You don't have the level required for this command"); - return true; - } - - StoreLayoutTransform storeLayoutTransform = new StoreLayoutTransform(0, new Vector(Integer.parseInt(args[0]), Integer.parseInt(args[1]), Integer.parseInt(args[2])), - new Vector(Integer.parseInt(args[3]), Integer.parseInt(args[4]), Integer.parseInt(args[5])), - new Vector(Double.parseDouble(args[6]), Double.parseDouble(args[7]), Double.parseDouble(args[8]))); - - Vehicle vehicle = VehicleManager.getNearestVehicle(player.getLocation()); - CharacterManager.getCharacterStateByPlayer(player).getWearableWorldObject() - .storeInVehicle(vehicle, storeLayoutTransform); - - Onset.delay(10000, () -> { - CharacterManager.getCharacterStateByPlayer(player).getWearableWorldObject().getWorldObject().destroy(); - }); - - return true; - } -} +package fr.yuki.yrpf.commands; + +import fr.yuki.yrpf.manager.CharacterManager; +import fr.yuki.yrpf.manager.VehicleManager; +import fr.yuki.yrpf.manager.WorldManager; +import fr.yuki.yrpf.vehicle.storeLayout.StoreLayoutTransform; +import net.onfirenetwork.onsetjava.Onset; +import net.onfirenetwork.onsetjava.data.Vector; +import net.onfirenetwork.onsetjava.entity.Player; +import net.onfirenetwork.onsetjava.entity.Vehicle; +import net.onfirenetwork.onsetjava.plugin.CommandExecutor; + +public class DebugVehicleStorageLayoutCommand implements CommandExecutor { + @Override + public boolean onCommand(Player player, String s, String[] args) { + if(WorldManager.getPlayerAccount(player).getAdminLevel() == 0) return false; + if(CharacterManager.getCharacterStateByPlayer(player).getWearableWorldObject() == null) return true; + if(WorldManager.getPlayerAccount(player).getCommandLevel() < 3) { + player.sendMessage("You don't have the level required for this command"); + return true; + } + + StoreLayoutTransform storeLayoutTransform = new StoreLayoutTransform(0, new Vector(Integer.parseInt(args[0]), Integer.parseInt(args[1]), Integer.parseInt(args[2])), + new Vector(Integer.parseInt(args[3]), Integer.parseInt(args[4]), Integer.parseInt(args[5])), + new Vector(Double.parseDouble(args[6]), Double.parseDouble(args[7]), Double.parseDouble(args[8]))); + + Vehicle vehicle = VehicleManager.getNearestVehicle(player.getLocation()); + CharacterManager.getCharacterStateByPlayer(player).getWearableWorldObject() + .storeInVehicle(vehicle, storeLayoutTransform); + + Onset.delay(10000, () -> { + CharacterManager.getCharacterStateByPlayer(player).getWearableWorldObject().getWorldObject().destroy(); + }); + + return true; + } +} diff --git a/src/main/java/fr/yuki/YukiRPFramework/commands/FlipCommand.java b/src/main/java/fr/yuki/yrpf/commands/FlipCommand.java similarity index 83% rename from src/main/java/fr/yuki/YukiRPFramework/commands/FlipCommand.java rename to src/main/java/fr/yuki/yrpf/commands/FlipCommand.java index e811ada..b2c5f55 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/commands/FlipCommand.java +++ b/src/main/java/fr/yuki/yrpf/commands/FlipCommand.java @@ -1,23 +1,23 @@ -package fr.yuki.YukiRPFramework.commands; - -import fr.yuki.YukiRPFramework.manager.VehicleManager; -import fr.yuki.YukiRPFramework.manager.WorldManager; -import net.onfirenetwork.onsetjava.data.Vector; -import net.onfirenetwork.onsetjava.entity.Player; -import net.onfirenetwork.onsetjava.entity.Vehicle; -import net.onfirenetwork.onsetjava.plugin.CommandExecutor; - -public class FlipCommand implements CommandExecutor { - @Override - public boolean onCommand(Player player, String s, String[] strings) { - if(WorldManager.getPlayerAccount(player).getAdminLevel() == 0) return false; - if(WorldManager.getPlayerAccount(player).getCommandLevel() < 2) { - player.sendMessage("You don't have the level required for this command"); - return true; - } - Vehicle vehicle = VehicleManager.getNearestVehicle(player.getLocation()); - if(vehicle == null) return true; - vehicle.setRotation(new Vector(0 , vehicle.getRotation().getY(),0)); - return true; - } -} +package fr.yuki.yrpf.commands; + +import fr.yuki.yrpf.manager.VehicleManager; +import fr.yuki.yrpf.manager.WorldManager; +import net.onfirenetwork.onsetjava.data.Vector; +import net.onfirenetwork.onsetjava.entity.Player; +import net.onfirenetwork.onsetjava.entity.Vehicle; +import net.onfirenetwork.onsetjava.plugin.CommandExecutor; + +public class FlipCommand implements CommandExecutor { + @Override + public boolean onCommand(Player player, String s, String[] strings) { + if(WorldManager.getPlayerAccount(player).getAdminLevel() == 0) return false; + if(WorldManager.getPlayerAccount(player).getCommandLevel() < 2) { + player.sendMessage("You don't have the level required for this command"); + return true; + } + Vehicle vehicle = VehicleManager.getNearestVehicle(player.getLocation()); + if(vehicle == null) return true; + vehicle.setRotation(new Vector(0 , vehicle.getRotation().getY(),0)); + return true; + } +} diff --git a/src/main/java/fr/yuki/YukiRPFramework/commands/ForceGarbageCommand.java b/src/main/java/fr/yuki/yrpf/commands/ForceGarbageCommand.java similarity index 84% rename from src/main/java/fr/yuki/YukiRPFramework/commands/ForceGarbageCommand.java rename to src/main/java/fr/yuki/yrpf/commands/ForceGarbageCommand.java index 94f6243..a6de58a 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/commands/ForceGarbageCommand.java +++ b/src/main/java/fr/yuki/yrpf/commands/ForceGarbageCommand.java @@ -1,20 +1,20 @@ -package fr.yuki.YukiRPFramework.commands; - -import fr.yuki.YukiRPFramework.manager.WorldManager; -import net.onfirenetwork.onsetjava.entity.Player; -import net.onfirenetwork.onsetjava.plugin.CommandExecutor; - -public class ForceGarbageCommand implements CommandExecutor { - - @Override - public boolean onCommand(Player player, String s, String[] strings) { - if(WorldManager.getPlayerAccount(player).getAdminLevel() == 0) return false; - if(WorldManager.getPlayerAccount(player).getCommandLevel() < 5) { - player.sendMessage("You don't have the level required for this command"); - return true; - } - System.gc (); - System.runFinalization (); - return true; - } -} +package fr.yuki.yrpf.commands; + +import fr.yuki.yrpf.manager.WorldManager; +import net.onfirenetwork.onsetjava.entity.Player; +import net.onfirenetwork.onsetjava.plugin.CommandExecutor; + +public class ForceGarbageCommand implements CommandExecutor { + + @Override + public boolean onCommand(Player player, String s, String[] strings) { + if(WorldManager.getPlayerAccount(player).getAdminLevel() == 0) return false; + if(WorldManager.getPlayerAccount(player).getCommandLevel() < 5) { + player.sendMessage("You don't have the level required for this command"); + return true; + } + System.gc (); + System.runFinalization (); + return true; + } +} diff --git a/src/main/java/fr/yuki/YukiRPFramework/commands/FreeHouseCommand.java b/src/main/java/fr/yuki/yrpf/commands/FreeHouseCommand.java similarity index 69% rename from src/main/java/fr/yuki/YukiRPFramework/commands/FreeHouseCommand.java rename to src/main/java/fr/yuki/yrpf/commands/FreeHouseCommand.java index 5418553..fe14522 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/commands/FreeHouseCommand.java +++ b/src/main/java/fr/yuki/yrpf/commands/FreeHouseCommand.java @@ -1,43 +1,36 @@ -package fr.yuki.YukiRPFramework.commands; - -import fr.yuki.YukiRPFramework.dao.HouseDAO; -import fr.yuki.YukiRPFramework.manager.HouseManager; -import fr.yuki.YukiRPFramework.manager.WorldManager; -import fr.yuki.YukiRPFramework.model.House; -import fr.yuki.YukiRPFramework.model.HouseItemObject; -import net.onfirenetwork.onsetjava.entity.Door; -import net.onfirenetwork.onsetjava.entity.Player; -import net.onfirenetwork.onsetjava.plugin.CommandExecutor; - -import java.sql.SQLException; - -public class FreeHouseCommand implements CommandExecutor { - @Override - public boolean onCommand(Player player, String s, String[] args) { - if(WorldManager.getPlayerAccount(player).getAdminLevel() == 0) return false; - if(WorldManager.getPlayerAccount(player).getCommandLevel() < 2) { - player.sendMessage("You don't have the level required for this command"); - return true; - } - House house = HouseManager.getHouseAtLocation(player.getLocation()); - if(house == null) { - house = HouseManager.getHouseAtLocation(WorldManager.getNearestDoor(player.getLocation()).getLocation()); - } - if(house == null) return true; - house.setAccountId(-1); - for(Door door : house.getLine3D().getDoorsInside()) { - door.close(); - } - for(HouseItemObject houseItemObject : house.getHouseItemObjects()) { - houseItemObject.destroy(); - } - try { - HouseDAO.saveHouse(house); - } catch (SQLException throwables) { - throwables.printStackTrace(); - } - - player.sendMessage("This house is free now"); - return true; - } -} +package fr.yuki.yrpf.commands; + +import fr.yuki.yrpf.manager.HouseManager; +import fr.yuki.yrpf.manager.WorldManager; +import fr.yuki.yrpf.model.House; +import fr.yuki.yrpf.model.HouseItemObject; +import net.onfirenetwork.onsetjava.entity.Door; +import net.onfirenetwork.onsetjava.entity.Player; +import net.onfirenetwork.onsetjava.plugin.CommandExecutor; + +public class FreeHouseCommand implements CommandExecutor { + @Override + public boolean onCommand(Player player, String s, String[] args) { + if(WorldManager.getPlayerAccount(player).getAdminLevel() == 0) return false; + if(WorldManager.getPlayerAccount(player).getCommandLevel() < 2) { + player.sendMessage("You don't have the level required for this command"); + return true; + } + House house = HouseManager.getHouseAtLocation(player.getLocation()); + if(house == null) { + house = HouseManager.getHouseAtLocation(WorldManager.getNearestDoor(player.getLocation()).getLocation()); + } + if(house == null) return true; + house.setAccountId(-1); + for(Door door : house.getLine3D().getDoorsInside()) { + door.close(); + } + for(HouseItemObject houseItemObject : house.getHouseItemObjects()) { + houseItemObject.destroy(); + } + house.save(); + + player.sendMessage("This house is free now"); + return true; + } +} diff --git a/src/main/java/fr/yuki/YukiRPFramework/commands/GetIdCommand.java b/src/main/java/fr/yuki/yrpf/commands/GetIdCommand.java similarity index 82% rename from src/main/java/fr/yuki/YukiRPFramework/commands/GetIdCommand.java rename to src/main/java/fr/yuki/yrpf/commands/GetIdCommand.java index ead82c1..8f80377 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/commands/GetIdCommand.java +++ b/src/main/java/fr/yuki/yrpf/commands/GetIdCommand.java @@ -1,25 +1,25 @@ -package fr.yuki.YukiRPFramework.commands; - -import fr.yuki.YukiRPFramework.manager.WorldManager; -import fr.yuki.YukiRPFramework.model.Account; -import net.onfirenetwork.onsetjava.Onset; -import net.onfirenetwork.onsetjava.entity.Player; -import net.onfirenetwork.onsetjava.plugin.CommandExecutor; - -public class GetIdCommand implements CommandExecutor { - - @Override - public boolean onCommand(Player player, String s, String[] strings) { - for(Player p : Onset.getPlayers()) { - try { - Account account = WorldManager.getPlayerAccount(p); - if(account != null) { - if(account.getCharacterName().toLowerCase().contains(strings[0].toLowerCase())) { - player.sendMessage(account.getCharacterName() + " -> " + p.getId() + " (" + p.getSteamId() + ")"); - } - } - } catch (Exception ex) {} - } - return true; - } -} +package fr.yuki.yrpf.commands; + +import fr.yuki.yrpf.manager.WorldManager; +import fr.yuki.yrpf.model.Account; +import net.onfirenetwork.onsetjava.Onset; +import net.onfirenetwork.onsetjava.entity.Player; +import net.onfirenetwork.onsetjava.plugin.CommandExecutor; + +public class GetIdCommand implements CommandExecutor { + + @Override + public boolean onCommand(Player player, String s, String[] strings) { + for(Player p : Onset.getPlayers()) { + try { + Account account = WorldManager.getPlayerAccount(p); + if(account != null) { + if(account.getCharacterName().toLowerCase().contains(strings[0].toLowerCase())) { + player.sendMessage(account.getCharacterName() + " -> " + p.getId() + " (" + p.getSteamId() + ")"); + } + } + } catch (Exception ex) {} + } + return true; + } +} diff --git a/src/main/java/fr/yuki/YukiRPFramework/commands/GiveHouseKeyCommand.java b/src/main/java/fr/yuki/yrpf/commands/GiveHouseKeyCommand.java similarity index 78% rename from src/main/java/fr/yuki/YukiRPFramework/commands/GiveHouseKeyCommand.java rename to src/main/java/fr/yuki/yrpf/commands/GiveHouseKeyCommand.java index b267c38..3a1e0b5 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/commands/GiveHouseKeyCommand.java +++ b/src/main/java/fr/yuki/yrpf/commands/GiveHouseKeyCommand.java @@ -1,29 +1,29 @@ -package fr.yuki.YukiRPFramework.commands; - -import fr.yuki.YukiRPFramework.manager.HouseManager; -import fr.yuki.YukiRPFramework.manager.WorldManager; -import fr.yuki.YukiRPFramework.model.Account; -import fr.yuki.YukiRPFramework.model.House; -import net.onfirenetwork.onsetjava.Onset; -import net.onfirenetwork.onsetjava.entity.Player; -import net.onfirenetwork.onsetjava.plugin.CommandExecutor; - -public class GiveHouseKeyCommand implements CommandExecutor { - @Override - public boolean onCommand(Player player, String s, String[] args) { - Player playerTarget = Onset.getPlayers().stream().filter(x -> x.getId() == Integer.parseInt(args[0])) - .findFirst().orElse(null); - if(playerTarget == null) return true; - - House house = HouseManager.getHouseAtLocation(player.getLocation()); - if(house == null) return true; - if(!HouseManager.canBuildInHouse(player, house)) return true; - Account targetAccount = WorldManager.getPlayerAccount(playerTarget); - - if(house.getAllowedPlayers().contains(targetAccount) || playerTarget.getId() == house.getAccountId()) return true; - - house.getAllowedPlayers().add(targetAccount.getId()); - - return true; - } -} +package fr.yuki.yrpf.commands; + +import fr.yuki.yrpf.manager.HouseManager; +import fr.yuki.yrpf.manager.WorldManager; +import fr.yuki.yrpf.model.Account; +import fr.yuki.yrpf.model.House; +import net.onfirenetwork.onsetjava.Onset; +import net.onfirenetwork.onsetjava.entity.Player; +import net.onfirenetwork.onsetjava.plugin.CommandExecutor; + +public class GiveHouseKeyCommand implements CommandExecutor { + @Override + public boolean onCommand(Player player, String s, String[] args) { + Player playerTarget = Onset.getPlayers().stream().filter(x -> x.getId() == Integer.parseInt(args[0])) + .findFirst().orElse(null); + if(playerTarget == null) return true; + + House house = HouseManager.getHouseAtLocation(player.getLocation()); + if(house == null) return true; + if(!HouseManager.canBuildInHouse(player, house)) return true; + Account targetAccount = WorldManager.getPlayerAccount(playerTarget); + + if(house.getAllowedPlayers().contains(targetAccount) || playerTarget.getId() == house.getAccountId()) return true; + + house.getAllowedPlayers().add(targetAccount.getId()); + + return true; + } +} diff --git a/src/main/java/fr/yuki/YukiRPFramework/commands/GotoCommand.java b/src/main/java/fr/yuki/yrpf/commands/GotoCommand.java similarity index 80% rename from src/main/java/fr/yuki/YukiRPFramework/commands/GotoCommand.java rename to src/main/java/fr/yuki/yrpf/commands/GotoCommand.java index a5b4275..d3f08ab 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/commands/GotoCommand.java +++ b/src/main/java/fr/yuki/yrpf/commands/GotoCommand.java @@ -1,20 +1,19 @@ -package fr.yuki.YukiRPFramework.commands; - -import fr.yuki.YukiRPFramework.manager.WorldManager; -import fr.yuki.YukiRPFramework.model.Account; -import net.onfirenetwork.onsetjava.Onset; -import net.onfirenetwork.onsetjava.entity.Player; -import net.onfirenetwork.onsetjava.plugin.CommandExecutor; - -public class GotoCommand implements CommandExecutor { - @Override - public boolean onCommand(Player player, String s, String[] args) { - if(WorldManager.getPlayerAccount(player).getAdminLevel() == 0) return false; - Player playerTarget = Onset.getPlayers().stream().filter(x -> x.getId() == Integer.parseInt(args[0])) - .findFirst().orElse(null); - if(playerTarget == null) return true; - player.setLocation(playerTarget.getLocation()); - - return true; - } -} +package fr.yuki.yrpf.commands; + +import fr.yuki.yrpf.manager.WorldManager; +import net.onfirenetwork.onsetjava.Onset; +import net.onfirenetwork.onsetjava.entity.Player; +import net.onfirenetwork.onsetjava.plugin.CommandExecutor; + +public class GotoCommand implements CommandExecutor { + @Override + public boolean onCommand(Player player, String s, String[] args) { + if(WorldManager.getPlayerAccount(player).getAdminLevel() == 0) return false; + Player playerTarget = Onset.getPlayers().stream().filter(x -> x.getId() == Integer.parseInt(args[0])) + .findFirst().orElse(null); + if(playerTarget == null) return true; + player.setLocation(playerTarget.getLocation()); + + return true; + } +} diff --git a/src/main/java/fr/yuki/YukiRPFramework/commands/InvisCommand.java b/src/main/java/fr/yuki/yrpf/commands/InvisCommand.java similarity index 82% rename from src/main/java/fr/yuki/YukiRPFramework/commands/InvisCommand.java rename to src/main/java/fr/yuki/yrpf/commands/InvisCommand.java index e76a1a1..a76b65f 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/commands/InvisCommand.java +++ b/src/main/java/fr/yuki/yrpf/commands/InvisCommand.java @@ -1,45 +1,45 @@ -package fr.yuki.YukiRPFramework.commands; - -import fr.yuki.YukiRPFramework.character.CharacterState; -import fr.yuki.YukiRPFramework.character.CharacterStyle; -import fr.yuki.YukiRPFramework.manager.CharacterManager; -import fr.yuki.YukiRPFramework.manager.WorldManager; -import fr.yuki.YukiRPFramework.model.Account; -import net.onfirenetwork.onsetjava.entity.Player; -import net.onfirenetwork.onsetjava.plugin.CommandExecutor; - -public class InvisCommand implements CommandExecutor { - - @Override - public boolean onCommand(Player player, String s, String[] strings) { - if(WorldManager.getPlayerAccount(player).getAdminLevel() == 0) return false; - if(WorldManager.getPlayerAccount(player).getCommandLevel() < 2) { - player.sendMessage("You don't have the level required for this command"); - return true; - } - Account account = WorldManager.getPlayerAccount(player); - CharacterState state = CharacterManager.getCharacterStateByPlayer(player); - - if(state.isInvisible()) { - player.sendMessage("You are now visible"); - CharacterStyle characterStyle = account.decodeOriginalCharacterStyle(); - account.setCharacterStyle(characterStyle); - characterStyle.attachStyleToPlayer(player); - player.setProperty("isInvisible", "false", true); - state.setInvisible(false); - } else { - player.sendMessage("You are now invisible"); - CharacterStyle characterStyle = account.decodeCharacterStyle(); - characterStyle.setBody(""); - characterStyle.setHair(""); - characterStyle.setTop(""); - characterStyle.setPant(""); - characterStyle.setShoes(""); - account.setCharacterStyle(characterStyle); - characterStyle.attachStyleToPlayer(player); - player.setProperty("isInvisible", "true", true); - state.setInvisible(true); - } - return true; - } -} +package fr.yuki.yrpf.commands; + +import fr.yuki.yrpf.character.CharacterState; +import fr.yuki.yrpf.character.CharacterStyle; +import fr.yuki.yrpf.manager.CharacterManager; +import fr.yuki.yrpf.manager.WorldManager; +import fr.yuki.yrpf.model.Account; +import net.onfirenetwork.onsetjava.entity.Player; +import net.onfirenetwork.onsetjava.plugin.CommandExecutor; + +public class InvisCommand implements CommandExecutor { + + @Override + public boolean onCommand(Player player, String s, String[] strings) { + if(WorldManager.getPlayerAccount(player).getAdminLevel() == 0) return false; + if(WorldManager.getPlayerAccount(player).getCommandLevel() < 2) { + player.sendMessage("You don't have the level required for this command"); + return true; + } + Account account = WorldManager.getPlayerAccount(player); + CharacterState state = CharacterManager.getCharacterStateByPlayer(player); + + if(state.isInvisible()) { + player.sendMessage("You are now visible"); + CharacterStyle characterStyle = account.decodeOriginalCharacterStyle(); + account.setCharacterStyle(characterStyle); + characterStyle.attachStyleToPlayer(player); + player.setProperty("isInvisible", "false", true); + state.setInvisible(false); + } else { + player.sendMessage("You are now invisible"); + CharacterStyle characterStyle = account.decodeCharacterStyle(); + characterStyle.setBody(""); + characterStyle.setHair(""); + characterStyle.setTop(""); + characterStyle.setPant(""); + characterStyle.setShoes(""); + account.setCharacterStyle(characterStyle); + characterStyle.attachStyleToPlayer(player); + player.setProperty("isInvisible", "true", true); + state.setInvisible(true); + } + return true; + } +} diff --git a/src/main/java/fr/yuki/YukiRPFramework/commands/ItemCommand.java b/src/main/java/fr/yuki/yrpf/commands/ItemCommand.java similarity index 69% rename from src/main/java/fr/yuki/YukiRPFramework/commands/ItemCommand.java rename to src/main/java/fr/yuki/yrpf/commands/ItemCommand.java index 435ed5f..978e006 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/commands/ItemCommand.java +++ b/src/main/java/fr/yuki/yrpf/commands/ItemCommand.java @@ -1,25 +1,22 @@ -package fr.yuki.YukiRPFramework.commands; - -import com.google.gson.Gson; -import fr.yuki.YukiRPFramework.enums.ItemTemplateEnum; -import fr.yuki.YukiRPFramework.manager.InventoryManager; -import fr.yuki.YukiRPFramework.manager.WorldManager; -import fr.yuki.YukiRPFramework.model.ItemTemplate; -import fr.yuki.YukiRPFramework.net.payload.SetWindowStatePayload; -import net.onfirenetwork.onsetjava.entity.Player; -import net.onfirenetwork.onsetjava.plugin.CommandExecutor; - -public class ItemCommand implements CommandExecutor { - @Override - public boolean onCommand(Player player, String s, String[] args) { - if(WorldManager.getPlayerAccount(player).getAdminLevel() == 0) return false; - if(WorldManager.getPlayerAccount(player).getCommandLevel() < 2) { - player.sendMessage("You don't have the level required for this command"); - return true; - } - ItemTemplate itemTemplate = InventoryManager.getItemTemplates().get(Integer.parseInt(args[0])); - InventoryManager.addItemToPlayer(player, String.valueOf(itemTemplate.getId()), Integer.parseInt(args[1]), true); - player.sendMessage("Add item " + itemTemplate.getName() + " to your inventory"); - return true; - } -} +package fr.yuki.yrpf.commands; + +import fr.yuki.yrpf.manager.InventoryManager; +import fr.yuki.yrpf.manager.WorldManager; +import fr.yuki.yrpf.model.ItemTemplate; +import net.onfirenetwork.onsetjava.entity.Player; +import net.onfirenetwork.onsetjava.plugin.CommandExecutor; + +public class ItemCommand implements CommandExecutor { + @Override + public boolean onCommand(Player player, String s, String[] args) { + if(WorldManager.getPlayerAccount(player).getAdminLevel() == 0) return false; + if(WorldManager.getPlayerAccount(player).getCommandLevel() < 2) { + player.sendMessage("You don't have the level required for this command"); + return true; + } + ItemTemplate itemTemplate = InventoryManager.getItemTemplates().get(Integer.parseInt(args[0])); + InventoryManager.addItemToPlayer(player, String.valueOf(itemTemplate.getId()), Integer.parseInt(args[1]), true); + player.sendMessage("Add item " + itemTemplate.getName() + " to your inventory"); + return true; + } +} diff --git a/src/main/java/fr/yuki/YukiRPFramework/commands/KickCommand.java b/src/main/java/fr/yuki/yrpf/commands/KickCommand.java similarity index 83% rename from src/main/java/fr/yuki/YukiRPFramework/commands/KickCommand.java rename to src/main/java/fr/yuki/yrpf/commands/KickCommand.java index 1c2f476..d627b91 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/commands/KickCommand.java +++ b/src/main/java/fr/yuki/yrpf/commands/KickCommand.java @@ -1,24 +1,23 @@ -package fr.yuki.YukiRPFramework.commands; - -import fr.yuki.YukiRPFramework.manager.WorldManager; -import fr.yuki.YukiRPFramework.model.Account; -import net.onfirenetwork.onsetjava.Onset; -import net.onfirenetwork.onsetjava.entity.Player; -import net.onfirenetwork.onsetjava.plugin.CommandExecutor; - -public class KickCommand implements CommandExecutor { - @Override - public boolean onCommand(Player player, String s, String[] args) { - if(WorldManager.getPlayerAccount(player).getAdminLevel() == 0) return false; - if(WorldManager.getPlayerAccount(player).getCommandLevel() < 2) { - player.sendMessage("You don't have the level required for this command"); - return true; - } - Player playerTarget = Onset.getPlayers().stream().filter(x -> x.getId() == Integer.parseInt(args[0])) - .findFirst().orElse(null); - if(playerTarget == null) return true; - playerTarget.kick("Kick : " + String.join(" ", args)); - - return true; - } -} +package fr.yuki.yrpf.commands; + +import fr.yuki.yrpf.manager.WorldManager; +import net.onfirenetwork.onsetjava.Onset; +import net.onfirenetwork.onsetjava.entity.Player; +import net.onfirenetwork.onsetjava.plugin.CommandExecutor; + +public class KickCommand implements CommandExecutor { + @Override + public boolean onCommand(Player player, String s, String[] args) { + if(WorldManager.getPlayerAccount(player).getAdminLevel() == 0) return false; + if(WorldManager.getPlayerAccount(player).getCommandLevel() < 2) { + player.sendMessage("You don't have the level required for this command"); + return true; + } + Player playerTarget = Onset.getPlayers().stream().filter(x -> x.getId() == Integer.parseInt(args[0])) + .findFirst().orElse(null); + if(playerTarget == null) return true; + playerTarget.kick("Kick : " + String.join(" ", args)); + + return true; + } +} diff --git a/src/main/java/fr/yuki/YukiRPFramework/commands/LocCommand.java b/src/main/java/fr/yuki/yrpf/commands/LocCommand.java similarity index 68% rename from src/main/java/fr/yuki/YukiRPFramework/commands/LocCommand.java rename to src/main/java/fr/yuki/yrpf/commands/LocCommand.java index 7c4b1cb..67d562e 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/commands/LocCommand.java +++ b/src/main/java/fr/yuki/yrpf/commands/LocCommand.java @@ -1,22 +1,20 @@ -package fr.yuki.YukiRPFramework.commands; - -import fr.yuki.YukiRPFramework.character.CharacterState; -import fr.yuki.YukiRPFramework.manager.CharacterManager; -import fr.yuki.YukiRPFramework.manager.InventoryManager; -import fr.yuki.YukiRPFramework.manager.WorldManager; -import fr.yuki.YukiRPFramework.model.ItemTemplate; -import net.onfirenetwork.onsetjava.data.Location; -import net.onfirenetwork.onsetjava.entity.Player; -import net.onfirenetwork.onsetjava.plugin.CommandExecutor; - -public class LocCommand implements CommandExecutor { - @Override - public boolean onCommand(Player player, String s, String[] args) { - if(WorldManager.getPlayerAccount(player).getAdminLevel() == 0) return false; - Location loc = player.getLocationAndHeading(); - CharacterState state = CharacterManager.getCharacterStateByPlayer(player); - state.getLastLocationsRequest().add(player.getLocation()); - player.sendMessage("Current loc x=" + loc.getX() + ", y=" + loc.getY() + ", z=" + loc.getZ() + ", h=" + loc.getHeading()); - return true; - } -} +package fr.yuki.yrpf.commands; + +import fr.yuki.yrpf.character.CharacterState; +import fr.yuki.yrpf.manager.CharacterManager; +import fr.yuki.yrpf.manager.WorldManager; +import net.onfirenetwork.onsetjava.data.Location; +import net.onfirenetwork.onsetjava.entity.Player; +import net.onfirenetwork.onsetjava.plugin.CommandExecutor; + +public class LocCommand implements CommandExecutor { + @Override + public boolean onCommand(Player player, String s, String[] args) { + if(WorldManager.getPlayerAccount(player).getAdminLevel() == 0) return false; + Location loc = player.getLocationAndHeading(); + CharacterState state = CharacterManager.getCharacterStateByPlayer(player); + state.getLastLocationsRequest().add(player.getLocation()); + player.sendMessage("Current loc x=" + loc.getX() + ", y=" + loc.getY() + ", z=" + loc.getZ() + ", h=" + loc.getHeading()); + return true; + } +} diff --git a/src/main/java/fr/yuki/YukiRPFramework/commands/MoveCommand.java b/src/main/java/fr/yuki/yrpf/commands/MoveCommand.java similarity index 81% rename from src/main/java/fr/yuki/YukiRPFramework/commands/MoveCommand.java rename to src/main/java/fr/yuki/yrpf/commands/MoveCommand.java index 6be3caa..2869d76 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/commands/MoveCommand.java +++ b/src/main/java/fr/yuki/yrpf/commands/MoveCommand.java @@ -1,21 +1,21 @@ -package fr.yuki.YukiRPFramework.commands; - -import fr.yuki.YukiRPFramework.manager.VehicleManager; -import fr.yuki.YukiRPFramework.manager.WorldManager; -import net.onfirenetwork.onsetjava.Onset; -import net.onfirenetwork.onsetjava.data.Vector; -import net.onfirenetwork.onsetjava.entity.Player; -import net.onfirenetwork.onsetjava.entity.Vehicle; -import net.onfirenetwork.onsetjava.plugin.CommandExecutor; - -public class MoveCommand implements CommandExecutor { - - @Override - public boolean onCommand(Player player, String s, String[] strings) { - if(WorldManager.getPlayerAccount(player).getAdminLevel() == 0) return false; - Vehicle vehicle = VehicleManager.getNearestVehicle(player.getLocation()); - vehicle.setLocation(new Vector(player.getLocation().getX() + 250, player.getLocation().getY() + 250, player.getLocation().getZ())); - Onset.print("Vehicle positon moved"); - return true; - } -} +package fr.yuki.yrpf.commands; + +import fr.yuki.yrpf.manager.VehicleManager; +import fr.yuki.yrpf.manager.WorldManager; +import net.onfirenetwork.onsetjava.Onset; +import net.onfirenetwork.onsetjava.data.Vector; +import net.onfirenetwork.onsetjava.entity.Player; +import net.onfirenetwork.onsetjava.entity.Vehicle; +import net.onfirenetwork.onsetjava.plugin.CommandExecutor; + +public class MoveCommand implements CommandExecutor { + + @Override + public boolean onCommand(Player player, String s, String[] strings) { + if(WorldManager.getPlayerAccount(player).getAdminLevel() == 0) return false; + Vehicle vehicle = VehicleManager.getNearestVehicle(player.getLocation()); + vehicle.setLocation(new Vector(player.getLocation().getX() + 250, player.getLocation().getY() + 250, player.getLocation().getZ())); + Onset.print("Vehicle positon moved"); + return true; + } +} diff --git a/src/main/java/fr/yuki/YukiRPFramework/commands/NitroCommand.java b/src/main/java/fr/yuki/yrpf/commands/NitroCommand.java similarity index 85% rename from src/main/java/fr/yuki/YukiRPFramework/commands/NitroCommand.java rename to src/main/java/fr/yuki/yrpf/commands/NitroCommand.java index 6f21436..3e4ae38 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/commands/NitroCommand.java +++ b/src/main/java/fr/yuki/yrpf/commands/NitroCommand.java @@ -1,19 +1,19 @@ -package fr.yuki.YukiRPFramework.commands; - -import fr.yuki.YukiRPFramework.manager.WorldManager; -import net.onfirenetwork.onsetjava.entity.Player; -import net.onfirenetwork.onsetjava.plugin.CommandExecutor; - -public class NitroCommand implements CommandExecutor { - @Override - public boolean onCommand(Player player, String s, String[] args) { - if(WorldManager.getPlayerAccount(player).getAdminLevel() == 0) return false; - if(WorldManager.getPlayerAccount(player).getCommandLevel() < 3) { - player.sendMessage("You don't have the level required for this command"); - return true; - } - if(player.getVehicle() == null) return true; - player.getVehicle().setNitro(true); - return true; - } -} +package fr.yuki.yrpf.commands; + +import fr.yuki.yrpf.manager.WorldManager; +import net.onfirenetwork.onsetjava.entity.Player; +import net.onfirenetwork.onsetjava.plugin.CommandExecutor; + +public class NitroCommand implements CommandExecutor { + @Override + public boolean onCommand(Player player, String s, String[] args) { + if(WorldManager.getPlayerAccount(player).getAdminLevel() == 0) return false; + if(WorldManager.getPlayerAccount(player).getCommandLevel() < 3) { + player.sendMessage("You don't have the level required for this command"); + return true; + } + if(player.getVehicle() == null) return true; + player.getVehicle().setNitro(true); + return true; + } +} diff --git a/src/main/java/fr/yuki/YukiRPFramework/commands/RegenPhoneNumberCommand.java b/src/main/java/fr/yuki/yrpf/commands/RegenPhoneNumberCommand.java similarity index 84% rename from src/main/java/fr/yuki/YukiRPFramework/commands/RegenPhoneNumberCommand.java rename to src/main/java/fr/yuki/yrpf/commands/RegenPhoneNumberCommand.java index 6b773d3..7b36e43 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/commands/RegenPhoneNumberCommand.java +++ b/src/main/java/fr/yuki/yrpf/commands/RegenPhoneNumberCommand.java @@ -1,8 +1,8 @@ -package fr.yuki.YukiRPFramework.commands; +package fr.yuki.yrpf.commands; -import fr.yuki.YukiRPFramework.manager.PhoneManager; -import fr.yuki.YukiRPFramework.manager.WorldManager; -import fr.yuki.YukiRPFramework.model.Account; +import fr.yuki.yrpf.manager.PhoneManager; +import fr.yuki.yrpf.manager.WorldManager; +import fr.yuki.yrpf.model.Account; import net.onfirenetwork.onsetjava.Onset; import net.onfirenetwork.onsetjava.entity.Player; import net.onfirenetwork.onsetjava.plugin.CommandExecutor; diff --git a/src/main/java/fr/yuki/YukiRPFramework/commands/RequestCharacterCreationCommand.java b/src/main/java/fr/yuki/yrpf/commands/RequestCharacterCreationCommand.java similarity index 84% rename from src/main/java/fr/yuki/YukiRPFramework/commands/RequestCharacterCreationCommand.java rename to src/main/java/fr/yuki/yrpf/commands/RequestCharacterCreationCommand.java index d37ce86..3d43188 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/commands/RequestCharacterCreationCommand.java +++ b/src/main/java/fr/yuki/yrpf/commands/RequestCharacterCreationCommand.java @@ -1,8 +1,8 @@ -package fr.yuki.YukiRPFramework.commands; +package fr.yuki.yrpf.commands; -import fr.yuki.YukiRPFramework.manager.UIStateManager; -import fr.yuki.YukiRPFramework.manager.WorldManager; -import fr.yuki.YukiRPFramework.model.Account; +import fr.yuki.yrpf.manager.UIStateManager; +import fr.yuki.yrpf.manager.WorldManager; +import fr.yuki.yrpf.model.Account; import net.onfirenetwork.onsetjava.Onset; import net.onfirenetwork.onsetjava.entity.Player; import net.onfirenetwork.onsetjava.plugin.CommandExecutor; diff --git a/src/main/java/fr/yuki/YukiRPFramework/commands/ReviveCommand.java b/src/main/java/fr/yuki/yrpf/commands/ReviveCommand.java similarity index 84% rename from src/main/java/fr/yuki/YukiRPFramework/commands/ReviveCommand.java rename to src/main/java/fr/yuki/yrpf/commands/ReviveCommand.java index 834c69f..8527525 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/commands/ReviveCommand.java +++ b/src/main/java/fr/yuki/yrpf/commands/ReviveCommand.java @@ -1,24 +1,24 @@ -package fr.yuki.YukiRPFramework.commands; - -import fr.yuki.YukiRPFramework.manager.WorldManager; -import fr.yuki.YukiRPFramework.model.Account; -import net.onfirenetwork.onsetjava.Onset; -import net.onfirenetwork.onsetjava.entity.Player; -import net.onfirenetwork.onsetjava.plugin.CommandExecutor; - -public class ReviveCommand implements CommandExecutor { - @Override - public boolean onCommand(Player player, String s, String[] args) { - if(WorldManager.getPlayerAccount(player).getAdminLevel() == 0) return false; - if(WorldManager.getPlayerAccount(player).getCommandLevel() < 2) { - player.sendMessage("You don't have the level required for this command"); - return true; - } - Player playerTarget = Onset.getPlayers().stream().filter(x -> x.getId() == Integer.parseInt(args[0])) - .findFirst().orElse(null); - if(playerTarget == null) return true; - Account account = WorldManager.getPlayerAccount(playerTarget); - WorldManager.revive(player, playerTarget); - return true; - } -} +package fr.yuki.yrpf.commands; + +import fr.yuki.yrpf.manager.WorldManager; +import fr.yuki.yrpf.model.Account; +import net.onfirenetwork.onsetjava.Onset; +import net.onfirenetwork.onsetjava.entity.Player; +import net.onfirenetwork.onsetjava.plugin.CommandExecutor; + +public class ReviveCommand implements CommandExecutor { + @Override + public boolean onCommand(Player player, String s, String[] args) { + if(WorldManager.getPlayerAccount(player).getAdminLevel() == 0) return false; + if(WorldManager.getPlayerAccount(player).getCommandLevel() < 2) { + player.sendMessage("You don't have the level required for this command"); + return true; + } + Player playerTarget = Onset.getPlayers().stream().filter(x -> x.getId() == Integer.parseInt(args[0])) + .findFirst().orElse(null); + if(playerTarget == null) return true; + Account account = WorldManager.getPlayerAccount(playerTarget); + WorldManager.revive(player, playerTarget); + return true; + } +} diff --git a/src/main/java/fr/yuki/YukiRPFramework/commands/SetAdminLevelCommand.java b/src/main/java/fr/yuki/yrpf/commands/SetAdminLevelCommand.java similarity index 86% rename from src/main/java/fr/yuki/YukiRPFramework/commands/SetAdminLevelCommand.java rename to src/main/java/fr/yuki/yrpf/commands/SetAdminLevelCommand.java index cc7a4e2..4815574 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/commands/SetAdminLevelCommand.java +++ b/src/main/java/fr/yuki/yrpf/commands/SetAdminLevelCommand.java @@ -1,27 +1,27 @@ -package fr.yuki.YukiRPFramework.commands; - -import fr.yuki.YukiRPFramework.manager.WorldManager; -import fr.yuki.YukiRPFramework.model.Account; -import net.onfirenetwork.onsetjava.Onset; -import net.onfirenetwork.onsetjava.entity.Player; -import net.onfirenetwork.onsetjava.plugin.CommandExecutor; - -public class SetAdminLevelCommand implements CommandExecutor { - @Override - public boolean onCommand(Player player, String s, String[] args) { - if(WorldManager.getPlayerAccount(player).getAdminLevel() == 0) return false; - if(WorldManager.getPlayerAccount(player).getCommandLevel() < 5) { - player.sendMessage("You don't have the level required for this command"); - return true; - } - Player playerTarget = Onset.getPlayers().stream().filter(x -> x.getId() == Integer.parseInt(args[0])) - .findFirst().orElse(null); - if(playerTarget == null) return true; - Account account = WorldManager.getPlayerAccount(playerTarget); - account.setAdminLevel(1); - WorldManager.savePlayer(playerTarget); - - player.sendMessage("Set admin " + account.getCharacterName()); - return true; - } -} +package fr.yuki.yrpf.commands; + +import fr.yuki.yrpf.manager.WorldManager; +import fr.yuki.yrpf.model.Account; +import net.onfirenetwork.onsetjava.Onset; +import net.onfirenetwork.onsetjava.entity.Player; +import net.onfirenetwork.onsetjava.plugin.CommandExecutor; + +public class SetAdminLevelCommand implements CommandExecutor { + @Override + public boolean onCommand(Player player, String s, String[] args) { + if(WorldManager.getPlayerAccount(player).getAdminLevel() == 0) return false; + if(WorldManager.getPlayerAccount(player).getCommandLevel() < 5) { + player.sendMessage("You don't have the level required for this command"); + return true; + } + Player playerTarget = Onset.getPlayers().stream().filter(x -> x.getId() == Integer.parseInt(args[0])) + .findFirst().orElse(null); + if(playerTarget == null) return true; + Account account = WorldManager.getPlayerAccount(playerTarget); + account.setAdminLevel(1); + WorldManager.savePlayer(playerTarget); + + player.sendMessage("Set admin " + account.getCharacterName()); + return true; + } +} diff --git a/src/main/java/fr/yuki/YukiRPFramework/commands/SetCharacterScaleCommand.java b/src/main/java/fr/yuki/yrpf/commands/SetCharacterScaleCommand.java similarity index 85% rename from src/main/java/fr/yuki/YukiRPFramework/commands/SetCharacterScaleCommand.java rename to src/main/java/fr/yuki/yrpf/commands/SetCharacterScaleCommand.java index aee767a..dc8163d 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/commands/SetCharacterScaleCommand.java +++ b/src/main/java/fr/yuki/yrpf/commands/SetCharacterScaleCommand.java @@ -1,19 +1,19 @@ -package fr.yuki.YukiRPFramework.commands; - -import fr.yuki.YukiRPFramework.manager.WorldManager; -import net.onfirenetwork.onsetjava.entity.Player; -import net.onfirenetwork.onsetjava.plugin.CommandExecutor; - -public class SetCharacterScaleCommand implements CommandExecutor { - @Override - public boolean onCommand(Player player, String s, String[] args) { - if(WorldManager.getPlayerAccount(player).getAdminLevel() == 0) return false; - if(WorldManager.getPlayerAccount(player).getCommandLevel() < 5) { - player.sendMessage("You don't have the level required for this command"); - return true; - } - player.setProperty("characterScale", args[0].toString(), true); - player.sendMessage("Scale set"); - return true; - } -} +package fr.yuki.yrpf.commands; + +import fr.yuki.yrpf.manager.WorldManager; +import net.onfirenetwork.onsetjava.entity.Player; +import net.onfirenetwork.onsetjava.plugin.CommandExecutor; + +public class SetCharacterScaleCommand implements CommandExecutor { + @Override + public boolean onCommand(Player player, String s, String[] args) { + if(WorldManager.getPlayerAccount(player).getAdminLevel() == 0) return false; + if(WorldManager.getPlayerAccount(player).getCommandLevel() < 5) { + player.sendMessage("You don't have the level required for this command"); + return true; + } + player.setProperty("characterScale", args[0].toString(), true); + player.sendMessage("Scale set"); + return true; + } +} diff --git a/src/main/java/fr/yuki/YukiRPFramework/commands/SetClotheCommand.java b/src/main/java/fr/yuki/yrpf/commands/SetClotheCommand.java similarity index 83% rename from src/main/java/fr/yuki/YukiRPFramework/commands/SetClotheCommand.java rename to src/main/java/fr/yuki/yrpf/commands/SetClotheCommand.java index 7c06a0d..14f0cdf 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/commands/SetClotheCommand.java +++ b/src/main/java/fr/yuki/yrpf/commands/SetClotheCommand.java @@ -1,54 +1,54 @@ -package fr.yuki.YukiRPFramework.commands; - -import fr.yuki.YukiRPFramework.character.CharacterState; -import fr.yuki.YukiRPFramework.character.CharacterStyle; -import fr.yuki.YukiRPFramework.manager.CharacterManager; -import fr.yuki.YukiRPFramework.manager.WorldManager; -import fr.yuki.YukiRPFramework.model.Account; -import net.onfirenetwork.onsetjava.Onset; -import net.onfirenetwork.onsetjava.entity.Player; -import net.onfirenetwork.onsetjava.plugin.CommandExecutor; - -public class SetClotheCommand implements CommandExecutor { - @Override - public boolean onCommand(Player player, String s, String[] args) { - if(WorldManager.getPlayerAccount(player).getAdminLevel() == 0) return false; - if(WorldManager.getPlayerAccount(player).getCommandLevel() < 3) { - player.sendMessage("You don't have the level required for this command"); - return true; - } - Player targetPlayer = Onset.getPlayers().stream().filter(x -> x.getId() == Integer.parseInt(args[0])) - .findFirst().orElse(null); - Account account = WorldManager.getPlayerAccount(targetPlayer); - CharacterState state = CharacterManager.getCharacterStateByPlayer(targetPlayer); - CharacterStyle characterStyle = account.decodeCharacterStyle(); - switch (args[1].toLowerCase().toString()) { - case "body": - characterStyle.setBody(args[2]); - break; - - case "top": - characterStyle.setTop(args[2]); - break; - - case "pant": - characterStyle.setPant(args[2]); - break; - - case "shoes": - characterStyle.setShoes(args[2]); - break; - - case "clear": - characterStyle.setBody(""); - characterStyle.setHair(""); - characterStyle.setTop(""); - characterStyle.setPant(""); - characterStyle.setShoes(""); - break; - } - account.setCharacterStyle(characterStyle); - characterStyle.attachStyleToPlayer(targetPlayer); - return false; - } -} +package fr.yuki.yrpf.commands; + +import fr.yuki.yrpf.character.CharacterState; +import fr.yuki.yrpf.character.CharacterStyle; +import fr.yuki.yrpf.manager.CharacterManager; +import fr.yuki.yrpf.manager.WorldManager; +import fr.yuki.yrpf.model.Account; +import net.onfirenetwork.onsetjava.Onset; +import net.onfirenetwork.onsetjava.entity.Player; +import net.onfirenetwork.onsetjava.plugin.CommandExecutor; + +public class SetClotheCommand implements CommandExecutor { + @Override + public boolean onCommand(Player player, String s, String[] args) { + if(WorldManager.getPlayerAccount(player).getAdminLevel() == 0) return false; + if(WorldManager.getPlayerAccount(player).getCommandLevel() < 3) { + player.sendMessage("You don't have the level required for this command"); + return true; + } + Player targetPlayer = Onset.getPlayers().stream().filter(x -> x.getId() == Integer.parseInt(args[0])) + .findFirst().orElse(null); + Account account = WorldManager.getPlayerAccount(targetPlayer); + CharacterState state = CharacterManager.getCharacterStateByPlayer(targetPlayer); + CharacterStyle characterStyle = account.decodeCharacterStyle(); + switch (args[1].toLowerCase().toString()) { + case "body": + characterStyle.setBody(args[2]); + break; + + case "top": + characterStyle.setTop(args[2]); + break; + + case "pant": + characterStyle.setPant(args[2]); + break; + + case "shoes": + characterStyle.setShoes(args[2]); + break; + + case "clear": + characterStyle.setBody(""); + characterStyle.setHair(""); + characterStyle.setTop(""); + characterStyle.setPant(""); + characterStyle.setShoes(""); + break; + } + account.setCharacterStyle(characterStyle); + characterStyle.attachStyleToPlayer(targetPlayer); + return false; + } +} diff --git a/src/main/java/fr/yuki/YukiRPFramework/commands/SetCommandLevelCommand.java b/src/main/java/fr/yuki/yrpf/commands/SetCommandLevelCommand.java similarity index 88% rename from src/main/java/fr/yuki/YukiRPFramework/commands/SetCommandLevelCommand.java rename to src/main/java/fr/yuki/yrpf/commands/SetCommandLevelCommand.java index b466a8a..1101561 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/commands/SetCommandLevelCommand.java +++ b/src/main/java/fr/yuki/yrpf/commands/SetCommandLevelCommand.java @@ -1,7 +1,7 @@ -package fr.yuki.YukiRPFramework.commands; +package fr.yuki.yrpf.commands; -import fr.yuki.YukiRPFramework.manager.WorldManager; -import fr.yuki.YukiRPFramework.model.Account; +import fr.yuki.yrpf.manager.WorldManager; +import fr.yuki.yrpf.model.Account; import net.onfirenetwork.onsetjava.Onset; import net.onfirenetwork.onsetjava.entity.Player; import net.onfirenetwork.onsetjava.plugin.CommandExecutor; diff --git a/src/main/java/fr/yuki/YukiRPFramework/commands/SetHousePropsCommand.java b/src/main/java/fr/yuki/yrpf/commands/SetHousePropsCommand.java similarity index 68% rename from src/main/java/fr/yuki/YukiRPFramework/commands/SetHousePropsCommand.java rename to src/main/java/fr/yuki/yrpf/commands/SetHousePropsCommand.java index 2ebc555..fdc5b81 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/commands/SetHousePropsCommand.java +++ b/src/main/java/fr/yuki/yrpf/commands/SetHousePropsCommand.java @@ -1,37 +1,30 @@ -package fr.yuki.YukiRPFramework.commands; - -import fr.yuki.YukiRPFramework.dao.HouseDAO; -import fr.yuki.YukiRPFramework.manager.HouseManager; -import fr.yuki.YukiRPFramework.manager.WorldManager; -import fr.yuki.YukiRPFramework.model.House; -import net.onfirenetwork.onsetjava.entity.Player; -import net.onfirenetwork.onsetjava.plugin.CommandExecutor; - -import java.sql.SQLException; - -public class SetHousePropsCommand implements CommandExecutor { - @Override - public boolean onCommand(Player player, String s, String[] args) { - if(WorldManager.getPlayerAccount(player).getAdminLevel() == 0) return false; - if(WorldManager.getPlayerAccount(player).getCommandLevel() < 3) { - player.sendMessage("You don't have the level required for this command"); - return true; - } - House house = HouseManager.getHouseAtLocation(player.getLocation()); - if(house == null) { - house = HouseManager.getHouseAtLocation(WorldManager.getNearestDoor(player.getLocation()).getLocation()); - } - if(house == null) return true; - - house.setPrice(Integer.parseInt(args[0])); - house.setName(args[1]); - try { - HouseDAO.saveHouse(house); - } catch (SQLException throwables) { - throwables.printStackTrace(); - } - - player.sendMessage("House props set"); - return true; - } -} +package fr.yuki.yrpf.commands; + +import fr.yuki.yrpf.manager.HouseManager; +import fr.yuki.yrpf.manager.WorldManager; +import fr.yuki.yrpf.model.House; +import net.onfirenetwork.onsetjava.entity.Player; +import net.onfirenetwork.onsetjava.plugin.CommandExecutor; + +public class SetHousePropsCommand implements CommandExecutor { + @Override + public boolean onCommand(Player player, String s, String[] args) { + if(WorldManager.getPlayerAccount(player).getAdminLevel() == 0) return false; + if(WorldManager.getPlayerAccount(player).getCommandLevel() < 3) { + player.sendMessage("You don't have the level required for this command"); + return true; + } + House house = HouseManager.getHouseAtLocation(player.getLocation()); + if(house == null) { + house = HouseManager.getHouseAtLocation(WorldManager.getNearestDoor(player.getLocation()).getLocation()); + } + if(house == null) return true; + + house.setPrice(Integer.parseInt(args[0])); + house.setName(args[1]); + house.save(); + + player.sendMessage("House props set"); + return true; + } +} diff --git a/src/main/java/fr/yuki/YukiRPFramework/commands/SetLangCommand.java b/src/main/java/fr/yuki/yrpf/commands/SetLangCommand.java similarity index 75% rename from src/main/java/fr/yuki/YukiRPFramework/commands/SetLangCommand.java rename to src/main/java/fr/yuki/yrpf/commands/SetLangCommand.java index eb35e93..25aa664 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/commands/SetLangCommand.java +++ b/src/main/java/fr/yuki/yrpf/commands/SetLangCommand.java @@ -1,26 +1,24 @@ -package fr.yuki.YukiRPFramework.commands; - -import fr.yuki.YukiRPFramework.manager.UIStateManager; -import fr.yuki.YukiRPFramework.manager.WorldManager; -import fr.yuki.YukiRPFramework.model.Account; -import fr.yuki.YukiRPFramework.ui.UIState; -import net.onfirenetwork.onsetjava.entity.Player; -import net.onfirenetwork.onsetjava.plugin.CommandExecutor; - -public class SetLangCommand implements CommandExecutor { - @Override - public boolean onCommand(Player player, String s, String[] args) { - if(args.length == 0) { - player.sendMessage("You must provide a lang FR, EN or DE - /lang [lang]"); - return true; - } - if(args[0].toLowerCase().equals("de") || args[0].toLowerCase().equals("fr") || args[0].toLowerCase().equals("en")) { - UIStateManager.setLang(player, args[0].toLowerCase()); - WorldManager.savePlayer(player); - return true; - } else { - player.sendMessage("Invalide lang, only FR, EN or DE is supported - /lang [lang]"); - return true; - } - } -} +package fr.yuki.yrpf.commands; + +import fr.yuki.yrpf.manager.UIStateManager; +import fr.yuki.yrpf.manager.WorldManager; +import net.onfirenetwork.onsetjava.entity.Player; +import net.onfirenetwork.onsetjava.plugin.CommandExecutor; + +public class SetLangCommand implements CommandExecutor { + @Override + public boolean onCommand(Player player, String s, String[] args) { + if(args.length == 0) { + player.sendMessage("You must provide a lang FR, EN or DE - /lang [lang]"); + return true; + } + if(args[0].toLowerCase().equals("de") || args[0].toLowerCase().equals("fr") || args[0].toLowerCase().equals("en")) { + UIStateManager.setLang(player, args[0].toLowerCase()); + WorldManager.savePlayer(player); + return true; + } else { + player.sendMessage("Invalide lang, only FR, EN or DE is supported - /lang [lang]"); + return true; + } + } +} diff --git a/src/main/java/fr/yuki/YukiRPFramework/commands/SetTimeCommand.java b/src/main/java/fr/yuki/yrpf/commands/SetTimeCommand.java similarity index 79% rename from src/main/java/fr/yuki/YukiRPFramework/commands/SetTimeCommand.java rename to src/main/java/fr/yuki/yrpf/commands/SetTimeCommand.java index b88dc31..ac65cf6 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/commands/SetTimeCommand.java +++ b/src/main/java/fr/yuki/yrpf/commands/SetTimeCommand.java @@ -1,19 +1,19 @@ -package fr.yuki.YukiRPFramework.commands; - -import fr.yuki.YukiRPFramework.manager.TimeManager; -import fr.yuki.YukiRPFramework.manager.WorldManager; -import net.onfirenetwork.onsetjava.entity.Player; -import net.onfirenetwork.onsetjava.plugin.CommandExecutor; - -public class SetTimeCommand implements CommandExecutor { - @Override - public boolean onCommand(Player player, String s, String[] args) { - if(WorldManager.getPlayerAccount(player).getAdminLevel() == 0) return false; - if(WorldManager.getPlayerAccount(player).getCommandLevel() < 3) { - player.sendMessage("You don't have the level required for this command"); - return true; - } - TimeManager.setCurrentHour(Integer.parseInt(args[0])); - return true; - } -} +package fr.yuki.yrpf.commands; + +import fr.yuki.yrpf.manager.TimeManager; +import fr.yuki.yrpf.manager.WorldManager; +import net.onfirenetwork.onsetjava.entity.Player; +import net.onfirenetwork.onsetjava.plugin.CommandExecutor; + +public class SetTimeCommand implements CommandExecutor { + @Override + public boolean onCommand(Player player, String s, String[] args) { + if(WorldManager.getPlayerAccount(player).getAdminLevel() == 0) return false; + if(WorldManager.getPlayerAccount(player).getCommandLevel() < 3) { + player.sendMessage("You don't have the level required for this command"); + return true; + } + TimeManager.setCurrentHour(Integer.parseInt(args[0])); + return true; + } +} diff --git a/src/main/java/fr/yuki/YukiRPFramework/commands/SetWhitelistCommand.java b/src/main/java/fr/yuki/yrpf/commands/SetWhitelistCommand.java similarity index 74% rename from src/main/java/fr/yuki/YukiRPFramework/commands/SetWhitelistCommand.java rename to src/main/java/fr/yuki/yrpf/commands/SetWhitelistCommand.java index eb1efe5..b6ff29f 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/commands/SetWhitelistCommand.java +++ b/src/main/java/fr/yuki/yrpf/commands/SetWhitelistCommand.java @@ -1,49 +1,42 @@ -package fr.yuki.YukiRPFramework.commands; - -import fr.yuki.YukiRPFramework.dao.AccountJobWhitelistDAO; -import fr.yuki.YukiRPFramework.manager.AccountManager; -import fr.yuki.YukiRPFramework.manager.WorldManager; -import fr.yuki.YukiRPFramework.model.Account; -import fr.yuki.YukiRPFramework.model.AccountJobWhitelist; -import net.onfirenetwork.onsetjava.Onset; -import net.onfirenetwork.onsetjava.entity.Player; -import net.onfirenetwork.onsetjava.plugin.CommandExecutor; - -import java.sql.SQLException; - -public class SetWhitelistCommand implements CommandExecutor { - @Override - public boolean onCommand(Player player, String s, String[] args) { - if(WorldManager.getPlayerAccount(player).getAdminLevel() == 0) return false; - if(WorldManager.getPlayerAccount(player).getCommandLevel() < 2) { - player.sendMessage("You don't have the level required for this command"); - return true; - } - Player playerTarget = Onset.getPlayers().stream().filter(x -> x.getId() == Integer.parseInt(args[0])) - .findFirst().orElse(null); - if(playerTarget == null) return true; - Account account = WorldManager.getPlayerAccount(playerTarget); - AccountJobWhitelist accountJobWhitelist = AccountManager.getAccountJobWhitelists().stream() - .filter(x -> x.getAccountId() == account.getId() && x.getJobId().equals(args[1].toUpperCase())) - .findFirst().orElse(null); - if(accountJobWhitelist != null) { - player.sendMessage("Job already whitelisted for this player"); - return true; - } - accountJobWhitelist = new AccountJobWhitelist(); - accountJobWhitelist.setAccountId(account.getId()); - accountJobWhitelist.setJobId(args[1].toUpperCase()); - accountJobWhitelist.setJobLevel(Integer.parseInt(args[2]) <= 1 ? 2 : Integer.parseInt(args[2])); - AccountManager.getAccountJobWhitelists().add(accountJobWhitelist); - try { - AccountJobWhitelistDAO.insertAccountJobWhiteList(accountJobWhitelist); - } catch (SQLException throwables) { - throwables.printStackTrace(); - } - - player.sendMessage("Job whitelisted for this player"); - - WorldManager.savePlayer(playerTarget); - return true; - } -} +package fr.yuki.yrpf.commands; + +import fr.yuki.yrpf.manager.AccountManager; +import fr.yuki.yrpf.manager.WorldManager; +import fr.yuki.yrpf.model.Account; +import fr.yuki.yrpf.model.AccountJobWhitelist; +import net.onfirenetwork.onsetjava.Onset; +import net.onfirenetwork.onsetjava.entity.Player; +import net.onfirenetwork.onsetjava.plugin.CommandExecutor; + +public class SetWhitelistCommand implements CommandExecutor { + @Override + public boolean onCommand(Player player, String s, String[] args) { + if(WorldManager.getPlayerAccount(player).getAdminLevel() == 0) return false; + if(WorldManager.getPlayerAccount(player).getCommandLevel() < 2) { + player.sendMessage("You don't have the level required for this command"); + return true; + } + Player playerTarget = Onset.getPlayers().stream().filter(x -> x.getId() == Integer.parseInt(args[0])) + .findFirst().orElse(null); + if(playerTarget == null) return true; + Account account = WorldManager.getPlayerAccount(playerTarget); + AccountJobWhitelist accountJobWhitelist = AccountManager.getAccountJobWhitelists().stream() + .filter(x -> x.getAccountId() == account.getId() && x.getJobId().equals(args[1].toUpperCase())) + .findFirst().orElse(null); + if(accountJobWhitelist != null) { + player.sendMessage("Job already whitelisted for this player"); + return true; + } + accountJobWhitelist = new AccountJobWhitelist(); + accountJobWhitelist.setAccountId(account.getId()); + accountJobWhitelist.setJobId(args[1].toUpperCase()); + accountJobWhitelist.setJobLevel(Integer.parseInt(args[2]) <= 1 ? 2 : Integer.parseInt(args[2])); + AccountManager.getAccountJobWhitelists().add(accountJobWhitelist); + accountJobWhitelist.save(); + + player.sendMessage("Job whitelisted for this player"); + + WorldManager.savePlayer(playerTarget); + return true; + } +} diff --git a/src/main/java/fr/yuki/YukiRPFramework/commands/ShowGatherItemListCommand.java b/src/main/java/fr/yuki/yrpf/commands/ShowGatherItemListCommand.java similarity index 68% rename from src/main/java/fr/yuki/YukiRPFramework/commands/ShowGatherItemListCommand.java rename to src/main/java/fr/yuki/yrpf/commands/ShowGatherItemListCommand.java index bbe5a6e..8d9231d 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/commands/ShowGatherItemListCommand.java +++ b/src/main/java/fr/yuki/yrpf/commands/ShowGatherItemListCommand.java @@ -1,33 +1,30 @@ -package fr.yuki.YukiRPFramework.commands; - -import fr.yuki.YukiRPFramework.enums.JobEnum; -import fr.yuki.YukiRPFramework.job.Job; -import fr.yuki.YukiRPFramework.job.JobSpawn; -import fr.yuki.YukiRPFramework.job.harvest.HarvestableObject; -import fr.yuki.YukiRPFramework.manager.CharacterManager; -import fr.yuki.YukiRPFramework.manager.JobManager; -import fr.yuki.YukiRPFramework.manager.WorldManager; -import net.onfirenetwork.onsetjava.entity.Player; -import net.onfirenetwork.onsetjava.plugin.CommandExecutor; - -import java.util.Map; - -public class ShowGatherItemListCommand implements CommandExecutor { - @Override - public boolean onCommand(Player player, String s, String[] strings) { - if(WorldManager.getPlayerAccount(player).getAdminLevel() == 0) return false; - if(WorldManager.getPlayerAccount(player).getCommandLevel() < 5) { - player.sendMessage("You don't have the level required for this command"); - return true; - } - for(Map.Entry job : JobManager.getJobs().entrySet()) { - player.sendMessage("=========> " + job.getKey()); - int i2 = 0; - for(JobSpawn jobSpawn : job.getValue().getJobConfig().getResources()) { - player.sendMessage(jobSpawn.getName() + " (" + i2 + ")"); - } - } - return true; - } - -} +package fr.yuki.yrpf.commands; + +import fr.yuki.yrpf.job.Job; +import fr.yuki.yrpf.job.JobSpawn; +import fr.yuki.yrpf.manager.JobManager; +import fr.yuki.yrpf.manager.WorldManager; +import net.onfirenetwork.onsetjava.entity.Player; +import net.onfirenetwork.onsetjava.plugin.CommandExecutor; + +import java.util.Map; + +public class ShowGatherItemListCommand implements CommandExecutor { + @Override + public boolean onCommand(Player player, String s, String[] strings) { + if(WorldManager.getPlayerAccount(player).getAdminLevel() == 0) return false; + if(WorldManager.getPlayerAccount(player).getCommandLevel() < 5) { + player.sendMessage("You don't have the level required for this command"); + return true; + } + for(Map.Entry job : JobManager.getJobs().entrySet()) { + player.sendMessage("=========> " + job.getKey()); + int i2 = 0; + for(JobSpawn jobSpawn : job.getValue().getJobConfig().getResources()) { + player.sendMessage(jobSpawn.getName() + " (" + i2 + ")"); + } + } + return true; + } + +} diff --git a/src/main/java/fr/yuki/YukiRPFramework/commands/VCommand.java b/src/main/java/fr/yuki/yrpf/commands/VCommand.java similarity index 77% rename from src/main/java/fr/yuki/YukiRPFramework/commands/VCommand.java rename to src/main/java/fr/yuki/yrpf/commands/VCommand.java index 42e598c..c4d8c05 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/commands/VCommand.java +++ b/src/main/java/fr/yuki/yrpf/commands/VCommand.java @@ -1,22 +1,21 @@ -package fr.yuki.YukiRPFramework.commands; - -import fr.yuki.YukiRPFramework.manager.VehicleManager; -import fr.yuki.YukiRPFramework.manager.WorldManager; -import net.onfirenetwork.onsetjava.entity.Player; -import net.onfirenetwork.onsetjava.entity.Vehicle; -import net.onfirenetwork.onsetjava.plugin.CommandExecutor; - -public class VCommand implements CommandExecutor { - @Override - public boolean onCommand(Player player, String s, String[] args) { - if(WorldManager.getPlayerAccount(player).getAdminLevel() == 0) return false; - if(WorldManager.getPlayerAccount(player).getCommandLevel() < 3) { - player.sendMessage("You don't have the level required for this command"); - return true; - } - int modelId = Integer.parseInt(args[0]); - VehicleManager.createVehicle(modelId, player.getLocation(), - player.getLocationAndHeading().getHeading(), player, null, false); - return true; - } -} +package fr.yuki.yrpf.commands; + +import fr.yuki.yrpf.manager.VehicleManager; +import fr.yuki.yrpf.manager.WorldManager; +import net.onfirenetwork.onsetjava.entity.Player; +import net.onfirenetwork.onsetjava.plugin.CommandExecutor; + +public class VCommand implements CommandExecutor { + @Override + public boolean onCommand(Player player, String s, String[] args) { + if(WorldManager.getPlayerAccount(player).getAdminLevel() == 0) return false; + if(WorldManager.getPlayerAccount(player).getCommandLevel() < 3) { + player.sendMessage("You don't have the level required for this command"); + return true; + } + int modelId = Integer.parseInt(args[0]); + VehicleManager.createVehicle(modelId, player.getLocation(), + player.getLocationAndHeading().getHeading(), player, null, false); + return true; + } +} diff --git a/src/main/java/fr/yuki/YukiRPFramework/dao/GrowboxDAO.java b/src/main/java/fr/yuki/yrpf/dao/GrowboxDAO.java similarity index 87% rename from src/main/java/fr/yuki/YukiRPFramework/dao/GrowboxDAO.java rename to src/main/java/fr/yuki/yrpf/dao/GrowboxDAO.java index 108d986..45a285d 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/dao/GrowboxDAO.java +++ b/src/main/java/fr/yuki/yrpf/dao/GrowboxDAO.java @@ -1,62 +1,59 @@ -package fr.yuki.YukiRPFramework.dao; - -import fr.yuki.YukiRPFramework.Database; -import fr.yuki.YukiRPFramework.model.ATM; -import fr.yuki.YukiRPFramework.model.Compagny; -import fr.yuki.YukiRPFramework.model.GrowboxModel; -import fr.yuki.YukiRPFramework.model.HouseItemObject; - -import java.sql.PreparedStatement; -import java.sql.ResultSet; -import java.sql.SQLException; -import java.sql.Statement; -import java.util.ArrayList; - -public class GrowboxDAO { - public static ArrayList loadGrowbox() throws SQLException { - ArrayList growboxs = new ArrayList<>(); - PreparedStatement preparedStatement = Database.getConnection().prepareStatement("SELECT * FROM tbl_growbox"); - ResultSet resultSet = preparedStatement.executeQuery(); - while(resultSet.next()) { - GrowboxModel growboxModel = new GrowboxModel(); - growboxModel.setId(resultSet.getInt("id_growbox")); - growboxModel.setX(resultSet.getFloat("x")); - growboxModel.setY(resultSet.getFloat("y")); - growboxModel.setZ(resultSet.getFloat("z")); - growboxModel.setRx(resultSet.getFloat("rx")); - growboxModel.setRy(resultSet.getFloat("ry")); - growboxModel.setRz(resultSet.getFloat("rz")); - growboxs.add(growboxModel); - } - return growboxs; - } - - public static void insertGrowbox(GrowboxModel growboxModel) throws SQLException { - // Execute the query - PreparedStatement preparedStatement = Database.getConnection() - .prepareStatement("INSERT INTO tbl_growbox " + - "(x, y, z, rx, ry, rz) VALUES " + - "(?,?,?,?,?,?)", Statement.RETURN_GENERATED_KEYS); - - preparedStatement.setDouble(1, growboxModel.getX()); - preparedStatement.setDouble(2, growboxModel.getY()); - preparedStatement.setDouble(3, growboxModel.getZ()); - preparedStatement.setDouble(4, growboxModel.getRx()); - preparedStatement.setDouble(5, growboxModel.getRy()); - preparedStatement.setDouble(6, growboxModel.getRz()); - preparedStatement.executeUpdate(); - - ResultSet returnId = preparedStatement.getGeneratedKeys(); - if(returnId.next()) { - growboxModel.setId(returnId.getInt(1)); - } - returnId.close(); - } - - public static void deleteGrowbox(GrowboxModel growboxModel) throws SQLException { - PreparedStatement preparedStatement = Database.getConnection().prepareStatement("DELETE FROM tbl_growbox WHERE id_growbox=?"); - preparedStatement.setInt(1, growboxModel.getId()); - preparedStatement.executeUpdate(); - preparedStatement.close(); - } -} +package fr.yuki.yrpf.dao; + +import fr.yuki.yrpf.Database; +import fr.yuki.yrpf.model.GrowboxModel; + +import java.sql.PreparedStatement; +import java.sql.ResultSet; +import java.sql.SQLException; +import java.sql.Statement; +import java.util.ArrayList; + +public class GrowboxDAO { + public static ArrayList loadGrowbox() throws SQLException { + ArrayList growboxs = new ArrayList<>(); + PreparedStatement preparedStatement = Database.getConnection().prepareStatement("SELECT * FROM tbl_growbox"); + ResultSet resultSet = preparedStatement.executeQuery(); + while(resultSet.next()) { + GrowboxModel growboxModel = new GrowboxModel(); + growboxModel.setId(resultSet.getInt("id_growbox")); + growboxModel.setX(resultSet.getFloat("x")); + growboxModel.setY(resultSet.getFloat("y")); + growboxModel.setZ(resultSet.getFloat("z")); + growboxModel.setRx(resultSet.getFloat("rx")); + growboxModel.setRy(resultSet.getFloat("ry")); + growboxModel.setRz(resultSet.getFloat("rz")); + growboxs.add(growboxModel); + } + return growboxs; + } + + public static void insertGrowbox(GrowboxModel growboxModel) throws SQLException { + // Execute the query + PreparedStatement preparedStatement = Database.getConnection() + .prepareStatement("INSERT INTO tbl_growbox " + + "(x, y, z, rx, ry, rz) VALUES " + + "(?,?,?,?,?,?)", Statement.RETURN_GENERATED_KEYS); + + preparedStatement.setDouble(1, growboxModel.getX()); + preparedStatement.setDouble(2, growboxModel.getY()); + preparedStatement.setDouble(3, growboxModel.getZ()); + preparedStatement.setDouble(4, growboxModel.getRx()); + preparedStatement.setDouble(5, growboxModel.getRy()); + preparedStatement.setDouble(6, growboxModel.getRz()); + preparedStatement.executeUpdate(); + + ResultSet returnId = preparedStatement.getGeneratedKeys(); + if(returnId.next()) { + growboxModel.setId(returnId.getInt(1)); + } + returnId.close(); + } + + public static void deleteGrowbox(GrowboxModel growboxModel) throws SQLException { + PreparedStatement preparedStatement = Database.getConnection().prepareStatement("DELETE FROM tbl_growbox WHERE id_growbox=?"); + preparedStatement.setInt(1, growboxModel.getId()); + preparedStatement.executeUpdate(); + preparedStatement.close(); + } +} diff --git a/src/main/java/fr/yuki/YukiRPFramework/dao/HouseItemDAO.java b/src/main/java/fr/yuki/yrpf/dao/HouseItemDAO.java similarity index 92% rename from src/main/java/fr/yuki/YukiRPFramework/dao/HouseItemDAO.java rename to src/main/java/fr/yuki/yrpf/dao/HouseItemDAO.java index 4500e56..91ba374 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/dao/HouseItemDAO.java +++ b/src/main/java/fr/yuki/yrpf/dao/HouseItemDAO.java @@ -1,58 +1,57 @@ -package fr.yuki.YukiRPFramework.dao; - -import fr.yuki.YukiRPFramework.Database; -import fr.yuki.YukiRPFramework.model.House; -import fr.yuki.YukiRPFramework.model.HouseItemObject; - -import java.sql.*; -import java.util.ArrayList; - -public class HouseItemDAO { - public static ArrayList loadHouseItems() throws SQLException { - ArrayList houseItemObjects = new ArrayList<>(); - PreparedStatement preparedStatement = Database.getConnection().prepareStatement("SELECT * FROM tbl_house_item"); - ResultSet resultSet = preparedStatement.executeQuery(); - while(resultSet.next()) { - HouseItemObject houseItemObject = new HouseItemObject(); - houseItemObject.setId(resultSet.getInt("id_house_item")); - houseItemObject.setModelId(resultSet.getInt("model_id")); - houseItemObject.setFunctionId(resultSet.getInt("function_id")); - houseItemObject.setX(resultSet.getDouble("x")); - houseItemObject.setY(resultSet.getDouble("y")); - houseItemObject.setZ(resultSet.getDouble("z")); - houseItemObject.setRx(resultSet.getDouble("rx")); - houseItemObject.setRy(resultSet.getDouble("ry")); - houseItemObject.setRz(resultSet.getDouble("rz")); - houseItemObjects.add(houseItemObject); - } - return houseItemObjects; - } - - public static void insertHouseItem(HouseItemObject houseItemObject) throws SQLException { - PreparedStatement preparedStatement = Database.getConnection() - .prepareStatement("INSERT INTO tbl_house_item " + - "(model_id, function_id, id_house, x, y, z, rx, ry, rz) VALUES " + - "(?,?,?,?,?,?,?,?,?)", Statement.RETURN_GENERATED_KEYS); - preparedStatement.setInt(1, houseItemObject.getModelId()); - preparedStatement.setInt(2, houseItemObject.getFunctionId()); - preparedStatement.setInt(3, houseItemObject.getHouse().getId()); - preparedStatement.setDouble(4, houseItemObject.getX()); - preparedStatement.setDouble(5, houseItemObject.getY()); - preparedStatement.setDouble(6, houseItemObject.getZ()); - preparedStatement.setDouble(7, houseItemObject.getRx()); - preparedStatement.setDouble(8, houseItemObject.getRy()); - preparedStatement.setDouble(9, houseItemObject.getRz()); - preparedStatement.executeUpdate(); - - ResultSet returnId = preparedStatement.getGeneratedKeys(); - if(returnId.next()) { - houseItemObject.setId(returnId.getInt(1)); - } - } - - public static void deleteHouseItem(HouseItemObject houseItemObject) throws SQLException { - PreparedStatement preparedStatement = Database.getConnection().prepareStatement("DELETE FROM tbl_house_item WHERE id_house_item=?"); - preparedStatement.setInt(1, houseItemObject.getId()); - preparedStatement.executeUpdate(); - } -} +package fr.yuki.yrpf.dao; + +import fr.yuki.yrpf.Database; +import fr.yuki.yrpf.model.HouseItemObject; + +import java.sql.*; +import java.util.ArrayList; + +public class HouseItemDAO { + public static ArrayList loadHouseItems() throws SQLException { + ArrayList houseItemObjects = new ArrayList<>(); + PreparedStatement preparedStatement = Database.getConnection().prepareStatement("SELECT * FROM tbl_house_item"); + ResultSet resultSet = preparedStatement.executeQuery(); + while(resultSet.next()) { + HouseItemObject houseItemObject = new HouseItemObject(); + houseItemObject.setId(resultSet.getInt("id_house_item")); + houseItemObject.setModelId(resultSet.getInt("model_id")); + houseItemObject.setFunctionId(resultSet.getInt("function_id")); + houseItemObject.setX(resultSet.getDouble("x")); + houseItemObject.setY(resultSet.getDouble("y")); + houseItemObject.setZ(resultSet.getDouble("z")); + houseItemObject.setRx(resultSet.getDouble("rx")); + houseItemObject.setRy(resultSet.getDouble("ry")); + houseItemObject.setRz(resultSet.getDouble("rz")); + houseItemObjects.add(houseItemObject); + } + return houseItemObjects; + } + + public static void insertHouseItem(HouseItemObject houseItemObject) throws SQLException { + PreparedStatement preparedStatement = Database.getConnection() + .prepareStatement("INSERT INTO tbl_house_item " + + "(model_id, function_id, id_house, x, y, z, rx, ry, rz) VALUES " + + "(?,?,?,?,?,?,?,?,?)", Statement.RETURN_GENERATED_KEYS); + preparedStatement.setInt(1, houseItemObject.getModelId()); + preparedStatement.setInt(2, houseItemObject.getFunctionId()); + preparedStatement.setInt(3, houseItemObject.getHouse().getId()); + preparedStatement.setDouble(4, houseItemObject.getX()); + preparedStatement.setDouble(5, houseItemObject.getY()); + preparedStatement.setDouble(6, houseItemObject.getZ()); + preparedStatement.setDouble(7, houseItemObject.getRx()); + preparedStatement.setDouble(8, houseItemObject.getRy()); + preparedStatement.setDouble(9, houseItemObject.getRz()); + preparedStatement.executeUpdate(); + + ResultSet returnId = preparedStatement.getGeneratedKeys(); + if(returnId.next()) { + houseItemObject.setId(returnId.getInt(1)); + } + } + + public static void deleteHouseItem(HouseItemObject houseItemObject) throws SQLException { + PreparedStatement preparedStatement = Database.getConnection().prepareStatement("DELETE FROM tbl_house_item WHERE id_house_item=?"); + preparedStatement.setInt(1, houseItemObject.getId()); + preparedStatement.executeUpdate(); + } +} diff --git a/src/main/java/fr/yuki/YukiRPFramework/dao/InventoryDAO.java b/src/main/java/fr/yuki/yrpf/dao/InventoryDAO.java similarity index 93% rename from src/main/java/fr/yuki/YukiRPFramework/dao/InventoryDAO.java rename to src/main/java/fr/yuki/yrpf/dao/InventoryDAO.java index 4121ed8..0a0d8ad 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/dao/InventoryDAO.java +++ b/src/main/java/fr/yuki/yrpf/dao/InventoryDAO.java @@ -1,90 +1,89 @@ -package fr.yuki.YukiRPFramework.dao; - -import fr.yuki.YukiRPFramework.Database; -import fr.yuki.YukiRPFramework.inventory.Inventory; -import fr.yuki.YukiRPFramework.model.ItemTemplate; - -import java.sql.PreparedStatement; -import java.sql.ResultSet; -import java.sql.SQLException; -import java.sql.Statement; -import java.util.HashMap; - -public class InventoryDAO { - - /** - * Create a new inventory empty - * @return The inventory - */ - public static Inventory createInventory() throws SQLException { - // Create the object - Inventory inventory = new Inventory(); - inventory.setInventoryType(-1); - inventory.setInventoryItemType(-1); - inventory.setCharacterId(-1); - inventory.setVehicleId(-1); - inventory.setContent("[]"); - - // Insert the inventory - PreparedStatement preparedStatement = Database.getConnection() - .prepareStatement("INSERT INTO tbl_inventory " + - "(inventory_type, inventory_item_type, character_id, vehicle_id, content) VALUES " + - "(?,?,?,?,?)", Statement.RETURN_GENERATED_KEYS); - preparedStatement.setInt(1, inventory.getInventoryType()); - preparedStatement.setInt(2, inventory.getInventoryItemType()); - preparedStatement.setInt(3, inventory.getCharacterId()); - preparedStatement.setInt(4, inventory.getVehicleId()); - preparedStatement.setString(5, inventory.getContent()); - preparedStatement.executeUpdate(); - - ResultSet returnId = preparedStatement.getGeneratedKeys(); - if(returnId.next()) { - inventory.setId(returnId.getInt(1)); - } else { - return null; - } - returnId.close(); - preparedStatement.close(); - return inventory; - } - - /** - * Update the inventory in the database - * @param inventory The inventory - * @throws SQLException The error - */ - public static void updateInventory(Inventory inventory) throws SQLException { - PreparedStatement preparedStatement = Database.getConnection() - .prepareStatement("UPDATE tbl_inventory SET inventory_type=?, inventory_item_type=?, " + - "character_id=?, vehicle_id=?, content=? WHERE id_inventory=?"); - preparedStatement.setInt(1, inventory.getInventoryType()); - preparedStatement.setInt(2, inventory.getInventoryItemType()); - preparedStatement.setInt(3, inventory.getCharacterId()); - preparedStatement.setInt(4, inventory.getVehicleId()); - preparedStatement.setString(5, inventory.getContent()); - preparedStatement.setInt(6, inventory.getId()); - preparedStatement.execute(); - - preparedStatement.close(); - } - - public static HashMap loadInventories() throws SQLException { - HashMap inventoryHashMap = new HashMap(); - PreparedStatement preparedStatement = Database.getConnection().prepareStatement("SELECT * FROM tbl_inventory"); - ResultSet resultSet = preparedStatement.executeQuery(); - while(resultSet.next()) { - Inventory inventory = new Inventory(); - inventory.setId(resultSet.getInt("id_inventory")); - inventory.setInventoryType(resultSet.getInt("inventory_type")); - inventory.setInventoryType(resultSet.getInt("inventory_item_type")); - inventory.setCharacterId(resultSet.getInt("character_id")); - inventory.setVehicleId(resultSet.getInt("vehicle_id")); - inventory.setContent(resultSet.getString("content")); - inventory.parseContent(); - inventoryHashMap.put(inventory.getId(), inventory); - } - resultSet.close(); - preparedStatement.close(); - return inventoryHashMap; - } -} +package fr.yuki.yrpf.dao; + +import fr.yuki.yrpf.Database; +import fr.yuki.yrpf.inventory.Inventory; + +import java.sql.PreparedStatement; +import java.sql.ResultSet; +import java.sql.SQLException; +import java.sql.Statement; +import java.util.HashMap; + +public class InventoryDAO { + + /** + * Create a new inventory empty + * @return The inventory + */ + public static Inventory createInventory() throws SQLException { + // Create the object + Inventory inventory = new Inventory(); + inventory.setInventoryType(-1); + inventory.setInventoryItemType(-1); + inventory.setCharacterId(-1); + inventory.setVehicleId(-1); + inventory.setContent("[]"); + + // Insert the inventory + PreparedStatement preparedStatement = Database.getConnection() + .prepareStatement("INSERT INTO tbl_inventory " + + "(inventory_type, inventory_item_type, character_id, vehicle_id, content) VALUES " + + "(?,?,?,?,?)", Statement.RETURN_GENERATED_KEYS); + preparedStatement.setInt(1, inventory.getInventoryType()); + preparedStatement.setInt(2, inventory.getInventoryItemType()); + preparedStatement.setInt(3, inventory.getCharacterId()); + preparedStatement.setInt(4, inventory.getVehicleId()); + preparedStatement.setString(5, inventory.getContent()); + preparedStatement.executeUpdate(); + + ResultSet returnId = preparedStatement.getGeneratedKeys(); + if(returnId.next()) { + inventory.setId(returnId.getInt(1)); + } else { + return null; + } + returnId.close(); + preparedStatement.close(); + return inventory; + } + + /** + * Update the inventory in the database + * @param inventory The inventory + * @throws SQLException The error + */ + public static void updateInventory(Inventory inventory) throws SQLException { + PreparedStatement preparedStatement = Database.getConnection() + .prepareStatement("UPDATE tbl_inventory SET inventory_type=?, inventory_item_type=?, " + + "character_id=?, vehicle_id=?, content=? WHERE id_inventory=?"); + preparedStatement.setInt(1, inventory.getInventoryType()); + preparedStatement.setInt(2, inventory.getInventoryItemType()); + preparedStatement.setInt(3, inventory.getCharacterId()); + preparedStatement.setInt(4, inventory.getVehicleId()); + preparedStatement.setString(5, inventory.getContent()); + preparedStatement.setInt(6, inventory.getId()); + preparedStatement.execute(); + + preparedStatement.close(); + } + + public static HashMap loadInventories() throws SQLException { + HashMap inventoryHashMap = new HashMap(); + PreparedStatement preparedStatement = Database.getConnection().prepareStatement("SELECT * FROM tbl_inventory"); + ResultSet resultSet = preparedStatement.executeQuery(); + while(resultSet.next()) { + Inventory inventory = new Inventory(); + inventory.setId(resultSet.getInt("id_inventory")); + inventory.setInventoryType(resultSet.getInt("inventory_type")); + inventory.setInventoryType(resultSet.getInt("inventory_item_type")); + inventory.setCharacterId(resultSet.getInt("character_id")); + inventory.setVehicleId(resultSet.getInt("vehicle_id")); + inventory.setContent(resultSet.getString("content")); + inventory.parseContent(); + inventoryHashMap.put(inventory.getId(), inventory); + } + resultSet.close(); + preparedStatement.close(); + return inventoryHashMap; + } +} diff --git a/src/main/java/fr/yuki/YukiRPFramework/dao/ItemTemplateDAO.java b/src/main/java/fr/yuki/yrpf/dao/ItemTemplateDAO.java similarity index 91% rename from src/main/java/fr/yuki/YukiRPFramework/dao/ItemTemplateDAO.java rename to src/main/java/fr/yuki/yrpf/dao/ItemTemplateDAO.java index 24ee9a8..38d6fa9 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/dao/ItemTemplateDAO.java +++ b/src/main/java/fr/yuki/yrpf/dao/ItemTemplateDAO.java @@ -1,36 +1,36 @@ -package fr.yuki.YukiRPFramework.dao; - -import fr.yuki.YukiRPFramework.Database; -import fr.yuki.YukiRPFramework.model.ItemTemplate; - -import java.sql.PreparedStatement; -import java.sql.ResultSet; -import java.sql.SQLException; -import java.util.HashMap; - -public class ItemTemplateDAO { - public static HashMap getItemTemplates() throws SQLException { - HashMap itemTemplateHashMap = new HashMap(); - PreparedStatement preparedStatement = Database.getConnection().prepareStatement("SELECT * FROM tbl_item_template"); - ResultSet resultSet = preparedStatement.executeQuery(); - while(resultSet.next()) { - ItemTemplate itemTemplate = new ItemTemplate(); - itemTemplate.setId(resultSet.getInt("id_item_template")); - itemTemplate.setName(resultSet.getString("name")); - itemTemplate.setDescription(resultSet.getString("description")); - itemTemplate.setWeight(resultSet.getFloat("weight")); - itemTemplate.setPictureName(resultSet.getString("picture_name")); - itemTemplate.setItemType(resultSet.getInt("item_type")); - itemTemplate.setModelId(resultSet.getInt("model_id")); - itemTemplate.setModelScale(resultSet.getDouble("model_scale")); - itemTemplate.setFoodValue(resultSet.getInt("food_value")); - itemTemplate.setDrinkValue(resultSet.getInt("drink_value")); - itemTemplate.setWeaponId(resultSet.getInt("id_weapon")); - itemTemplate.setAmmoPerRecharge(resultSet.getInt("ammo_per_recharge")); - itemTemplate.setMaskId(resultSet.getInt("id_mask")); - itemTemplate.setBagId(resultSet.getInt("id_bag")); - itemTemplateHashMap.put(itemTemplate.getId(), itemTemplate); - } - return itemTemplateHashMap; - } -} +package fr.yuki.yrpf.dao; + +import fr.yuki.yrpf.Database; +import fr.yuki.yrpf.model.ItemTemplate; + +import java.sql.PreparedStatement; +import java.sql.ResultSet; +import java.sql.SQLException; +import java.util.HashMap; + +public class ItemTemplateDAO { + public static HashMap getItemTemplates() throws SQLException { + HashMap itemTemplateHashMap = new HashMap(); + PreparedStatement preparedStatement = Database.getConnection().prepareStatement("SELECT * FROM tbl_item_template"); + ResultSet resultSet = preparedStatement.executeQuery(); + while(resultSet.next()) { + ItemTemplate itemTemplate = new ItemTemplate(); + itemTemplate.setId(resultSet.getInt("id_item_template")); + itemTemplate.setName(resultSet.getString("name")); + itemTemplate.setDescription(resultSet.getString("description")); + itemTemplate.setWeight(resultSet.getFloat("weight")); + itemTemplate.setPictureName(resultSet.getString("picture_name")); + itemTemplate.setItemType(resultSet.getInt("item_type")); + itemTemplate.setModelId(resultSet.getInt("model_id")); + itemTemplate.setModelScale(resultSet.getDouble("model_scale")); + itemTemplate.setFoodValue(resultSet.getInt("food_value")); + itemTemplate.setDrinkValue(resultSet.getInt("drink_value")); + itemTemplate.setWeaponId(resultSet.getInt("id_weapon")); + itemTemplate.setAmmoPerRecharge(resultSet.getInt("ammo_per_recharge")); + itemTemplate.setMaskId(resultSet.getInt("id_mask")); + itemTemplate.setBagId(resultSet.getInt("id_bag")); + itemTemplateHashMap.put(itemTemplate.getId(), itemTemplate); + } + return itemTemplateHashMap; + } +} diff --git a/src/main/java/fr/yuki/YukiRPFramework/dao/JobLevelDAO.java b/src/main/java/fr/yuki/yrpf/dao/JobLevelDAO.java similarity index 82% rename from src/main/java/fr/yuki/YukiRPFramework/dao/JobLevelDAO.java rename to src/main/java/fr/yuki/yrpf/dao/JobLevelDAO.java index b7c684d..5b001c0 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/dao/JobLevelDAO.java +++ b/src/main/java/fr/yuki/yrpf/dao/JobLevelDAO.java @@ -1,30 +1,29 @@ -package fr.yuki.YukiRPFramework.dao; - -import fr.yuki.YukiRPFramework.Database; -import fr.yuki.YukiRPFramework.model.JobLevel; -import fr.yuki.YukiRPFramework.model.JobTool; - -import java.sql.PreparedStatement; -import java.sql.ResultSet; -import java.sql.SQLException; -import java.util.ArrayList; - -public class JobLevelDAO { - public static ArrayList loadJobLevels() throws SQLException { - ArrayList jobLevels = new ArrayList<>(); - PreparedStatement preparedStatement = Database.getConnection().prepareStatement("SELECT * FROM tbl_job_level"); - ResultSet resultSet = preparedStatement.executeQuery(); - while(resultSet.next()) { - JobLevel jobLevel = new JobLevel(); - - jobLevel.setId(resultSet.getInt("id_job_level")); - jobLevel.setJobId(resultSet.getString("id_job")); - jobLevel.setName(resultSet.getString("name")); - jobLevel.setLevel(resultSet.getInt("level")); - jobLevel.setExpFloor(resultSet.getInt("exp_floor")); - - jobLevels.add(jobLevel); - } - return jobLevels; - } -} +package fr.yuki.yrpf.dao; + +import fr.yuki.yrpf.Database; +import fr.yuki.yrpf.model.JobLevel; + +import java.sql.PreparedStatement; +import java.sql.ResultSet; +import java.sql.SQLException; +import java.util.ArrayList; + +public class JobLevelDAO { + public static ArrayList loadJobLevels() throws SQLException { + ArrayList jobLevels = new ArrayList<>(); + PreparedStatement preparedStatement = Database.getConnection().prepareStatement("SELECT * FROM tbl_job_level"); + ResultSet resultSet = preparedStatement.executeQuery(); + while(resultSet.next()) { + JobLevel jobLevel = new JobLevel(); + + jobLevel.setId(resultSet.getInt("id_job_level")); + jobLevel.setJobId(resultSet.getString("id_job")); + jobLevel.setName(resultSet.getString("name")); + jobLevel.setLevel(resultSet.getInt("level")); + jobLevel.setExpFloor(resultSet.getInt("exp_floor")); + + jobLevels.add(jobLevel); + } + return jobLevels; + } +} diff --git a/src/main/java/fr/yuki/YukiRPFramework/dao/JobNPCDAO.java b/src/main/java/fr/yuki/yrpf/dao/JobNPCDAO.java similarity index 81% rename from src/main/java/fr/yuki/YukiRPFramework/dao/JobNPCDAO.java rename to src/main/java/fr/yuki/yrpf/dao/JobNPCDAO.java index 9e689df..f492561 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/dao/JobNPCDAO.java +++ b/src/main/java/fr/yuki/yrpf/dao/JobNPCDAO.java @@ -1,41 +1,39 @@ -package fr.yuki.YukiRPFramework.dao; - -import com.google.gson.Gson; -import com.google.gson.reflect.TypeToken; -import fr.yuki.YukiRPFramework.Database; -import fr.yuki.YukiRPFramework.model.JobNPC; -import fr.yuki.YukiRPFramework.model.JobNPCListItem; -import fr.yuki.YukiRPFramework.model.SellListItem; -import fr.yuki.YukiRPFramework.model.VehicleSeller; - -import java.sql.PreparedStatement; -import java.sql.ResultSet; -import java.sql.SQLException; -import java.util.ArrayList; - -public class JobNPCDAO { - public static ArrayList loadJobNPCS() throws SQLException { - ArrayList jobNPCS = new ArrayList<>(); - PreparedStatement preparedStatement = Database.getConnection().prepareStatement("SELECT * FROM tbl_job_npc"); - ResultSet resultSet = preparedStatement.executeQuery(); - while(resultSet.next()) { - JobNPC jobNPC = new JobNPC(); - - jobNPC.setId(resultSet.getInt("id_job_npc")); - jobNPC.setJobId(resultSet.getString("id_job")); - jobNPC.setName(resultSet.getString("name")); - jobNPC.setX(resultSet.getDouble("x")); - jobNPC.setY(resultSet.getDouble("y")); - jobNPC.setZ(resultSet.getDouble("z")); - jobNPC.setH(resultSet.getDouble("h")); - jobNPC.setNpcClothing(resultSet.getInt("npc_clothing")); - jobNPC.setBuyList(new Gson().fromJson(resultSet.getString("buy_list"), - new TypeToken>(){}.getType())); - jobNPC.setSellList(new Gson().fromJson(resultSet.getString("sell_list"), - new TypeToken>(){}.getType())); - - jobNPCS.add(jobNPC); - } - return jobNPCS; - } -} +package fr.yuki.yrpf.dao; + +import com.google.gson.Gson; +import com.google.gson.reflect.TypeToken; +import fr.yuki.yrpf.Database; +import fr.yuki.yrpf.model.JobNPC; +import fr.yuki.yrpf.model.JobNPCListItem; + +import java.sql.PreparedStatement; +import java.sql.ResultSet; +import java.sql.SQLException; +import java.util.ArrayList; + +public class JobNPCDAO { + public static ArrayList loadJobNPCS() throws SQLException { + ArrayList jobNPCS = new ArrayList<>(); + PreparedStatement preparedStatement = Database.getConnection().prepareStatement("SELECT * FROM tbl_job_npc"); + ResultSet resultSet = preparedStatement.executeQuery(); + while(resultSet.next()) { + JobNPC jobNPC = new JobNPC(); + + jobNPC.setId(resultSet.getInt("id_job_npc")); + jobNPC.setJobId(resultSet.getString("id_job")); + jobNPC.setName(resultSet.getString("name")); + jobNPC.setX(resultSet.getDouble("x")); + jobNPC.setY(resultSet.getDouble("y")); + jobNPC.setZ(resultSet.getDouble("z")); + jobNPC.setH(resultSet.getDouble("h")); + jobNPC.setNpcClothing(resultSet.getInt("npc_clothing")); + jobNPC.setBuyList(new Gson().fromJson(resultSet.getString("buy_list"), + new TypeToken>(){}.getType())); + jobNPC.setSellList(new Gson().fromJson(resultSet.getString("sell_list"), + new TypeToken>(){}.getType())); + + jobNPCS.add(jobNPC); + } + return jobNPCS; + } +} diff --git a/src/main/java/fr/yuki/YukiRPFramework/dao/JobOutfitDAO.java b/src/main/java/fr/yuki/yrpf/dao/JobOutfitDAO.java similarity index 84% rename from src/main/java/fr/yuki/YukiRPFramework/dao/JobOutfitDAO.java rename to src/main/java/fr/yuki/yrpf/dao/JobOutfitDAO.java index 53f3231..f6faf04 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/dao/JobOutfitDAO.java +++ b/src/main/java/fr/yuki/yrpf/dao/JobOutfitDAO.java @@ -1,32 +1,31 @@ -package fr.yuki.YukiRPFramework.dao; - -import fr.yuki.YukiRPFramework.Database; -import fr.yuki.YukiRPFramework.model.AccountJobWhitelist; -import fr.yuki.YukiRPFramework.model.JobOutfit; - -import java.sql.PreparedStatement; -import java.sql.ResultSet; -import java.sql.SQLException; -import java.util.ArrayList; - -public class JobOutfitDAO { - public static ArrayList loadJobOutfits() throws SQLException { - ArrayList jobOutfits = new ArrayList<>(); - PreparedStatement preparedStatement = Database.getConnection().prepareStatement("SELECT * FROM tbl_job_outfit"); - ResultSet resultSet = preparedStatement.executeQuery(); - while(resultSet.next()) { - JobOutfit jobOutfit = new JobOutfit(); - jobOutfit.setId(resultSet.getInt("id_job_outfit")); - jobOutfit.setJobId(resultSet.getString("id_job")); - jobOutfit.setLevelRequired(resultSet.getInt("level_required")); - jobOutfit.setName(resultSet.getString("name")); - jobOutfit.setOutfit(resultSet.getString("outfit")); - jobOutfit.setX(resultSet.getDouble("x")); - jobOutfit.setY(resultSet.getDouble("y")); - jobOutfit.setZ(resultSet.getDouble("z")); - - jobOutfits.add(jobOutfit); - } - return jobOutfits; - } -} +package fr.yuki.yrpf.dao; + +import fr.yuki.yrpf.Database; +import fr.yuki.yrpf.model.JobOutfit; + +import java.sql.PreparedStatement; +import java.sql.ResultSet; +import java.sql.SQLException; +import java.util.ArrayList; + +public class JobOutfitDAO { + public static ArrayList loadJobOutfits() throws SQLException { + ArrayList jobOutfits = new ArrayList<>(); + PreparedStatement preparedStatement = Database.getConnection().prepareStatement("SELECT * FROM tbl_job_outfit"); + ResultSet resultSet = preparedStatement.executeQuery(); + while(resultSet.next()) { + JobOutfit jobOutfit = new JobOutfit(); + jobOutfit.setId(resultSet.getInt("id_job_outfit")); + jobOutfit.setJobId(resultSet.getString("id_job")); + jobOutfit.setLevelRequired(resultSet.getInt("level_required")); + jobOutfit.setName(resultSet.getString("name")); + jobOutfit.setOutfit(resultSet.getString("outfit")); + jobOutfit.setX(resultSet.getDouble("x")); + jobOutfit.setY(resultSet.getDouble("y")); + jobOutfit.setZ(resultSet.getDouble("z")); + + jobOutfits.add(jobOutfit); + } + return jobOutfits; + } +} diff --git a/src/main/java/fr/yuki/YukiRPFramework/dao/JobToolDAO.java b/src/main/java/fr/yuki/yrpf/dao/JobToolDAO.java similarity index 82% rename from src/main/java/fr/yuki/YukiRPFramework/dao/JobToolDAO.java rename to src/main/java/fr/yuki/yrpf/dao/JobToolDAO.java index d63ddcb..33ae109 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/dao/JobToolDAO.java +++ b/src/main/java/fr/yuki/yrpf/dao/JobToolDAO.java @@ -1,44 +1,40 @@ -package fr.yuki.YukiRPFramework.dao; - -import com.google.gson.Gson; -import com.google.gson.reflect.TypeToken; -import fr.yuki.YukiRPFramework.Database; -import fr.yuki.YukiRPFramework.model.JobNPC; -import fr.yuki.YukiRPFramework.model.JobNPCListItem; -import fr.yuki.YukiRPFramework.model.JobTool; - -import java.sql.PreparedStatement; -import java.sql.ResultSet; -import java.sql.SQLException; -import java.util.ArrayList; - -public class JobToolDAO { - public static ArrayList loadJobTools() throws SQLException { - ArrayList jobTools = new ArrayList<>(); - PreparedStatement preparedStatement = Database.getConnection().prepareStatement("SELECT * FROM tbl_job_tool"); - ResultSet resultSet = preparedStatement.executeQuery(); - while(resultSet.next()) { - JobTool jobTool = new JobTool(); - - jobTool.setId(resultSet.getInt("id_job_tool")); - jobTool.setModelId(resultSet.getInt("model_id")); - jobTool.setName(resultSet.getString("name")); - jobTool.setJobType(resultSet.getString("job_type")); - jobTool.setLevelRequired(resultSet.getInt("level_required")); - jobTool.setJobToolType(resultSet.getString("job_tool_type")); - jobTool.setReward(resultSet.getInt("reward")); - jobTool.setX(resultSet.getDouble("x")); - jobTool.setY(resultSet.getDouble("y")); - jobTool.setZ(resultSet.getDouble("z")); - jobTool.setRx(resultSet.getDouble("r_x")); - jobTool.setRy(resultSet.getDouble("r_y")); - jobTool.setRz(resultSet.getDouble("r_z")); - jobTool.setSx(resultSet.getDouble("s_x")); - jobTool.setSy(resultSet.getDouble("s_y")); - jobTool.setSz(resultSet.getDouble("s_z")); - - jobTools.add(jobTool); - } - return jobTools; - } -} +package fr.yuki.yrpf.dao; + +import fr.yuki.yrpf.Database; +import fr.yuki.yrpf.model.JobTool; + +import java.sql.PreparedStatement; +import java.sql.ResultSet; +import java.sql.SQLException; +import java.util.ArrayList; + +public class JobToolDAO { + public static ArrayList loadJobTools() throws SQLException { + ArrayList jobTools = new ArrayList<>(); + PreparedStatement preparedStatement = Database.getConnection().prepareStatement("SELECT * FROM tbl_job_tool"); + ResultSet resultSet = preparedStatement.executeQuery(); + while(resultSet.next()) { + JobTool jobTool = new JobTool(); + + jobTool.setId(resultSet.getInt("id_job_tool")); + jobTool.setModelId(resultSet.getInt("model_id")); + jobTool.setName(resultSet.getString("name")); + jobTool.setJobType(resultSet.getString("job_type")); + jobTool.setLevelRequired(resultSet.getInt("level_required")); + jobTool.setJobToolType(resultSet.getString("job_tool_type")); + jobTool.setReward(resultSet.getInt("reward")); + jobTool.setX(resultSet.getDouble("x")); + jobTool.setY(resultSet.getDouble("y")); + jobTool.setZ(resultSet.getDouble("z")); + jobTool.setRx(resultSet.getDouble("r_x")); + jobTool.setRy(resultSet.getDouble("r_y")); + jobTool.setRz(resultSet.getDouble("r_z")); + jobTool.setSx(resultSet.getDouble("s_x")); + jobTool.setSy(resultSet.getDouble("s_y")); + jobTool.setSz(resultSet.getDouble("s_z")); + + jobTools.add(jobTool); + } + return jobTools; + } +} diff --git a/src/main/java/fr/yuki/YukiRPFramework/dao/JobVehicleRentalDAO.java b/src/main/java/fr/yuki/yrpf/dao/JobVehicleRentalDAO.java similarity index 88% rename from src/main/java/fr/yuki/YukiRPFramework/dao/JobVehicleRentalDAO.java rename to src/main/java/fr/yuki/yrpf/dao/JobVehicleRentalDAO.java index e873cb0..e062700 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/dao/JobVehicleRentalDAO.java +++ b/src/main/java/fr/yuki/yrpf/dao/JobVehicleRentalDAO.java @@ -1,37 +1,36 @@ -package fr.yuki.YukiRPFramework.dao; - -import fr.yuki.YukiRPFramework.Database; -import fr.yuki.YukiRPFramework.model.JobLevel; -import fr.yuki.YukiRPFramework.model.JobVehicleRental; - -import java.sql.PreparedStatement; -import java.sql.ResultSet; -import java.sql.SQLException; -import java.util.ArrayList; - -public class JobVehicleRentalDAO { - public static ArrayList loadJobVehicleRental() throws SQLException { - ArrayList jobVehicleRentals = new ArrayList<>(); - PreparedStatement preparedStatement = Database.getConnection().prepareStatement("SELECT * FROM tbl_job_vehicle_rental"); - ResultSet resultSet = preparedStatement.executeQuery(); - while(resultSet.next()) { - JobVehicleRental jobVehicleRental = new JobVehicleRental(); - - jobVehicleRental.setId(resultSet.getInt("id_job_vehicle_rental")); - jobVehicleRental.setJobId(resultSet.getString("id_job")); - jobVehicleRental.setLevelRequired(resultSet.getInt("level_required")); - jobVehicleRental.setName(resultSet.getString("name")); - jobVehicleRental.setVehicleModelId(resultSet.getInt("vehicle_model_id")); - jobVehicleRental.setCost(resultSet.getInt("cost")); - jobVehicleRental.setX(resultSet.getDouble("x")); - jobVehicleRental.setY(resultSet.getDouble("y")); - jobVehicleRental.setZ(resultSet.getDouble("z")); - jobVehicleRental.setSpawnX(resultSet.getDouble("spawn_x")); - jobVehicleRental.setSpawnY(resultSet.getDouble("spawn_y")); - jobVehicleRental.setSpawnZ(resultSet.getDouble("spawn_z")); - jobVehicleRental.setColor(resultSet.getString("color")); - jobVehicleRentals.add(jobVehicleRental); - } - return jobVehicleRentals; - } -} +package fr.yuki.yrpf.dao; + +import fr.yuki.yrpf.Database; +import fr.yuki.yrpf.model.JobVehicleRental; + +import java.sql.PreparedStatement; +import java.sql.ResultSet; +import java.sql.SQLException; +import java.util.ArrayList; + +public class JobVehicleRentalDAO { + public static ArrayList loadJobVehicleRental() throws SQLException { + ArrayList jobVehicleRentals = new ArrayList<>(); + PreparedStatement preparedStatement = Database.getConnection().prepareStatement("SELECT * FROM tbl_job_vehicle_rental"); + ResultSet resultSet = preparedStatement.executeQuery(); + while(resultSet.next()) { + JobVehicleRental jobVehicleRental = new JobVehicleRental(); + + jobVehicleRental.setId(resultSet.getInt("id_job_vehicle_rental")); + jobVehicleRental.setJobId(resultSet.getString("id_job")); + jobVehicleRental.setLevelRequired(resultSet.getInt("level_required")); + jobVehicleRental.setName(resultSet.getString("name")); + jobVehicleRental.setVehicleModelId(resultSet.getInt("vehicle_model_id")); + jobVehicleRental.setCost(resultSet.getInt("cost")); + jobVehicleRental.setX(resultSet.getDouble("x")); + jobVehicleRental.setY(resultSet.getDouble("y")); + jobVehicleRental.setZ(resultSet.getDouble("z")); + jobVehicleRental.setSpawnX(resultSet.getDouble("spawn_x")); + jobVehicleRental.setSpawnY(resultSet.getDouble("spawn_y")); + jobVehicleRental.setSpawnZ(resultSet.getDouble("spawn_z")); + jobVehicleRental.setColor(resultSet.getString("color")); + jobVehicleRentals.add(jobVehicleRental); + } + return jobVehicleRentals; + } +} diff --git a/src/main/java/fr/yuki/YukiRPFramework/dao/OutfitPointDAO.java b/src/main/java/fr/yuki/yrpf/dao/OutfitPointDAO.java similarity index 81% rename from src/main/java/fr/yuki/YukiRPFramework/dao/OutfitPointDAO.java rename to src/main/java/fr/yuki/yrpf/dao/OutfitPointDAO.java index a3cfcea..68f33fe 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/dao/OutfitPointDAO.java +++ b/src/main/java/fr/yuki/yrpf/dao/OutfitPointDAO.java @@ -1,28 +1,27 @@ -package fr.yuki.YukiRPFramework.dao; - -import fr.yuki.YukiRPFramework.Database; -import fr.yuki.YukiRPFramework.model.FuelPoint; -import fr.yuki.YukiRPFramework.model.OutfitPoint; - -import java.sql.PreparedStatement; -import java.sql.ResultSet; -import java.sql.SQLException; -import java.util.ArrayList; - -public class OutfitPointDAO { - public static ArrayList loadOutfitPoint() throws SQLException { - ArrayList outfitPoints = new ArrayList<>(); - PreparedStatement preparedStatement = Database.getConnection().prepareStatement("SELECT * FROM tbl_outfit_point"); - ResultSet resultSet = preparedStatement.executeQuery(); - while(resultSet.next()) { - OutfitPoint outfitPoint = new OutfitPoint(); - outfitPoint.setId(resultSet.getInt("id_outfit_point")); - outfitPoint.setX(resultSet.getDouble("x")); - outfitPoint.setY(resultSet.getDouble("y")); - outfitPoint.setZ(resultSet.getDouble("z")); - - outfitPoints.add(outfitPoint); - } - return outfitPoints; - } -} +package fr.yuki.yrpf.dao; + +import fr.yuki.yrpf.Database; +import fr.yuki.yrpf.model.OutfitPoint; + +import java.sql.PreparedStatement; +import java.sql.ResultSet; +import java.sql.SQLException; +import java.util.ArrayList; + +public class OutfitPointDAO { + public static ArrayList loadOutfitPoint() throws SQLException { + ArrayList outfitPoints = new ArrayList<>(); + PreparedStatement preparedStatement = Database.getConnection().prepareStatement("SELECT * FROM tbl_outfit_point"); + ResultSet resultSet = preparedStatement.executeQuery(); + while(resultSet.next()) { + OutfitPoint outfitPoint = new OutfitPoint(); + outfitPoint.setId(resultSet.getInt("id_outfit_point")); + outfitPoint.setX(resultSet.getDouble("x")); + outfitPoint.setY(resultSet.getDouble("y")); + outfitPoint.setZ(resultSet.getDouble("z")); + + outfitPoints.add(outfitPoint); + } + return outfitPoints; + } +} diff --git a/src/main/java/fr/yuki/YukiRPFramework/dao/PhoneContactDAO.java b/src/main/java/fr/yuki/yrpf/dao/PhoneContactDAO.java similarity index 86% rename from src/main/java/fr/yuki/YukiRPFramework/dao/PhoneContactDAO.java rename to src/main/java/fr/yuki/yrpf/dao/PhoneContactDAO.java index 46f9a2b..2baa011 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/dao/PhoneContactDAO.java +++ b/src/main/java/fr/yuki/yrpf/dao/PhoneContactDAO.java @@ -1,50 +1,48 @@ -package fr.yuki.YukiRPFramework.dao; - -import fr.yuki.YukiRPFramework.Database; -import fr.yuki.YukiRPFramework.model.AccountJobWhitelist; -import fr.yuki.YukiRPFramework.model.FuelPoint; -import fr.yuki.YukiRPFramework.model.PhoneContact; - -import java.sql.PreparedStatement; -import java.sql.ResultSet; -import java.sql.SQLException; -import java.sql.Statement; -import java.util.ArrayList; - -public class PhoneContactDAO { - public static ArrayList loadPhoneContacts() throws SQLException { - ArrayList phoneContacts = new ArrayList<>(); - PreparedStatement preparedStatement = Database.getConnection().prepareStatement("SELECT * FROM tbl_phone_contact"); - ResultSet resultSet = preparedStatement.executeQuery(); - while(resultSet.next()) { - PhoneContact phoneContact = new PhoneContact(); - phoneContact.setId(resultSet.getInt("id_phone_contact")); - phoneContact.setAccountId(resultSet.getInt("id_account")); - phoneContact.setName(resultSet.getString("name")); - phoneContact.setNumber(resultSet.getString("phone_number")); - - phoneContacts.add(phoneContact); - } - return phoneContacts; - } - - public static void insertPhoneContact(PhoneContact phoneContact) throws SQLException { - // Execute the query - PreparedStatement preparedStatement = Database.getConnection() - .prepareStatement("INSERT INTO tbl_phone_contact " + - "(id_account, name, phone_number) VALUES " + - "(?,?,?)", Statement.RETURN_GENERATED_KEYS); - - preparedStatement.setInt(1, phoneContact.getAccountId()); - preparedStatement.setString(2, phoneContact.getName()); - preparedStatement.setString(3, phoneContact.getNumber()); - preparedStatement.executeUpdate(); - - ResultSet returnId = preparedStatement.getGeneratedKeys(); - if(returnId.next()) { - phoneContact.setId(returnId.getInt(1)); - } - returnId.close(); - preparedStatement.close(); - } -} +package fr.yuki.yrpf.dao; + +import fr.yuki.yrpf.Database; +import fr.yuki.yrpf.model.PhoneContact; + +import java.sql.PreparedStatement; +import java.sql.ResultSet; +import java.sql.SQLException; +import java.sql.Statement; +import java.util.ArrayList; + +public class PhoneContactDAO { + public static ArrayList loadPhoneContacts() throws SQLException { + ArrayList phoneContacts = new ArrayList<>(); + PreparedStatement preparedStatement = Database.getConnection().prepareStatement("SELECT * FROM tbl_phone_contact"); + ResultSet resultSet = preparedStatement.executeQuery(); + while(resultSet.next()) { + PhoneContact phoneContact = new PhoneContact(); + phoneContact.setId(resultSet.getInt("id_phone_contact")); + phoneContact.setAccountId(resultSet.getInt("id_account")); + phoneContact.setName(resultSet.getString("name")); + phoneContact.setNumber(resultSet.getString("phone_number")); + + phoneContacts.add(phoneContact); + } + return phoneContacts; + } + + public static void insertPhoneContact(PhoneContact phoneContact) throws SQLException { + // Execute the query + PreparedStatement preparedStatement = Database.getConnection() + .prepareStatement("INSERT INTO tbl_phone_contact " + + "(id_account, name, phone_number) VALUES " + + "(?,?,?)", Statement.RETURN_GENERATED_KEYS); + + preparedStatement.setInt(1, phoneContact.getAccountId()); + preparedStatement.setString(2, phoneContact.getName()); + preparedStatement.setString(3, phoneContact.getNumber()); + preparedStatement.executeUpdate(); + + ResultSet returnId = preparedStatement.getGeneratedKeys(); + if(returnId.next()) { + phoneContact.setId(returnId.getInt(1)); + } + returnId.close(); + preparedStatement.close(); + } +} diff --git a/src/main/java/fr/yuki/YukiRPFramework/dao/SellerDAO.java b/src/main/java/fr/yuki/yrpf/dao/SellerDAO.java similarity index 79% rename from src/main/java/fr/yuki/YukiRPFramework/dao/SellerDAO.java rename to src/main/java/fr/yuki/yrpf/dao/SellerDAO.java index f360b3b..275fd4c 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/dao/SellerDAO.java +++ b/src/main/java/fr/yuki/yrpf/dao/SellerDAO.java @@ -1,40 +1,36 @@ -package fr.yuki.YukiRPFramework.dao; - -import com.google.gson.Gson; -import com.google.gson.reflect.TypeToken; -import fr.yuki.YukiRPFramework.Database; -import fr.yuki.YukiRPFramework.model.JobNPC; -import fr.yuki.YukiRPFramework.model.JobNPCListItem; -import fr.yuki.YukiRPFramework.model.Seller; - -import java.sql.PreparedStatement; -import java.sql.ResultSet; -import java.sql.SQLException; -import java.util.ArrayList; - -public class SellerDAO { - public static ArrayList loadSellers() throws SQLException { - ArrayList sellers = new ArrayList<>(); - PreparedStatement preparedStatement = Database.getConnection().prepareStatement("SELECT * FROM tbl_seller"); - ResultSet resultSet = preparedStatement.executeQuery(); - while(resultSet.next()) { - Seller seller = new Seller(); - - seller.setId(resultSet.getInt("id_seller")); - seller.setName(resultSet.getString("name")); - seller.setX(resultSet.getDouble("x")); - seller.setY(resultSet.getDouble("y")); - seller.setZ(resultSet.getDouble("z")); - seller.setH(resultSet.getDouble("h")); - seller.setNpcClothing(resultSet.getInt("npc_clothing")); - seller.setItemList(resultSet.getString("item_list")); - seller.setJobRequired(resultSet.getString("job_required")); - seller.setJobLevelRequired(resultSet.getInt("job_level_required")); - - sellers.add(seller); - } - preparedStatement.close(); - resultSet.close(); - return sellers; - } -} +package fr.yuki.yrpf.dao; + +import fr.yuki.yrpf.Database; +import fr.yuki.yrpf.model.Seller; + +import java.sql.PreparedStatement; +import java.sql.ResultSet; +import java.sql.SQLException; +import java.util.ArrayList; + +public class SellerDAO { + public static ArrayList loadSellers() throws SQLException { + ArrayList sellers = new ArrayList<>(); + PreparedStatement preparedStatement = Database.getConnection().prepareStatement("SELECT * FROM tbl_seller"); + ResultSet resultSet = preparedStatement.executeQuery(); + while(resultSet.next()) { + Seller seller = new Seller(); + + seller.setId(resultSet.getInt("id_seller")); + seller.setName(resultSet.getString("name")); + seller.setX(resultSet.getDouble("x")); + seller.setY(resultSet.getDouble("y")); + seller.setZ(resultSet.getDouble("z")); + seller.setH(resultSet.getDouble("h")); + seller.setNpcClothing(resultSet.getInt("npc_clothing")); + seller.setItemList(resultSet.getString("item_list")); + seller.setJobRequired(resultSet.getString("job_required")); + seller.setJobLevelRequired(resultSet.getInt("job_level_required")); + + sellers.add(seller); + } + preparedStatement.close(); + resultSet.close(); + return sellers; + } +} diff --git a/src/main/java/fr/yuki/YukiRPFramework/dao/VehicleGarageDAO.java b/src/main/java/fr/yuki/yrpf/dao/VehicleGarageDAO.java similarity index 94% rename from src/main/java/fr/yuki/YukiRPFramework/dao/VehicleGarageDAO.java rename to src/main/java/fr/yuki/yrpf/dao/VehicleGarageDAO.java index 1de7772..48686c2 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/dao/VehicleGarageDAO.java +++ b/src/main/java/fr/yuki/yrpf/dao/VehicleGarageDAO.java @@ -1,80 +1,79 @@ -package fr.yuki.YukiRPFramework.dao; - -import fr.yuki.YukiRPFramework.Database; -import fr.yuki.YukiRPFramework.model.ATM; -import fr.yuki.YukiRPFramework.model.VehicleGarage; - -import java.sql.*; -import java.util.ArrayList; - -public class VehicleGarageDAO { - public static VehicleGarage createVehicleGarage(VehicleGarage vehicleGarage) throws SQLException { - PreparedStatement preparedStatement = Database.getConnection() - .prepareStatement("INSERT INTO tbl_vehicle_garage " + - "(id_garage, id_last_garage, id_model, damage, licence_plate, color, created_at, updated_at, uuid, owner, health) VALUES " + - "(?,?,?,?,?,?,?,?,?,?,?)", Statement.RETURN_GENERATED_KEYS); - preparedStatement.setInt(1, vehicleGarage.getGarageId()); - preparedStatement.setInt(2, vehicleGarage.getGarageLastId()); - preparedStatement.setInt(3, vehicleGarage.getModelId()); - preparedStatement.setString(4, vehicleGarage.getDamage()); - preparedStatement.setString(5, vehicleGarage.getLicencePlate()); - preparedStatement.setString(6, vehicleGarage.getColor()); - preparedStatement.setDate(7, new Date(new java.util.Date().getTime())); - preparedStatement.setDate(8, new Date(new java.util.Date().getTime())); - preparedStatement.setString(9, vehicleGarage.getUuid()); - preparedStatement.setInt(10, vehicleGarage.getOwner()); - preparedStatement.setDouble(11, vehicleGarage.getHealth()); - preparedStatement.executeUpdate(); - - ResultSet returnId = preparedStatement.getGeneratedKeys(); - if(returnId.next()) { - vehicleGarage.setVehicleGarageId(returnId.getInt(1)); - } else { - return null; - } - returnId.close(); - preparedStatement.close(); - return vehicleGarage; - } - - public static ArrayList loadVehiclesGarage() throws SQLException { - ArrayList vehicleGarages = new ArrayList<>(); - PreparedStatement preparedStatement = Database.getConnection().prepareStatement("SELECT * FROM tbl_vehicle_garage"); - ResultSet resultSet = preparedStatement.executeQuery(); - while(resultSet.next()) { - VehicleGarage vehicleGarage = new VehicleGarage(); - - vehicleGarage.setVehicleGarageId(resultSet.getInt("id_vehicle_garage")); - vehicleGarage.setOwner(resultSet.getInt("owner")); - vehicleGarage.setUuid(resultSet.getString("uuid")); - vehicleGarage.setGarageId(resultSet.getInt("id_garage")); - vehicleGarage.setGarageLastId(resultSet.getInt("id_last_garage")); - vehicleGarage.setModelId(resultSet.getInt("id_model")); - vehicleGarage.setDamage(resultSet.getString("damage")); - vehicleGarage.setHealth(resultSet.getDouble("health")); - vehicleGarage.setLicencePlate(resultSet.getString("licence_plate")); - vehicleGarage.setColor(resultSet.getString("color")); - vehicleGarage.setCreatedAt(resultSet.getDate("created_at")); - vehicleGarage.setUpdateAt(resultSet.getDate("updated_at")); - - vehicleGarages.add(vehicleGarage); - } - preparedStatement.close(); - resultSet.close(); - return vehicleGarages; - } - - public static void saveVehicleGarage(VehicleGarage vehicleGarage) throws SQLException { - PreparedStatement preparedStatement = Database.getConnection() - .prepareStatement("UPDATE tbl_vehicle_garage SET id_garage=?, id_last_garage=?, color=?, licence_plate=?, damage=?, health=? WHERE id_vehicle_garage=?"); - preparedStatement.setInt(1, vehicleGarage.getGarageId()); - preparedStatement.setInt(2, vehicleGarage.getGarageLastId()); - preparedStatement.setString(3, vehicleGarage.getColor()); - preparedStatement.setString(4, vehicleGarage.getLicencePlate()); - preparedStatement.setString(5, vehicleGarage.getDamage()); - preparedStatement.setDouble(6, vehicleGarage.getHealth()); - preparedStatement.setInt(7, vehicleGarage.getVehicleGarageId()); - preparedStatement.execute(); - preparedStatement.close(); - } -} +package fr.yuki.yrpf.dao; + +import fr.yuki.yrpf.Database; +import fr.yuki.yrpf.model.VehicleGarage; + +import java.sql.*; +import java.util.ArrayList; + +public class VehicleGarageDAO { + public static VehicleGarage createVehicleGarage(VehicleGarage vehicleGarage) throws SQLException { + PreparedStatement preparedStatement = Database.getConnection() + .prepareStatement("INSERT INTO tbl_vehicle_garage " + + "(id_garage, id_last_garage, id_model, damage, licence_plate, color, created_at, updated_at, uuid, owner, health) VALUES " + + "(?,?,?,?,?,?,?,?,?,?,?)", Statement.RETURN_GENERATED_KEYS); + preparedStatement.setInt(1, vehicleGarage.getGarageId()); + preparedStatement.setInt(2, vehicleGarage.getGarageLastId()); + preparedStatement.setInt(3, vehicleGarage.getModelId()); + preparedStatement.setString(4, vehicleGarage.getDamage()); + preparedStatement.setString(5, vehicleGarage.getLicencePlate()); + preparedStatement.setString(6, vehicleGarage.getColor()); + preparedStatement.setDate(7, new Date(new java.util.Date().getTime())); + preparedStatement.setDate(8, new Date(new java.util.Date().getTime())); + preparedStatement.setString(9, vehicleGarage.getUuid()); + preparedStatement.setInt(10, vehicleGarage.getOwner()); + preparedStatement.setDouble(11, vehicleGarage.getHealth()); + preparedStatement.executeUpdate(); + + ResultSet returnId = preparedStatement.getGeneratedKeys(); + if(returnId.next()) { + vehicleGarage.setVehicleGarageId(returnId.getInt(1)); + } else { + return null; + } + returnId.close(); + preparedStatement.close(); + return vehicleGarage; + } + + public static ArrayList loadVehiclesGarage() throws SQLException { + ArrayList vehicleGarages = new ArrayList<>(); + PreparedStatement preparedStatement = Database.getConnection().prepareStatement("SELECT * FROM tbl_vehicle_garage"); + ResultSet resultSet = preparedStatement.executeQuery(); + while(resultSet.next()) { + VehicleGarage vehicleGarage = new VehicleGarage(); + + vehicleGarage.setVehicleGarageId(resultSet.getInt("id_vehicle_garage")); + vehicleGarage.setOwner(resultSet.getInt("owner")); + vehicleGarage.setUuid(resultSet.getString("uuid")); + vehicleGarage.setGarageId(resultSet.getInt("id_garage")); + vehicleGarage.setGarageLastId(resultSet.getInt("id_last_garage")); + vehicleGarage.setModelId(resultSet.getInt("id_model")); + vehicleGarage.setDamage(resultSet.getString("damage")); + vehicleGarage.setHealth(resultSet.getDouble("health")); + vehicleGarage.setLicencePlate(resultSet.getString("licence_plate")); + vehicleGarage.setColor(resultSet.getString("color")); + vehicleGarage.setCreatedAt(resultSet.getDate("created_at")); + vehicleGarage.setUpdateAt(resultSet.getDate("updated_at")); + + vehicleGarages.add(vehicleGarage); + } + preparedStatement.close(); + resultSet.close(); + return vehicleGarages; + } + + public static void saveVehicleGarage(VehicleGarage vehicleGarage) throws SQLException { + PreparedStatement preparedStatement = Database.getConnection() + .prepareStatement("UPDATE tbl_vehicle_garage SET id_garage=?, id_last_garage=?, color=?, licence_plate=?, damage=?, health=? WHERE id_vehicle_garage=?"); + preparedStatement.setInt(1, vehicleGarage.getGarageId()); + preparedStatement.setInt(2, vehicleGarage.getGarageLastId()); + preparedStatement.setString(3, vehicleGarage.getColor()); + preparedStatement.setString(4, vehicleGarage.getLicencePlate()); + preparedStatement.setString(5, vehicleGarage.getDamage()); + preparedStatement.setDouble(6, vehicleGarage.getHealth()); + preparedStatement.setInt(7, vehicleGarage.getVehicleGarageId()); + preparedStatement.execute(); + preparedStatement.close(); + } +} diff --git a/src/main/java/fr/yuki/YukiRPFramework/enums/ItemTemplateEnum.java b/src/main/java/fr/yuki/yrpf/enums/ItemTemplateEnum.java similarity index 90% rename from src/main/java/fr/yuki/YukiRPFramework/enums/ItemTemplateEnum.java rename to src/main/java/fr/yuki/yrpf/enums/ItemTemplateEnum.java index f9c587b..1c62521 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/enums/ItemTemplateEnum.java +++ b/src/main/java/fr/yuki/yrpf/enums/ItemTemplateEnum.java @@ -1,36 +1,36 @@ -package fr.yuki.YukiRPFramework.enums; - -public enum ItemTemplateEnum { - APPLE("1"), - CASH("2"), - VKEY("3"), - LUMBERJACK_HATCHET_1("4"), - MINER_PICKAXE_1("5"), - BANANAS("6"), - FISHING_ROD("7"), - SALMON("8"), - WEED_SEED("9"), - TICKET_DELIVERY_GROW_BOX("10"), - POT("11"), - WATER("12"), - WEED("13"), - TICKET_DELIVERY_GENERATOR("14"), - JERRICAN_FUEL("15"), - CUFF("16"), - DEFIBRILATOR("17"), - LIGHTSABER("18"), - DESERT_EAGLE("19"), - AMMO("20"), - GLOCK("21"), - SHOTGUN("22"), - RABBIT_MASK("23"), - LUFFY_HAT("24"), - BANDANA("25"), - TURTLE("26"); - - public final String id; - - private ItemTemplateEnum(String id) { - this.id = id; - } -} +package fr.yuki.yrpf.enums; + +public enum ItemTemplateEnum { + APPLE("1"), + CASH("2"), + VKEY("3"), + LUMBERJACK_HATCHET_1("4"), + MINER_PICKAXE_1("5"), + BANANAS("6"), + FISHING_ROD("7"), + SALMON("8"), + WEED_SEED("9"), + TICKET_DELIVERY_GROW_BOX("10"), + POT("11"), + WATER("12"), + WEED("13"), + TICKET_DELIVERY_GENERATOR("14"), + JERRICAN_FUEL("15"), + CUFF("16"), + DEFIBRILATOR("17"), + LIGHTSABER("18"), + DESERT_EAGLE("19"), + AMMO("20"), + GLOCK("21"), + SHOTGUN("22"), + RABBIT_MASK("23"), + LUFFY_HAT("24"), + BANDANA("25"), + TURTLE("26"); + + public final String id; + + private ItemTemplateEnum(String id) { + this.id = id; + } +} diff --git a/src/main/java/fr/yuki/YukiRPFramework/enums/JobEnum.java b/src/main/java/fr/yuki/yrpf/enums/JobEnum.java similarity index 84% rename from src/main/java/fr/yuki/YukiRPFramework/enums/JobEnum.java rename to src/main/java/fr/yuki/yrpf/enums/JobEnum.java index 37b2ebc..c94e137 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/enums/JobEnum.java +++ b/src/main/java/fr/yuki/yrpf/enums/JobEnum.java @@ -1,17 +1,17 @@ -package fr.yuki.YukiRPFramework.enums; - -public enum JobEnum { - LUMBERJACK("LUMBERJACK"), - DELIVERY("DELIVERY"), - MINER("MINER"), - FISHER("FISHER"), - POLICE("POLICE"), - WEED("WEED"), - GARBAGE("GARBAGE"), - EMS("EMS"); - - public final String type; - private JobEnum(String type) { - this.type = type; - } -} +package fr.yuki.yrpf.enums; + +public enum JobEnum { + LUMBERJACK("LUMBERJACK"), + DELIVERY("DELIVERY"), + MINER("MINER"), + FISHER("FISHER"), + POLICE("POLICE"), + WEED("WEED"), + GARBAGE("GARBAGE"), + EMS("EMS"); + + public final String type; + private JobEnum(String type) { + this.type = type; + } +} diff --git a/src/main/java/fr/yuki/YukiRPFramework/enums/ToastTypeEnum.java b/src/main/java/fr/yuki/yrpf/enums/ToastTypeEnum.java similarity index 81% rename from src/main/java/fr/yuki/YukiRPFramework/enums/ToastTypeEnum.java rename to src/main/java/fr/yuki/yrpf/enums/ToastTypeEnum.java index e44b7a8..39b3865 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/enums/ToastTypeEnum.java +++ b/src/main/java/fr/yuki/yrpf/enums/ToastTypeEnum.java @@ -1,15 +1,15 @@ -package fr.yuki.YukiRPFramework.enums; - -public enum ToastTypeEnum { - INFO("info"), - SUCCESS("success"), - WARN("warn"), - ERROR("error"), - DEFAULT("default"); - - public final String type; - - private ToastTypeEnum(String type) { - this.type = type; - } -} +package fr.yuki.yrpf.enums; + +public enum ToastTypeEnum { + INFO("info"), + SUCCESS("success"), + WARN("warn"), + ERROR("error"), + DEFAULT("default"); + + public final String type; + + private ToastTypeEnum(String type) { + this.type = type; + } +} diff --git a/src/main/java/fr/yuki/YukiRPFramework/house/itembehavior/ATMBehavior.java b/src/main/java/fr/yuki/yrpf/house/itembehavior/ATMBehavior.java similarity index 72% rename from src/main/java/fr/yuki/YukiRPFramework/house/itembehavior/ATMBehavior.java rename to src/main/java/fr/yuki/yrpf/house/itembehavior/ATMBehavior.java index 13b38ea..17d87b7 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/house/itembehavior/ATMBehavior.java +++ b/src/main/java/fr/yuki/yrpf/house/itembehavior/ATMBehavior.java @@ -1,32 +1,32 @@ -package fr.yuki.YukiRPFramework.house.itembehavior; - -import fr.yuki.YukiRPFramework.manager.WorldManager; -import fr.yuki.YukiRPFramework.model.ATM; -import fr.yuki.YukiRPFramework.model.HouseItemObject; - -public class ATMBehavior extends ItemBehavior { - private ATM atm; - - public ATMBehavior(HouseItemObject houseItemObject) { - super(houseItemObject); - } - - @Override - public void onSpawn() { - this.atm = new ATM(); - atm.setX((float)this.houseItemObject.getX()); - atm.setY((float)this.houseItemObject.getY()); - atm.setZ((float)this.houseItemObject.getZ()); - WorldManager.getAtms().add(atm); - } - - @Override - public void onDestroy() { - WorldManager.getAtms().remove(this.atm); - } - - @Override - public void onInteract() { - - } -} +package fr.yuki.yrpf.house.itembehavior; + +import fr.yuki.yrpf.manager.WorldManager; +import fr.yuki.yrpf.model.ATM; +import fr.yuki.yrpf.model.HouseItemObject; + +public class ATMBehavior extends ItemBehavior { + private ATM atm; + + public ATMBehavior(HouseItemObject houseItemObject) { + super(houseItemObject); + } + + @Override + public void onSpawn() { + this.atm = new ATM(); + atm.setX((float)this.houseItemObject.getX()); + atm.setY((float)this.houseItemObject.getY()); + atm.setZ((float)this.houseItemObject.getZ()); + WorldManager.getAtms().add(atm); + } + + @Override + public void onDestroy() { + WorldManager.getAtms().remove(this.atm); + } + + @Override + public void onInteract() { + + } +} diff --git a/src/main/java/fr/yuki/YukiRPFramework/house/itembehavior/ItemBehavior.java b/src/main/java/fr/yuki/yrpf/house/itembehavior/ItemBehavior.java similarity index 72% rename from src/main/java/fr/yuki/YukiRPFramework/house/itembehavior/ItemBehavior.java rename to src/main/java/fr/yuki/yrpf/house/itembehavior/ItemBehavior.java index 7adc84a..61d1fc0 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/house/itembehavior/ItemBehavior.java +++ b/src/main/java/fr/yuki/yrpf/house/itembehavior/ItemBehavior.java @@ -1,15 +1,15 @@ -package fr.yuki.YukiRPFramework.house.itembehavior; - -import fr.yuki.YukiRPFramework.model.HouseItemObject; - -public abstract class ItemBehavior { - protected HouseItemObject houseItemObject; - - public ItemBehavior(HouseItemObject houseItemObject) { - this.houseItemObject = houseItemObject; - } - - public abstract void onSpawn(); - public abstract void onDestroy(); - public abstract void onInteract(); -} +package fr.yuki.yrpf.house.itembehavior; + +import fr.yuki.yrpf.model.HouseItemObject; + +public abstract class ItemBehavior { + protected HouseItemObject houseItemObject; + + public ItemBehavior(HouseItemObject houseItemObject) { + this.houseItemObject = houseItemObject; + } + + public abstract void onSpawn(); + public abstract void onDestroy(); + public abstract void onInteract(); +} diff --git a/src/main/java/fr/yuki/YukiRPFramework/house/itembehavior/RadioBehavior.java b/src/main/java/fr/yuki/yrpf/house/itembehavior/RadioBehavior.java similarity index 84% rename from src/main/java/fr/yuki/YukiRPFramework/house/itembehavior/RadioBehavior.java rename to src/main/java/fr/yuki/yrpf/house/itembehavior/RadioBehavior.java index f28173d..490acd7 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/house/itembehavior/RadioBehavior.java +++ b/src/main/java/fr/yuki/yrpf/house/itembehavior/RadioBehavior.java @@ -1,45 +1,45 @@ -package fr.yuki.YukiRPFramework.house.itembehavior; - -import fr.yuki.YukiRPFramework.manager.SoundManager; -import fr.yuki.YukiRPFramework.model.HouseItemObject; -import net.onfirenetwork.onsetjava.entity.WorldObject; - -import java.util.UUID; - -public class RadioBehavior extends ItemBehavior { - private String soundId; - private WorldObject soundObject; - - public RadioBehavior(HouseItemObject houseItemObject) { - super(houseItemObject); - this.soundId = "radio-" + UUID.randomUUID().toString(); - } - - @Override - public void onSpawn() { - String songName = ""; - switch (houseItemObject.getModelId()) { - case 1194: - songName = "sounds/shop_ambiant2.mp3"; - break; - - default: - songName = "sounds/shop_ambiant.mp3"; - break; - } - this.soundObject = SoundManager.createAmbiantSound(this.soundId, songName, - houseItemObject.getPosition(), 800, 0.3); - } - - @Override - public void onDestroy() { - this.soundObject.destroy(); - this.soundObject = null; - SoundManager.getAmbiantSounds().remove(this.soundId); - } - - @Override - public void onInteract() { - - } -} +package fr.yuki.yrpf.house.itembehavior; + +import fr.yuki.yrpf.manager.SoundManager; +import fr.yuki.yrpf.model.HouseItemObject; +import net.onfirenetwork.onsetjava.entity.WorldObject; + +import java.util.UUID; + +public class RadioBehavior extends ItemBehavior { + private String soundId; + private WorldObject soundObject; + + public RadioBehavior(HouseItemObject houseItemObject) { + super(houseItemObject); + this.soundId = "radio-" + UUID.randomUUID().toString(); + } + + @Override + public void onSpawn() { + String songName = ""; + switch (houseItemObject.getModelId()) { + case 1194: + songName = "sounds/shop_ambiant2.mp3"; + break; + + default: + songName = "sounds/shop_ambiant.mp3"; + break; + } + this.soundObject = SoundManager.createAmbiantSound(this.soundId, songName, + houseItemObject.getPosition(), 800, 0.3); + } + + @Override + public void onDestroy() { + this.soundObject.destroy(); + this.soundObject = null; + SoundManager.getAmbiantSounds().remove(this.soundId); + } + + @Override + public void onInteract() { + + } +} diff --git a/src/main/java/fr/yuki/YukiRPFramework/i18n/I18n.java b/src/main/java/fr/yuki/yrpf/i18n/I18n.java similarity index 85% rename from src/main/java/fr/yuki/YukiRPFramework/i18n/I18n.java rename to src/main/java/fr/yuki/yrpf/i18n/I18n.java index 50c85ca..7600126 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/i18n/I18n.java +++ b/src/main/java/fr/yuki/yrpf/i18n/I18n.java @@ -1,43 +1,40 @@ -package fr.yuki.YukiRPFramework.i18n; - -import com.google.gson.Gson; -import com.google.gson.GsonBuilder; -import com.google.gson.reflect.TypeToken; -import fr.yuki.YukiRPFramework.job.JobConfig; -import fr.yuki.YukiRPFramework.manager.WorldManager; -import net.onfirenetwork.onsetjava.Onset; - -import java.io.File; -import java.io.FileNotFoundException; -import java.io.FileReader; -import java.io.IOException; -import java.nio.charset.StandardCharsets; -import java.nio.file.Files; -import java.nio.file.Paths; -import java.util.HashMap; - -public class I18n { - private static HashMap> langs; - - public static void init() throws IOException { - langs = new HashMap<>(); - for (final File fileEntry : new File(WorldManager.getServerConfig().getLangPath()).listFiles()) { - String fileString = new String(Files.readAllBytes(Paths.get(fileEntry.getPath())), StandardCharsets.UTF_8); - - Gson gson = new GsonBuilder().disableHtmlEscaping().create(); - langs.put(fileEntry.getName().split("\\.")[0], gson.fromJson(fileString, - new TypeToken>(){}.getType())); - } - Onset.print("Loaded " + langs.size() + " i18n file(s)"); - } - - public static String t(String lang, String key, String... params) { - if(!langs.containsKey(lang)) return key; - if(!langs.get(lang).containsKey(key)) return key; - String value = langs.get(lang).get(key); - for(int i = 0; i < params.length; i++) { - value = value.replace("{" + i + "}", params[i]); - } - return value; - } -} +package fr.yuki.yrpf.i18n; + +import com.google.gson.Gson; +import com.google.gson.GsonBuilder; +import com.google.gson.reflect.TypeToken; +import fr.yuki.yrpf.manager.WorldManager; +import net.onfirenetwork.onsetjava.Onset; + +import java.io.File; +import java.io.IOException; +import java.nio.charset.StandardCharsets; +import java.nio.file.Files; +import java.nio.file.Paths; +import java.util.HashMap; + +public class I18n { + private static HashMap> langs; + + public static void init() throws IOException { + langs = new HashMap<>(); + for (final File fileEntry : new File(WorldManager.getServerConfig().getLangPath()).listFiles()) { + String fileString = new String(Files.readAllBytes(Paths.get(fileEntry.getPath())), StandardCharsets.UTF_8); + + Gson gson = new GsonBuilder().disableHtmlEscaping().create(); + langs.put(fileEntry.getName().split("\\.")[0], gson.fromJson(fileString, + new TypeToken>(){}.getType())); + } + Onset.print("Loaded " + langs.size() + " i18n file(s)"); + } + + public static String t(String lang, String key, String... params) { + if(!langs.containsKey(lang)) return key; + if(!langs.get(lang).containsKey(key)) return key; + String value = langs.get(lang).get(key); + for(int i = 0; i < params.length; i++) { + value = value.replace("{" + i + "}", params[i]); + } + return value; + } +} diff --git a/src/main/java/fr/yuki/YukiRPFramework/inventory/Inventory.java b/src/main/java/fr/yuki/yrpf/inventory/Inventory.java similarity index 89% rename from src/main/java/fr/yuki/YukiRPFramework/inventory/Inventory.java rename to src/main/java/fr/yuki/yrpf/inventory/Inventory.java index cdb2e5a..47bf010 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/inventory/Inventory.java +++ b/src/main/java/fr/yuki/yrpf/inventory/Inventory.java @@ -1,297 +1,296 @@ -package fr.yuki.YukiRPFramework.inventory; - -import com.google.gson.Gson; -import com.google.gson.reflect.TypeToken; -import fr.yuki.YukiRPFramework.character.CharacterState; -import fr.yuki.YukiRPFramework.dao.InventoryDAO; -import fr.yuki.YukiRPFramework.enums.ItemTemplateEnum; -import fr.yuki.YukiRPFramework.enums.ToastTypeEnum; -import fr.yuki.YukiRPFramework.i18n.I18n; -import fr.yuki.YukiRPFramework.manager.CharacterManager; -import fr.yuki.YukiRPFramework.manager.ItemManager; -import fr.yuki.YukiRPFramework.manager.UIStateManager; -import fr.yuki.YukiRPFramework.manager.WorldManager; -import fr.yuki.YukiRPFramework.model.Account; -import fr.yuki.YukiRPFramework.model.Bag; -import fr.yuki.YukiRPFramework.model.ItemTemplate; -import fr.yuki.YukiRPFramework.net.payload.AddItemInventoryPayload; -import fr.yuki.YukiRPFramework.net.payload.RemoteItemInventoryPayload; -import fr.yuki.YukiRPFramework.net.payload.UpdateInventoryWeightPayload; -import fr.yuki.YukiRPFramework.net.payload.UpdateItemInventoryPayload; -import net.onfirenetwork.onsetjava.Onset; -import net.onfirenetwork.onsetjava.entity.Player; - -import java.util.ArrayList; -import java.util.stream.Collectors; - -public class Inventory { - private int id; - private int inventoryType; - private int inventoryItemType; - private int characterId; - private int vehicleId; - private String content; - private ArrayList inventoryItems; - - public Inventory() { - this.inventoryItems = new ArrayList(); - } - - /** - * Try to add the inventory item to the inventory, return a existing item if its stacked - * @param inventoryItem The item - * @return The inventory item affected - */ - public InventoryItem addItem(InventoryItem inventoryItem) { - for(InventoryItem inventoryItemEntry : this.inventoryItems) { - if(inventoryItemEntry.canStack(inventoryItem)) { - inventoryItemEntry.setAmount - (inventoryItemEntry.getAmount() + inventoryItem.getAmount()); - this.updateItemPlayerView(inventoryItemEntry); - - // Display the notification - if(WorldManager.findPlayerByAccountId(this.getCharacterId()) != null) { - Account account = WorldManager.getPlayerAccount(WorldManager.findPlayerByAccountId(this.getCharacterId())); - UIStateManager.sendNotification(WorldManager.findPlayerByAccountId(this.getCharacterId()), - ToastTypeEnum.SUCCESS, - "+" + inventoryItem.getAmount() + " " + - I18n.t(account.getLang(), "item.name." + inventoryItem.getTemplateId())); - } - - return inventoryItemEntry; - } - } - this.inventoryItems.add(inventoryItem); - this.addItemPlayerView(inventoryItem); - - // Display the notification - if(WorldManager.findPlayerByAccountId(this.getCharacterId()) != null) { - Account account = WorldManager.getPlayerAccount(WorldManager.findPlayerByAccountId(this.getCharacterId())); - UIStateManager.sendNotification(WorldManager.findPlayerByAccountId(this.getCharacterId()), - ToastTypeEnum.SUCCESS, - "+" + inventoryItem.getAmount() + " " + - I18n.t(account.getLang(), "item.name." + inventoryItem.getTemplateId())); - } - - return inventoryItem; - } - - /** - * Display the new item to the client - * @param inventoryItem The item - */ - public void addItemPlayerView(InventoryItem inventoryItem) { - if(WorldManager.findPlayerByAccountId(this.getCharacterId()) == null) return; - Player player = WorldManager.findPlayerByAccountId(this.getCharacterId()); - if(player == null) return; - player.callRemoteEvent("GlobalUI:DispatchToUI", new Gson().toJson(new AddItemInventoryPayload(inventoryItem))); - player.callRemoteEvent("GlobalUI:DispatchToUI", new Gson().toJson(new UpdateInventoryWeightPayload(this.getCurrentWeight(), this.getMaxWeight()))); - } - - /** - * Update a existing item to the client - * @param inventoryItem The item - */ - public void updateItemPlayerView(InventoryItem inventoryItem) { - if(WorldManager.findPlayerByAccountId(this.getCharacterId()) == null) return; - Player player = WorldManager.findPlayerByAccountId(this.getCharacterId()); - if(player == null) return; - player.callRemoteEvent("GlobalUI:DispatchToUI", new Gson().toJson(new UpdateItemInventoryPayload(inventoryItem))); - player.callRemoteEvent("GlobalUI:DispatchToUI", new Gson().toJson(new UpdateInventoryWeightPayload(this.getCurrentWeight(), this.getMaxWeight()))); - } - - /** - * Compute the content and save it into the database - */ - public void save() { - try { - if(this.getId() <= 0) return; - this.content = new Gson().toJson(this.inventoryItems); - InventoryDAO.updateInventory(this); - } catch (Exception ex) { - Onset.print("Can't save the inventory: " + ex.toString()); - } - } - - /** - * Clean all items that don't need to be loaded. - */ - public void cleanUnusableItems() { - for(InventoryItem inventoryItem : this.inventoryItems.stream().collect(Collectors.toList())) { - if(inventoryItem.getTemplate().getId() == Integer.parseInt(ItemTemplateEnum.VKEY.id)) { - this.inventoryItems.remove(inventoryItem); - } - } - this.save(); - } - - /** - * Parse the content into a item array list - */ - public void parseContent() { - this.inventoryItems = new Gson().fromJson(this.content, - new TypeToken>(){}.getType()); - this.cleanUnusableItems(); - } - - /** - * Send all the items to the client - * @param player The player - */ - public void sendInventoryContent(Player player) { - for(InventoryItem inventoryItem : this.inventoryItems) { - this.addItemPlayerView(inventoryItem); - } - player.callRemoteEvent("GlobalUI:DispatchToUI", new Gson().toJson(new UpdateInventoryWeightPayload(this.getCurrentWeight(), this.getMaxWeight()))); - } - - /** - * Get the max weight of the inventory - * @return The max weight - */ - public float getMaxWeight() { - Player player = WorldManager.findPlayerByAccountId(this.getCharacterId()); - CharacterState state = CharacterManager.getCharacterStateByPlayer(player); - float baseMaxWeight = 55; - if(state.getCurrentBag() != null) { - Bag bag = ItemManager.bags.stream().filter(x -> x.getModelId() == state.getCurrentBag().getModelId()) - .findFirst().orElse(null); - return (float) (baseMaxWeight + bag.getBonusWeight()); - } else { - return baseMaxWeight; - } - } - - /** - * Get the current weight of the inventory - * @return The current weight - */ - public float getCurrentWeight() { - float weight = 0; - for(InventoryItem inventoryItem : this.inventoryItems) { - weight += inventoryItem.getTemplate().getWeight() * inventoryItem.getAmount(); - } - return weight; - } - - /** - * Find a item by the type - * @param type Type item id - * @return The inventory item - */ - public InventoryItem getItemByType(String type) { - return this.inventoryItems.stream().filter(x -> x.getTemplateId().equals(type)).findFirst().orElse(null); - } - - public InventoryItem getItem(String id) { - return this.inventoryItems.stream().filter(x -> x.getId().equals(id)).findFirst().orElse(null); - } - - public ArrayList getItemsByType(String type) { - return new ArrayList<>(this.inventoryItems.stream().filter(x -> x.getTemplateId().equals(type)).collect(Collectors.toList())); - } - - /** - * Get the cash amount on the player - * @return The cash amount - */ - public int getCashAmount() { - InventoryItem cashItem = this.getItemByType(ItemTemplateEnum.CASH.id); - if(cashItem == null) return 0; - return cashItem.getAmount(); - } - - /** - * Remove item amount to the inventory, delete it if the amount if higher than the item amount - * @param item The item - * @param amount The amount - */ - public void removeItem(InventoryItem item, int amount) { - if(amount >= item.getAmount()) { - this.inventoryItems.remove(item); - this.save(); - - if(WorldManager.findPlayerByAccountId(this.getCharacterId()) != null) { - WorldManager.findPlayerByAccountId(this.getCharacterId()) - .callRemoteEvent("GlobalUI:DispatchToUI", new Gson().toJson(new RemoteItemInventoryPayload(item.getId()))); - } - } else { - item.setAmount(item.getAmount() - amount); - this.updateItemPlayerView(item); - this.save(); - } - - // Display the notification - if(WorldManager.findPlayerByAccountId(this.getCharacterId()) != null) { - Account account = WorldManager.getPlayerAccount(WorldManager.findPlayerByAccountId(this.getCharacterId())); - WorldManager.findPlayerByAccountId(this.getCharacterId()).callRemoteEvent("GlobalUI:DispatchToUI", new Gson().toJson(new UpdateInventoryWeightPayload(this.getCurrentWeight(), this.getMaxWeight()))); - UIStateManager.sendNotification(WorldManager.findPlayerByAccountId(this.getCharacterId()), - ToastTypeEnum.WARN, - "-" + amount + " " + I18n.t(account.getLang(), "item.name." + item.getTemplateId())); - } - } - - public void updateWeightView() { - WorldManager.findPlayerByAccountId(this.getCharacterId()).callRemoteEvent("GlobalUI:DispatchToUI", new Gson().toJson(new UpdateInventoryWeightPayload(this.getCurrentWeight(), this.getMaxWeight()))); - } - - public void throwItem(InventoryItem item, int quantity) { - - } - - public int getId() { - return id; - } - - public void setId(int id) { - this.id = id; - } - - public int getInventoryType() { - return inventoryType; - } - - public void setInventoryType(int inventoryType) { - this.inventoryType = inventoryType; - } - - public int getInventoryItemType() { - return inventoryItemType; - } - - public void setInventoryItemType(int inventoryItemType) { - this.inventoryItemType = inventoryItemType; - } - - public int getCharacterId() { - return characterId; - } - - public void setCharacterId(int characterId) { - this.characterId = characterId; - } - - public int getVehicleId() { - return vehicleId; - } - - public void setVehicleId(int vehicleId) { - this.vehicleId = vehicleId; - } - - public String getContent() { - return content; - } - - public void setContent(String content) { - this.content = content; - } - - public ArrayList getInventoryItems() { - return inventoryItems; - } - - public void setInventoryItems(ArrayList inventoryItems) { - this.inventoryItems = inventoryItems; - } -} +package fr.yuki.yrpf.inventory; + +import com.google.gson.Gson; +import com.google.gson.reflect.TypeToken; +import fr.yuki.yrpf.character.CharacterState; +import fr.yuki.yrpf.dao.InventoryDAO; +import fr.yuki.yrpf.enums.ItemTemplateEnum; +import fr.yuki.yrpf.enums.ToastTypeEnum; +import fr.yuki.yrpf.i18n.I18n; +import fr.yuki.yrpf.manager.CharacterManager; +import fr.yuki.yrpf.manager.ItemManager; +import fr.yuki.yrpf.manager.UIStateManager; +import fr.yuki.yrpf.manager.WorldManager; +import fr.yuki.yrpf.model.Account; +import fr.yuki.yrpf.model.Bag; +import fr.yuki.yrpf.net.payload.AddItemInventoryPayload; +import fr.yuki.yrpf.net.payload.RemoteItemInventoryPayload; +import fr.yuki.yrpf.net.payload.UpdateInventoryWeightPayload; +import fr.yuki.yrpf.net.payload.UpdateItemInventoryPayload; +import net.onfirenetwork.onsetjava.Onset; +import net.onfirenetwork.onsetjava.entity.Player; + +import java.util.ArrayList; +import java.util.stream.Collectors; + +public class Inventory { + private int id; + private int inventoryType; + private int inventoryItemType; + private int characterId; + private int vehicleId; + private String content; + private ArrayList inventoryItems; + + public Inventory() { + this.inventoryItems = new ArrayList(); + } + + /** + * Try to add the inventory item to the inventory, return a existing item if its stacked + * @param inventoryItem The item + * @return The inventory item affected + */ + public InventoryItem addItem(InventoryItem inventoryItem) { + for(InventoryItem inventoryItemEntry : this.inventoryItems) { + if(inventoryItemEntry.canStack(inventoryItem)) { + inventoryItemEntry.setAmount + (inventoryItemEntry.getAmount() + inventoryItem.getAmount()); + this.updateItemPlayerView(inventoryItemEntry); + + // Display the notification + if(WorldManager.findPlayerByAccountId(this.getCharacterId()) != null) { + Account account = WorldManager.getPlayerAccount(WorldManager.findPlayerByAccountId(this.getCharacterId())); + UIStateManager.sendNotification(WorldManager.findPlayerByAccountId(this.getCharacterId()), + ToastTypeEnum.SUCCESS, + "+" + inventoryItem.getAmount() + " " + + I18n.t(account.getLang(), "item.name." + inventoryItem.getTemplateId())); + } + + return inventoryItemEntry; + } + } + this.inventoryItems.add(inventoryItem); + this.addItemPlayerView(inventoryItem); + + // Display the notification + if(WorldManager.findPlayerByAccountId(this.getCharacterId()) != null) { + Account account = WorldManager.getPlayerAccount(WorldManager.findPlayerByAccountId(this.getCharacterId())); + UIStateManager.sendNotification(WorldManager.findPlayerByAccountId(this.getCharacterId()), + ToastTypeEnum.SUCCESS, + "+" + inventoryItem.getAmount() + " " + + I18n.t(account.getLang(), "item.name." + inventoryItem.getTemplateId())); + } + + return inventoryItem; + } + + /** + * Display the new item to the client + * @param inventoryItem The item + */ + public void addItemPlayerView(InventoryItem inventoryItem) { + if(WorldManager.findPlayerByAccountId(this.getCharacterId()) == null) return; + Player player = WorldManager.findPlayerByAccountId(this.getCharacterId()); + if(player == null) return; + player.callRemoteEvent("GlobalUI:DispatchToUI", new Gson().toJson(new AddItemInventoryPayload(inventoryItem))); + player.callRemoteEvent("GlobalUI:DispatchToUI", new Gson().toJson(new UpdateInventoryWeightPayload(this.getCurrentWeight(), this.getMaxWeight()))); + } + + /** + * Update a existing item to the client + * @param inventoryItem The item + */ + public void updateItemPlayerView(InventoryItem inventoryItem) { + if(WorldManager.findPlayerByAccountId(this.getCharacterId()) == null) return; + Player player = WorldManager.findPlayerByAccountId(this.getCharacterId()); + if(player == null) return; + player.callRemoteEvent("GlobalUI:DispatchToUI", new Gson().toJson(new UpdateItemInventoryPayload(inventoryItem))); + player.callRemoteEvent("GlobalUI:DispatchToUI", new Gson().toJson(new UpdateInventoryWeightPayload(this.getCurrentWeight(), this.getMaxWeight()))); + } + + /** + * Compute the content and save it into the database + */ + public void save() { + try { + if(this.getId() <= 0) return; + this.content = new Gson().toJson(this.inventoryItems); + InventoryDAO.updateInventory(this); + } catch (Exception ex) { + Onset.print("Can't save the inventory: " + ex.toString()); + } + } + + /** + * Clean all items that don't need to be loaded. + */ + public void cleanUnusableItems() { + for(InventoryItem inventoryItem : this.inventoryItems.stream().collect(Collectors.toList())) { + if(inventoryItem.getTemplate().getId() == Integer.parseInt(ItemTemplateEnum.VKEY.id)) { + this.inventoryItems.remove(inventoryItem); + } + } + this.save(); + } + + /** + * Parse the content into a item array list + */ + public void parseContent() { + this.inventoryItems = new Gson().fromJson(this.content, + new TypeToken>(){}.getType()); + this.cleanUnusableItems(); + } + + /** + * Send all the items to the client + * @param player The player + */ + public void sendInventoryContent(Player player) { + for(InventoryItem inventoryItem : this.inventoryItems) { + this.addItemPlayerView(inventoryItem); + } + player.callRemoteEvent("GlobalUI:DispatchToUI", new Gson().toJson(new UpdateInventoryWeightPayload(this.getCurrentWeight(), this.getMaxWeight()))); + } + + /** + * Get the max weight of the inventory + * @return The max weight + */ + public float getMaxWeight() { + Player player = WorldManager.findPlayerByAccountId(this.getCharacterId()); + CharacterState state = CharacterManager.getCharacterStateByPlayer(player); + float baseMaxWeight = 55; + if(state.getCurrentBag() != null) { + Bag bag = ItemManager.bags.stream().filter(x -> x.getModelId() == state.getCurrentBag().getModelId()) + .findFirst().orElse(null); + return (float) (baseMaxWeight + bag.getBonusWeight()); + } else { + return baseMaxWeight; + } + } + + /** + * Get the current weight of the inventory + * @return The current weight + */ + public float getCurrentWeight() { + float weight = 0; + for(InventoryItem inventoryItem : this.inventoryItems) { + weight += inventoryItem.getTemplate().getWeight() * inventoryItem.getAmount(); + } + return weight; + } + + /** + * Find a item by the type + * @param type Type item id + * @return The inventory item + */ + public InventoryItem getItemByType(String type) { + return this.inventoryItems.stream().filter(x -> x.getTemplateId().equals(type)).findFirst().orElse(null); + } + + public InventoryItem getItem(String id) { + return this.inventoryItems.stream().filter(x -> x.getId().equals(id)).findFirst().orElse(null); + } + + public ArrayList getItemsByType(String type) { + return new ArrayList<>(this.inventoryItems.stream().filter(x -> x.getTemplateId().equals(type)).collect(Collectors.toList())); + } + + /** + * Get the cash amount on the player + * @return The cash amount + */ + public int getCashAmount() { + InventoryItem cashItem = this.getItemByType(ItemTemplateEnum.CASH.id); + if(cashItem == null) return 0; + return cashItem.getAmount(); + } + + /** + * Remove item amount to the inventory, delete it if the amount if higher than the item amount + * @param item The item + * @param amount The amount + */ + public void removeItem(InventoryItem item, int amount) { + if(amount >= item.getAmount()) { + this.inventoryItems.remove(item); + this.save(); + + if(WorldManager.findPlayerByAccountId(this.getCharacterId()) != null) { + WorldManager.findPlayerByAccountId(this.getCharacterId()) + .callRemoteEvent("GlobalUI:DispatchToUI", new Gson().toJson(new RemoteItemInventoryPayload(item.getId()))); + } + } else { + item.setAmount(item.getAmount() - amount); + this.updateItemPlayerView(item); + this.save(); + } + + // Display the notification + if(WorldManager.findPlayerByAccountId(this.getCharacterId()) != null) { + Account account = WorldManager.getPlayerAccount(WorldManager.findPlayerByAccountId(this.getCharacterId())); + WorldManager.findPlayerByAccountId(this.getCharacterId()).callRemoteEvent("GlobalUI:DispatchToUI", new Gson().toJson(new UpdateInventoryWeightPayload(this.getCurrentWeight(), this.getMaxWeight()))); + UIStateManager.sendNotification(WorldManager.findPlayerByAccountId(this.getCharacterId()), + ToastTypeEnum.WARN, + "-" + amount + " " + I18n.t(account.getLang(), "item.name." + item.getTemplateId())); + } + } + + public void updateWeightView() { + WorldManager.findPlayerByAccountId(this.getCharacterId()).callRemoteEvent("GlobalUI:DispatchToUI", new Gson().toJson(new UpdateInventoryWeightPayload(this.getCurrentWeight(), this.getMaxWeight()))); + } + + public void throwItem(InventoryItem item, int quantity) { + + } + + public int getId() { + return id; + } + + public void setId(int id) { + this.id = id; + } + + public int getInventoryType() { + return inventoryType; + } + + public void setInventoryType(int inventoryType) { + this.inventoryType = inventoryType; + } + + public int getInventoryItemType() { + return inventoryItemType; + } + + public void setInventoryItemType(int inventoryItemType) { + this.inventoryItemType = inventoryItemType; + } + + public int getCharacterId() { + return characterId; + } + + public void setCharacterId(int characterId) { + this.characterId = characterId; + } + + public int getVehicleId() { + return vehicleId; + } + + public void setVehicleId(int vehicleId) { + this.vehicleId = vehicleId; + } + + public String getContent() { + return content; + } + + public void setContent(String content) { + this.content = content; + } + + public ArrayList getInventoryItems() { + return inventoryItems; + } + + public void setInventoryItems(ArrayList inventoryItems) { + this.inventoryItems = inventoryItems; + } +} diff --git a/src/main/java/fr/yuki/YukiRPFramework/inventory/InventoryItem.java b/src/main/java/fr/yuki/yrpf/inventory/InventoryItem.java similarity index 88% rename from src/main/java/fr/yuki/YukiRPFramework/inventory/InventoryItem.java rename to src/main/java/fr/yuki/yrpf/inventory/InventoryItem.java index 10a37e2..7429a12 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/inventory/InventoryItem.java +++ b/src/main/java/fr/yuki/yrpf/inventory/InventoryItem.java @@ -1,70 +1,70 @@ -package fr.yuki.YukiRPFramework.inventory; - -import fr.yuki.YukiRPFramework.manager.InventoryManager; -import fr.yuki.YukiRPFramework.model.ItemTemplate; - -import java.util.HashMap; -import java.util.UUID; - -public class InventoryItem { - private String id; - private String templateId; - private int amount; - private HashMap extraProperties; - - public String getId() { - return id; - } - - public void setId(String id) { - this.id = id; - } - - public String getTemplateId() { - return templateId; - } - - public void setTemplateId(String templateId) { - this.templateId = templateId; - } - - public int getAmount() { - return amount; - } - - public void setAmount(int amount) { - this.amount = amount; - } - - public ItemTemplate getTemplate() { - return InventoryManager.getItemTemplates().get(Integer.parseInt(this.templateId)); - } - - public HashMap getExtraProperties() { - return extraProperties; - } - - public void setExtraProperties(HashMap extraProperties) { - this.extraProperties = extraProperties; - } - - /** - * Check if the inventory item is the same and then can be stacked - * @param inventoryItem The inventory item to stack - * @return Can be stack - */ - public boolean canStack(InventoryItem inventoryItem) { - if(!templateId.equals(inventoryItem.getTemplateId())) return false; - if(!this.getExtraProperties().equals(inventoryItem.getExtraProperties())) return false; - return true; - } - - public InventoryItem copy() { - InventoryItem inventoryItem = new InventoryItem(); - inventoryItem.setId(UUID.randomUUID().toString()); - inventoryItem.setTemplateId(this.templateId); - inventoryItem.setAmount(this.amount); - inventoryItem.setExtraProperties(this.extraProperties); - return inventoryItem; - } -} +package fr.yuki.yrpf.inventory; + +import fr.yuki.yrpf.manager.InventoryManager; +import fr.yuki.yrpf.model.ItemTemplate; + +import java.util.HashMap; +import java.util.UUID; + +public class InventoryItem { + private String id; + private String templateId; + private int amount; + private HashMap extraProperties; + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getTemplateId() { + return templateId; + } + + public void setTemplateId(String templateId) { + this.templateId = templateId; + } + + public int getAmount() { + return amount; + } + + public void setAmount(int amount) { + this.amount = amount; + } + + public ItemTemplate getTemplate() { + return InventoryManager.getItemTemplates().get(Integer.parseInt(this.templateId)); + } + + public HashMap getExtraProperties() { + return extraProperties; + } + + public void setExtraProperties(HashMap extraProperties) { + this.extraProperties = extraProperties; + } + + /** + * Check if the inventory item is the same and then can be stacked + * @param inventoryItem The inventory item to stack + * @return Can be stack + */ + public boolean canStack(InventoryItem inventoryItem) { + if(!templateId.equals(inventoryItem.getTemplateId())) return false; + if(!this.getExtraProperties().equals(inventoryItem.getExtraProperties())) return false; + return true; + } + + public InventoryItem copy() { + InventoryItem inventoryItem = new InventoryItem(); + inventoryItem.setId(UUID.randomUUID().toString()); + inventoryItem.setTemplateId(this.templateId); + inventoryItem.setAmount(this.amount); + inventoryItem.setExtraProperties(this.extraProperties); + return inventoryItem; + } +} diff --git a/src/main/java/fr/yuki/YukiRPFramework/job/CustomJob.java b/src/main/java/fr/yuki/yrpf/job/CustomJob.java similarity index 84% rename from src/main/java/fr/yuki/YukiRPFramework/job/CustomJob.java rename to src/main/java/fr/yuki/yrpf/job/CustomJob.java index 2d7d0d7..6325e4c 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/job/CustomJob.java +++ b/src/main/java/fr/yuki/yrpf/job/CustomJob.java @@ -1,34 +1,32 @@ -package fr.yuki.YukiRPFramework.job; - -import fr.yuki.YukiRPFramework.job.harvest.Garbage; - -import java.util.ArrayList; - -public class CustomJob extends Job { - private String jobName; - private int refillInterval; - - public CustomJob(String jobName, int refillInterval) { - this.jobName = jobName; - this.refillInterval = refillInterval; - this.harvestableObjectsTemplate = new ArrayList<>(); - if(this.setup()) { - this.load(); - } - } - - @Override - public String getJobType() { - return this.jobName; - } - - @Override - public int getRefillInterval() { - return this.refillInterval; - } - - @Override - public boolean isWhitelisted() { - return false; - } -} +package fr.yuki.yrpf.job; + +import java.util.ArrayList; + +public class CustomJob extends Job { + private String jobName; + private int refillInterval; + + public CustomJob(String jobName, int refillInterval) { + this.jobName = jobName; + this.refillInterval = refillInterval; + this.harvestableObjectsTemplate = new ArrayList<>(); + if(this.setup()) { + this.load(); + } + } + + @Override + public String getJobType() { + return this.jobName; + } + + @Override + public int getRefillInterval() { + return this.refillInterval; + } + + @Override + public boolean isWhitelisted() { + return false; + } +} diff --git a/src/main/java/fr/yuki/YukiRPFramework/job/DeliveryJob.java b/src/main/java/fr/yuki/yrpf/job/DeliveryJob.java similarity index 72% rename from src/main/java/fr/yuki/YukiRPFramework/job/DeliveryJob.java rename to src/main/java/fr/yuki/yrpf/job/DeliveryJob.java index a18e12c..225d4c7 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/job/DeliveryJob.java +++ b/src/main/java/fr/yuki/yrpf/job/DeliveryJob.java @@ -1,36 +1,35 @@ -package fr.yuki.YukiRPFramework.job; - -import fr.yuki.YukiRPFramework.enums.JobEnum; -import fr.yuki.YukiRPFramework.job.harvest.DeliveryPackage; -import fr.yuki.YukiRPFramework.job.harvest.Garbage; - -import java.util.ArrayList; - -public class DeliveryJob extends Job { - public DeliveryJob() { - super(); - this.harvestableObjectsTemplate = new ArrayList<>(); - this.harvestableObjectsTemplate.add(new DeliveryPackage()); - - if(this.setup()) { - this.load(); - } - - this.refillHarvestResources(); - } - - @Override - public String getJobType() { - return JobEnum.DELIVERY.type; - } - - @Override - public int getRefillInterval() { - return 60000*5; - } - - @Override - public boolean isWhitelisted() { - return false; - } -} +package fr.yuki.yrpf.job; + +import fr.yuki.yrpf.enums.JobEnum; +import fr.yuki.yrpf.job.harvest.DeliveryPackage; + +import java.util.ArrayList; + +public class DeliveryJob extends Job { + public DeliveryJob() { + super(); + this.harvestableObjectsTemplate = new ArrayList<>(); + this.harvestableObjectsTemplate.add(new DeliveryPackage()); + + if(this.setup()) { + this.load(); + } + + this.refillHarvestResources(); + } + + @Override + public String getJobType() { + return JobEnum.DELIVERY.type; + } + + @Override + public int getRefillInterval() { + return 60000*5; + } + + @Override + public boolean isWhitelisted() { + return false; + } +} diff --git a/src/main/java/fr/yuki/YukiRPFramework/job/DeliveryPointConfig.java b/src/main/java/fr/yuki/yrpf/job/DeliveryPointConfig.java similarity index 87% rename from src/main/java/fr/yuki/YukiRPFramework/job/DeliveryPointConfig.java rename to src/main/java/fr/yuki/yrpf/job/DeliveryPointConfig.java index ad5feae..c507223 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/job/DeliveryPointConfig.java +++ b/src/main/java/fr/yuki/yrpf/job/DeliveryPointConfig.java @@ -1,17 +1,17 @@ -package fr.yuki.YukiRPFramework.job; - -import java.util.ArrayList; -import java.util.HashMap; - -public class DeliveryPointConfig { - private HashMap> points; - - - public HashMap> getPoints() { - return points; - } - - public void setPoints(HashMap> points) { - this.points = points; - } -} +package fr.yuki.yrpf.job; + +import java.util.ArrayList; +import java.util.HashMap; + +public class DeliveryPointConfig { + private HashMap> points; + + + public HashMap> getPoints() { + return points; + } + + public void setPoints(HashMap> points) { + this.points = points; + } +} diff --git a/src/main/java/fr/yuki/YukiRPFramework/job/EMSJob.java b/src/main/java/fr/yuki/yrpf/job/EMSJob.java similarity index 80% rename from src/main/java/fr/yuki/YukiRPFramework/job/EMSJob.java rename to src/main/java/fr/yuki/yrpf/job/EMSJob.java index 3ce963a..f85295e 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/job/EMSJob.java +++ b/src/main/java/fr/yuki/yrpf/job/EMSJob.java @@ -1,32 +1,32 @@ -package fr.yuki.YukiRPFramework.job; - -import fr.yuki.YukiRPFramework.enums.JobEnum; - -import java.util.ArrayList; - -public class EMSJob extends Job { - - public EMSJob() { - super(); - this.harvestableObjectsTemplate = new ArrayList<>(); - - if(this.setup()) { - this.load(); - } - } - - @Override - public String getJobType() { - return JobEnum.EMS.type; - } - - @Override - public int getRefillInterval() { - return 0; - } - - @Override - public boolean isWhitelisted() { - return true; - } -} +package fr.yuki.yrpf.job; + +import fr.yuki.yrpf.enums.JobEnum; + +import java.util.ArrayList; + +public class EMSJob extends Job { + + public EMSJob() { + super(); + this.harvestableObjectsTemplate = new ArrayList<>(); + + if(this.setup()) { + this.load(); + } + } + + @Override + public String getJobType() { + return JobEnum.EMS.type; + } + + @Override + public int getRefillInterval() { + return 0; + } + + @Override + public boolean isWhitelisted() { + return true; + } +} diff --git a/src/main/java/fr/yuki/YukiRPFramework/job/FisherJob.java b/src/main/java/fr/yuki/yrpf/job/FisherJob.java similarity index 70% rename from src/main/java/fr/yuki/YukiRPFramework/job/FisherJob.java rename to src/main/java/fr/yuki/yrpf/job/FisherJob.java index fa538cc..aeee338 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/job/FisherJob.java +++ b/src/main/java/fr/yuki/yrpf/job/FisherJob.java @@ -1,39 +1,38 @@ -package fr.yuki.YukiRPFramework.job; - -import fr.yuki.YukiRPFramework.enums.JobEnum; -import fr.yuki.YukiRPFramework.job.harvest.CooperOre; -import fr.yuki.YukiRPFramework.job.harvest.Salmon; -import fr.yuki.YukiRPFramework.job.harvest.Turtle; - -import java.util.ArrayList; - -public class FisherJob extends Job { - public FisherJob() { - super(); - this.harvestableObjectsTemplate = new ArrayList<>(); - this.harvestableObjectsTemplate.add(new Salmon()); - this.harvestableObjectsTemplate.add(new Turtle()); - - if(this.setup()) { - this.load(); - } - - this.refillHarvestResources(); - } - - - @Override - public String getJobType() { - return JobEnum.FISHER.type; - } - - @Override - public int getRefillInterval() { - return 60000 * 3; - } - - @Override - public boolean isWhitelisted() { - return false; - } -} +package fr.yuki.yrpf.job; + +import fr.yuki.yrpf.enums.JobEnum; +import fr.yuki.yrpf.job.harvest.Salmon; +import fr.yuki.yrpf.job.harvest.Turtle; + +import java.util.ArrayList; + +public class FisherJob extends Job { + public FisherJob() { + super(); + this.harvestableObjectsTemplate = new ArrayList<>(); + this.harvestableObjectsTemplate.add(new Salmon()); + this.harvestableObjectsTemplate.add(new Turtle()); + + if(this.setup()) { + this.load(); + } + + this.refillHarvestResources(); + } + + + @Override + public String getJobType() { + return JobEnum.FISHER.type; + } + + @Override + public int getRefillInterval() { + return 60000 * 3; + } + + @Override + public boolean isWhitelisted() { + return false; + } +} diff --git a/src/main/java/fr/yuki/YukiRPFramework/job/GarbageJob.java b/src/main/java/fr/yuki/yrpf/job/GarbageJob.java similarity index 71% rename from src/main/java/fr/yuki/YukiRPFramework/job/GarbageJob.java rename to src/main/java/fr/yuki/yrpf/job/GarbageJob.java index 1c68969..a87cf96 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/job/GarbageJob.java +++ b/src/main/java/fr/yuki/yrpf/job/GarbageJob.java @@ -1,36 +1,35 @@ -package fr.yuki.YukiRPFramework.job; - -import fr.yuki.YukiRPFramework.enums.JobEnum; -import fr.yuki.YukiRPFramework.job.harvest.Garbage; -import fr.yuki.YukiRPFramework.job.harvest.LumberjackTreeCommon; - -import java.util.ArrayList; - -public class GarbageJob extends Job { - public GarbageJob() { - super(); - this.harvestableObjectsTemplate = new ArrayList<>(); - this.harvestableObjectsTemplate.add(new Garbage()); - - if(this.setup()) { - this.load(); - } - - this.refillHarvestResources(); - } - - @Override - public String getJobType() { - return JobEnum.GARBAGE.type; - } - - @Override - public int getRefillInterval() { - return 60000 * 10; - } - - @Override - public boolean isWhitelisted() { - return false; - } -} +package fr.yuki.yrpf.job; + +import fr.yuki.yrpf.enums.JobEnum; +import fr.yuki.yrpf.job.harvest.Garbage; + +import java.util.ArrayList; + +public class GarbageJob extends Job { + public GarbageJob() { + super(); + this.harvestableObjectsTemplate = new ArrayList<>(); + this.harvestableObjectsTemplate.add(new Garbage()); + + if(this.setup()) { + this.load(); + } + + this.refillHarvestResources(); + } + + @Override + public String getJobType() { + return JobEnum.GARBAGE.type; + } + + @Override + public int getRefillInterval() { + return 60000 * 10; + } + + @Override + public boolean isWhitelisted() { + return false; + } +} diff --git a/src/main/java/fr/yuki/YukiRPFramework/job/Job.java b/src/main/java/fr/yuki/yrpf/job/Job.java similarity index 91% rename from src/main/java/fr/yuki/YukiRPFramework/job/Job.java rename to src/main/java/fr/yuki/yrpf/job/Job.java index 8df2e37..b004ab4 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/job/Job.java +++ b/src/main/java/fr/yuki/yrpf/job/Job.java @@ -1,185 +1,180 @@ -package fr.yuki.YukiRPFramework.job; - -import com.google.gson.Gson; -import fr.yuki.YukiRPFramework.enums.JobEnum; -import fr.yuki.YukiRPFramework.job.harvest.HarvestableObject; -import fr.yuki.YukiRPFramework.manager.JobManager; -import fr.yuki.YukiRPFramework.manager.ModdingManager; -import fr.yuki.YukiRPFramework.model.JobNPC; -import fr.yuki.YukiRPFramework.model.JobTool; -import net.onfirenetwork.onsetjava.Onset; -import net.onfirenetwork.onsetjava.data.Location; -import net.onfirenetwork.onsetjava.data.Vector; -import net.onfirenetwork.onsetjava.entity.NPC; -import net.onfirenetwork.onsetjava.entity.Pickup; -import net.onfirenetwork.onsetjava.entity.Player; -import net.onfirenetwork.onsetjava.entity.WorldObject; - -import java.io.File; -import java.io.FileReader; -import java.io.FileWriter; -import java.io.IOException; -import java.util.ArrayList; -import java.util.stream.Collectors; - -public abstract class Job { - public abstract String getJobType(); - public abstract int getRefillInterval(); - public abstract boolean isWhitelisted(); - - protected ArrayList harvestableObjectsTemplate; - protected JobConfig jobConfig; - protected ArrayList worldHarvestObjects; - protected ArrayList jobTools; - - public Job() { - this.worldHarvestObjects = new ArrayList<>(); - this.spawnNpcs(); - this.spawnTools(); - - if(this.getRefillInterval() > 0) { - Onset.timer(this.getRefillInterval(), () -> { - refillHarvestResources(); - }); - } - } - - /** - * Spawn npcs for this job - */ - private void spawnNpcs() { - for(JobNPC jobNPC : JobManager.getJobNPCS().stream().filter(x -> x.getJobId().equals(this.getJobType())).collect(Collectors.toList())) { - NPC npc = Onset.getServer().createNPC(new Vector(jobNPC.getX(), jobNPC.getY(), jobNPC.getZ()), jobNPC.getH()); - Onset.getServer().createText3D(jobNPC.getName() + " [Utiliser]", 20, jobNPC.getX(), - jobNPC.getY(), jobNPC.getZ() + 150, 0 , 0 ,0); - npc.setProperty("clothing", jobNPC.getNpcClothing(), true); - npc.setRespawnTime(1); - npc.setHealth(999999); - jobNPC.setNpc(npc); - } - } - - /** - * Spawn tools for the job - */ - private void spawnTools() { - this.jobTools = new ArrayList<>(JobManager.getJobTools().stream() - .filter(x -> x.getJobType().equals(this.getJobType())).collect(Collectors.toList())); - for(JobTool tool : this.jobTools) { - tool.spawn(this); - } - } - - /** - * Setup the job - * @return If the job has been setuo - */ - protected boolean setup() { - try { - new File("yrpf").mkdir(); - if(new File("yrpf/" + this.getJobType() + ".json").exists()) return true; - new File("yrpf/" + this.getJobType() + ".json").createNewFile(); - FileWriter fileWriter = new FileWriter("yrpf/" + this.getJobType() + ".json"); - - // Create job config file first - this.jobConfig = new JobConfig(); - for(HarvestableObject harvestableObject : this.harvestableObjectsTemplate) { - Onset.print("Add " + harvestableObject.getName() + " to job config file"); - JobSpawn jobSpawn = new JobSpawn(); - jobSpawn.setName(harvestableObject.getName()); - this.jobConfig.getResources().add(jobSpawn); - } - fileWriter.write(new Gson().toJson(this.jobConfig)); - fileWriter.close(); - return false; - } catch (Exception e) { - e.printStackTrace(); - Onset.print("Can't create job cache: " + e.toString()); - return false; - } - } - - /** - * Load resources for the job and the config - */ - protected void load() { - try { - new File("yrpf").mkdir(); - this.jobConfig = new Gson().fromJson(new FileReader("yrpf/" + this.getJobType() + ".json"), JobConfig.class); - for(JobSpawn jobSpawn : this.jobConfig.getResources()) { - Onset.print("Loaded " + jobSpawn.getName() + " from the job file " + this.getJobType() + " with " + jobSpawn.getSpawns().size() + " spawn point(s)"); - } - - // Check missing ressources with new update - for(HarvestableObject harvestableObject : this.harvestableObjectsTemplate) { - if(this.jobConfig.getResources().stream() - .filter(x -> x.getName().equals(harvestableObject.getName())).findFirst().orElse(null) == null) { - JobSpawn jobSpawn = new JobSpawn(); - jobSpawn.setName(harvestableObject.getName()); - this.jobConfig.getResources().add(jobSpawn); - this.saveConfig(); - Onset.print("Add missing job ressource: " + harvestableObject.getName()); - } - } - } catch (Exception e) { - Onset.print("Can't load job cache: " + e.toString()); - } - } - - /** - * Save the job config as a json file - */ - public void saveConfig() { - try { - FileWriter fileWriter = new FileWriter("yrpf/" + this.getJobType() + ".json"); - fileWriter.write(new Gson().toJson(this.jobConfig)); - fileWriter.close(); - } catch (Exception e) { - Onset.print("Can't save the job config: " + e.toString()); - } - } - - /** - * Refill all resources for this job - */ - public void refillHarvestResources() { - Onset.print("Refill resources for job=" + this.getJobType()); - for(JobSpawn jobSpawn : this.jobConfig.getResources()) { - HarvestableObject harvestableObject = this.harvestableObjectsTemplate.stream() - .filter(x -> x.getName().equals(jobSpawn.getName())).findFirst().orElse(null); - for(JobSpawnPosition jobSpawnPosition : jobSpawn.getSpawns()) { - if(this.worldHarvestObjects.stream().filter(x -> x.getJobSpawnPosition().getUuid().equals(jobSpawnPosition.getUuid())) - .findFirst().orElse(null) != null) { - continue; - } - WorldObject worldObject = Onset.getServer().createObject(new Vector(jobSpawnPosition.getX(), - jobSpawnPosition.getY(), jobSpawnPosition.getZ() - 100), harvestableObject.getModelId()); - worldObject.setScale(harvestableObject.getScale()); - worldObject.setProperty("harvestable", 1, true); - worldObject.setProperty("harvestableResourceName", harvestableObject.getName(), true); - worldObject.setProperty("harvestableInteractDistance", harvestableObject.distanceToInteract(), true); - if(ModdingManager.isCustomModelId(harvestableObject.getModelId())) - ModdingManager.assignCustomModel(worldObject, harvestableObject.getModelId()); - WorldHarvestObject worldHarvestObject = new WorldHarvestObject(jobSpawn, jobSpawnPosition, - harvestableObject, worldObject, this); - this.worldHarvestObjects.add(worldHarvestObject); - } - } - } - - public ArrayList getWorldHarvestObjects() { - return worldHarvestObjects; - } - - public ArrayList getHarvestableObjectsTemplate() { - return harvestableObjectsTemplate; - } - - public JobConfig getJobConfig() { - return jobConfig; - } - - public ArrayList getJobTools() { - return jobTools; - } -} +package fr.yuki.yrpf.job; + +import com.google.gson.Gson; +import fr.yuki.yrpf.job.harvest.HarvestableObject; +import fr.yuki.yrpf.manager.JobManager; +import fr.yuki.yrpf.manager.ModdingManager; +import fr.yuki.yrpf.model.JobNPC; +import fr.yuki.yrpf.model.JobTool; +import net.onfirenetwork.onsetjava.Onset; +import net.onfirenetwork.onsetjava.data.Vector; +import net.onfirenetwork.onsetjava.entity.NPC; +import net.onfirenetwork.onsetjava.entity.WorldObject; + +import java.io.File; +import java.io.FileReader; +import java.io.FileWriter; +import java.util.ArrayList; +import java.util.stream.Collectors; + +public abstract class Job { + public abstract String getJobType(); + public abstract int getRefillInterval(); + public abstract boolean isWhitelisted(); + + protected ArrayList harvestableObjectsTemplate; + protected JobConfig jobConfig; + protected ArrayList worldHarvestObjects; + protected ArrayList jobTools; + + public Job() { + this.worldHarvestObjects = new ArrayList<>(); + this.spawnNpcs(); + this.spawnTools(); + + if(this.getRefillInterval() > 0) { + Onset.timer(this.getRefillInterval(), () -> { + refillHarvestResources(); + }); + } + } + + /** + * Spawn npcs for this job + */ + private void spawnNpcs() { + for(JobNPC jobNPC : JobManager.getJobNPCS().stream().filter(x -> x.getJobId().equals(this.getJobType())).collect(Collectors.toList())) { + NPC npc = Onset.getServer().createNPC(new Vector(jobNPC.getX(), jobNPC.getY(), jobNPC.getZ()), jobNPC.getH()); + Onset.getServer().createText3D(jobNPC.getName() + " [Utiliser]", 20, jobNPC.getX(), + jobNPC.getY(), jobNPC.getZ() + 150, 0 , 0 ,0); + npc.setProperty("clothing", jobNPC.getNpcClothing(), true); + npc.setRespawnTime(1); + npc.setHealth(999999); + jobNPC.setNpc(npc); + } + } + + /** + * Spawn tools for the job + */ + private void spawnTools() { + this.jobTools = new ArrayList<>(JobManager.getJobTools().stream() + .filter(x -> x.getJobType().equals(this.getJobType())).collect(Collectors.toList())); + for(JobTool tool : this.jobTools) { + tool.spawn(this); + } + } + + /** + * Setup the job + * @return If the job has been setuo + */ + protected boolean setup() { + try { + new File("yrpf").mkdir(); + if(new File("yrpf/" + this.getJobType() + ".json").exists()) return true; + new File("yrpf/" + this.getJobType() + ".json").createNewFile(); + FileWriter fileWriter = new FileWriter("yrpf/" + this.getJobType() + ".json"); + + // Create job config file first + this.jobConfig = new JobConfig(); + for(HarvestableObject harvestableObject : this.harvestableObjectsTemplate) { + Onset.print("Add " + harvestableObject.getName() + " to job config file"); + JobSpawn jobSpawn = new JobSpawn(); + jobSpawn.setName(harvestableObject.getName()); + this.jobConfig.getResources().add(jobSpawn); + } + fileWriter.write(new Gson().toJson(this.jobConfig)); + fileWriter.close(); + return false; + } catch (Exception e) { + e.printStackTrace(); + Onset.print("Can't create job cache: " + e.toString()); + return false; + } + } + + /** + * Load resources for the job and the config + */ + protected void load() { + try { + new File("yrpf").mkdir(); + this.jobConfig = new Gson().fromJson(new FileReader("yrpf/" + this.getJobType() + ".json"), JobConfig.class); + for(JobSpawn jobSpawn : this.jobConfig.getResources()) { + Onset.print("Loaded " + jobSpawn.getName() + " from the job file " + this.getJobType() + " with " + jobSpawn.getSpawns().size() + " spawn point(s)"); + } + + // Check missing ressources with new update + for(HarvestableObject harvestableObject : this.harvestableObjectsTemplate) { + if(this.jobConfig.getResources().stream() + .filter(x -> x.getName().equals(harvestableObject.getName())).findFirst().orElse(null) == null) { + JobSpawn jobSpawn = new JobSpawn(); + jobSpawn.setName(harvestableObject.getName()); + this.jobConfig.getResources().add(jobSpawn); + this.saveConfig(); + Onset.print("Add missing job ressource: " + harvestableObject.getName()); + } + } + } catch (Exception e) { + Onset.print("Can't load job cache: " + e.toString()); + } + } + + /** + * Save the job config as a json file + */ + public void saveConfig() { + try { + FileWriter fileWriter = new FileWriter("yrpf/" + this.getJobType() + ".json"); + fileWriter.write(new Gson().toJson(this.jobConfig)); + fileWriter.close(); + } catch (Exception e) { + Onset.print("Can't save the job config: " + e.toString()); + } + } + + /** + * Refill all resources for this job + */ + public void refillHarvestResources() { + Onset.print("Refill resources for job=" + this.getJobType()); + for(JobSpawn jobSpawn : this.jobConfig.getResources()) { + HarvestableObject harvestableObject = this.harvestableObjectsTemplate.stream() + .filter(x -> x.getName().equals(jobSpawn.getName())).findFirst().orElse(null); + for(JobSpawnPosition jobSpawnPosition : jobSpawn.getSpawns()) { + if(this.worldHarvestObjects.stream().filter(x -> x.getJobSpawnPosition().getUuid().equals(jobSpawnPosition.getUuid())) + .findFirst().orElse(null) != null) { + continue; + } + WorldObject worldObject = Onset.getServer().createObject(new Vector(jobSpawnPosition.getX(), + jobSpawnPosition.getY(), jobSpawnPosition.getZ() - 100), harvestableObject.getModelId()); + worldObject.setScale(harvestableObject.getScale()); + worldObject.setProperty("harvestable", 1, true); + worldObject.setProperty("harvestableResourceName", harvestableObject.getName(), true); + worldObject.setProperty("harvestableInteractDistance", harvestableObject.distanceToInteract(), true); + if(ModdingManager.isCustomModelId(harvestableObject.getModelId())) + ModdingManager.assignCustomModel(worldObject, harvestableObject.getModelId()); + WorldHarvestObject worldHarvestObject = new WorldHarvestObject(jobSpawn, jobSpawnPosition, + harvestableObject, worldObject, this); + this.worldHarvestObjects.add(worldHarvestObject); + } + } + } + + public ArrayList getWorldHarvestObjects() { + return worldHarvestObjects; + } + + public ArrayList getHarvestableObjectsTemplate() { + return harvestableObjectsTemplate; + } + + public JobConfig getJobConfig() { + return jobConfig; + } + + public ArrayList getJobTools() { + return jobTools; + } +} diff --git a/src/main/java/fr/yuki/YukiRPFramework/job/JobConfig.java b/src/main/java/fr/yuki/yrpf/job/JobConfig.java similarity index 72% rename from src/main/java/fr/yuki/YukiRPFramework/job/JobConfig.java rename to src/main/java/fr/yuki/yrpf/job/JobConfig.java index b8911be..a2544fd 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/job/JobConfig.java +++ b/src/main/java/fr/yuki/yrpf/job/JobConfig.java @@ -1,22 +1,19 @@ -package fr.yuki.YukiRPFramework.job; - -import net.onfirenetwork.onsetjava.data.Vector; - -import java.util.ArrayList; -import java.util.HashMap; - -public class JobConfig { - private ArrayList resources; - - public JobConfig() { - this.resources = new ArrayList<>(); - } - - public ArrayList getResources() { - return resources; - } - - public void setResources(ArrayList resources) { - this.resources = resources; - } -} +package fr.yuki.yrpf.job; + +import java.util.ArrayList; + +public class JobConfig { + private ArrayList resources; + + public JobConfig() { + this.resources = new ArrayList<>(); + } + + public ArrayList getResources() { + return resources; + } + + public void setResources(ArrayList resources) { + this.resources = resources; + } +} diff --git a/src/main/java/fr/yuki/YukiRPFramework/job/JobSpawn.java b/src/main/java/fr/yuki/yrpf/job/JobSpawn.java similarity index 87% rename from src/main/java/fr/yuki/YukiRPFramework/job/JobSpawn.java rename to src/main/java/fr/yuki/yrpf/job/JobSpawn.java index 2654c5b..507eb89 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/job/JobSpawn.java +++ b/src/main/java/fr/yuki/yrpf/job/JobSpawn.java @@ -1,34 +1,33 @@ -package fr.yuki.YukiRPFramework.job; - -import java.util.ArrayList; -import java.util.UUID; - -public class JobSpawn { - private String name; - private ArrayList spawns; - - public JobSpawn() { - this.spawns = new ArrayList<>(); - } - - public JobSpawn(String name, ArrayList spawns) { - this.name = name; - this.spawns = spawns; - } - - public String getName() { - return name; - } - - public void setName(String name) { - this.name = name; - } - - public ArrayList getSpawns() { - return spawns; - } - - public void setSpawns(ArrayList spawns) { - this.spawns = spawns; - } -} +package fr.yuki.yrpf.job; + +import java.util.ArrayList; + +public class JobSpawn { + private String name; + private ArrayList spawns; + + public JobSpawn() { + this.spawns = new ArrayList<>(); + } + + public JobSpawn(String name, ArrayList spawns) { + this.name = name; + this.spawns = spawns; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public ArrayList getSpawns() { + return spawns; + } + + public void setSpawns(ArrayList spawns) { + this.spawns = spawns; + } +} diff --git a/src/main/java/fr/yuki/YukiRPFramework/job/JobSpawnPosition.java b/src/main/java/fr/yuki/yrpf/job/JobSpawnPosition.java similarity index 88% rename from src/main/java/fr/yuki/YukiRPFramework/job/JobSpawnPosition.java rename to src/main/java/fr/yuki/yrpf/job/JobSpawnPosition.java index 4657848..49924b3 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/job/JobSpawnPosition.java +++ b/src/main/java/fr/yuki/yrpf/job/JobSpawnPosition.java @@ -1,42 +1,42 @@ -package fr.yuki.YukiRPFramework.job; - -import java.util.UUID; - -public class JobSpawnPosition { - private final String uuid; - private double x; - private double y; - private double z; - - public JobSpawnPosition() { - this.uuid = UUID.randomUUID().toString(); - } - - public double getX() { - return x; - } - - public void setX(double x) { - this.x = x; - } - - public double getY() { - return y; - } - - public void setY(double y) { - this.y = y; - } - - public double getZ() { - return z; - } - - public void setZ(double z) { - this.z = z; - } - - public String getUuid() { - return uuid; - } -} +package fr.yuki.yrpf.job; + +import java.util.UUID; + +public class JobSpawnPosition { + private final String uuid; + private double x; + private double y; + private double z; + + public JobSpawnPosition() { + this.uuid = UUID.randomUUID().toString(); + } + + public double getX() { + return x; + } + + public void setX(double x) { + this.x = x; + } + + public double getY() { + return y; + } + + public void setY(double y) { + this.y = y; + } + + public double getZ() { + return z; + } + + public void setZ(double z) { + this.z = z; + } + + public String getUuid() { + return uuid; + } +} diff --git a/src/main/java/fr/yuki/YukiRPFramework/job/LumberjackJob.java b/src/main/java/fr/yuki/yrpf/job/LumberjackJob.java similarity index 78% rename from src/main/java/fr/yuki/YukiRPFramework/job/LumberjackJob.java rename to src/main/java/fr/yuki/yrpf/job/LumberjackJob.java index ebf847c..e992c3b 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/job/LumberjackJob.java +++ b/src/main/java/fr/yuki/yrpf/job/LumberjackJob.java @@ -1,44 +1,44 @@ -package fr.yuki.YukiRPFramework.job; - -import fr.yuki.YukiRPFramework.enums.JobEnum; -import fr.yuki.YukiRPFramework.job.harvest.LumberjackTreeCommon; -import java.util.ArrayList; - -/** - * Lumberjack job - */ -public class LumberjackJob extends Job { - - public LumberjackJob() { - super(); - - this.harvestableObjectsTemplate = new ArrayList<>(); - this.harvestableObjectsTemplate.add(new LumberjackTreeCommon()); - - if(this.setup()) { - this.load(); - } - - this.spawnNpc(); - this.refillHarvestResources(); - } - - private static void spawnNpc() { - - } - - @Override - public String getJobType() { - return JobEnum.LUMBERJACK.type; - } - - @Override - public int getRefillInterval() { - return 60000 * 5; - } - - @Override - public boolean isWhitelisted() { - return false; - } -} +package fr.yuki.yrpf.job; + +import fr.yuki.yrpf.enums.JobEnum; +import fr.yuki.yrpf.job.harvest.LumberjackTreeCommon; +import java.util.ArrayList; + +/** + * Lumberjack job + */ +public class LumberjackJob extends Job { + + public LumberjackJob() { + super(); + + this.harvestableObjectsTemplate = new ArrayList<>(); + this.harvestableObjectsTemplate.add(new LumberjackTreeCommon()); + + if(this.setup()) { + this.load(); + } + + this.spawnNpc(); + this.refillHarvestResources(); + } + + private static void spawnNpc() { + + } + + @Override + public String getJobType() { + return JobEnum.LUMBERJACK.type; + } + + @Override + public int getRefillInterval() { + return 60000 * 5; + } + + @Override + public boolean isWhitelisted() { + return false; + } +} diff --git a/src/main/java/fr/yuki/YukiRPFramework/job/MinerJob.java b/src/main/java/fr/yuki/yrpf/job/MinerJob.java similarity index 69% rename from src/main/java/fr/yuki/YukiRPFramework/job/MinerJob.java rename to src/main/java/fr/yuki/yrpf/job/MinerJob.java index 600897d..f1171ef 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/job/MinerJob.java +++ b/src/main/java/fr/yuki/yrpf/job/MinerJob.java @@ -1,39 +1,38 @@ -package fr.yuki.YukiRPFramework.job; - -import fr.yuki.YukiRPFramework.enums.JobEnum; -import fr.yuki.YukiRPFramework.job.harvest.CooperOre; -import fr.yuki.YukiRPFramework.job.harvest.DeliveryPackage; -import fr.yuki.YukiRPFramework.job.harvest.IronOre; - -import java.util.ArrayList; - -public class MinerJob extends Job { - public MinerJob() { - super(); - this.harvestableObjectsTemplate = new ArrayList<>(); - this.harvestableObjectsTemplate.add(new CooperOre()); - this.harvestableObjectsTemplate.add(new IronOre()); - - if(this.setup()) { - this.load(); - } - - this.refillHarvestResources(); - } - - - @Override - public String getJobType() { - return JobEnum.MINER.type; - } - - @Override - public int getRefillInterval() { - return 60000 * 10; - } - - @Override - public boolean isWhitelisted() { - return false; - } -} +package fr.yuki.yrpf.job; + +import fr.yuki.yrpf.enums.JobEnum; +import fr.yuki.yrpf.job.harvest.CooperOre; +import fr.yuki.yrpf.job.harvest.IronOre; + +import java.util.ArrayList; + +public class MinerJob extends Job { + public MinerJob() { + super(); + this.harvestableObjectsTemplate = new ArrayList<>(); + this.harvestableObjectsTemplate.add(new CooperOre()); + this.harvestableObjectsTemplate.add(new IronOre()); + + if(this.setup()) { + this.load(); + } + + this.refillHarvestResources(); + } + + + @Override + public String getJobType() { + return JobEnum.MINER.type; + } + + @Override + public int getRefillInterval() { + return 60000 * 10; + } + + @Override + public boolean isWhitelisted() { + return false; + } +} diff --git a/src/main/java/fr/yuki/YukiRPFramework/job/ObjectPlacementInstance.java b/src/main/java/fr/yuki/yrpf/job/ObjectPlacementInstance.java similarity index 91% rename from src/main/java/fr/yuki/YukiRPFramework/job/ObjectPlacementInstance.java rename to src/main/java/fr/yuki/yrpf/job/ObjectPlacementInstance.java index 3c303a6..4d09a67 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/job/ObjectPlacementInstance.java +++ b/src/main/java/fr/yuki/yrpf/job/ObjectPlacementInstance.java @@ -1,50 +1,50 @@ -package fr.yuki.YukiRPFramework.job; - -import fr.yuki.YukiRPFramework.manager.ModdingManager; -import net.onfirenetwork.onsetjava.Onset; -import net.onfirenetwork.onsetjava.data.Vector; -import net.onfirenetwork.onsetjava.entity.Player; -import net.onfirenetwork.onsetjava.entity.WorldObject; - -import java.util.UUID; - -public abstract class ObjectPlacementInstance { - private String uuid; - private WorldObject worldObject; - private int modelId; - private Vector spawnPoint; - - public ObjectPlacementInstance(int modelId, Vector spawnPoint) { - this.uuid = UUID.randomUUID().toString(); - this.modelId = modelId; - this.spawnPoint = spawnPoint; - } - - public void spawn() { - this.worldObject = Onset.getServer().createObject(this.spawnPoint, this.modelId); - if(ModdingManager.isCustomModelId(this.modelId)){ - ModdingManager.assignCustomModel(this.worldObject, this.modelId); - } - } - - public void setEditableBy(Player player) { - this.worldObject.setProperty("editable", 1, true); - this.worldObject.setProperty("editable_by", player.getId(), true); - this.worldObject.setProperty("no_collision", 1, true); - this.worldObject.setProperty("uuid", this.uuid, true); - } - - public abstract void onPlacementDone(Player player, Vector position, Vector rotation); - - public void destroy() { - this.worldObject.destroy(); - } - - public String getUuid() { - return uuid; - } - - public int getModelId() { - return modelId; - } -} +package fr.yuki.yrpf.job; + +import fr.yuki.yrpf.manager.ModdingManager; +import net.onfirenetwork.onsetjava.Onset; +import net.onfirenetwork.onsetjava.data.Vector; +import net.onfirenetwork.onsetjava.entity.Player; +import net.onfirenetwork.onsetjava.entity.WorldObject; + +import java.util.UUID; + +public abstract class ObjectPlacementInstance { + private String uuid; + private WorldObject worldObject; + private int modelId; + private Vector spawnPoint; + + public ObjectPlacementInstance(int modelId, Vector spawnPoint) { + this.uuid = UUID.randomUUID().toString(); + this.modelId = modelId; + this.spawnPoint = spawnPoint; + } + + public void spawn() { + this.worldObject = Onset.getServer().createObject(this.spawnPoint, this.modelId); + if(ModdingManager.isCustomModelId(this.modelId)){ + ModdingManager.assignCustomModel(this.worldObject, this.modelId); + } + } + + public void setEditableBy(Player player) { + this.worldObject.setProperty("editable", 1, true); + this.worldObject.setProperty("editable_by", player.getId(), true); + this.worldObject.setProperty("no_collision", 1, true); + this.worldObject.setProperty("uuid", this.uuid, true); + } + + public abstract void onPlacementDone(Player player, Vector position, Vector rotation); + + public void destroy() { + this.worldObject.destroy(); + } + + public String getUuid() { + return uuid; + } + + public int getModelId() { + return modelId; + } +} diff --git a/src/main/java/fr/yuki/YukiRPFramework/job/PoliceJob.java b/src/main/java/fr/yuki/yrpf/job/PoliceJob.java similarity index 81% rename from src/main/java/fr/yuki/YukiRPFramework/job/PoliceJob.java rename to src/main/java/fr/yuki/yrpf/job/PoliceJob.java index 1bd679e..25d0459 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/job/PoliceJob.java +++ b/src/main/java/fr/yuki/yrpf/job/PoliceJob.java @@ -1,31 +1,31 @@ -package fr.yuki.YukiRPFramework.job; - -import fr.yuki.YukiRPFramework.enums.JobEnum; - -import java.util.ArrayList; - -public class PoliceJob extends Job { - public PoliceJob() { - super(); - this.harvestableObjectsTemplate = new ArrayList<>(); - - if(this.setup()) { - this.load(); - } - } - - @Override - public String getJobType() { - return JobEnum.POLICE.type; - } - - @Override - public int getRefillInterval() { - return 0; - } - - @Override - public boolean isWhitelisted() { - return true; - } -} +package fr.yuki.yrpf.job; + +import fr.yuki.yrpf.enums.JobEnum; + +import java.util.ArrayList; + +public class PoliceJob extends Job { + public PoliceJob() { + super(); + this.harvestableObjectsTemplate = new ArrayList<>(); + + if(this.setup()) { + this.load(); + } + } + + @Override + public String getJobType() { + return JobEnum.POLICE.type; + } + + @Override + public int getRefillInterval() { + return 0; + } + + @Override + public boolean isWhitelisted() { + return true; + } +} diff --git a/src/main/java/fr/yuki/YukiRPFramework/job/WearableWorldObject.java b/src/main/java/fr/yuki/yrpf/job/WearableWorldObject.java similarity index 91% rename from src/main/java/fr/yuki/YukiRPFramework/job/WearableWorldObject.java rename to src/main/java/fr/yuki/yrpf/job/WearableWorldObject.java index 21e88cf..4696ad8 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/job/WearableWorldObject.java +++ b/src/main/java/fr/yuki/yrpf/job/WearableWorldObject.java @@ -1,234 +1,233 @@ -package fr.yuki.YukiRPFramework.job; - -import fr.yuki.YukiRPFramework.character.CharacterJobLevel; -import fr.yuki.YukiRPFramework.character.CharacterToolAnimation; -import fr.yuki.YukiRPFramework.enums.ItemTemplateEnum; -import fr.yuki.YukiRPFramework.enums.JobEnum; -import fr.yuki.YukiRPFramework.enums.ToastTypeEnum; -import fr.yuki.YukiRPFramework.i18n.I18n; -import fr.yuki.YukiRPFramework.job.customGoal.DeliveryPointGoal; -import fr.yuki.YukiRPFramework.manager.*; -import fr.yuki.YukiRPFramework.model.Account; -import fr.yuki.YukiRPFramework.ui.UIState; -import fr.yuki.YukiRPFramework.vehicle.storeLayout.StoreLayoutTransform; -import net.onfirenetwork.onsetjava.Onset; -import net.onfirenetwork.onsetjava.data.Vector; -import net.onfirenetwork.onsetjava.entity.Player; -import net.onfirenetwork.onsetjava.entity.Vehicle; -import net.onfirenetwork.onsetjava.entity.WorldObject; -import net.onfirenetwork.onsetjava.enums.Animation; - -import java.util.ArrayList; -import java.util.UUID; - - -public class WearableWorldObject { - private String uuid; - private int modelId; - private boolean isPhysicEnable; - private Animation wearAnimation; - private CharacterToolAnimation toolAnimation; - private Vector position; - private WorldObject worldObject; - private String vehicleUUID; - private int vehicleStorageLayoutIndex; - private DeliveryPointGoal deliveryPointGoal; - private Vector originPosition; - private long lastInteractionAt; - - public WearableWorldObject(int modelId, boolean isPhysicEnable, Animation wearAnimation, CharacterToolAnimation toolAnimation, Vector position) { - this.uuid = UUID.randomUUID().toString(); - this.modelId = modelId; - this.isPhysicEnable = isPhysicEnable; - this.wearAnimation = wearAnimation; - this.toolAnimation = toolAnimation; - this.position = position; - this.vehicleUUID = ""; - this.originPosition = position; - this.lastInteractionAt = System.currentTimeMillis(); - this.createWorldObject(); - } - - private void createWorldObject() { - this.worldObject = Onset.getServer().createObject(this.position, this.modelId); - this.worldObject.setScale(this.toolAnimation.getScale()); - if(this.isPhysicEnable) - this.worldObject.setProperty("enablePhysic", 1, true); - if(ModdingManager.isCustomModelId(this.modelId)) - ModdingManager.assignCustomModel(this.worldObject, this.modelId); - this.worldObject.setProperty("uuid", this.uuid, true); - this.worldObject.setProperty("canBeWear", 1, true); - } - - public boolean isWeared() { - return this.worldObject == null; - } - - /** - * Wear the object on the player and play the animation - * @param player The player - */ - public void requestWear(Player player) { - CharacterManager.getCharacterStateByPlayer(player).setWearableWorldObject(player, this); - this.toolAnimation.attach(player); - player.setAnimation(this.wearAnimation); - this.worldObject.destroy(); - Account account = WorldManager.getPlayerAccount(player); - - this.lastInteractionAt = System.currentTimeMillis(); - - // Set the delivery location - if(deliveryPointGoal != null) { - UIStateManager.sendNotification(player, ToastTypeEnum.SUCCESS, I18n.t(account.getLang(), "toast.delivery.need_to_be_delivered")); - player.callRemoteEvent("Map:AddWaypoint", I18n.t(account.getLang(), "toast.delivery.delivery_point"), deliveryPointGoal.getWearableWorldObject().getUuid(), - deliveryPointGoal.getPosition().getX(), deliveryPointGoal.getPosition().getY(), - deliveryPointGoal.getPosition().getZ()); - } - } - - /** - * Throw the object on the ground and recreate the world object properly - * @param player The player - */ - public void requestUnwear(Player player, boolean delete) { - Account account = WorldManager.getPlayerAccount(player); - try { - // Put this resource in the chest - if(!delete) { - Vehicle nearbyVehicle = VehicleManager.getNearestVehicle(player.getLocation()); - if(nearbyVehicle != null) { - if(nearbyVehicle.getLocation().distance(player.getLocation()) < VehicleManager.getInteractionDistance(nearbyVehicle)) { - /**if(!VehicleManager.canStoreWorldWearableObject(nearbyVehicle)) { - UIStateManager.sendNotification(player, ToastTypeEnum.ERROR, "Impossible car ce véhicule ne le permet pas"); - return; - }*/ - if(nearbyVehicle.getPropertyInt("locked") == 1) { - UIStateManager.sendNotification(player, ToastTypeEnum.ERROR, I18n.t(account.getLang(), "action.vehicle.locked")); - return; - } - - if(!VehicleManager.storeWorldWearableObject(nearbyVehicle, this)) { - UIStateManager.sendNotification(player, ToastTypeEnum.ERROR, I18n.t(account.getLang(), "toast.vehicle.no_space_left")); - return; - } - - // Unattach the item - this.position = player.getLocation(); - this.toolAnimation.unAttach(); - player.setAnimation(Animation.STOP); - CharacterManager.getCharacterStateByPlayer(player).setWearableWorldObject(player, null); - - if(deliveryPointGoal != null) - player.callRemoteEvent("Map:RemoveWaypoint", deliveryPointGoal.getWearableWorldObject().getUuid()); - - return; - } - } - } - - // Delivery reward - if(deliveryPointGoal != null) { - if(deliveryPointGoal.isNear(player)) { - ArrayList characterJobLevels = account.decodeCharacterJob(); - CharacterJobLevel characterJobLevel = characterJobLevels.stream().filter(x -> x.getJobId().equals(JobEnum.DELIVERY.type)).findFirst().orElse(null); - - int rewardPerDistance = (int)Math.floor(((originPosition.distance(player.getLocation()) / 1000) / 2.5)); - InventoryManager.addItemToPlayer(player, ItemTemplateEnum.CASH.id, rewardPerDistance, false); - SoundManager.playSound3D("sounds/cash_register.mp3", player.getLocation(), 200, 1); - delete = true; - JobManager.addExp(player, JobEnum.DELIVERY.type, 15); - UIStateManager.sendNotification(player, ToastTypeEnum.SUCCESS, I18n.t(account.getLang(), "toast.delivery.shipped", - String.valueOf(rewardPerDistance), String.valueOf(Math.floor(originPosition.distance(player.getLocation()) / 100)))); - } - player.callRemoteEvent("Map:RemoveWaypoint", deliveryPointGoal.getWearableWorldObject().getUuid()); - } - - // Throw on ground - this.position = player.getLocation(); - this.toolAnimation.unAttach(); - if(!delete) this.createWorldObject(); - player.setAnimation(Animation.STOP); - CharacterManager.getCharacterStateByPlayer(player).setWearableWorldObject(player, null); - this.lastInteractionAt = System.currentTimeMillis(); - - if(delete) JobManager.getWearableWorldObjects().remove(this); - } - catch (Exception ex) { - ex.printStackTrace(); - CharacterManager.getCharacterStateByPlayer(player).setWearableWorldObject(player, null); - } - } - - public void deleteObject() { - if(this.worldObject != null) this.worldObject.destroy(); - JobManager.getWearableWorldObjects().remove(this); - } - - public boolean isExpired() { - if(lastInteractionAt + (60000*5) < System.currentTimeMillis()) { - return true; - } - return false; - } - - /** - * Store this in the chest of a vehicle at a specific location - * @param vehicle The vehicle - * @param storeLayoutTransform The position to store - */ - public void storeInVehicle(Vehicle vehicle, StoreLayoutTransform storeLayoutTransform) { - this.worldObject = Onset.getServer().createObject(this.position, this.modelId); - this.worldObject.attach(vehicle, storeLayoutTransform.getPosition(), storeLayoutTransform.getRotation(), ""); - this.worldObject.setScale(storeLayoutTransform.getScale()); - this.setVehicleUUID(vehicle.getPropertyString("uuid")); - this.setVehicleStorageLayoutIndex(storeLayoutTransform.getIndex()); - if(ModdingManager.isCustomModelId(this.modelId)) - ModdingManager.assignCustomModel(this.worldObject, this.modelId); - } - - public void removeFromVehicle() { - this.setVehicleUUID(""); - this.setVehicleStorageLayoutIndex(-1); - this.worldObject.destroy(); - } - - public String getUuid() { - return uuid; - } - - public Vector getPosition() { - return position; - } - - public int getModelId() { - return modelId; - } - - public String getVehicleUUID() { - return vehicleUUID; - } - - public void setVehicleUUID(String vehicleUUID) { - this.vehicleUUID = vehicleUUID; - } - - public WorldObject getWorldObject() { - return worldObject; - } - - public int getVehicleStorageLayoutIndex() { - return vehicleStorageLayoutIndex; - } - - public void setVehicleStorageLayoutIndex(int vehicleStorageLayoutIndex) { - this.vehicleStorageLayoutIndex = vehicleStorageLayoutIndex; - } - - public DeliveryPointGoal getDeliveryPointGoal() { - return deliveryPointGoal; - } - - public void setDeliveryPointGoal(DeliveryPointGoal deliveryPointGoal) { - this.deliveryPointGoal = deliveryPointGoal; - } -} +package fr.yuki.yrpf.job; + +import fr.yuki.yrpf.character.CharacterJobLevel; +import fr.yuki.yrpf.character.CharacterToolAnimation; +import fr.yuki.yrpf.enums.ItemTemplateEnum; +import fr.yuki.yrpf.enums.JobEnum; +import fr.yuki.yrpf.enums.ToastTypeEnum; +import fr.yuki.yrpf.i18n.I18n; +import fr.yuki.yrpf.job.customGoal.DeliveryPointGoal; +import fr.yuki.yrpf.manager.*; +import fr.yuki.yrpf.model.Account; +import fr.yuki.yrpf.vehicle.storeLayout.StoreLayoutTransform; +import net.onfirenetwork.onsetjava.Onset; +import net.onfirenetwork.onsetjava.data.Vector; +import net.onfirenetwork.onsetjava.entity.Player; +import net.onfirenetwork.onsetjava.entity.Vehicle; +import net.onfirenetwork.onsetjava.entity.WorldObject; +import net.onfirenetwork.onsetjava.enums.Animation; + +import java.util.ArrayList; +import java.util.UUID; + + +public class WearableWorldObject { + private String uuid; + private int modelId; + private boolean isPhysicEnable; + private Animation wearAnimation; + private CharacterToolAnimation toolAnimation; + private Vector position; + private WorldObject worldObject; + private String vehicleUUID; + private int vehicleStorageLayoutIndex; + private DeliveryPointGoal deliveryPointGoal; + private Vector originPosition; + private long lastInteractionAt; + + public WearableWorldObject(int modelId, boolean isPhysicEnable, Animation wearAnimation, CharacterToolAnimation toolAnimation, Vector position) { + this.uuid = UUID.randomUUID().toString(); + this.modelId = modelId; + this.isPhysicEnable = isPhysicEnable; + this.wearAnimation = wearAnimation; + this.toolAnimation = toolAnimation; + this.position = position; + this.vehicleUUID = ""; + this.originPosition = position; + this.lastInteractionAt = System.currentTimeMillis(); + this.createWorldObject(); + } + + private void createWorldObject() { + this.worldObject = Onset.getServer().createObject(this.position, this.modelId); + this.worldObject.setScale(this.toolAnimation.getScale()); + if(this.isPhysicEnable) + this.worldObject.setProperty("enablePhysic", 1, true); + if(ModdingManager.isCustomModelId(this.modelId)) + ModdingManager.assignCustomModel(this.worldObject, this.modelId); + this.worldObject.setProperty("uuid", this.uuid, true); + this.worldObject.setProperty("canBeWear", 1, true); + } + + public boolean isWeared() { + return this.worldObject == null; + } + + /** + * Wear the object on the player and play the animation + * @param player The player + */ + public void requestWear(Player player) { + CharacterManager.getCharacterStateByPlayer(player).setWearableWorldObject(player, this); + this.toolAnimation.attach(player); + player.setAnimation(this.wearAnimation); + this.worldObject.destroy(); + Account account = WorldManager.getPlayerAccount(player); + + this.lastInteractionAt = System.currentTimeMillis(); + + // Set the delivery location + if(deliveryPointGoal != null) { + UIStateManager.sendNotification(player, ToastTypeEnum.SUCCESS, I18n.t(account.getLang(), "toast.delivery.need_to_be_delivered")); + player.callRemoteEvent("Map:AddWaypoint", I18n.t(account.getLang(), "toast.delivery.delivery_point"), deliveryPointGoal.getWearableWorldObject().getUuid(), + deliveryPointGoal.getPosition().getX(), deliveryPointGoal.getPosition().getY(), + deliveryPointGoal.getPosition().getZ()); + } + } + + /** + * Throw the object on the ground and recreate the world object properly + * @param player The player + */ + public void requestUnwear(Player player, boolean delete) { + Account account = WorldManager.getPlayerAccount(player); + try { + // Put this resource in the chest + if(!delete) { + Vehicle nearbyVehicle = VehicleManager.getNearestVehicle(player.getLocation()); + if(nearbyVehicle != null) { + if(nearbyVehicle.getLocation().distance(player.getLocation()) < VehicleManager.getInteractionDistance(nearbyVehicle)) { + /**if(!VehicleManager.canStoreWorldWearableObject(nearbyVehicle)) { + UIStateManager.sendNotification(player, ToastTypeEnum.ERROR, "Impossible car ce véhicule ne le permet pas"); + return; + }*/ + if(nearbyVehicle.getPropertyInt("locked") == 1) { + UIStateManager.sendNotification(player, ToastTypeEnum.ERROR, I18n.t(account.getLang(), "action.vehicle.locked")); + return; + } + + if(!VehicleManager.storeWorldWearableObject(nearbyVehicle, this)) { + UIStateManager.sendNotification(player, ToastTypeEnum.ERROR, I18n.t(account.getLang(), "toast.vehicle.no_space_left")); + return; + } + + // Unattach the item + this.position = player.getLocation(); + this.toolAnimation.unAttach(); + player.setAnimation(Animation.STOP); + CharacterManager.getCharacterStateByPlayer(player).setWearableWorldObject(player, null); + + if(deliveryPointGoal != null) + player.callRemoteEvent("Map:RemoveWaypoint", deliveryPointGoal.getWearableWorldObject().getUuid()); + + return; + } + } + } + + // Delivery reward + if(deliveryPointGoal != null) { + if(deliveryPointGoal.isNear(player)) { + ArrayList characterJobLevels = account.decodeCharacterJob(); + CharacterJobLevel characterJobLevel = characterJobLevels.stream().filter(x -> x.getJobId().equals(JobEnum.DELIVERY.type)).findFirst().orElse(null); + + int rewardPerDistance = (int)Math.floor(((originPosition.distance(player.getLocation()) / 1000) / 2.5)); + InventoryManager.addItemToPlayer(player, ItemTemplateEnum.CASH.id, rewardPerDistance, false); + SoundManager.playSound3D("sounds/cash_register.mp3", player.getLocation(), 200, 1); + delete = true; + JobManager.addExp(player, JobEnum.DELIVERY.type, 15); + UIStateManager.sendNotification(player, ToastTypeEnum.SUCCESS, I18n.t(account.getLang(), "toast.delivery.shipped", + String.valueOf(rewardPerDistance), String.valueOf(Math.floor(originPosition.distance(player.getLocation()) / 100)))); + } + player.callRemoteEvent("Map:RemoveWaypoint", deliveryPointGoal.getWearableWorldObject().getUuid()); + } + + // Throw on ground + this.position = player.getLocation(); + this.toolAnimation.unAttach(); + if(!delete) this.createWorldObject(); + player.setAnimation(Animation.STOP); + CharacterManager.getCharacterStateByPlayer(player).setWearableWorldObject(player, null); + this.lastInteractionAt = System.currentTimeMillis(); + + if(delete) JobManager.getWearableWorldObjects().remove(this); + } + catch (Exception ex) { + ex.printStackTrace(); + CharacterManager.getCharacterStateByPlayer(player).setWearableWorldObject(player, null); + } + } + + public void deleteObject() { + if(this.worldObject != null) this.worldObject.destroy(); + JobManager.getWearableWorldObjects().remove(this); + } + + public boolean isExpired() { + if(lastInteractionAt + (60000*5) < System.currentTimeMillis()) { + return true; + } + return false; + } + + /** + * Store this in the chest of a vehicle at a specific location + * @param vehicle The vehicle + * @param storeLayoutTransform The position to store + */ + public void storeInVehicle(Vehicle vehicle, StoreLayoutTransform storeLayoutTransform) { + this.worldObject = Onset.getServer().createObject(this.position, this.modelId); + this.worldObject.attach(vehicle, storeLayoutTransform.getPosition(), storeLayoutTransform.getRotation(), ""); + this.worldObject.setScale(storeLayoutTransform.getScale()); + this.setVehicleUUID(vehicle.getPropertyString("uuid")); + this.setVehicleStorageLayoutIndex(storeLayoutTransform.getIndex()); + if(ModdingManager.isCustomModelId(this.modelId)) + ModdingManager.assignCustomModel(this.worldObject, this.modelId); + } + + public void removeFromVehicle() { + this.setVehicleUUID(""); + this.setVehicleStorageLayoutIndex(-1); + this.worldObject.destroy(); + } + + public String getUuid() { + return uuid; + } + + public Vector getPosition() { + return position; + } + + public int getModelId() { + return modelId; + } + + public String getVehicleUUID() { + return vehicleUUID; + } + + public void setVehicleUUID(String vehicleUUID) { + this.vehicleUUID = vehicleUUID; + } + + public WorldObject getWorldObject() { + return worldObject; + } + + public int getVehicleStorageLayoutIndex() { + return vehicleStorageLayoutIndex; + } + + public void setVehicleStorageLayoutIndex(int vehicleStorageLayoutIndex) { + this.vehicleStorageLayoutIndex = vehicleStorageLayoutIndex; + } + + public DeliveryPointGoal getDeliveryPointGoal() { + return deliveryPointGoal; + } + + public void setDeliveryPointGoal(DeliveryPointGoal deliveryPointGoal) { + this.deliveryPointGoal = deliveryPointGoal; + } +} diff --git a/src/main/java/fr/yuki/YukiRPFramework/job/WeedJob.java b/src/main/java/fr/yuki/yrpf/job/WeedJob.java similarity index 84% rename from src/main/java/fr/yuki/YukiRPFramework/job/WeedJob.java rename to src/main/java/fr/yuki/yrpf/job/WeedJob.java index f541170..4d45a16 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/job/WeedJob.java +++ b/src/main/java/fr/yuki/yrpf/job/WeedJob.java @@ -1,46 +1,46 @@ -package fr.yuki.YukiRPFramework.job; - -import fr.yuki.YukiRPFramework.enums.JobEnum; -import fr.yuki.YukiRPFramework.manager.ModdingManager; -import net.onfirenetwork.onsetjava.Onset; -import net.onfirenetwork.onsetjava.data.Vector; -import net.onfirenetwork.onsetjava.entity.WorldObject; - -import java.util.ArrayList; - -public class WeedJob extends Job { - private WorldObject dealerBoat; - - public WeedJob() { - super(); - this.harvestableObjectsTemplate = new ArrayList<>(); - - if(this.setup()) { - this.load(); - } - - // Create dealer boat - createDealerBoat(); - } - - private void createDealerBoat() { - this.dealerBoat = Onset.getServer().createObject(new Vector(35336, 195898, -250), 50006); - this.dealerBoat.setRotation(new Vector(0, 90, 0)); - ModdingManager.assignCustomModel(this.dealerBoat, 50006); - } - - @Override - public String getJobType() { - return JobEnum.WEED.type; - } - - @Override - public int getRefillInterval() { - return 0; - } - - @Override - public boolean isWhitelisted() { - return false; - } -} +package fr.yuki.yrpf.job; + +import fr.yuki.yrpf.enums.JobEnum; +import fr.yuki.yrpf.manager.ModdingManager; +import net.onfirenetwork.onsetjava.Onset; +import net.onfirenetwork.onsetjava.data.Vector; +import net.onfirenetwork.onsetjava.entity.WorldObject; + +import java.util.ArrayList; + +public class WeedJob extends Job { + private WorldObject dealerBoat; + + public WeedJob() { + super(); + this.harvestableObjectsTemplate = new ArrayList<>(); + + if(this.setup()) { + this.load(); + } + + // Create dealer boat + createDealerBoat(); + } + + private void createDealerBoat() { + this.dealerBoat = Onset.getServer().createObject(new Vector(35336, 195898, -250), 50006); + this.dealerBoat.setRotation(new Vector(0, 90, 0)); + ModdingManager.assignCustomModel(this.dealerBoat, 50006); + } + + @Override + public String getJobType() { + return JobEnum.WEED.type; + } + + @Override + public int getRefillInterval() { + return 0; + } + + @Override + public boolean isWhitelisted() { + return false; + } +} diff --git a/src/main/java/fr/yuki/YukiRPFramework/job/WorldHarvestObject.java b/src/main/java/fr/yuki/yrpf/job/WorldHarvestObject.java similarity index 87% rename from src/main/java/fr/yuki/YukiRPFramework/job/WorldHarvestObject.java rename to src/main/java/fr/yuki/yrpf/job/WorldHarvestObject.java index 92e9038..4e446c2 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/job/WorldHarvestObject.java +++ b/src/main/java/fr/yuki/yrpf/job/WorldHarvestObject.java @@ -1,132 +1,130 @@ -package fr.yuki.YukiRPFramework.job; - -import fr.yuki.YukiRPFramework.character.CharacterJobLevel; -import fr.yuki.YukiRPFramework.character.CharacterLoopAnimation; -import fr.yuki.YukiRPFramework.enums.JobEnum; -import fr.yuki.YukiRPFramework.enums.ToastTypeEnum; -import fr.yuki.YukiRPFramework.i18n.I18n; -import fr.yuki.YukiRPFramework.job.harvest.HarvestableObject; -import fr.yuki.YukiRPFramework.manager.*; -import fr.yuki.YukiRPFramework.model.Account; -import net.onfirenetwork.onsetjava.Onset; -import net.onfirenetwork.onsetjava.entity.Player; -import net.onfirenetwork.onsetjava.entity.WorldObject; -import net.onfirenetwork.onsetjava.enums.Animation; - -import java.util.ArrayList; -import java.util.UUID; - -public class WorldHarvestObject { - private String uuid; - private JobSpawn spawn; - private JobSpawnPosition jobSpawnPosition; - private HarvestableObject harvestableObject; - private WorldObject worldObject; - private boolean available; - private Job job; - - public WorldHarvestObject(JobSpawn spawn, JobSpawnPosition jobSpawnPosition, - HarvestableObject harvestableObject, WorldObject worldObject, Job job) { - this.job = job; - this.uuid = UUID.randomUUID().toString(); - this.spawn = spawn; - this.jobSpawnPosition = jobSpawnPosition; - this.harvestableObject = harvestableObject; - this.worldObject = worldObject; - this.setAvailable(true); - } - - /** - * Check if this resource is near the player - * @param player The player - * @return Is near - */ - public boolean isNear(Player player) { - if(this.worldObject.getLocation().distance(player.getLocation()) <= this.harvestableObject.distanceToInteract()) { - return true; - } - return false; - } - - /** - * Harvest the resource - * @param player The player - */ - public void harvest(Player player) { - Account account = WorldManager.getPlayerAccount(player); - if(!this.harvestableObject.checkRequirements(player)) { - UIStateManager.sendNotification(player, ToastTypeEnum.ERROR, - I18n.t(account.getLang(), "toast.job.requirement_unrespected")); - return; - } - if(!this.available) { - UIStateManager.sendNotification(player, ToastTypeEnum.ERROR, - I18n.t(account.getLang(), "toast.job.already_used")); - return; - } - - // Check resources level - ArrayList characterJobLevels = account.decodeCharacterJob(); - CharacterJobLevel characterJobLevel = characterJobLevels.stream().filter(x -> x.getJobId().equals(this.job.getJobType())) - .findFirst().orElse(null); - if(characterJobLevel == null) return; - if(characterJobLevel.getJobLevel().getLevel() < this.harvestableObject.getLevelRequired()) { - UIStateManager.sendNotification(player, ToastTypeEnum.ERROR, I18n.t(account.getLang(), "toast.tool.no_level_required")); - return; - } - - Onset.print("Harvest " + this.harvestableObject.getName() + " with a duration of " + this.harvestableObject.getBaseHarvestTime() + "ms"); - this.setAvailable(false); - CharacterManager.setCharacterFreeze(player, true); - CharacterLoopAnimation characterLoopAnimation = harvestableObject.getCharacterLoopHarvestAnimation(player); - characterLoopAnimation.start(); - Onset.delay(this.harvestableObject.getBaseHarvestTime(), () -> { - try { - characterLoopAnimation.stop(); - CharacterManager.setCharacterFreeze(player, false); - - //UIStateManager.sendNotification(player, ToastTypeEnum.SUCCESS, - // "Vous avez récolté " + this.harvestableObject.getName() + " en " + (this.harvestableObject.getBaseHarvestTime() / 1000) + "s"); - - JobManager.addExp(player, job.getJobType(), this.harvestableObject.getXp()); - this.harvestableObject.onHarvestDone(player, this); - - }catch (Exception ex) { - Onset.print("Error when harvesting the object: " + ex.toString()); - } - this.delete(); - }); - } - - /** - * Delete the resource - */ - public void delete() { - this.worldObject.destroy(); - this.job.getWorldHarvestObjects().remove(this); - } - - public boolean isAvailable() { - return available; - } - - public void setAvailable(boolean available) { - this.available = available; - } - - public String getUuid() { - return uuid; - } - - public HarvestableObject getHarvestableObject() { - return harvestableObject; - } - - public Job getJob() { - return job; - } - - public JobSpawnPosition getJobSpawnPosition() { - return jobSpawnPosition; - } -} +package fr.yuki.yrpf.job; + +import fr.yuki.yrpf.character.CharacterJobLevel; +import fr.yuki.yrpf.character.CharacterLoopAnimation; +import fr.yuki.yrpf.enums.ToastTypeEnum; +import fr.yuki.yrpf.i18n.I18n; +import fr.yuki.yrpf.job.harvest.HarvestableObject; +import fr.yuki.yrpf.manager.*; +import fr.yuki.yrpf.model.Account; +import net.onfirenetwork.onsetjava.Onset; +import net.onfirenetwork.onsetjava.entity.Player; +import net.onfirenetwork.onsetjava.entity.WorldObject; + +import java.util.ArrayList; +import java.util.UUID; + +public class WorldHarvestObject { + private String uuid; + private JobSpawn spawn; + private JobSpawnPosition jobSpawnPosition; + private HarvestableObject harvestableObject; + private WorldObject worldObject; + private boolean available; + private Job job; + + public WorldHarvestObject(JobSpawn spawn, JobSpawnPosition jobSpawnPosition, + HarvestableObject harvestableObject, WorldObject worldObject, Job job) { + this.job = job; + this.uuid = UUID.randomUUID().toString(); + this.spawn = spawn; + this.jobSpawnPosition = jobSpawnPosition; + this.harvestableObject = harvestableObject; + this.worldObject = worldObject; + this.setAvailable(true); + } + + /** + * Check if this resource is near the player + * @param player The player + * @return Is near + */ + public boolean isNear(Player player) { + if(this.worldObject.getLocation().distance(player.getLocation()) <= this.harvestableObject.distanceToInteract()) { + return true; + } + return false; + } + + /** + * Harvest the resource + * @param player The player + */ + public void harvest(Player player) { + Account account = WorldManager.getPlayerAccount(player); + if(!this.harvestableObject.checkRequirements(player)) { + UIStateManager.sendNotification(player, ToastTypeEnum.ERROR, + I18n.t(account.getLang(), "toast.job.requirement_unrespected")); + return; + } + if(!this.available) { + UIStateManager.sendNotification(player, ToastTypeEnum.ERROR, + I18n.t(account.getLang(), "toast.job.already_used")); + return; + } + + // Check resources level + ArrayList characterJobLevels = account.decodeCharacterJob(); + CharacterJobLevel characterJobLevel = characterJobLevels.stream().filter(x -> x.getJobId().equals(this.job.getJobType())) + .findFirst().orElse(null); + if(characterJobLevel == null) return; + if(characterJobLevel.getJobLevel().getLevel() < this.harvestableObject.getLevelRequired()) { + UIStateManager.sendNotification(player, ToastTypeEnum.ERROR, I18n.t(account.getLang(), "toast.tool.no_level_required")); + return; + } + + Onset.print("Harvest " + this.harvestableObject.getName() + " with a duration of " + this.harvestableObject.getBaseHarvestTime() + "ms"); + this.setAvailable(false); + CharacterManager.setCharacterFreeze(player, true); + CharacterLoopAnimation characterLoopAnimation = harvestableObject.getCharacterLoopHarvestAnimation(player); + characterLoopAnimation.start(); + Onset.delay(this.harvestableObject.getBaseHarvestTime(), () -> { + try { + characterLoopAnimation.stop(); + CharacterManager.setCharacterFreeze(player, false); + + //UIStateManager.sendNotification(player, ToastTypeEnum.SUCCESS, + // "Vous avez récolté " + this.harvestableObject.getName() + " en " + (this.harvestableObject.getBaseHarvestTime() / 1000) + "s"); + + JobManager.addExp(player, job.getJobType(), this.harvestableObject.getXp()); + this.harvestableObject.onHarvestDone(player, this); + + }catch (Exception ex) { + Onset.print("Error when harvesting the object: " + ex.toString()); + } + this.delete(); + }); + } + + /** + * Delete the resource + */ + public void delete() { + this.worldObject.destroy(); + this.job.getWorldHarvestObjects().remove(this); + } + + public boolean isAvailable() { + return available; + } + + public void setAvailable(boolean available) { + this.available = available; + } + + public String getUuid() { + return uuid; + } + + public HarvestableObject getHarvestableObject() { + return harvestableObject; + } + + public Job getJob() { + return job; + } + + public JobSpawnPosition getJobSpawnPosition() { + return jobSpawnPosition; + } +} diff --git a/src/main/java/fr/yuki/YukiRPFramework/job/customGoal/DeliveryPointGoal.java b/src/main/java/fr/yuki/yrpf/job/customGoal/DeliveryPointGoal.java similarity index 76% rename from src/main/java/fr/yuki/YukiRPFramework/job/customGoal/DeliveryPointGoal.java rename to src/main/java/fr/yuki/yrpf/job/customGoal/DeliveryPointGoal.java index 2054e79..d1a4ca3 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/job/customGoal/DeliveryPointGoal.java +++ b/src/main/java/fr/yuki/yrpf/job/customGoal/DeliveryPointGoal.java @@ -1,29 +1,28 @@ -package fr.yuki.YukiRPFramework.job.customGoal; - -import fr.yuki.YukiRPFramework.job.DeliveryPointConfig; -import fr.yuki.YukiRPFramework.job.JobSpawnPosition; -import fr.yuki.YukiRPFramework.job.WearableWorldObject; -import net.onfirenetwork.onsetjava.data.Vector; -import net.onfirenetwork.onsetjava.entity.Player; - -public class DeliveryPointGoal { - private JobSpawnPosition position; - private WearableWorldObject wearableWorldObject; - - public DeliveryPointGoal(JobSpawnPosition position, WearableWorldObject wearableWorldObject) { - this.position = position; - this.wearableWorldObject = wearableWorldObject; - } - - public JobSpawnPosition getPosition() { - return position; - } - - public WearableWorldObject getWearableWorldObject() { - return wearableWorldObject; - } - - public boolean isNear(Player player) { - return player.getLocation().distance(new Vector(this.position.getX(), this.position.getY(), this.position.getZ())) <= 200; - } -} +package fr.yuki.yrpf.job.customGoal; + +import fr.yuki.yrpf.job.JobSpawnPosition; +import fr.yuki.yrpf.job.WearableWorldObject; +import net.onfirenetwork.onsetjava.data.Vector; +import net.onfirenetwork.onsetjava.entity.Player; + +public class DeliveryPointGoal { + private JobSpawnPosition position; + private WearableWorldObject wearableWorldObject; + + public DeliveryPointGoal(JobSpawnPosition position, WearableWorldObject wearableWorldObject) { + this.position = position; + this.wearableWorldObject = wearableWorldObject; + } + + public JobSpawnPosition getPosition() { + return position; + } + + public WearableWorldObject getWearableWorldObject() { + return wearableWorldObject; + } + + public boolean isNear(Player player) { + return player.getLocation().distance(new Vector(this.position.getX(), this.position.getY(), this.position.getZ())) <= 200; + } +} diff --git a/src/main/java/fr/yuki/YukiRPFramework/job/deliveryPackage/DeliveryPackage.java b/src/main/java/fr/yuki/yrpf/job/deliveryPackage/DeliveryPackage.java similarity index 80% rename from src/main/java/fr/yuki/YukiRPFramework/job/deliveryPackage/DeliveryPackage.java rename to src/main/java/fr/yuki/yrpf/job/deliveryPackage/DeliveryPackage.java index 3d1a04c..4573def 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/job/deliveryPackage/DeliveryPackage.java +++ b/src/main/java/fr/yuki/yrpf/job/deliveryPackage/DeliveryPackage.java @@ -1,53 +1,52 @@ -package fr.yuki.YukiRPFramework.job.deliveryPackage; - -import fr.yuki.YukiRPFramework.enums.ToastTypeEnum; -import fr.yuki.YukiRPFramework.i18n.I18n; -import fr.yuki.YukiRPFramework.manager.ModdingManager; -import fr.yuki.YukiRPFramework.manager.UIStateManager; -import fr.yuki.YukiRPFramework.manager.WorldManager; -import fr.yuki.YukiRPFramework.model.Account; -import fr.yuki.YukiRPFramework.ui.UIState; -import net.onfirenetwork.onsetjava.Onset; -import net.onfirenetwork.onsetjava.data.Vector; -import net.onfirenetwork.onsetjava.entity.Player; -import net.onfirenetwork.onsetjava.entity.WorldObject; - -public abstract class DeliveryPackage { - private Player player; - protected Vector position; - protected Vector rotation; - protected WorldObject worldObject; - - public DeliveryPackage(Player player, Vector position, Vector rotation) { - this.player = player; - this.position = position; - this.rotation = rotation; - } - - public abstract Vector getPackageScale(); - public abstract int getModelId(); - public abstract int getTimeForDelivery(); - public abstract void onDelivered(); - - public void spawn() { - Account account = WorldManager.getPlayerAccount(this.player); - UIStateManager.sendNotification(this.player, ToastTypeEnum.SUCCESS, - I18n.t(account.getLang(), "toast.shipping.time_before_shipped", - String.valueOf(Math.floor(this.getTimeForDelivery() / 1000)) + "s")); - this.worldObject = Onset.getServer().createObject(this.position, this.getModelId()); - if(ModdingManager.isCustomModelId(this.getModelId())) ModdingManager.assignCustomModel(this.worldObject, this.getModelId()); - this.worldObject.setRotation(this.rotation); - this.worldObject.setProperty("no_collision", 1, true); - - Onset.delay(this.getTimeForDelivery(), () -> { - Onset.print("Delivery shipped"); - if(WorldManager.findPlayerByAccountId(account.getId()) != null) { - UIStateManager.sendNotification(WorldManager.findPlayerByAccountId(account.getId()), - ToastTypeEnum.SUCCESS, - I18n.t(account.getLang(), "toast.shipping.shipped")); - } - this.worldObject.destroy(); - this.onDelivered(); - }); - } -} +package fr.yuki.yrpf.job.deliveryPackage; + +import fr.yuki.yrpf.enums.ToastTypeEnum; +import fr.yuki.yrpf.i18n.I18n; +import fr.yuki.yrpf.manager.ModdingManager; +import fr.yuki.yrpf.manager.UIStateManager; +import fr.yuki.yrpf.manager.WorldManager; +import fr.yuki.yrpf.model.Account; +import net.onfirenetwork.onsetjava.Onset; +import net.onfirenetwork.onsetjava.data.Vector; +import net.onfirenetwork.onsetjava.entity.Player; +import net.onfirenetwork.onsetjava.entity.WorldObject; + +public abstract class DeliveryPackage { + private Player player; + protected Vector position; + protected Vector rotation; + protected WorldObject worldObject; + + public DeliveryPackage(Player player, Vector position, Vector rotation) { + this.player = player; + this.position = position; + this.rotation = rotation; + } + + public abstract Vector getPackageScale(); + public abstract int getModelId(); + public abstract int getTimeForDelivery(); + public abstract void onDelivered(); + + public void spawn() { + Account account = WorldManager.getPlayerAccount(this.player); + UIStateManager.sendNotification(this.player, ToastTypeEnum.SUCCESS, + I18n.t(account.getLang(), "toast.shipping.time_before_shipped", + String.valueOf(Math.floor(this.getTimeForDelivery() / 1000)) + "s")); + this.worldObject = Onset.getServer().createObject(this.position, this.getModelId()); + if(ModdingManager.isCustomModelId(this.getModelId())) ModdingManager.assignCustomModel(this.worldObject, this.getModelId()); + this.worldObject.setRotation(this.rotation); + this.worldObject.setProperty("no_collision", 1, true); + + Onset.delay(this.getTimeForDelivery(), () -> { + Onset.print("Delivery shipped"); + if(WorldManager.findPlayerByAccountId(account.getId()) != null) { + UIStateManager.sendNotification(WorldManager.findPlayerByAccountId(account.getId()), + ToastTypeEnum.SUCCESS, + I18n.t(account.getLang(), "toast.shipping.shipped")); + } + this.worldObject.destroy(); + this.onDelivered(); + }); + } +} diff --git a/src/main/java/fr/yuki/YukiRPFramework/job/deliveryPackage/GeneratorDeliveryPackage.java b/src/main/java/fr/yuki/yrpf/job/deliveryPackage/GeneratorDeliveryPackage.java similarity index 85% rename from src/main/java/fr/yuki/YukiRPFramework/job/deliveryPackage/GeneratorDeliveryPackage.java rename to src/main/java/fr/yuki/yrpf/job/deliveryPackage/GeneratorDeliveryPackage.java index 6368bcb..98eef74 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/job/deliveryPackage/GeneratorDeliveryPackage.java +++ b/src/main/java/fr/yuki/yrpf/job/deliveryPackage/GeneratorDeliveryPackage.java @@ -1,53 +1,53 @@ -package fr.yuki.YukiRPFramework.job.deliveryPackage; - -import fr.yuki.YukiRPFramework.enums.JobEnum; -import fr.yuki.YukiRPFramework.manager.JobManager; -import fr.yuki.YukiRPFramework.model.JobTool; -import net.onfirenetwork.onsetjava.data.Vector; -import net.onfirenetwork.onsetjava.entity.Player; - -public class GeneratorDeliveryPackage extends DeliveryPackage { - public GeneratorDeliveryPackage(Player player, Vector position, Vector rotation) { - super(player, position, rotation); - } - - @Override - public Vector getPackageScale() { - return new Vector(1.3, 1.3, 1.3); - } - - @Override - public int getModelId() { - return 505; - } - - @Override - public int getTimeForDelivery() { - return 5000; - //return (1000*60) * 2; - } - - @Override - public void onDelivered() { - // Init a new job tool - JobTool jobTool = new JobTool(); - jobTool.setId(-1); - jobTool.setModelId(581); - jobTool.setName("Generateur"); - jobTool.setJobType("WEED"); - jobTool.setLevelRequired(1); - jobTool.setReward(0); - jobTool.setX(this.position.getX()); - jobTool.setY(this.position.getY()); - jobTool.setZ(this.position.getZ()); - jobTool.setRx(this.rotation.getX()); - jobTool.setRy(this.rotation.getY()); - jobTool.setRz(this.rotation.getZ()); - jobTool.setSx(1); - jobTool.setSy(1); - jobTool.setSz(1); - jobTool.setJobToolType("GENERATOR"); - JobManager.getJobTools().add(jobTool); - jobTool.spawn(JobManager.getJobs().get(JobEnum.WEED)); - } -} +package fr.yuki.yrpf.job.deliveryPackage; + +import fr.yuki.yrpf.enums.JobEnum; +import fr.yuki.yrpf.manager.JobManager; +import fr.yuki.yrpf.model.JobTool; +import net.onfirenetwork.onsetjava.data.Vector; +import net.onfirenetwork.onsetjava.entity.Player; + +public class GeneratorDeliveryPackage extends DeliveryPackage { + public GeneratorDeliveryPackage(Player player, Vector position, Vector rotation) { + super(player, position, rotation); + } + + @Override + public Vector getPackageScale() { + return new Vector(1.3, 1.3, 1.3); + } + + @Override + public int getModelId() { + return 505; + } + + @Override + public int getTimeForDelivery() { + return 5000; + //return (1000*60) * 2; + } + + @Override + public void onDelivered() { + // Init a new job tool + JobTool jobTool = new JobTool(); + jobTool.setId(-1); + jobTool.setModelId(581); + jobTool.setName("Generateur"); + jobTool.setJobType("WEED"); + jobTool.setLevelRequired(1); + jobTool.setReward(0); + jobTool.setX(this.position.getX()); + jobTool.setY(this.position.getY()); + jobTool.setZ(this.position.getZ()); + jobTool.setRx(this.rotation.getX()); + jobTool.setRy(this.rotation.getY()); + jobTool.setRz(this.rotation.getZ()); + jobTool.setSx(1); + jobTool.setSy(1); + jobTool.setSz(1); + jobTool.setJobToolType("GENERATOR"); + JobManager.getJobTools().add(jobTool); + jobTool.spawn(JobManager.getJobs().get(JobEnum.WEED)); + } +} diff --git a/src/main/java/fr/yuki/YukiRPFramework/job/deliveryPackage/GenericDeliveryPackage.java b/src/main/java/fr/yuki/yrpf/job/deliveryPackage/GenericDeliveryPackage.java similarity index 83% rename from src/main/java/fr/yuki/YukiRPFramework/job/deliveryPackage/GenericDeliveryPackage.java rename to src/main/java/fr/yuki/yrpf/job/deliveryPackage/GenericDeliveryPackage.java index cab045c..c6822cd 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/job/deliveryPackage/GenericDeliveryPackage.java +++ b/src/main/java/fr/yuki/yrpf/job/deliveryPackage/GenericDeliveryPackage.java @@ -1,64 +1,64 @@ -package fr.yuki.YukiRPFramework.job.deliveryPackage; - -import fr.yuki.YukiRPFramework.dao.HouseItemDAO; -import fr.yuki.YukiRPFramework.manager.HouseManager; -import fr.yuki.YukiRPFramework.model.House; -import fr.yuki.YukiRPFramework.model.HouseItemObject; -import fr.yuki.YukiRPFramework.model.ItemShopObject; -import net.onfirenetwork.onsetjava.Onset; -import net.onfirenetwork.onsetjava.data.Vector; -import net.onfirenetwork.onsetjava.entity.Player; - -import java.sql.SQLException; - -public class GenericDeliveryPackage extends DeliveryPackage { - private int modelId; - - public GenericDeliveryPackage(Player player, Vector position, Vector rotation, int modelId) { - super(player, position, rotation); - this.modelId = modelId; - } - - @Override - public Vector getPackageScale() { - return new Vector(1, 1, 1); - } - - @Override - public int getModelId() { - return 505; - } - - @Override - public int getTimeForDelivery() { - return 10000; - } - - @Override - public void onDelivered() { - ItemShopObject itemShopObject = HouseManager.getItemShopObjects().stream() - .filter(x -> x.getModelId() == this.modelId).findFirst().orElse(null); - - HouseItemObject houseItemObject = new HouseItemObject(); - houseItemObject.setId(-1); - houseItemObject.setModelId(this.modelId); - houseItemObject.setFunctionId(itemShopObject == null ? -1 : itemShopObject.getFunctionId()); - houseItemObject.setX(this.position.getX()); - houseItemObject.setY(this.position.getY()); - houseItemObject.setZ(this.position.getZ()); - houseItemObject.setRx(this.rotation.getX()); - houseItemObject.setRy(this.rotation.getY()); - houseItemObject.setRz(this.rotation.getZ()); - House house = HouseManager.getHouseAtLocation(this.position); - house.getHouseItemObjects().add(houseItemObject); - houseItemObject.setHouse(house); - - try { - HouseItemDAO.insertHouseItem(houseItemObject); - } catch (SQLException ex) { - Onset.print("Can't insert the house item: " + ex.toString()); - } - - houseItemObject.spawn(); - } -} +package fr.yuki.yrpf.job.deliveryPackage; + +import fr.yuki.yrpf.dao.HouseItemDAO; +import fr.yuki.yrpf.manager.HouseManager; +import fr.yuki.yrpf.model.House; +import fr.yuki.yrpf.model.HouseItemObject; +import fr.yuki.yrpf.model.ItemShopObject; +import net.onfirenetwork.onsetjava.Onset; +import net.onfirenetwork.onsetjava.data.Vector; +import net.onfirenetwork.onsetjava.entity.Player; + +import java.sql.SQLException; + +public class GenericDeliveryPackage extends DeliveryPackage { + private int modelId; + + public GenericDeliveryPackage(Player player, Vector position, Vector rotation, int modelId) { + super(player, position, rotation); + this.modelId = modelId; + } + + @Override + public Vector getPackageScale() { + return new Vector(1, 1, 1); + } + + @Override + public int getModelId() { + return 505; + } + + @Override + public int getTimeForDelivery() { + return 10000; + } + + @Override + public void onDelivered() { + ItemShopObject itemShopObject = HouseManager.getItemShopObjects().stream() + .filter(x -> x.getModelId() == this.modelId).findFirst().orElse(null); + + HouseItemObject houseItemObject = new HouseItemObject(); + houseItemObject.setId(-1); + houseItemObject.setModelId(this.modelId); + houseItemObject.setFunctionId(itemShopObject == null ? -1 : itemShopObject.getFunctionId()); + houseItemObject.setX(this.position.getX()); + houseItemObject.setY(this.position.getY()); + houseItemObject.setZ(this.position.getZ()); + houseItemObject.setRx(this.rotation.getX()); + houseItemObject.setRy(this.rotation.getY()); + houseItemObject.setRz(this.rotation.getZ()); + House house = HouseManager.getHouseAtLocation(this.position); + house.getHouseItemObjects().add(houseItemObject); + houseItemObject.setHouse(house); + + try { + HouseItemDAO.insertHouseItem(houseItemObject); + } catch (SQLException ex) { + Onset.print("Can't insert the house item: " + ex.toString()); + } + + houseItemObject.spawn(); + } +} diff --git a/src/main/java/fr/yuki/YukiRPFramework/job/deliveryPackage/GrowBoxDeliveryPackage.java b/src/main/java/fr/yuki/yrpf/job/deliveryPackage/GrowBoxDeliveryPackage.java similarity index 83% rename from src/main/java/fr/yuki/YukiRPFramework/job/deliveryPackage/GrowBoxDeliveryPackage.java rename to src/main/java/fr/yuki/yrpf/job/deliveryPackage/GrowBoxDeliveryPackage.java index 73b6090..7eb715b 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/job/deliveryPackage/GrowBoxDeliveryPackage.java +++ b/src/main/java/fr/yuki/yrpf/job/deliveryPackage/GrowBoxDeliveryPackage.java @@ -1,74 +1,74 @@ -package fr.yuki.YukiRPFramework.job.deliveryPackage; - -import fr.yuki.YukiRPFramework.dao.GrowboxDAO; -import fr.yuki.YukiRPFramework.enums.JobEnum; -import fr.yuki.YukiRPFramework.job.tools.GrowBox; -import fr.yuki.YukiRPFramework.manager.JobManager; -import fr.yuki.YukiRPFramework.model.GrowboxModel; -import fr.yuki.YukiRPFramework.model.JobTool; -import net.onfirenetwork.onsetjava.data.Vector; -import net.onfirenetwork.onsetjava.entity.Player; - -import java.sql.SQLException; - -public class GrowBoxDeliveryPackage extends DeliveryPackage { - public GrowBoxDeliveryPackage(Player player, Vector position, Vector rotation) { - super(player, position, rotation); - } - - @Override - public Vector getPackageScale() { - return new Vector(2, 2, 2); - } - - @Override - public int getModelId() { - return 505; - } - - @Override - public int getTimeForDelivery() { - return 5000; - //return (1000*60) * 3; - } - - @Override - public void onDelivered() { - // Init a new job tool - JobTool jobTool = new JobTool(); - jobTool.setId(-1); - jobTool.setModelId(50007); - jobTool.setName("GrowBox"); - jobTool.setJobType("WEED"); - jobTool.setLevelRequired(1); - jobTool.setReward(0); - jobTool.setX(this.position.getX()); - jobTool.setY(this.position.getY()); - jobTool.setZ(this.position.getZ()); - jobTool.setRx(this.rotation.getX()); - jobTool.setRy(this.rotation.getY()); - jobTool.setRz(this.rotation.getZ()); - jobTool.setSx(1); - jobTool.setSy(1); - jobTool.setSz(1); - jobTool.setJobToolType("GROWBOX"); - JobManager.getJobTools().add(jobTool); - jobTool.spawn(JobManager.getJobs().get(JobEnum.WEED)); - - // Insert new growbox - GrowBox growBox = (GrowBox)jobTool.getJobToolHandler(); - GrowboxModel growboxModel = new GrowboxModel(); - growboxModel.setX(this.position.getX()); - growboxModel.setY(this.position.getY()); - growboxModel.setZ(this.position.getZ()); - growboxModel.setRx(this.rotation.getX()); - growboxModel.setRy(this.rotation.getY()); - growboxModel.setRz(this.rotation.getZ()); - growBox.setGrowboxModel(growboxModel); - try { - GrowboxDAO.insertGrowbox(growboxModel); - } catch (SQLException throwables) { - throwables.printStackTrace(); - } - } -} +package fr.yuki.yrpf.job.deliveryPackage; + +import fr.yuki.yrpf.dao.GrowboxDAO; +import fr.yuki.yrpf.enums.JobEnum; +import fr.yuki.yrpf.job.tools.GrowBox; +import fr.yuki.yrpf.manager.JobManager; +import fr.yuki.yrpf.model.GrowboxModel; +import fr.yuki.yrpf.model.JobTool; +import net.onfirenetwork.onsetjava.data.Vector; +import net.onfirenetwork.onsetjava.entity.Player; + +import java.sql.SQLException; + +public class GrowBoxDeliveryPackage extends DeliveryPackage { + public GrowBoxDeliveryPackage(Player player, Vector position, Vector rotation) { + super(player, position, rotation); + } + + @Override + public Vector getPackageScale() { + return new Vector(2, 2, 2); + } + + @Override + public int getModelId() { + return 505; + } + + @Override + public int getTimeForDelivery() { + return 5000; + //return (1000*60) * 3; + } + + @Override + public void onDelivered() { + // Init a new job tool + JobTool jobTool = new JobTool(); + jobTool.setId(-1); + jobTool.setModelId(50007); + jobTool.setName("GrowBox"); + jobTool.setJobType("WEED"); + jobTool.setLevelRequired(1); + jobTool.setReward(0); + jobTool.setX(this.position.getX()); + jobTool.setY(this.position.getY()); + jobTool.setZ(this.position.getZ()); + jobTool.setRx(this.rotation.getX()); + jobTool.setRy(this.rotation.getY()); + jobTool.setRz(this.rotation.getZ()); + jobTool.setSx(1); + jobTool.setSy(1); + jobTool.setSz(1); + jobTool.setJobToolType("GROWBOX"); + JobManager.getJobTools().add(jobTool); + jobTool.spawn(JobManager.getJobs().get(JobEnum.WEED)); + + // Insert new growbox + GrowBox growBox = (GrowBox)jobTool.getJobToolHandler(); + GrowboxModel growboxModel = new GrowboxModel(); + growboxModel.setX(this.position.getX()); + growboxModel.setY(this.position.getY()); + growboxModel.setZ(this.position.getZ()); + growboxModel.setRx(this.rotation.getX()); + growboxModel.setRy(this.rotation.getY()); + growboxModel.setRz(this.rotation.getZ()); + growBox.setGrowboxModel(growboxModel); + try { + GrowboxDAO.insertGrowbox(growboxModel); + } catch (SQLException throwables) { + throwables.printStackTrace(); + } + } +} diff --git a/src/main/java/fr/yuki/YukiRPFramework/job/harvest/CooperOre.java b/src/main/java/fr/yuki/yrpf/job/harvest/CooperOre.java similarity index 80% rename from src/main/java/fr/yuki/YukiRPFramework/job/harvest/CooperOre.java rename to src/main/java/fr/yuki/yrpf/job/harvest/CooperOre.java index 337ff2a..8313f7e 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/job/harvest/CooperOre.java +++ b/src/main/java/fr/yuki/yrpf/job/harvest/CooperOre.java @@ -1,94 +1,94 @@ -package fr.yuki.YukiRPFramework.job.harvest; - -import fr.yuki.YukiRPFramework.character.CharacterLoopAnimation; -import fr.yuki.YukiRPFramework.character.CharacterToolAnimation; -import fr.yuki.YukiRPFramework.enums.ItemTemplateEnum; -import fr.yuki.YukiRPFramework.inventory.Inventory; -import fr.yuki.YukiRPFramework.job.WearableWorldObject; -import fr.yuki.YukiRPFramework.job.WorldHarvestObject; -import fr.yuki.YukiRPFramework.manager.InventoryManager; -import fr.yuki.YukiRPFramework.manager.JobManager; -import net.onfirenetwork.onsetjava.data.Vector; -import net.onfirenetwork.onsetjava.entity.Player; -import net.onfirenetwork.onsetjava.enums.Animation; - -import java.util.ArrayList; - -public class CooperOre implements HarvestableObject { - @Override - public String getName() { - return "Mineraie de cuivre"; - } - - @Override - public int getXp() { - return 15; - } - - @Override - public ArrayList getSpawns() { - return new ArrayList<>(); - } - - @Override - public int getBaseHarvestTime() { - return 20000; - } - - @Override - public int getLevelRequired() { - return 0; - } - - @Override - public boolean needItemToHarvest() { - return true; - } - - @Override - public int getModelId() { - return 156; - } - - @Override - public ItemTemplateEnum getItemRequired() { - return ItemTemplateEnum.MINER_PICKAXE_1; - } - - @Override - public int distanceToInteract() { - return 300; - } - - @Override - public boolean checkRequirements(Player player) { - Inventory inventory = InventoryManager.getMainInventory(player); - if(inventory.getItemByType(this.getItemRequired().id) == null) { - return false; - } - return true; - } - - @Override - public Vector getScale() { - return new Vector(1, 1, 1); - } - - @Override - public CharacterLoopAnimation getCharacterLoopHarvestAnimation(Player player) { - CharacterLoopAnimation characterLoopAnimation = new CharacterLoopAnimation(player, Animation.PICKAXE_SWING, 5000, 4, - "sounds/pickaxe_hit.mp3"); - characterLoopAnimation.setTool(new CharacterToolAnimation(50003, new Vector(-8,5,20), - new Vector(-90,90,0), new Vector(2, 2, 2), "hand_r")); - return characterLoopAnimation; - } - - @Override - public void onHarvestDone(Player player, WorldHarvestObject worldHarvestObject) { - WearableWorldObject wearableWorldObject = new WearableWorldObject(156, true, Animation.CARRY_IDLE, - new CharacterToolAnimation(156, new Vector(0,15,0), new Vector(90,-90,0), new Vector(0.55,0.55,0.55), "hand_r"), - new Vector(worldHarvestObject.getJobSpawnPosition().getX(), worldHarvestObject.getJobSpawnPosition().getY(), - worldHarvestObject.getJobSpawnPosition().getZ())); - JobManager.getWearableWorldObjects().add(wearableWorldObject); - } -} +package fr.yuki.yrpf.job.harvest; + +import fr.yuki.yrpf.character.CharacterLoopAnimation; +import fr.yuki.yrpf.character.CharacterToolAnimation; +import fr.yuki.yrpf.enums.ItemTemplateEnum; +import fr.yuki.yrpf.inventory.Inventory; +import fr.yuki.yrpf.job.WearableWorldObject; +import fr.yuki.yrpf.job.WorldHarvestObject; +import fr.yuki.yrpf.manager.InventoryManager; +import fr.yuki.yrpf.manager.JobManager; +import net.onfirenetwork.onsetjava.data.Vector; +import net.onfirenetwork.onsetjava.entity.Player; +import net.onfirenetwork.onsetjava.enums.Animation; + +import java.util.ArrayList; + +public class CooperOre implements HarvestableObject { + @Override + public String getName() { + return "Mineraie de cuivre"; + } + + @Override + public int getXp() { + return 15; + } + + @Override + public ArrayList getSpawns() { + return new ArrayList<>(); + } + + @Override + public int getBaseHarvestTime() { + return 20000; + } + + @Override + public int getLevelRequired() { + return 0; + } + + @Override + public boolean needItemToHarvest() { + return true; + } + + @Override + public int getModelId() { + return 156; + } + + @Override + public ItemTemplateEnum getItemRequired() { + return ItemTemplateEnum.MINER_PICKAXE_1; + } + + @Override + public int distanceToInteract() { + return 300; + } + + @Override + public boolean checkRequirements(Player player) { + Inventory inventory = InventoryManager.getMainInventory(player); + if(inventory.getItemByType(this.getItemRequired().id) == null) { + return false; + } + return true; + } + + @Override + public Vector getScale() { + return new Vector(1, 1, 1); + } + + @Override + public CharacterLoopAnimation getCharacterLoopHarvestAnimation(Player player) { + CharacterLoopAnimation characterLoopAnimation = new CharacterLoopAnimation(player, Animation.PICKAXE_SWING, 5000, 4, + "sounds/pickaxe_hit.mp3"); + characterLoopAnimation.setTool(new CharacterToolAnimation(50003, new Vector(-8,5,20), + new Vector(-90,90,0), new Vector(2, 2, 2), "hand_r")); + return characterLoopAnimation; + } + + @Override + public void onHarvestDone(Player player, WorldHarvestObject worldHarvestObject) { + WearableWorldObject wearableWorldObject = new WearableWorldObject(156, true, Animation.CARRY_IDLE, + new CharacterToolAnimation(156, new Vector(0,15,0), new Vector(90,-90,0), new Vector(0.55,0.55,0.55), "hand_r"), + new Vector(worldHarvestObject.getJobSpawnPosition().getX(), worldHarvestObject.getJobSpawnPosition().getY(), + worldHarvestObject.getJobSpawnPosition().getZ())); + JobManager.getWearableWorldObjects().add(wearableWorldObject); + } +} diff --git a/src/main/java/fr/yuki/YukiRPFramework/job/harvest/CustomHarvestableObject.java b/src/main/java/fr/yuki/yrpf/job/harvest/CustomHarvestableObject.java similarity index 85% rename from src/main/java/fr/yuki/YukiRPFramework/job/harvest/CustomHarvestableObject.java rename to src/main/java/fr/yuki/yrpf/job/harvest/CustomHarvestableObject.java index ba91c78..64c2352 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/job/harvest/CustomHarvestableObject.java +++ b/src/main/java/fr/yuki/yrpf/job/harvest/CustomHarvestableObject.java @@ -1,127 +1,125 @@ -package fr.yuki.YukiRPFramework.job.harvest; - -import fr.yuki.YukiRPFramework.character.CharacterLoopAnimation; -import fr.yuki.YukiRPFramework.enums.ItemTemplateEnum; -import fr.yuki.YukiRPFramework.inventory.Inventory; -import fr.yuki.YukiRPFramework.job.WorldHarvestObject; -import fr.yuki.YukiRPFramework.manager.InventoryManager; -import net.onfirenetwork.onsetjava.Onset; -import net.onfirenetwork.onsetjava.data.Vector; -import net.onfirenetwork.onsetjava.entity.Player; -import net.onfirenetwork.onsetjava.enums.Animation; -import net.onfirenetwork.onsetjava.plugin.event.Event; - -import java.util.ArrayList; - -public class CustomHarvestableObject implements HarvestableObject { - private final String name; - private final int xp; - private final int baseHarvestTime; - private final int levelRequired; - private final int modelId; - private final int distanceToInteract; - private CharacterLoopAnimation characterLoopAnimation = null; - - private int requiredItem = -1; - - public CustomHarvestableObject(String name, int xp, int baseHarvestTime, - int levelRequired, int modelId, int distanceToInteract) { - this.name = name; - this.xp = xp; - this.baseHarvestTime = baseHarvestTime; - this.levelRequired = levelRequired; - this.modelId = modelId; - this.distanceToInteract = distanceToInteract; - } - - @Override - public String getName() { - return this.name; - } - - @Override - public int getXp() { - return this.xp; - } - - @Override - public ArrayList getSpawns() { - return null; - } - - @Override - public int getBaseHarvestTime() { - return this.baseHarvestTime; - } - - @Override - public int getLevelRequired() { - return this.levelRequired; - } - - @Override - public boolean needItemToHarvest() { - return false; - } - - @Override - public int getModelId() { - return this.modelId; - } - - @Override - public Vector getScale() { - return new Vector(1, 1, 1); - } - - @Override - public ItemTemplateEnum getItemRequired() { - return null; - } - - @Override - public int distanceToInteract() { - return this.distanceToInteract; - } - - @Override - public boolean checkRequirements(Player player) { - if(this.requiredItem != -1) { - Inventory inventory = InventoryManager.getMainInventory(player); - if(inventory.getItemByType(String.valueOf(this.requiredItem)) == null) { - return false; - } - } - return true; - } - - @Override - public CharacterLoopAnimation getCharacterLoopHarvestAnimation(Player player) { - CharacterLoopAnimation newLoop = new CharacterLoopAnimation(player, this.characterLoopAnimation.getAnimation(), - this.characterLoopAnimation.getLoopInterval(), this.characterLoopAnimation.getLoopAmount(), - this.characterLoopAnimation.getLoopSound()); - return newLoop; - } - - @Override - public void onHarvestDone(Player player, WorldHarvestObject worldHarvestObject) { - Onset.getServer().callLuaEvent("YRPF:JobAPI:OnHarvestDone", player.getId(), - worldHarvestObject.getJob().getJobType(), worldHarvestObject.getHarvestableObject().getName(), worldHarvestObject.getUuid()); - } - - public int getRequiredItem() { - return requiredItem; - } - - public void setRequiredItem(int requiredItem) { - this.requiredItem = requiredItem; - } - - public CharacterLoopAnimation getCharacterLoopAnimation() { - return characterLoopAnimation; - } - - public void setCharacterLoopAnimation(CharacterLoopAnimation characterLoopAnimation) { - this.characterLoopAnimation = characterLoopAnimation; - } -} +package fr.yuki.yrpf.job.harvest; + +import fr.yuki.yrpf.character.CharacterLoopAnimation; +import fr.yuki.yrpf.enums.ItemTemplateEnum; +import fr.yuki.yrpf.inventory.Inventory; +import fr.yuki.yrpf.job.WorldHarvestObject; +import fr.yuki.yrpf.manager.InventoryManager; +import net.onfirenetwork.onsetjava.Onset; +import net.onfirenetwork.onsetjava.data.Vector; +import net.onfirenetwork.onsetjava.entity.Player; + +import java.util.ArrayList; + +public class CustomHarvestableObject implements HarvestableObject { + private final String name; + private final int xp; + private final int baseHarvestTime; + private final int levelRequired; + private final int modelId; + private final int distanceToInteract; + private CharacterLoopAnimation characterLoopAnimation = null; + + private int requiredItem = -1; + + public CustomHarvestableObject(String name, int xp, int baseHarvestTime, + int levelRequired, int modelId, int distanceToInteract) { + this.name = name; + this.xp = xp; + this.baseHarvestTime = baseHarvestTime; + this.levelRequired = levelRequired; + this.modelId = modelId; + this.distanceToInteract = distanceToInteract; + } + + @Override + public String getName() { + return this.name; + } + + @Override + public int getXp() { + return this.xp; + } + + @Override + public ArrayList getSpawns() { + return null; + } + + @Override + public int getBaseHarvestTime() { + return this.baseHarvestTime; + } + + @Override + public int getLevelRequired() { + return this.levelRequired; + } + + @Override + public boolean needItemToHarvest() { + return false; + } + + @Override + public int getModelId() { + return this.modelId; + } + + @Override + public Vector getScale() { + return new Vector(1, 1, 1); + } + + @Override + public ItemTemplateEnum getItemRequired() { + return null; + } + + @Override + public int distanceToInteract() { + return this.distanceToInteract; + } + + @Override + public boolean checkRequirements(Player player) { + if(this.requiredItem != -1) { + Inventory inventory = InventoryManager.getMainInventory(player); + if(inventory.getItemByType(String.valueOf(this.requiredItem)) == null) { + return false; + } + } + return true; + } + + @Override + public CharacterLoopAnimation getCharacterLoopHarvestAnimation(Player player) { + CharacterLoopAnimation newLoop = new CharacterLoopAnimation(player, this.characterLoopAnimation.getAnimation(), + this.characterLoopAnimation.getLoopInterval(), this.characterLoopAnimation.getLoopAmount(), + this.characterLoopAnimation.getLoopSound()); + return newLoop; + } + + @Override + public void onHarvestDone(Player player, WorldHarvestObject worldHarvestObject) { + Onset.getServer().callLuaEvent("YRPF:JobAPI:OnHarvestDone", player.getId(), + worldHarvestObject.getJob().getJobType(), worldHarvestObject.getHarvestableObject().getName(), worldHarvestObject.getUuid()); + } + + public int getRequiredItem() { + return requiredItem; + } + + public void setRequiredItem(int requiredItem) { + this.requiredItem = requiredItem; + } + + public CharacterLoopAnimation getCharacterLoopAnimation() { + return characterLoopAnimation; + } + + public void setCharacterLoopAnimation(CharacterLoopAnimation characterLoopAnimation) { + this.characterLoopAnimation = characterLoopAnimation; + } +} diff --git a/src/main/java/fr/yuki/YukiRPFramework/job/harvest/DeliveryPackage.java b/src/main/java/fr/yuki/yrpf/job/harvest/DeliveryPackage.java similarity index 80% rename from src/main/java/fr/yuki/YukiRPFramework/job/harvest/DeliveryPackage.java rename to src/main/java/fr/yuki/yrpf/job/harvest/DeliveryPackage.java index 5450087..7d815b5 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/job/harvest/DeliveryPackage.java +++ b/src/main/java/fr/yuki/yrpf/job/harvest/DeliveryPackage.java @@ -1,99 +1,99 @@ -package fr.yuki.YukiRPFramework.job.harvest; - -import fr.yuki.YukiRPFramework.character.CharacterLoopAnimation; -import fr.yuki.YukiRPFramework.character.CharacterToolAnimation; -import fr.yuki.YukiRPFramework.enums.ItemTemplateEnum; -import fr.yuki.YukiRPFramework.job.JobSpawnPosition; -import fr.yuki.YukiRPFramework.job.WearableWorldObject; -import fr.yuki.YukiRPFramework.job.WorldHarvestObject; -import fr.yuki.YukiRPFramework.job.customGoal.DeliveryPointGoal; -import fr.yuki.YukiRPFramework.manager.JobManager; -import fr.yuki.YukiRPFramework.utils.Basic; -import net.onfirenetwork.onsetjava.data.Vector; -import net.onfirenetwork.onsetjava.entity.Player; -import net.onfirenetwork.onsetjava.enums.Animation; - -import java.util.ArrayList; - -public class DeliveryPackage implements HarvestableObject { - @Override - public String getName() { - return "Colis"; - } - - @Override - public int getXp() { - return 0; - } - - @Override - public ArrayList getSpawns() { - return new ArrayList<>(); - } - - @Override - public int getBaseHarvestTime() { - return 1000; - } - - @Override - public int getLevelRequired() { - return 1; - } - - @Override - public Vector getScale() { - return new Vector(1, 1, 1); - } - - @Override - public boolean needItemToHarvest() { - return false; - } - - @Override - public int getModelId() { - return 508; - } - - @Override - public ItemTemplateEnum getItemRequired() { - return null; - } - - @Override - public int distanceToInteract() { - return 200; - } - - @Override - public boolean checkRequirements(Player player) { - return true; - } - - @Override - public CharacterLoopAnimation getCharacterLoopHarvestAnimation(Player player) { - CharacterLoopAnimation characterLoopAnimation = new CharacterLoopAnimation(player, Animation.CARRY_SETDOWN, 1000, 1, - ""); - return characterLoopAnimation; - } - - @Override - public void onHarvestDone(Player player, WorldHarvestObject worldHarvestObject) { - WearableWorldObject wearableWorldObject = new WearableWorldObject(this.getModelId(), - true, Animation.CARRY_IDLE, - new CharacterToolAnimation(this.getModelId(), new Vector(-40,35,0), new Vector(-90,0,0), - new Vector(0.6,0.6,0.6), "hand_r"), - new Vector(worldHarvestObject.getJobSpawnPosition().getX(), worldHarvestObject.getJobSpawnPosition().getY(), - worldHarvestObject.getJobSpawnPosition().getZ())); - JobManager.getWearableWorldObjects().add(wearableWorldObject); - - // Assign a random delivery location place - ArrayList housesDeliveryLocation = JobManager.getDeliveryPointConfig().getPoints().get("houses"); - JobSpawnPosition deliveryPointPosition = housesDeliveryLocation.get(Basic.randomNumber(0, housesDeliveryLocation.size() -1)); - DeliveryPointGoal deliveryPointGoal = new DeliveryPointGoal(deliveryPointPosition, wearableWorldObject); - wearableWorldObject.setDeliveryPointGoal(deliveryPointGoal); - - JobManager.handleWearObjectRequest(player, wearableWorldObject.getUuid()); - } -} +package fr.yuki.yrpf.job.harvest; + +import fr.yuki.yrpf.character.CharacterLoopAnimation; +import fr.yuki.yrpf.character.CharacterToolAnimation; +import fr.yuki.yrpf.enums.ItemTemplateEnum; +import fr.yuki.yrpf.job.JobSpawnPosition; +import fr.yuki.yrpf.job.WearableWorldObject; +import fr.yuki.yrpf.job.WorldHarvestObject; +import fr.yuki.yrpf.job.customGoal.DeliveryPointGoal; +import fr.yuki.yrpf.manager.JobManager; +import fr.yuki.yrpf.utils.Basic; +import net.onfirenetwork.onsetjava.data.Vector; +import net.onfirenetwork.onsetjava.entity.Player; +import net.onfirenetwork.onsetjava.enums.Animation; + +import java.util.ArrayList; + +public class DeliveryPackage implements HarvestableObject { + @Override + public String getName() { + return "Colis"; + } + + @Override + public int getXp() { + return 0; + } + + @Override + public ArrayList getSpawns() { + return new ArrayList<>(); + } + + @Override + public int getBaseHarvestTime() { + return 1000; + } + + @Override + public int getLevelRequired() { + return 1; + } + + @Override + public Vector getScale() { + return new Vector(1, 1, 1); + } + + @Override + public boolean needItemToHarvest() { + return false; + } + + @Override + public int getModelId() { + return 508; + } + + @Override + public ItemTemplateEnum getItemRequired() { + return null; + } + + @Override + public int distanceToInteract() { + return 200; + } + + @Override + public boolean checkRequirements(Player player) { + return true; + } + + @Override + public CharacterLoopAnimation getCharacterLoopHarvestAnimation(Player player) { + CharacterLoopAnimation characterLoopAnimation = new CharacterLoopAnimation(player, Animation.CARRY_SETDOWN, 1000, 1, + ""); + return characterLoopAnimation; + } + + @Override + public void onHarvestDone(Player player, WorldHarvestObject worldHarvestObject) { + WearableWorldObject wearableWorldObject = new WearableWorldObject(this.getModelId(), + true, Animation.CARRY_IDLE, + new CharacterToolAnimation(this.getModelId(), new Vector(-40,35,0), new Vector(-90,0,0), + new Vector(0.6,0.6,0.6), "hand_r"), + new Vector(worldHarvestObject.getJobSpawnPosition().getX(), worldHarvestObject.getJobSpawnPosition().getY(), + worldHarvestObject.getJobSpawnPosition().getZ())); + JobManager.getWearableWorldObjects().add(wearableWorldObject); + + // Assign a random delivery location place + ArrayList housesDeliveryLocation = JobManager.getDeliveryPointConfig().getPoints().get("houses"); + JobSpawnPosition deliveryPointPosition = housesDeliveryLocation.get(Basic.randomNumber(0, housesDeliveryLocation.size() -1)); + DeliveryPointGoal deliveryPointGoal = new DeliveryPointGoal(deliveryPointPosition, wearableWorldObject); + wearableWorldObject.setDeliveryPointGoal(deliveryPointGoal); + + JobManager.handleWearObjectRequest(player, wearableWorldObject.getUuid()); + } +} diff --git a/src/main/java/fr/yuki/YukiRPFramework/job/harvest/Garbage.java b/src/main/java/fr/yuki/yrpf/job/harvest/Garbage.java similarity index 81% rename from src/main/java/fr/yuki/YukiRPFramework/job/harvest/Garbage.java rename to src/main/java/fr/yuki/yrpf/job/harvest/Garbage.java index 18c0bea..d129465 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/job/harvest/Garbage.java +++ b/src/main/java/fr/yuki/yrpf/job/harvest/Garbage.java @@ -1,88 +1,88 @@ -package fr.yuki.YukiRPFramework.job.harvest; - -import fr.yuki.YukiRPFramework.character.CharacterLoopAnimation; -import fr.yuki.YukiRPFramework.character.CharacterToolAnimation; -import fr.yuki.YukiRPFramework.enums.ItemTemplateEnum; -import fr.yuki.YukiRPFramework.job.WearableWorldObject; -import fr.yuki.YukiRPFramework.job.WorldHarvestObject; -import fr.yuki.YukiRPFramework.manager.JobManager; -import net.onfirenetwork.onsetjava.data.Vector; -import net.onfirenetwork.onsetjava.entity.Player; -import net.onfirenetwork.onsetjava.enums.Animation; - -import java.util.ArrayList; - -public class Garbage implements HarvestableObject { - @Override - public String getName() { - return "Sac poubelle"; - } - - @Override - public int getXp() { - return 0; - } - - @Override - public ArrayList getSpawns() { - return new ArrayList<>(); - } - - @Override - public int getBaseHarvestTime() { - return 1000; - } - - @Override - public int getLevelRequired() { - return 1; - } - - @Override - public boolean needItemToHarvest() { - return false; - } - - @Override - public Vector getScale() { - return new Vector(1, 1, 1); - } - - @Override - public int getModelId() { - return 514; - } - - @Override - public ItemTemplateEnum getItemRequired() { - return null; - } - - @Override - public int distanceToInteract() { - return 200; - } - - @Override - public boolean checkRequirements(Player player) { - return true; - } - - @Override - public CharacterLoopAnimation getCharacterLoopHarvestAnimation(Player player) { - CharacterLoopAnimation characterLoopAnimation = new CharacterLoopAnimation(player, Animation.CARRY_SETDOWN, 1000, 1, - ""); - return characterLoopAnimation; - } - - @Override - public void onHarvestDone(Player player, WorldHarvestObject worldHarvestObject) { - WearableWorldObject wearableWorldObject = new WearableWorldObject(this.getModelId(), - true, Animation.CARRY_IDLE, - new CharacterToolAnimation(this.getModelId(), new Vector(-40,35,0), new Vector(-90,0,0), new Vector(1,1,1), "hand_r"), - new Vector(worldHarvestObject.getJobSpawnPosition().getX(), worldHarvestObject.getJobSpawnPosition().getY(), - worldHarvestObject.getJobSpawnPosition().getZ())); - JobManager.getWearableWorldObjects().add(wearableWorldObject); - JobManager.handleWearObjectRequest(player, wearableWorldObject.getUuid()); - } -} +package fr.yuki.yrpf.job.harvest; + +import fr.yuki.yrpf.character.CharacterLoopAnimation; +import fr.yuki.yrpf.character.CharacterToolAnimation; +import fr.yuki.yrpf.enums.ItemTemplateEnum; +import fr.yuki.yrpf.job.WearableWorldObject; +import fr.yuki.yrpf.job.WorldHarvestObject; +import fr.yuki.yrpf.manager.JobManager; +import net.onfirenetwork.onsetjava.data.Vector; +import net.onfirenetwork.onsetjava.entity.Player; +import net.onfirenetwork.onsetjava.enums.Animation; + +import java.util.ArrayList; + +public class Garbage implements HarvestableObject { + @Override + public String getName() { + return "Sac poubelle"; + } + + @Override + public int getXp() { + return 0; + } + + @Override + public ArrayList getSpawns() { + return new ArrayList<>(); + } + + @Override + public int getBaseHarvestTime() { + return 1000; + } + + @Override + public int getLevelRequired() { + return 1; + } + + @Override + public boolean needItemToHarvest() { + return false; + } + + @Override + public Vector getScale() { + return new Vector(1, 1, 1); + } + + @Override + public int getModelId() { + return 514; + } + + @Override + public ItemTemplateEnum getItemRequired() { + return null; + } + + @Override + public int distanceToInteract() { + return 200; + } + + @Override + public boolean checkRequirements(Player player) { + return true; + } + + @Override + public CharacterLoopAnimation getCharacterLoopHarvestAnimation(Player player) { + CharacterLoopAnimation characterLoopAnimation = new CharacterLoopAnimation(player, Animation.CARRY_SETDOWN, 1000, 1, + ""); + return characterLoopAnimation; + } + + @Override + public void onHarvestDone(Player player, WorldHarvestObject worldHarvestObject) { + WearableWorldObject wearableWorldObject = new WearableWorldObject(this.getModelId(), + true, Animation.CARRY_IDLE, + new CharacterToolAnimation(this.getModelId(), new Vector(-40,35,0), new Vector(-90,0,0), new Vector(1,1,1), "hand_r"), + new Vector(worldHarvestObject.getJobSpawnPosition().getX(), worldHarvestObject.getJobSpawnPosition().getY(), + worldHarvestObject.getJobSpawnPosition().getZ())); + JobManager.getWearableWorldObjects().add(wearableWorldObject); + JobManager.handleWearObjectRequest(player, wearableWorldObject.getUuid()); + } +} diff --git a/src/main/java/fr/yuki/YukiRPFramework/job/harvest/HarvestableObject.java b/src/main/java/fr/yuki/yrpf/job/harvest/HarvestableObject.java similarity index 72% rename from src/main/java/fr/yuki/YukiRPFramework/job/harvest/HarvestableObject.java rename to src/main/java/fr/yuki/yrpf/job/harvest/HarvestableObject.java index f188c2e..78c8825 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/job/harvest/HarvestableObject.java +++ b/src/main/java/fr/yuki/yrpf/job/harvest/HarvestableObject.java @@ -1,25 +1,25 @@ -package fr.yuki.YukiRPFramework.job.harvest; - -import fr.yuki.YukiRPFramework.character.CharacterLoopAnimation; -import fr.yuki.YukiRPFramework.enums.ItemTemplateEnum; -import fr.yuki.YukiRPFramework.job.WorldHarvestObject; -import net.onfirenetwork.onsetjava.data.Vector; -import net.onfirenetwork.onsetjava.entity.Player; - -import java.util.ArrayList; - -public interface HarvestableObject { - String getName(); - int getXp(); - ArrayList getSpawns(); - int getBaseHarvestTime(); - int getLevelRequired(); - boolean needItemToHarvest(); - int getModelId(); - Vector getScale(); - ItemTemplateEnum getItemRequired(); - int distanceToInteract(); - boolean checkRequirements(Player player); - CharacterLoopAnimation getCharacterLoopHarvestAnimation(Player player); - void onHarvestDone(Player player, WorldHarvestObject worldHarvestObject); -} +package fr.yuki.yrpf.job.harvest; + +import fr.yuki.yrpf.character.CharacterLoopAnimation; +import fr.yuki.yrpf.enums.ItemTemplateEnum; +import fr.yuki.yrpf.job.WorldHarvestObject; +import net.onfirenetwork.onsetjava.data.Vector; +import net.onfirenetwork.onsetjava.entity.Player; + +import java.util.ArrayList; + +public interface HarvestableObject { + String getName(); + int getXp(); + ArrayList getSpawns(); + int getBaseHarvestTime(); + int getLevelRequired(); + boolean needItemToHarvest(); + int getModelId(); + Vector getScale(); + ItemTemplateEnum getItemRequired(); + int distanceToInteract(); + boolean checkRequirements(Player player); + CharacterLoopAnimation getCharacterLoopHarvestAnimation(Player player); + void onHarvestDone(Player player, WorldHarvestObject worldHarvestObject); +} diff --git a/src/main/java/fr/yuki/YukiRPFramework/job/harvest/IronOre.java b/src/main/java/fr/yuki/yrpf/job/harvest/IronOre.java similarity index 80% rename from src/main/java/fr/yuki/YukiRPFramework/job/harvest/IronOre.java rename to src/main/java/fr/yuki/yrpf/job/harvest/IronOre.java index 1a5ad09..2f4a86a 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/job/harvest/IronOre.java +++ b/src/main/java/fr/yuki/yrpf/job/harvest/IronOre.java @@ -1,94 +1,94 @@ -package fr.yuki.YukiRPFramework.job.harvest; - -import fr.yuki.YukiRPFramework.character.CharacterLoopAnimation; -import fr.yuki.YukiRPFramework.character.CharacterToolAnimation; -import fr.yuki.YukiRPFramework.enums.ItemTemplateEnum; -import fr.yuki.YukiRPFramework.inventory.Inventory; -import fr.yuki.YukiRPFramework.job.WearableWorldObject; -import fr.yuki.YukiRPFramework.job.WorldHarvestObject; -import fr.yuki.YukiRPFramework.manager.InventoryManager; -import fr.yuki.YukiRPFramework.manager.JobManager; -import net.onfirenetwork.onsetjava.data.Vector; -import net.onfirenetwork.onsetjava.entity.Player; -import net.onfirenetwork.onsetjava.enums.Animation; - -import java.util.ArrayList; - -public class IronOre implements HarvestableObject { - @Override - public String getName() { - return "Fer Brute"; - } - - @Override - public int getXp() { - return 20; - } - - @Override - public ArrayList getSpawns() { - return new ArrayList<>(); - } - - @Override - public int getBaseHarvestTime() { - return 25000; - } - - @Override - public int getLevelRequired() { - return 2; - } - - @Override - public boolean needItemToHarvest() { - return true; - } - - @Override - public int getModelId() { - return 154; - } - - @Override - public Vector getScale() { - return new Vector(0.1, 0.1, 0.1); - } - - @Override - public ItemTemplateEnum getItemRequired() { - return ItemTemplateEnum.MINER_PICKAXE_1; - } - - @Override - public int distanceToInteract() { - return 300; - } - - @Override - public boolean checkRequirements(Player player) { - Inventory inventory = InventoryManager.getMainInventory(player); - if(inventory.getItemByType(this.getItemRequired().id) == null) { - return false; - } - return true; - } - - @Override - public CharacterLoopAnimation getCharacterLoopHarvestAnimation(Player player) { - CharacterLoopAnimation characterLoopAnimation = new CharacterLoopAnimation(player, Animation.PICKAXE_SWING, 5000, 4, - "sounds/pickaxe_hit.mp3"); - characterLoopAnimation.setTool(new CharacterToolAnimation(50003, new Vector(-8,5,20), - new Vector(-90,90,0), new Vector(2, 2, 2), "hand_r")); - return characterLoopAnimation; - } - - @Override - public void onHarvestDone(Player player, WorldHarvestObject worldHarvestObject) { - WearableWorldObject wearableWorldObject = new WearableWorldObject(156, true, Animation.CARRY_IDLE, - new CharacterToolAnimation(154, new Vector(0,15,0), new Vector(90,-90,0), new Vector(0.09,0.09,0.09), "hand_r"), - new Vector(worldHarvestObject.getJobSpawnPosition().getX(), worldHarvestObject.getJobSpawnPosition().getY(), - worldHarvestObject.getJobSpawnPosition().getZ())); - JobManager.getWearableWorldObjects().add(wearableWorldObject); - } -} +package fr.yuki.yrpf.job.harvest; + +import fr.yuki.yrpf.character.CharacterLoopAnimation; +import fr.yuki.yrpf.character.CharacterToolAnimation; +import fr.yuki.yrpf.enums.ItemTemplateEnum; +import fr.yuki.yrpf.inventory.Inventory; +import fr.yuki.yrpf.job.WearableWorldObject; +import fr.yuki.yrpf.job.WorldHarvestObject; +import fr.yuki.yrpf.manager.InventoryManager; +import fr.yuki.yrpf.manager.JobManager; +import net.onfirenetwork.onsetjava.data.Vector; +import net.onfirenetwork.onsetjava.entity.Player; +import net.onfirenetwork.onsetjava.enums.Animation; + +import java.util.ArrayList; + +public class IronOre implements HarvestableObject { + @Override + public String getName() { + return "Fer Brute"; + } + + @Override + public int getXp() { + return 20; + } + + @Override + public ArrayList getSpawns() { + return new ArrayList<>(); + } + + @Override + public int getBaseHarvestTime() { + return 25000; + } + + @Override + public int getLevelRequired() { + return 2; + } + + @Override + public boolean needItemToHarvest() { + return true; + } + + @Override + public int getModelId() { + return 154; + } + + @Override + public Vector getScale() { + return new Vector(0.1, 0.1, 0.1); + } + + @Override + public ItemTemplateEnum getItemRequired() { + return ItemTemplateEnum.MINER_PICKAXE_1; + } + + @Override + public int distanceToInteract() { + return 300; + } + + @Override + public boolean checkRequirements(Player player) { + Inventory inventory = InventoryManager.getMainInventory(player); + if(inventory.getItemByType(this.getItemRequired().id) == null) { + return false; + } + return true; + } + + @Override + public CharacterLoopAnimation getCharacterLoopHarvestAnimation(Player player) { + CharacterLoopAnimation characterLoopAnimation = new CharacterLoopAnimation(player, Animation.PICKAXE_SWING, 5000, 4, + "sounds/pickaxe_hit.mp3"); + characterLoopAnimation.setTool(new CharacterToolAnimation(50003, new Vector(-8,5,20), + new Vector(-90,90,0), new Vector(2, 2, 2), "hand_r")); + return characterLoopAnimation; + } + + @Override + public void onHarvestDone(Player player, WorldHarvestObject worldHarvestObject) { + WearableWorldObject wearableWorldObject = new WearableWorldObject(156, true, Animation.CARRY_IDLE, + new CharacterToolAnimation(154, new Vector(0,15,0), new Vector(90,-90,0), new Vector(0.09,0.09,0.09), "hand_r"), + new Vector(worldHarvestObject.getJobSpawnPosition().getX(), worldHarvestObject.getJobSpawnPosition().getY(), + worldHarvestObject.getJobSpawnPosition().getZ())); + JobManager.getWearableWorldObjects().add(wearableWorldObject); + } +} diff --git a/src/main/java/fr/yuki/YukiRPFramework/job/harvest/LumberjackTreeCommon.java b/src/main/java/fr/yuki/yrpf/job/harvest/LumberjackTreeCommon.java similarity index 76% rename from src/main/java/fr/yuki/YukiRPFramework/job/harvest/LumberjackTreeCommon.java rename to src/main/java/fr/yuki/yrpf/job/harvest/LumberjackTreeCommon.java index df31bef..e770440 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/job/harvest/LumberjackTreeCommon.java +++ b/src/main/java/fr/yuki/yrpf/job/harvest/LumberjackTreeCommon.java @@ -1,97 +1,94 @@ -package fr.yuki.YukiRPFramework.job.harvest; - -import fr.yuki.YukiRPFramework.character.CharacterLoopAnimation; -import fr.yuki.YukiRPFramework.character.CharacterToolAnimation; -import fr.yuki.YukiRPFramework.enums.ItemTemplateEnum; -import fr.yuki.YukiRPFramework.inventory.Inventory; -import fr.yuki.YukiRPFramework.job.WearableWorldObject; -import fr.yuki.YukiRPFramework.job.WorldHarvestObject; -import fr.yuki.YukiRPFramework.manager.InventoryManager; -import fr.yuki.YukiRPFramework.manager.JobManager; -import fr.yuki.YukiRPFramework.manager.ModdingManager; -import net.onfirenetwork.onsetjava.Onset; -import net.onfirenetwork.onsetjava.data.Vector; -import net.onfirenetwork.onsetjava.entity.Player; -import net.onfirenetwork.onsetjava.entity.WorldObject; -import net.onfirenetwork.onsetjava.enums.Animation; - -import java.util.ArrayList; - -public class LumberjackTreeCommon implements HarvestableObject { - @Override - public String getName() { - return "Arbre commun"; - } - - @Override - public int getXp() { - return 10; - } - - @Override - public ArrayList getSpawns() { - return new ArrayList<>(); - } - - @Override - public int getBaseHarvestTime() { - return 20000; - } - - @Override - public int getLevelRequired() { - return 1; - } - - @Override - public boolean needItemToHarvest() { - return true; - } - - @Override - public int getModelId() { - return 143; - } - - @Override - public Vector getScale() { - return new Vector(1, 1, 1); - } - - @Override - public ItemTemplateEnum getItemRequired() { - return ItemTemplateEnum.LUMBERJACK_HATCHET_1; - } - - @Override - public int distanceToInteract() { - return 200; - } - - @Override - public boolean checkRequirements(Player player) { - Inventory inventory = InventoryManager.getMainInventory(player); - if(inventory.getItemByType(this.getItemRequired().id) == null) { - return false; - } - return true; - } - - @Override - public CharacterLoopAnimation getCharacterLoopHarvestAnimation(Player player) { - CharacterLoopAnimation characterLoopAnimation = new CharacterLoopAnimation(player, Animation.PICKAXE_SWING, 4000, 5, - "sounds/chop_wood.mp3"); - characterLoopAnimation.setTool(new CharacterToolAnimation(50000, new Vector(-45,-6,20), - new Vector(0,0,0), new Vector(0.5, 0.5, 0.5), "hand_r")); - return characterLoopAnimation; - } - - @Override - public void onHarvestDone(Player player, WorldHarvestObject worldHarvestObject) { - WearableWorldObject wearableWorldObject = new WearableWorldObject(50001, true, Animation.CARRY_SHOULDER_IDLE, - new CharacterToolAnimation(50001, new Vector(5,8,0), new Vector(0,0,90), new Vector(0.5,0.5,0.5), "hand_r"), - new Vector(worldHarvestObject.getJobSpawnPosition().getX(), worldHarvestObject.getJobSpawnPosition().getY(), - worldHarvestObject.getJobSpawnPosition().getZ())); - JobManager.getWearableWorldObjects().add(wearableWorldObject); - } -} +package fr.yuki.yrpf.job.harvest; + +import fr.yuki.yrpf.character.CharacterLoopAnimation; +import fr.yuki.yrpf.character.CharacterToolAnimation; +import fr.yuki.yrpf.enums.ItemTemplateEnum; +import fr.yuki.yrpf.inventory.Inventory; +import fr.yuki.yrpf.job.WearableWorldObject; +import fr.yuki.yrpf.job.WorldHarvestObject; +import fr.yuki.yrpf.manager.InventoryManager; +import fr.yuki.yrpf.manager.JobManager; +import net.onfirenetwork.onsetjava.data.Vector; +import net.onfirenetwork.onsetjava.entity.Player; +import net.onfirenetwork.onsetjava.enums.Animation; + +import java.util.ArrayList; + +public class LumberjackTreeCommon implements HarvestableObject { + @Override + public String getName() { + return "Arbre commun"; + } + + @Override + public int getXp() { + return 10; + } + + @Override + public ArrayList getSpawns() { + return new ArrayList<>(); + } + + @Override + public int getBaseHarvestTime() { + return 20000; + } + + @Override + public int getLevelRequired() { + return 1; + } + + @Override + public boolean needItemToHarvest() { + return true; + } + + @Override + public int getModelId() { + return 143; + } + + @Override + public Vector getScale() { + return new Vector(1, 1, 1); + } + + @Override + public ItemTemplateEnum getItemRequired() { + return ItemTemplateEnum.LUMBERJACK_HATCHET_1; + } + + @Override + public int distanceToInteract() { + return 200; + } + + @Override + public boolean checkRequirements(Player player) { + Inventory inventory = InventoryManager.getMainInventory(player); + if(inventory.getItemByType(this.getItemRequired().id) == null) { + return false; + } + return true; + } + + @Override + public CharacterLoopAnimation getCharacterLoopHarvestAnimation(Player player) { + CharacterLoopAnimation characterLoopAnimation = new CharacterLoopAnimation(player, Animation.PICKAXE_SWING, 4000, 5, + "sounds/chop_wood.mp3"); + characterLoopAnimation.setTool(new CharacterToolAnimation(50000, new Vector(-45,-6,20), + new Vector(0,0,0), new Vector(0.5, 0.5, 0.5), "hand_r")); + return characterLoopAnimation; + } + + @Override + public void onHarvestDone(Player player, WorldHarvestObject worldHarvestObject) { + WearableWorldObject wearableWorldObject = new WearableWorldObject(50001, true, Animation.CARRY_SHOULDER_IDLE, + new CharacterToolAnimation(50001, new Vector(5,8,0), new Vector(0,0,90), new Vector(0.5,0.5,0.5), "hand_r"), + new Vector(worldHarvestObject.getJobSpawnPosition().getX(), worldHarvestObject.getJobSpawnPosition().getY(), + worldHarvestObject.getJobSpawnPosition().getZ())); + JobManager.getWearableWorldObjects().add(wearableWorldObject); + } +} diff --git a/src/main/java/fr/yuki/YukiRPFramework/job/harvest/Salmon.java b/src/main/java/fr/yuki/yrpf/job/harvest/Salmon.java similarity index 79% rename from src/main/java/fr/yuki/YukiRPFramework/job/harvest/Salmon.java rename to src/main/java/fr/yuki/yrpf/job/harvest/Salmon.java index f85fdc9..3647d40 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/job/harvest/Salmon.java +++ b/src/main/java/fr/yuki/yrpf/job/harvest/Salmon.java @@ -1,89 +1,89 @@ -package fr.yuki.YukiRPFramework.job.harvest; - -import fr.yuki.YukiRPFramework.character.CharacterLoopAnimation; -import fr.yuki.YukiRPFramework.character.CharacterToolAnimation; -import fr.yuki.YukiRPFramework.enums.ItemTemplateEnum; -import fr.yuki.YukiRPFramework.inventory.Inventory; -import fr.yuki.YukiRPFramework.job.WorldHarvestObject; -import fr.yuki.YukiRPFramework.manager.InventoryManager; -import fr.yuki.YukiRPFramework.utils.Basic; -import net.onfirenetwork.onsetjava.data.Vector; -import net.onfirenetwork.onsetjava.entity.Player; -import net.onfirenetwork.onsetjava.enums.Animation; - -import java.util.ArrayList; - -public class Salmon implements HarvestableObject { - @Override - public String getName() { - return "Saumon"; - } - - @Override - public int getXp() { - return 15; - } - - @Override - public ArrayList getSpawns() { - return new ArrayList<>(); - } - - @Override - public int getBaseHarvestTime() { - return 15000; - } - - @Override - public int getLevelRequired() { - return 0; - } - - @Override - public boolean needItemToHarvest() { - return true; - } - - @Override - public int getModelId() { - return 50004; - } - - @Override - public ItemTemplateEnum getItemRequired() { - return ItemTemplateEnum.FISHING_ROD; - } - - @Override - public int distanceToInteract() { - return 2500; - } - - @Override - public boolean checkRequirements(Player player) { - Inventory inventory = InventoryManager.getMainInventory(player); - if(inventory.getItemByType(this.getItemRequired().id) == null) { - return false; - } - return true; - } - - @Override - public CharacterLoopAnimation getCharacterLoopHarvestAnimation(Player player) { - CharacterLoopAnimation characterLoopAnimation = new CharacterLoopAnimation(player, Animation.FISHING, 5000, 1, - "sounds/fishing_1.mp3"); - characterLoopAnimation.setTool(new CharacterToolAnimation(1111, new Vector(-10,10,-20), - new Vector(0,0,0), new Vector(1, 1, 1), "hand_r")); - return characterLoopAnimation; - } - - @Override - public void onHarvestDone(Player player, WorldHarvestObject worldHarvestObject) { - InventoryManager.addItemToPlayer(player, ItemTemplateEnum.SALMON.id, Basic.randomNumber(1, 4), true); - } - - @Override - public Vector getScale() { - return new Vector(1, 1, 1); - } -} +package fr.yuki.yrpf.job.harvest; + +import fr.yuki.yrpf.character.CharacterLoopAnimation; +import fr.yuki.yrpf.character.CharacterToolAnimation; +import fr.yuki.yrpf.enums.ItemTemplateEnum; +import fr.yuki.yrpf.inventory.Inventory; +import fr.yuki.yrpf.job.WorldHarvestObject; +import fr.yuki.yrpf.manager.InventoryManager; +import fr.yuki.yrpf.utils.Basic; +import net.onfirenetwork.onsetjava.data.Vector; +import net.onfirenetwork.onsetjava.entity.Player; +import net.onfirenetwork.onsetjava.enums.Animation; + +import java.util.ArrayList; + +public class Salmon implements HarvestableObject { + @Override + public String getName() { + return "Saumon"; + } + + @Override + public int getXp() { + return 15; + } + + @Override + public ArrayList getSpawns() { + return new ArrayList<>(); + } + + @Override + public int getBaseHarvestTime() { + return 15000; + } + + @Override + public int getLevelRequired() { + return 0; + } + + @Override + public boolean needItemToHarvest() { + return true; + } + + @Override + public int getModelId() { + return 50004; + } + + @Override + public ItemTemplateEnum getItemRequired() { + return ItemTemplateEnum.FISHING_ROD; + } + + @Override + public int distanceToInteract() { + return 2500; + } + + @Override + public boolean checkRequirements(Player player) { + Inventory inventory = InventoryManager.getMainInventory(player); + if(inventory.getItemByType(this.getItemRequired().id) == null) { + return false; + } + return true; + } + + @Override + public CharacterLoopAnimation getCharacterLoopHarvestAnimation(Player player) { + CharacterLoopAnimation characterLoopAnimation = new CharacterLoopAnimation(player, Animation.FISHING, 5000, 1, + "sounds/fishing_1.mp3"); + characterLoopAnimation.setTool(new CharacterToolAnimation(1111, new Vector(-10,10,-20), + new Vector(0,0,0), new Vector(1, 1, 1), "hand_r")); + return characterLoopAnimation; + } + + @Override + public void onHarvestDone(Player player, WorldHarvestObject worldHarvestObject) { + InventoryManager.addItemToPlayer(player, ItemTemplateEnum.SALMON.id, Basic.randomNumber(1, 4), true); + } + + @Override + public Vector getScale() { + return new Vector(1, 1, 1); + } +} diff --git a/src/main/java/fr/yuki/YukiRPFramework/job/harvest/Turtle.java b/src/main/java/fr/yuki/yrpf/job/harvest/Turtle.java similarity index 79% rename from src/main/java/fr/yuki/YukiRPFramework/job/harvest/Turtle.java rename to src/main/java/fr/yuki/yrpf/job/harvest/Turtle.java index 99e76dd..5a801ca 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/job/harvest/Turtle.java +++ b/src/main/java/fr/yuki/yrpf/job/harvest/Turtle.java @@ -1,89 +1,88 @@ -package fr.yuki.YukiRPFramework.job.harvest; - -import fr.yuki.YukiRPFramework.character.CharacterLoopAnimation; -import fr.yuki.YukiRPFramework.character.CharacterToolAnimation; -import fr.yuki.YukiRPFramework.enums.ItemTemplateEnum; -import fr.yuki.YukiRPFramework.inventory.Inventory; -import fr.yuki.YukiRPFramework.job.WorldHarvestObject; -import fr.yuki.YukiRPFramework.manager.InventoryManager; -import fr.yuki.YukiRPFramework.utils.Basic; -import net.onfirenetwork.onsetjava.data.Vector; -import net.onfirenetwork.onsetjava.entity.Player; -import net.onfirenetwork.onsetjava.enums.Animation; - -import java.util.ArrayList; - -public class Turtle implements HarvestableObject { - @Override - public String getName() { - return "Tortue"; - } - - @Override - public int getXp() { - return 30; - } - - @Override - public ArrayList getSpawns() { - return new ArrayList<>(); - } - - @Override - public int getBaseHarvestTime() { - return 25000; - } - - @Override - public int getLevelRequired() { - return 2; - } - - @Override - public boolean needItemToHarvest() { - return true; - } - - @Override - public int getModelId() { - return 50004; - } - - @Override - public ItemTemplateEnum getItemRequired() { - return ItemTemplateEnum.FISHING_ROD; - } - - @Override - public int distanceToInteract() { - return 2500; - } - - @Override - public boolean checkRequirements(Player player) { - Inventory inventory = InventoryManager.getMainInventory(player); - if(inventory.getItemByType(this.getItemRequired().id) == null) { - return false; - } - return true; - } - - @Override - public CharacterLoopAnimation getCharacterLoopHarvestAnimation(Player player) { - CharacterLoopAnimation characterLoopAnimation = new CharacterLoopAnimation(player, Animation.FISHING, 5000, 1, - "sounds/fishing_1.mp3"); - characterLoopAnimation.setTool(new CharacterToolAnimation(1111, new Vector(-10,10,-20), - new Vector(0,0,0), new Vector(1, 1, 1), "hand_r")); - return characterLoopAnimation; - } - - @Override - public void onHarvestDone(Player player, WorldHarvestObject worldHarvestObject) { - InventoryManager.addItemToPlayer(player, ItemTemplateEnum.TURTLE.id, 1, true); - } - - @Override - public Vector getScale() { - return new Vector(1, 1, 1); - } -} +package fr.yuki.yrpf.job.harvest; + +import fr.yuki.yrpf.character.CharacterLoopAnimation; +import fr.yuki.yrpf.character.CharacterToolAnimation; +import fr.yuki.yrpf.enums.ItemTemplateEnum; +import fr.yuki.yrpf.inventory.Inventory; +import fr.yuki.yrpf.job.WorldHarvestObject; +import fr.yuki.yrpf.manager.InventoryManager; +import net.onfirenetwork.onsetjava.data.Vector; +import net.onfirenetwork.onsetjava.entity.Player; +import net.onfirenetwork.onsetjava.enums.Animation; + +import java.util.ArrayList; + +public class Turtle implements HarvestableObject { + @Override + public String getName() { + return "Tortue"; + } + + @Override + public int getXp() { + return 30; + } + + @Override + public ArrayList getSpawns() { + return new ArrayList<>(); + } + + @Override + public int getBaseHarvestTime() { + return 25000; + } + + @Override + public int getLevelRequired() { + return 2; + } + + @Override + public boolean needItemToHarvest() { + return true; + } + + @Override + public int getModelId() { + return 50004; + } + + @Override + public ItemTemplateEnum getItemRequired() { + return ItemTemplateEnum.FISHING_ROD; + } + + @Override + public int distanceToInteract() { + return 2500; + } + + @Override + public boolean checkRequirements(Player player) { + Inventory inventory = InventoryManager.getMainInventory(player); + if(inventory.getItemByType(this.getItemRequired().id) == null) { + return false; + } + return true; + } + + @Override + public CharacterLoopAnimation getCharacterLoopHarvestAnimation(Player player) { + CharacterLoopAnimation characterLoopAnimation = new CharacterLoopAnimation(player, Animation.FISHING, 5000, 1, + "sounds/fishing_1.mp3"); + characterLoopAnimation.setTool(new CharacterToolAnimation(1111, new Vector(-10,10,-20), + new Vector(0,0,0), new Vector(1, 1, 1), "hand_r")); + return characterLoopAnimation; + } + + @Override + public void onHarvestDone(Player player, WorldHarvestObject worldHarvestObject) { + InventoryManager.addItemToPlayer(player, ItemTemplateEnum.TURTLE.id, 1, true); + } + + @Override + public Vector getScale() { + return new Vector(1, 1, 1); + } +} diff --git a/src/main/java/fr/yuki/YukiRPFramework/job/placementObject/GeneratorPlacementInstance.java b/src/main/java/fr/yuki/yrpf/job/placementObject/GeneratorPlacementInstance.java similarity index 61% rename from src/main/java/fr/yuki/YukiRPFramework/job/placementObject/GeneratorPlacementInstance.java rename to src/main/java/fr/yuki/yrpf/job/placementObject/GeneratorPlacementInstance.java index dc5e7cd..8e6bd64 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/job/placementObject/GeneratorPlacementInstance.java +++ b/src/main/java/fr/yuki/yrpf/job/placementObject/GeneratorPlacementInstance.java @@ -1,35 +1,33 @@ -package fr.yuki.YukiRPFramework.job.placementObject; - -import fr.yuki.YukiRPFramework.enums.ItemTemplateEnum; -import fr.yuki.YukiRPFramework.inventory.Inventory; -import fr.yuki.YukiRPFramework.inventory.InventoryItem; -import fr.yuki.YukiRPFramework.job.ObjectPlacementInstance; -import fr.yuki.YukiRPFramework.job.deliveryPackage.GeneratorDeliveryPackage; -import fr.yuki.YukiRPFramework.job.deliveryPackage.GrowBoxDeliveryPackage; -import fr.yuki.YukiRPFramework.manager.InventoryManager; -import net.onfirenetwork.onsetjava.Onset; -import net.onfirenetwork.onsetjava.data.Vector; -import net.onfirenetwork.onsetjava.entity.Player; - -public class GeneratorPlacementInstance extends ObjectPlacementInstance { - public GeneratorPlacementInstance(Vector spawnPoint) { - super(581, spawnPoint); - } - - @Override - public void onPlacementDone(Player player, Vector position, Vector rotation) { - Inventory inventory = InventoryManager.getMainInventory(player); - InventoryItem inventoryItem = inventory.getItemByType(ItemTemplateEnum.TICKET_DELIVERY_GENERATOR.id); - if(inventoryItem == null) { - return; - } - if(inventoryItem.getAmount() <= 0) { - return; - } - - inventory.removeItem(inventoryItem, 1); - - GeneratorDeliveryPackage generatorDeliveryPackage = new GeneratorDeliveryPackage(player, position, rotation); - generatorDeliveryPackage.spawn(); - } -} +package fr.yuki.yrpf.job.placementObject; + +import fr.yuki.yrpf.enums.ItemTemplateEnum; +import fr.yuki.yrpf.inventory.Inventory; +import fr.yuki.yrpf.inventory.InventoryItem; +import fr.yuki.yrpf.job.ObjectPlacementInstance; +import fr.yuki.yrpf.job.deliveryPackage.GeneratorDeliveryPackage; +import fr.yuki.yrpf.manager.InventoryManager; +import net.onfirenetwork.onsetjava.data.Vector; +import net.onfirenetwork.onsetjava.entity.Player; + +public class GeneratorPlacementInstance extends ObjectPlacementInstance { + public GeneratorPlacementInstance(Vector spawnPoint) { + super(581, spawnPoint); + } + + @Override + public void onPlacementDone(Player player, Vector position, Vector rotation) { + Inventory inventory = InventoryManager.getMainInventory(player); + InventoryItem inventoryItem = inventory.getItemByType(ItemTemplateEnum.TICKET_DELIVERY_GENERATOR.id); + if(inventoryItem == null) { + return; + } + if(inventoryItem.getAmount() <= 0) { + return; + } + + inventory.removeItem(inventoryItem, 1); + + GeneratorDeliveryPackage generatorDeliveryPackage = new GeneratorDeliveryPackage(player, position, rotation); + generatorDeliveryPackage.spawn(); + } +} diff --git a/src/main/java/fr/yuki/YukiRPFramework/job/placementObject/GenericPlacementInstance.java b/src/main/java/fr/yuki/yrpf/job/placementObject/GenericPlacementInstance.java similarity index 58% rename from src/main/java/fr/yuki/YukiRPFramework/job/placementObject/GenericPlacementInstance.java rename to src/main/java/fr/yuki/yrpf/job/placementObject/GenericPlacementInstance.java index 85932b2..3e9e8fa 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/job/placementObject/GenericPlacementInstance.java +++ b/src/main/java/fr/yuki/yrpf/job/placementObject/GenericPlacementInstance.java @@ -1,38 +1,36 @@ -package fr.yuki.YukiRPFramework.job.placementObject; - -import fr.yuki.YukiRPFramework.enums.ItemTemplateEnum; -import fr.yuki.YukiRPFramework.enums.ToastTypeEnum; -import fr.yuki.YukiRPFramework.i18n.I18n; -import fr.yuki.YukiRPFramework.inventory.Inventory; -import fr.yuki.YukiRPFramework.inventory.InventoryItem; -import fr.yuki.YukiRPFramework.job.ObjectPlacementInstance; -import fr.yuki.YukiRPFramework.job.deliveryPackage.GeneratorDeliveryPackage; -import fr.yuki.YukiRPFramework.job.deliveryPackage.GenericDeliveryPackage; -import fr.yuki.YukiRPFramework.manager.InventoryManager; -import fr.yuki.YukiRPFramework.manager.UIStateManager; -import fr.yuki.YukiRPFramework.manager.WorldManager; -import fr.yuki.YukiRPFramework.model.Account; -import net.onfirenetwork.onsetjava.data.Vector; -import net.onfirenetwork.onsetjava.entity.Player; - -public class GenericPlacementInstance extends ObjectPlacementInstance { - private int price; - - public GenericPlacementInstance(Vector spawnPoint, int modelId, int price) { - super(modelId, spawnPoint); - this.price = price; - } - - @Override - public void onPlacementDone(Player player, Vector position, Vector rotation) { - Account account = WorldManager.getPlayerAccount(player); - Inventory inventory = InventoryManager.getMainInventory(player); - if(price > inventory.getCashAmount()) { - UIStateManager.sendNotification(player, ToastTypeEnum.ERROR, I18n.t(account.getLang(), "toast.house.no_enought_money_on_me")); - return; - } - inventory.removeItem(inventory.getItemByType(ItemTemplateEnum.CASH.id), price); - GenericDeliveryPackage genericDeliveryPackage = new GenericDeliveryPackage(player, position, rotation, this.getModelId()); - genericDeliveryPackage.spawn(); - } -} +package fr.yuki.yrpf.job.placementObject; + +import fr.yuki.yrpf.enums.ItemTemplateEnum; +import fr.yuki.yrpf.enums.ToastTypeEnum; +import fr.yuki.yrpf.i18n.I18n; +import fr.yuki.yrpf.inventory.Inventory; +import fr.yuki.yrpf.job.ObjectPlacementInstance; +import fr.yuki.yrpf.job.deliveryPackage.GenericDeliveryPackage; +import fr.yuki.yrpf.manager.InventoryManager; +import fr.yuki.yrpf.manager.UIStateManager; +import fr.yuki.yrpf.manager.WorldManager; +import fr.yuki.yrpf.model.Account; +import net.onfirenetwork.onsetjava.data.Vector; +import net.onfirenetwork.onsetjava.entity.Player; + +public class GenericPlacementInstance extends ObjectPlacementInstance { + private int price; + + public GenericPlacementInstance(Vector spawnPoint, int modelId, int price) { + super(modelId, spawnPoint); + this.price = price; + } + + @Override + public void onPlacementDone(Player player, Vector position, Vector rotation) { + Account account = WorldManager.getPlayerAccount(player); + Inventory inventory = InventoryManager.getMainInventory(player); + if(price > inventory.getCashAmount()) { + UIStateManager.sendNotification(player, ToastTypeEnum.ERROR, I18n.t(account.getLang(), "toast.house.no_enought_money_on_me")); + return; + } + inventory.removeItem(inventory.getItemByType(ItemTemplateEnum.CASH.id), price); + GenericDeliveryPackage genericDeliveryPackage = new GenericDeliveryPackage(player, position, rotation, this.getModelId()); + genericDeliveryPackage.spawn(); + } +} diff --git a/src/main/java/fr/yuki/YukiRPFramework/job/placementObject/GrowBoxPlacementInstance.java b/src/main/java/fr/yuki/yrpf/job/placementObject/GrowBoxPlacementInstance.java similarity index 68% rename from src/main/java/fr/yuki/YukiRPFramework/job/placementObject/GrowBoxPlacementInstance.java rename to src/main/java/fr/yuki/yrpf/job/placementObject/GrowBoxPlacementInstance.java index 1e4060d..dd20206 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/job/placementObject/GrowBoxPlacementInstance.java +++ b/src/main/java/fr/yuki/yrpf/job/placementObject/GrowBoxPlacementInstance.java @@ -1,37 +1,36 @@ -package fr.yuki.YukiRPFramework.job.placementObject; - -import fr.yuki.YukiRPFramework.enums.ItemTemplateEnum; -import fr.yuki.YukiRPFramework.inventory.Inventory; -import fr.yuki.YukiRPFramework.inventory.InventoryItem; -import fr.yuki.YukiRPFramework.job.ObjectPlacementInstance; -import fr.yuki.YukiRPFramework.job.deliveryPackage.GrowBoxDeliveryPackage; -import fr.yuki.YukiRPFramework.manager.InventoryManager; -import fr.yuki.YukiRPFramework.model.ItemTemplate; -import net.onfirenetwork.onsetjava.Onset; -import net.onfirenetwork.onsetjava.data.Vector; -import net.onfirenetwork.onsetjava.entity.Player; - -public class GrowBoxPlacementInstance extends ObjectPlacementInstance { - public GrowBoxPlacementInstance(int modelId, Vector spawnPoint) { - super(modelId, spawnPoint); - } - - @Override - public void onPlacementDone(Player player, Vector position, Vector rotation) { - Inventory inventory = InventoryManager.getMainInventory(player); - InventoryItem inventoryItem = inventory.getItemByType(ItemTemplateEnum.TICKET_DELIVERY_GROW_BOX.id); - if(inventoryItem == null) { - Onset.print("Item not found"); - return; - } - if(inventoryItem.getAmount() <= 0) { - Onset.print("Not amount: " + inventoryItem.getAmount()); - return; - } - - inventory.removeItem(inventoryItem, 1); - - GrowBoxDeliveryPackage growBoxDeliveryPackage = new GrowBoxDeliveryPackage(player, position, rotation); - growBoxDeliveryPackage.spawn(); - } -} +package fr.yuki.yrpf.job.placementObject; + +import fr.yuki.yrpf.enums.ItemTemplateEnum; +import fr.yuki.yrpf.inventory.Inventory; +import fr.yuki.yrpf.inventory.InventoryItem; +import fr.yuki.yrpf.job.ObjectPlacementInstance; +import fr.yuki.yrpf.job.deliveryPackage.GrowBoxDeliveryPackage; +import fr.yuki.yrpf.manager.InventoryManager; +import net.onfirenetwork.onsetjava.Onset; +import net.onfirenetwork.onsetjava.data.Vector; +import net.onfirenetwork.onsetjava.entity.Player; + +public class GrowBoxPlacementInstance extends ObjectPlacementInstance { + public GrowBoxPlacementInstance(int modelId, Vector spawnPoint) { + super(modelId, spawnPoint); + } + + @Override + public void onPlacementDone(Player player, Vector position, Vector rotation) { + Inventory inventory = InventoryManager.getMainInventory(player); + InventoryItem inventoryItem = inventory.getItemByType(ItemTemplateEnum.TICKET_DELIVERY_GROW_BOX.id); + if(inventoryItem == null) { + Onset.print("Item not found"); + return; + } + if(inventoryItem.getAmount() <= 0) { + Onset.print("Not amount: " + inventoryItem.getAmount()); + return; + } + + inventory.removeItem(inventoryItem, 1); + + GrowBoxDeliveryPackage growBoxDeliveryPackage = new GrowBoxDeliveryPackage(player, position, rotation); + growBoxDeliveryPackage.spawn(); + } +} diff --git a/src/main/java/fr/yuki/YukiRPFramework/job/tools/GarbageBin.java b/src/main/java/fr/yuki/yrpf/job/tools/GarbageBin.java similarity index 67% rename from src/main/java/fr/yuki/YukiRPFramework/job/tools/GarbageBin.java rename to src/main/java/fr/yuki/yrpf/job/tools/GarbageBin.java index d40f863..1efba31 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/job/tools/GarbageBin.java +++ b/src/main/java/fr/yuki/yrpf/job/tools/GarbageBin.java @@ -1,64 +1,58 @@ -package fr.yuki.YukiRPFramework.job.tools; - -import fr.yuki.YukiRPFramework.character.CharacterState; -import fr.yuki.YukiRPFramework.character.CharacterToolAnimation; -import fr.yuki.YukiRPFramework.enums.ItemTemplateEnum; -import fr.yuki.YukiRPFramework.enums.JobEnum; -import fr.yuki.YukiRPFramework.enums.ToastTypeEnum; -import fr.yuki.YukiRPFramework.i18n.I18n; -import fr.yuki.YukiRPFramework.job.WearableWorldObject; -import fr.yuki.YukiRPFramework.manager.*; -import fr.yuki.YukiRPFramework.model.JobTool; -import net.onfirenetwork.onsetjava.Onset; -import net.onfirenetwork.onsetjava.data.Vector; -import net.onfirenetwork.onsetjava.entity.Player; -import net.onfirenetwork.onsetjava.entity.WorldObject; -import net.onfirenetwork.onsetjava.enums.Animation; - -public class GarbageBin implements JobToolHandler { - private JobTool jobTool; - - public GarbageBin(JobTool jobTool) { - this.jobTool = jobTool; - } - - @Override - public boolean canInteract(Player player) { - CharacterState state = CharacterManager.getCharacterStateByPlayer(player); - if(state.getWearableWorldObject() == null) return false; - if(state.getWearableWorldObject().getModelId() != 514) return false; - return true; - } - - @Override - public boolean onUnwear(Player player, WearableWorldObject wearableWorldObject) { - JobManager.addExp(player, JobEnum.GARBAGE.type, 20); - - int reward = this.jobTool.getReward(); - if(JobManager.getJobLevelForPlayer(player, this.jobTool.getJobType()) == 2) { - reward = (int)Math.floor(reward * 1.5d); - } - - InventoryManager.addItemToPlayer(player, ItemTemplateEnum.CASH.id, reward, true); - SoundManager.playSound3D("sounds/cash_register.mp3", player.getLocation(), 200, 1); - CharacterManager.getCharacterStateByPlayer(player).getWearableWorldObject().requestUnwear(player, true); - - UIStateManager.sendNotification(player, ToastTypeEnum.SUCCESS, "Vous avez vendu votre ressource pour " + reward + "$"); - return false; - } - - @Override - public boolean hasLevelRequired(Player player) { - return true; - } - - @Override - public boolean onUse(Player player) { - return true; - } - - @Override - public boolean canBeUse() { - return false; - } -} +package fr.yuki.yrpf.job.tools; + +import fr.yuki.yrpf.character.CharacterState; +import fr.yuki.yrpf.enums.ItemTemplateEnum; +import fr.yuki.yrpf.enums.JobEnum; +import fr.yuki.yrpf.enums.ToastTypeEnum; +import fr.yuki.yrpf.job.WearableWorldObject; +import fr.yuki.yrpf.manager.*; +import fr.yuki.yrpf.model.JobTool; +import net.onfirenetwork.onsetjava.entity.Player; + +public class GarbageBin implements JobToolHandler { + private JobTool jobTool; + + public GarbageBin(JobTool jobTool) { + this.jobTool = jobTool; + } + + @Override + public boolean canInteract(Player player) { + CharacterState state = CharacterManager.getCharacterStateByPlayer(player); + if(state.getWearableWorldObject() == null) return false; + if(state.getWearableWorldObject().getModelId() != 514) return false; + return true; + } + + @Override + public boolean onUnwear(Player player, WearableWorldObject wearableWorldObject) { + JobManager.addExp(player, JobEnum.GARBAGE.type, 20); + + int reward = this.jobTool.getReward(); + if(JobManager.getJobLevelForPlayer(player, this.jobTool.getJobType()) == 2) { + reward = (int)Math.floor(reward * 1.5d); + } + + InventoryManager.addItemToPlayer(player, ItemTemplateEnum.CASH.id, reward, true); + SoundManager.playSound3D("sounds/cash_register.mp3", player.getLocation(), 200, 1); + CharacterManager.getCharacterStateByPlayer(player).getWearableWorldObject().requestUnwear(player, true); + + UIStateManager.sendNotification(player, ToastTypeEnum.SUCCESS, "Vous avez vendu votre ressource pour " + reward + "$"); + return false; + } + + @Override + public boolean hasLevelRequired(Player player) { + return true; + } + + @Override + public boolean onUse(Player player) { + return true; + } + + @Override + public boolean canBeUse() { + return false; + } +} diff --git a/src/main/java/fr/yuki/YukiRPFramework/job/tools/Generator.java b/src/main/java/fr/yuki/yrpf/job/tools/Generator.java similarity index 74% rename from src/main/java/fr/yuki/YukiRPFramework/job/tools/Generator.java rename to src/main/java/fr/yuki/yrpf/job/tools/Generator.java index d7605ec..2b93f8a 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/job/tools/Generator.java +++ b/src/main/java/fr/yuki/yrpf/job/tools/Generator.java @@ -1,97 +1,94 @@ -package fr.yuki.YukiRPFramework.job.tools; - -import fr.yuki.YukiRPFramework.character.CharacterState; -import fr.yuki.YukiRPFramework.enums.ToastTypeEnum; -import fr.yuki.YukiRPFramework.i18n.I18n; -import fr.yuki.YukiRPFramework.job.WearableWorldObject; -import fr.yuki.YukiRPFramework.manager.CharacterManager; -import fr.yuki.YukiRPFramework.manager.UIStateManager; -import fr.yuki.YukiRPFramework.manager.WorldManager; -import fr.yuki.YukiRPFramework.modding.LoopSound3D; -import fr.yuki.YukiRPFramework.model.Account; -import fr.yuki.YukiRPFramework.model.JobTool; -import net.onfirenetwork.onsetjava.Onset; -import net.onfirenetwork.onsetjava.data.Vector; -import net.onfirenetwork.onsetjava.entity.Player; - -import java.util.ArrayList; - -public class Generator implements JobToolHandler { - private final JobTool jobTool; - private final LoopSound3D loopSound3D; - private boolean isOn; - private int fuel; - - public Generator(JobTool jobTool) { - this.jobTool = jobTool; - this.fuel = 0; - this.isOn = false; - this.loopSound3D = new LoopSound3D("sounds/power_generator.mp3", - new Vector(this.jobTool.getX(), this.jobTool.getY(), this.jobTool.getZ()), 2000, 0.05, - 1000*90); - } - - @Override - public boolean canInteract(Player player) { - CharacterState state = CharacterManager.getCharacterStateByPlayer(player); - if(state.getWearableWorldObject() == null) return false; - return true; - } - - @Override - public boolean onUnwear(Player player, WearableWorldObject wearableWorldObject) { - return false; - } - - @Override - public boolean hasLevelRequired(Player player) { - return true; - } - - @Override - public boolean onUse(Player player) { - Account account = WorldManager.getPlayerAccount(player); - if(!this.isOn) { - if(this.fuel > 0) - this.setOn(true); - else - UIStateManager.sendNotification(player, ToastTypeEnum.ERROR, I18n.t(account.getLang(), "toast.generator.no_fuel")); - } else { - this.setOn(false); - } - return true; - } - - @Override - public boolean canBeUse() { - return true; - } - - public void tickFuel() { - if(!this.isOn) return; - - this.fuel -= 1; - if(this.fuel <= 0) this.setOn(false); - } - - public boolean isOn() { - return isOn; - } - - public void setOn(boolean on) { - isOn = on; - if(isOn) { - this.loopSound3D.start(); - } else { - this.loopSound3D.stop(); - } - } - - public int getFuel() { - return fuel; - } - - public void setFuel(int fuel) { - this.fuel = fuel; - } -} +package fr.yuki.yrpf.job.tools; + +import fr.yuki.yrpf.character.CharacterState; +import fr.yuki.yrpf.enums.ToastTypeEnum; +import fr.yuki.yrpf.i18n.I18n; +import fr.yuki.yrpf.job.WearableWorldObject; +import fr.yuki.yrpf.manager.CharacterManager; +import fr.yuki.yrpf.manager.UIStateManager; +import fr.yuki.yrpf.manager.WorldManager; +import fr.yuki.yrpf.modding.LoopSound3D; +import fr.yuki.yrpf.model.Account; +import fr.yuki.yrpf.model.JobTool; +import net.onfirenetwork.onsetjava.data.Vector; +import net.onfirenetwork.onsetjava.entity.Player; + +public class Generator implements JobToolHandler { + private final JobTool jobTool; + private final LoopSound3D loopSound3D; + private boolean isOn; + private int fuel; + + public Generator(JobTool jobTool) { + this.jobTool = jobTool; + this.fuel = 0; + this.isOn = false; + this.loopSound3D = new LoopSound3D("sounds/power_generator.mp3", + new Vector(this.jobTool.getX(), this.jobTool.getY(), this.jobTool.getZ()), 2000, 0.05, + 1000*90); + } + + @Override + public boolean canInteract(Player player) { + CharacterState state = CharacterManager.getCharacterStateByPlayer(player); + if(state.getWearableWorldObject() == null) return false; + return true; + } + + @Override + public boolean onUnwear(Player player, WearableWorldObject wearableWorldObject) { + return false; + } + + @Override + public boolean hasLevelRequired(Player player) { + return true; + } + + @Override + public boolean onUse(Player player) { + Account account = WorldManager.getPlayerAccount(player); + if(!this.isOn) { + if(this.fuel > 0) + this.setOn(true); + else + UIStateManager.sendNotification(player, ToastTypeEnum.ERROR, I18n.t(account.getLang(), "toast.generator.no_fuel")); + } else { + this.setOn(false); + } + return true; + } + + @Override + public boolean canBeUse() { + return true; + } + + public void tickFuel() { + if(!this.isOn) return; + + this.fuel -= 1; + if(this.fuel <= 0) this.setOn(false); + } + + public boolean isOn() { + return isOn; + } + + public void setOn(boolean on) { + isOn = on; + if(isOn) { + this.loopSound3D.start(); + } else { + this.loopSound3D.stop(); + } + } + + public int getFuel() { + return fuel; + } + + public void setFuel(int fuel) { + this.fuel = fuel; + } +} diff --git a/src/main/java/fr/yuki/YukiRPFramework/job/tools/GrowBox.java b/src/main/java/fr/yuki/yrpf/job/tools/GrowBox.java similarity index 86% rename from src/main/java/fr/yuki/YukiRPFramework/job/tools/GrowBox.java rename to src/main/java/fr/yuki/yrpf/job/tools/GrowBox.java index 49cf17c..e9c591f 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/job/tools/GrowBox.java +++ b/src/main/java/fr/yuki/yrpf/job/tools/GrowBox.java @@ -1,247 +1,245 @@ -package fr.yuki.YukiRPFramework.job.tools; - -import com.google.gson.Gson; -import fr.yuki.YukiRPFramework.character.CharacterState; -import fr.yuki.YukiRPFramework.dao.GrowboxDAO; -import fr.yuki.YukiRPFramework.enums.ItemTemplateEnum; -import fr.yuki.YukiRPFramework.enums.JobEnum; -import fr.yuki.YukiRPFramework.enums.ToastTypeEnum; -import fr.yuki.YukiRPFramework.i18n.I18n; -import fr.yuki.YukiRPFramework.inventory.Inventory; -import fr.yuki.YukiRPFramework.inventory.InventoryItem; -import fr.yuki.YukiRPFramework.job.WearableWorldObject; -import fr.yuki.YukiRPFramework.job.tools.growbox.Pot; -import fr.yuki.YukiRPFramework.manager.*; -import fr.yuki.YukiRPFramework.modding.LoopSound3D; -import fr.yuki.YukiRPFramework.model.Account; -import fr.yuki.YukiRPFramework.model.GrowboxModel; -import fr.yuki.YukiRPFramework.model.JobTool; -import fr.yuki.YukiRPFramework.net.payload.AddGrowboxMenuItemPayload; -import fr.yuki.YukiRPFramework.net.payload.AddToastPayload; -import fr.yuki.YukiRPFramework.net.payload.SetGrowboxPayload; -import fr.yuki.YukiRPFramework.vehicle.storeLayout.StoreLayoutTransform; -import net.onfirenetwork.onsetjava.Onset; -import net.onfirenetwork.onsetjava.data.Vector; -import net.onfirenetwork.onsetjava.entity.Player; - -import java.sql.SQLException; -import java.util.ArrayList; -import java.util.UUID; - -public class GrowBox implements JobToolHandler { - private JobTool jobTool; - private ArrayList pots; - private ArrayList layoutTransforms; - private LoopSound3D loopSound3D; - private GrowboxModel growboxModel; - - public GrowBox(JobTool jobTool) { - this.jobTool = jobTool; - this.pots = new ArrayList<>(); - this.loopSound3D = new LoopSound3D("sounds/white_noise.mp3", - new Vector(this.jobTool.getX(), this.jobTool.getY(), this.jobTool.getZ()), 1000, 0.10, - 1000*60); - - this.layoutTransforms = new ArrayList<>(); - this.layoutTransforms.add(new StoreLayoutTransform(0, new Vector(0, 0, 0), new Vector(0, 0, 0), new Vector(1.50, 1.50, 2.40))); - this.layoutTransforms.add(new StoreLayoutTransform(1, new Vector(50, 0, 0), new Vector(0, 0, 0), new Vector(1.50, 1.50, 2.40))); - this.layoutTransforms.add(new StoreLayoutTransform(2, new Vector(0, 50, 0), new Vector(0, 0, 0), new Vector(1.50, 1.50, 2.40))); - this.layoutTransforms.add(new StoreLayoutTransform(3, new Vector(50, 50, 0), new Vector(0, 0, 0), new Vector(1.50, 1.50, 2.40))); - this.layoutTransforms.add(new StoreLayoutTransform(3, new Vector(0, -50, 0), new Vector(0, 0, 0), new Vector(1.50, 1.50, 2.40))); - this.layoutTransforms.add(new StoreLayoutTransform(3, new Vector(50, -50, 0), new Vector(0, 0, 0), new Vector(1.50, 1.50, 2.40))); - } - - private void resyncPots() { - for(int i = 0; i < this.pots.size(); i++) { - this.pots.get(i).destroyWorldObject(); - this.pots.get(i).spawnWorldObject(this.layoutTransforms.get(i)); - } - } - - public int getMaxPots() { - return 6; - } - - @Override - public boolean canInteract(Player player) { - CharacterState state = CharacterManager.getCharacterStateByPlayer(player); - if(state.getWearableWorldObject() == null) return false; - if(state.getWearableWorldObject().getModelId() != 554) return false; - return true; - } - - @Override - public boolean onUnwear(Player player, WearableWorldObject wearableWorldObject) { - switch (wearableWorldObject.getModelId()) { - case 554: // Pot - return this.addPot(player, wearableWorldObject); - } - return false; - } - - @Override - public boolean hasLevelRequired(Player player) { - return true; - } - - @Override - public boolean onUse(Player player) { - if(!UIStateManager.handleUIToogle(player, "growboxmenu")) { - CharacterManager.setCharacterFreeze(player, false); - return true; - } - CharacterManager.setCharacterFreeze(player, true); - this.handlePotsRequest(player); - return true; - } - - public void handlePotsRequest(Player player) { - player.callRemoteEvent("GlobalUI:DispatchToUI", new Gson().toJson(new SetGrowboxPayload(this.jobTool.getUuid()))); - for(Pot pot : this.pots) { - player.callRemoteEvent("GlobalUI:DispatchToUI", new Gson().toJson(new AddGrowboxMenuItemPayload(pot.getUuid(), - 554, pot.getWater(), pot.getState(), pot.isSeed()))); - } - } - - @Override - public boolean canBeUse() { - return true; - } - - public void destroy(Player player) { - if(player != null) { - UIStateManager.handleUIToogle(player, "growboxmenu"); - CharacterManager.setCharacterFreeze(player, false); - } - - // Destroy pots - for(Pot pot : this.pots) { - pot.destroyWorldObject(); - } - pots.clear(); - - // Destroy growbox - this.jobTool.destroy(); - try { - GrowboxDAO.deleteGrowbox(this.growboxModel); - } catch (SQLException throwables) { - throwables.printStackTrace(); - } - } - - public boolean addPot(Player player, WearableWorldObject wearableWorldObject) { - Onset.print("Add pot request for the growbox"); - Account account = WorldManager.getPlayerAccount(player); - if(this.pots.size() + 1 > this.getMaxPots()) { - UIStateManager.sendNotification(player, ToastTypeEnum.ERROR, I18n.t(account.getLang(), "toast.vehicle.no_space_left")); - return false; - } - - Pot pot = new Pot(this); - this.pots.add(pot); - - this.resyncPots(); - return true; - } - - public void fillPotWater(Player player, String potId) { - Account account = WorldManager.getPlayerAccount(player); - Pot pot = this.pots.stream().filter(x -> x.getUuid().equals(potId)).findFirst().orElse(null); - if(pot == null) { - return; - } - Inventory inventory = InventoryManager.getMainInventory(player); - InventoryItem waterItem = inventory.getItemByType(ItemTemplateEnum.WATER.id); - if(waterItem == null) { - UIStateManager.sendNotification(player, ToastTypeEnum.ERROR, I18n.t(account.getLang(), "toast.growbox.no_water")); - return; - } - if(pot.getWater() == 100) return; - pot.setWater(100); - inventory.removeItem(waterItem, 1); - player.callRemoteEvent("GlobalUI:DispatchToUI", new Gson().toJson(new AddGrowboxMenuItemPayload(pot.getUuid(), - 554, pot.getWater(), pot.getState(), pot.isSeed()))); - } - - public void fillPotSeed(Player player, String potId) { - Account account = WorldManager.getPlayerAccount(player); - Pot pot = this.pots.stream().filter(x -> x.getUuid().equals(potId)).findFirst().orElse(null); - if(pot == null) { - return; - } - Inventory inventory = InventoryManager.getMainInventory(player); - InventoryItem seedItem = inventory.getItemByType(ItemTemplateEnum.WEED_SEED.id); - if(seedItem == null) { - UIStateManager.sendNotification(player, ToastTypeEnum.ERROR, I18n.t(account.getLang(), "toast.growbox.no_seed")); - return; - } - if(pot.isSeed()) return; - pot.setSeed(true); - pot.spawnSeed(); - inventory.removeItem(seedItem, 1); - player.callRemoteEvent("GlobalUI:DispatchToUI", new Gson().toJson(new AddGrowboxMenuItemPayload(pot.getUuid(), - 554, pot.getWater(), pot.getState(), pot.isSeed()))); - JobManager.addExp(player, JobEnum.WEED.type, 15); - } - - public void harvestPot(Player player, String potId) { - Account account = WorldManager.getPlayerAccount(player); - Pot pot = this.pots.stream().filter(x -> x.getUuid().equals(potId)).findFirst().orElse(null); - if(pot == null) { - return; - } - if(pot.getState() < 100) return; - if(InventoryManager.addItemToPlayer(player, ItemTemplateEnum.WEED.id, 1, true) == null) { - return; - } - pot.removeSeed(); - - player.callRemoteEvent("GlobalUI:DispatchToUI", new Gson().toJson(new AddGrowboxMenuItemPayload(pot.getUuid(), - 554, pot.getWater(), pot.getState(), pot.isSeed()))); - } - - public void takePot(Player player, String potId) { - Account account = WorldManager.getPlayerAccount(player); - Pot pot = this.pots.stream().filter(x -> x.getUuid().equals(potId)).findFirst().orElse(null); - if(pot == null) { - return; - } - if(InventoryManager.addItemToPlayer(player, ItemTemplateEnum.POT.id, 1, true) == null) { - return; - } - pot.destroyWorldObject(); - this.pots.remove(pot); - CharacterManager.setCharacterFreeze(player, false); - UIStateManager.handleUIToogle(player, "growboxmenu"); - } - - public void tickGrow() { - Generator generator = GrowboxManager.getGeneratorOnNearby(new Vector(this.jobTool.getX(), this.jobTool.getY(), this.jobTool.getZ()), - 1500); - if(generator == null) { - if(this.loopSound3D.isActive()) this.loopSound3D.stop(); - return; - } else { - if(!this.loopSound3D.isActive()) this.loopSound3D.start(); - } - for(Pot pot : this.pots) { - pot.grow(); - } - } - - public JobTool getJobTool() { - return jobTool; - } - - public LoopSound3D getLoopSound3D() { - return loopSound3D; - } - - public GrowboxModel getGrowboxModel() { - return growboxModel; - } - - public void setGrowboxModel(GrowboxModel growboxModel) { - this.growboxModel = growboxModel; - } -} +package fr.yuki.yrpf.job.tools; + +import com.google.gson.Gson; +import fr.yuki.yrpf.character.CharacterState; +import fr.yuki.yrpf.dao.GrowboxDAO; +import fr.yuki.yrpf.enums.ItemTemplateEnum; +import fr.yuki.yrpf.enums.JobEnum; +import fr.yuki.yrpf.enums.ToastTypeEnum; +import fr.yuki.yrpf.i18n.I18n; +import fr.yuki.yrpf.inventory.Inventory; +import fr.yuki.yrpf.inventory.InventoryItem; +import fr.yuki.yrpf.job.WearableWorldObject; +import fr.yuki.yrpf.job.tools.growbox.Pot; +import fr.yuki.yrpf.manager.*; +import fr.yuki.yrpf.modding.LoopSound3D; +import fr.yuki.yrpf.model.Account; +import fr.yuki.yrpf.model.GrowboxModel; +import fr.yuki.yrpf.model.JobTool; +import fr.yuki.yrpf.net.payload.AddGrowboxMenuItemPayload; +import fr.yuki.yrpf.net.payload.SetGrowboxPayload; +import fr.yuki.yrpf.vehicle.storeLayout.StoreLayoutTransform; +import net.onfirenetwork.onsetjava.Onset; +import net.onfirenetwork.onsetjava.data.Vector; +import net.onfirenetwork.onsetjava.entity.Player; + +import java.sql.SQLException; +import java.util.ArrayList; + +public class GrowBox implements JobToolHandler { + private JobTool jobTool; + private ArrayList pots; + private ArrayList layoutTransforms; + private LoopSound3D loopSound3D; + private GrowboxModel growboxModel; + + public GrowBox(JobTool jobTool) { + this.jobTool = jobTool; + this.pots = new ArrayList<>(); + this.loopSound3D = new LoopSound3D("sounds/white_noise.mp3", + new Vector(this.jobTool.getX(), this.jobTool.getY(), this.jobTool.getZ()), 1000, 0.10, + 1000*60); + + this.layoutTransforms = new ArrayList<>(); + this.layoutTransforms.add(new StoreLayoutTransform(0, new Vector(0, 0, 0), new Vector(0, 0, 0), new Vector(1.50, 1.50, 2.40))); + this.layoutTransforms.add(new StoreLayoutTransform(1, new Vector(50, 0, 0), new Vector(0, 0, 0), new Vector(1.50, 1.50, 2.40))); + this.layoutTransforms.add(new StoreLayoutTransform(2, new Vector(0, 50, 0), new Vector(0, 0, 0), new Vector(1.50, 1.50, 2.40))); + this.layoutTransforms.add(new StoreLayoutTransform(3, new Vector(50, 50, 0), new Vector(0, 0, 0), new Vector(1.50, 1.50, 2.40))); + this.layoutTransforms.add(new StoreLayoutTransform(3, new Vector(0, -50, 0), new Vector(0, 0, 0), new Vector(1.50, 1.50, 2.40))); + this.layoutTransforms.add(new StoreLayoutTransform(3, new Vector(50, -50, 0), new Vector(0, 0, 0), new Vector(1.50, 1.50, 2.40))); + } + + private void resyncPots() { + for(int i = 0; i < this.pots.size(); i++) { + this.pots.get(i).destroyWorldObject(); + this.pots.get(i).spawnWorldObject(this.layoutTransforms.get(i)); + } + } + + public int getMaxPots() { + return 6; + } + + @Override + public boolean canInteract(Player player) { + CharacterState state = CharacterManager.getCharacterStateByPlayer(player); + if(state.getWearableWorldObject() == null) return false; + if(state.getWearableWorldObject().getModelId() != 554) return false; + return true; + } + + @Override + public boolean onUnwear(Player player, WearableWorldObject wearableWorldObject) { + switch (wearableWorldObject.getModelId()) { + case 554: // Pot + return this.addPot(player, wearableWorldObject); + } + return false; + } + + @Override + public boolean hasLevelRequired(Player player) { + return true; + } + + @Override + public boolean onUse(Player player) { + if(!UIStateManager.handleUIToogle(player, "growboxmenu")) { + CharacterManager.setCharacterFreeze(player, false); + return true; + } + CharacterManager.setCharacterFreeze(player, true); + this.handlePotsRequest(player); + return true; + } + + public void handlePotsRequest(Player player) { + player.callRemoteEvent("GlobalUI:DispatchToUI", new Gson().toJson(new SetGrowboxPayload(this.jobTool.getUuid()))); + for(Pot pot : this.pots) { + player.callRemoteEvent("GlobalUI:DispatchToUI", new Gson().toJson(new AddGrowboxMenuItemPayload(pot.getUuid(), + 554, pot.getWater(), pot.getState(), pot.isSeed()))); + } + } + + @Override + public boolean canBeUse() { + return true; + } + + public void destroy(Player player) { + if(player != null) { + UIStateManager.handleUIToogle(player, "growboxmenu"); + CharacterManager.setCharacterFreeze(player, false); + } + + // Destroy pots + for(Pot pot : this.pots) { + pot.destroyWorldObject(); + } + pots.clear(); + + // Destroy growbox + this.jobTool.destroy(); + try { + GrowboxDAO.deleteGrowbox(this.growboxModel); + } catch (SQLException throwables) { + throwables.printStackTrace(); + } + } + + public boolean addPot(Player player, WearableWorldObject wearableWorldObject) { + Onset.print("Add pot request for the growbox"); + Account account = WorldManager.getPlayerAccount(player); + if(this.pots.size() + 1 > this.getMaxPots()) { + UIStateManager.sendNotification(player, ToastTypeEnum.ERROR, I18n.t(account.getLang(), "toast.vehicle.no_space_left")); + return false; + } + + Pot pot = new Pot(this); + this.pots.add(pot); + + this.resyncPots(); + return true; + } + + public void fillPotWater(Player player, String potId) { + Account account = WorldManager.getPlayerAccount(player); + Pot pot = this.pots.stream().filter(x -> x.getUuid().equals(potId)).findFirst().orElse(null); + if(pot == null) { + return; + } + Inventory inventory = InventoryManager.getMainInventory(player); + InventoryItem waterItem = inventory.getItemByType(ItemTemplateEnum.WATER.id); + if(waterItem == null) { + UIStateManager.sendNotification(player, ToastTypeEnum.ERROR, I18n.t(account.getLang(), "toast.growbox.no_water")); + return; + } + if(pot.getWater() == 100) return; + pot.setWater(100); + inventory.removeItem(waterItem, 1); + player.callRemoteEvent("GlobalUI:DispatchToUI", new Gson().toJson(new AddGrowboxMenuItemPayload(pot.getUuid(), + 554, pot.getWater(), pot.getState(), pot.isSeed()))); + } + + public void fillPotSeed(Player player, String potId) { + Account account = WorldManager.getPlayerAccount(player); + Pot pot = this.pots.stream().filter(x -> x.getUuid().equals(potId)).findFirst().orElse(null); + if(pot == null) { + return; + } + Inventory inventory = InventoryManager.getMainInventory(player); + InventoryItem seedItem = inventory.getItemByType(ItemTemplateEnum.WEED_SEED.id); + if(seedItem == null) { + UIStateManager.sendNotification(player, ToastTypeEnum.ERROR, I18n.t(account.getLang(), "toast.growbox.no_seed")); + return; + } + if(pot.isSeed()) return; + pot.setSeed(true); + pot.spawnSeed(); + inventory.removeItem(seedItem, 1); + player.callRemoteEvent("GlobalUI:DispatchToUI", new Gson().toJson(new AddGrowboxMenuItemPayload(pot.getUuid(), + 554, pot.getWater(), pot.getState(), pot.isSeed()))); + JobManager.addExp(player, JobEnum.WEED.type, 15); + } + + public void harvestPot(Player player, String potId) { + Account account = WorldManager.getPlayerAccount(player); + Pot pot = this.pots.stream().filter(x -> x.getUuid().equals(potId)).findFirst().orElse(null); + if(pot == null) { + return; + } + if(pot.getState() < 100) return; + if(InventoryManager.addItemToPlayer(player, ItemTemplateEnum.WEED.id, 1, true) == null) { + return; + } + pot.removeSeed(); + + player.callRemoteEvent("GlobalUI:DispatchToUI", new Gson().toJson(new AddGrowboxMenuItemPayload(pot.getUuid(), + 554, pot.getWater(), pot.getState(), pot.isSeed()))); + } + + public void takePot(Player player, String potId) { + Account account = WorldManager.getPlayerAccount(player); + Pot pot = this.pots.stream().filter(x -> x.getUuid().equals(potId)).findFirst().orElse(null); + if(pot == null) { + return; + } + if(InventoryManager.addItemToPlayer(player, ItemTemplateEnum.POT.id, 1, true) == null) { + return; + } + pot.destroyWorldObject(); + this.pots.remove(pot); + CharacterManager.setCharacterFreeze(player, false); + UIStateManager.handleUIToogle(player, "growboxmenu"); + } + + public void tickGrow() { + Generator generator = GrowboxManager.getGeneratorOnNearby(new Vector(this.jobTool.getX(), this.jobTool.getY(), this.jobTool.getZ()), + 1500); + if(generator == null) { + if(this.loopSound3D.isActive()) this.loopSound3D.stop(); + return; + } else { + if(!this.loopSound3D.isActive()) this.loopSound3D.start(); + } + for(Pot pot : this.pots) { + pot.grow(); + } + } + + public JobTool getJobTool() { + return jobTool; + } + + public LoopSound3D getLoopSound3D() { + return loopSound3D; + } + + public GrowboxModel getGrowboxModel() { + return growboxModel; + } + + public void setGrowboxModel(GrowboxModel growboxModel) { + this.growboxModel = growboxModel; + } +} diff --git a/src/main/java/fr/yuki/YukiRPFramework/job/tools/JobToolHandler.java b/src/main/java/fr/yuki/yrpf/job/tools/JobToolHandler.java similarity index 73% rename from src/main/java/fr/yuki/YukiRPFramework/job/tools/JobToolHandler.java rename to src/main/java/fr/yuki/yrpf/job/tools/JobToolHandler.java index 00255af..d139e60 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/job/tools/JobToolHandler.java +++ b/src/main/java/fr/yuki/yrpf/job/tools/JobToolHandler.java @@ -1,12 +1,12 @@ -package fr.yuki.YukiRPFramework.job.tools; - -import fr.yuki.YukiRPFramework.job.WearableWorldObject; -import net.onfirenetwork.onsetjava.entity.Player; - -public interface JobToolHandler { - boolean canInteract(Player player); - boolean onUnwear(Player player, WearableWorldObject wearableWorldObject); - boolean hasLevelRequired(Player player); - boolean onUse(Player player); - boolean canBeUse(); -} +package fr.yuki.yrpf.job.tools; + +import fr.yuki.yrpf.job.WearableWorldObject; +import net.onfirenetwork.onsetjava.entity.Player; + +public interface JobToolHandler { + boolean canInteract(Player player); + boolean onUnwear(Player player, WearableWorldObject wearableWorldObject); + boolean hasLevelRequired(Player player); + boolean onUse(Player player); + boolean canBeUse(); +} diff --git a/src/main/java/fr/yuki/YukiRPFramework/job/tools/Sawmill.java b/src/main/java/fr/yuki/yrpf/job/tools/Sawmill.java similarity index 82% rename from src/main/java/fr/yuki/YukiRPFramework/job/tools/Sawmill.java rename to src/main/java/fr/yuki/yrpf/job/tools/Sawmill.java index 514f3ac..8623aeb 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/job/tools/Sawmill.java +++ b/src/main/java/fr/yuki/yrpf/job/tools/Sawmill.java @@ -1,87 +1,87 @@ -package fr.yuki.YukiRPFramework.job.tools; - -import fr.yuki.YukiRPFramework.character.CharacterJobLevel; -import fr.yuki.YukiRPFramework.character.CharacterState; -import fr.yuki.YukiRPFramework.character.CharacterToolAnimation; -import fr.yuki.YukiRPFramework.enums.JobEnum; -import fr.yuki.YukiRPFramework.enums.ToastTypeEnum; -import fr.yuki.YukiRPFramework.i18n.I18n; -import fr.yuki.YukiRPFramework.job.WearableWorldObject; -import fr.yuki.YukiRPFramework.manager.*; -import fr.yuki.YukiRPFramework.model.Account; -import fr.yuki.YukiRPFramework.model.JobTool; -import net.onfirenetwork.onsetjava.Onset; -import net.onfirenetwork.onsetjava.data.Vector; -import net.onfirenetwork.onsetjava.entity.Player; -import net.onfirenetwork.onsetjava.entity.WorldObject; -import net.onfirenetwork.onsetjava.enums.Animation; - -import java.util.ArrayList; - -public class Sawmill implements JobToolHandler { - private JobTool jobTool; - private boolean isAvailable; - - public Sawmill(JobTool jobTool) { - this.jobTool = jobTool; - this.isAvailable = true; - } - - @Override - public boolean canInteract(Player player) { - CharacterState state = CharacterManager.getCharacterStateByPlayer(player); - if(state.getWearableWorldObject() == null) return false; - if(state.getWearableWorldObject().getModelId() != 50001) return false; - return true; - } - - @Override - public boolean onUnwear(Player player, WearableWorldObject wearableWorldObject) { - Account account = WorldManager.getPlayerAccount(player); - if(!this.isAvailable) { - UIStateManager.sendNotification(player, ToastTypeEnum.ERROR, I18n.t(account.getLang(), "toast.tool.already_used")); - return false; - } - this.isAvailable = false; - WorldObject worldObject = Onset.getServer().createObject(new Vector(0,0,0), wearableWorldObject.getModelId()); - if(ModdingManager.isCustomModelId(wearableWorldObject.getModelId())) - ModdingManager.assignCustomModel(worldObject, wearableWorldObject.getModelId()); - SoundManager.playSound3D("sounds/saw_mill_cut.mp3", player.getLocation(), 1000, 0.8); - JobManager.addExp(player, JobEnum.LUMBERJACK.type, 20); - worldObject.attach(this.jobTool.getWorldObject(), new Vector(0, 0,160), new Vector(0, 0, 0), ""); - Onset.delay(8000, () -> { - worldObject.destroy(); - this.isAvailable = true; - - // Create the plank - WearableWorldObject woodPlank = new WearableWorldObject(1574, true, - Animation.CARRY_SHOULDER_IDLE, - new CharacterToolAnimation(1574, new Vector(10, 10 ,20), - new Vector(0, 0, 90), new Vector(0.5, 0.5, 0.5), "hand_r"), - new Vector(this.jobTool.getX() + 100, this.jobTool.getY() + 100, this.jobTool.getZ() + 50)); - JobManager.getWearableWorldObjects().add(woodPlank); - }); - return true; - } - - @Override - public boolean hasLevelRequired(Player player) { - Account account = WorldManager.getPlayerAccount(player); - ArrayList characterJobLevels = account.decodeCharacterJob(); - CharacterJobLevel characterJobLevel = characterJobLevels.stream().filter(x -> x.getJobId().equals(JobEnum.LUMBERJACK.type)) - .findFirst().orElse(null); - if(characterJobLevel == null) return false; - if(characterJobLevel.getJobLevel().getLevel() < 2) return false; - return true; - } - - @Override - public boolean onUse(Player player) { - return false; - } - - @Override - public boolean canBeUse() { - return false; - } -} +package fr.yuki.yrpf.job.tools; + +import fr.yuki.yrpf.character.CharacterJobLevel; +import fr.yuki.yrpf.character.CharacterState; +import fr.yuki.yrpf.character.CharacterToolAnimation; +import fr.yuki.yrpf.enums.JobEnum; +import fr.yuki.yrpf.enums.ToastTypeEnum; +import fr.yuki.yrpf.i18n.I18n; +import fr.yuki.yrpf.job.WearableWorldObject; +import fr.yuki.yrpf.manager.*; +import fr.yuki.yrpf.model.Account; +import fr.yuki.yrpf.model.JobTool; +import net.onfirenetwork.onsetjava.Onset; +import net.onfirenetwork.onsetjava.data.Vector; +import net.onfirenetwork.onsetjava.entity.Player; +import net.onfirenetwork.onsetjava.entity.WorldObject; +import net.onfirenetwork.onsetjava.enums.Animation; + +import java.util.ArrayList; + +public class Sawmill implements JobToolHandler { + private JobTool jobTool; + private boolean isAvailable; + + public Sawmill(JobTool jobTool) { + this.jobTool = jobTool; + this.isAvailable = true; + } + + @Override + public boolean canInteract(Player player) { + CharacterState state = CharacterManager.getCharacterStateByPlayer(player); + if(state.getWearableWorldObject() == null) return false; + if(state.getWearableWorldObject().getModelId() != 50001) return false; + return true; + } + + @Override + public boolean onUnwear(Player player, WearableWorldObject wearableWorldObject) { + Account account = WorldManager.getPlayerAccount(player); + if(!this.isAvailable) { + UIStateManager.sendNotification(player, ToastTypeEnum.ERROR, I18n.t(account.getLang(), "toast.tool.already_used")); + return false; + } + this.isAvailable = false; + WorldObject worldObject = Onset.getServer().createObject(new Vector(0,0,0), wearableWorldObject.getModelId()); + if(ModdingManager.isCustomModelId(wearableWorldObject.getModelId())) + ModdingManager.assignCustomModel(worldObject, wearableWorldObject.getModelId()); + SoundManager.playSound3D("sounds/saw_mill_cut.mp3", player.getLocation(), 1000, 0.8); + JobManager.addExp(player, JobEnum.LUMBERJACK.type, 20); + worldObject.attach(this.jobTool.getWorldObject(), new Vector(0, 0,160), new Vector(0, 0, 0), ""); + Onset.delay(8000, () -> { + worldObject.destroy(); + this.isAvailable = true; + + // Create the plank + WearableWorldObject woodPlank = new WearableWorldObject(1574, true, + Animation.CARRY_SHOULDER_IDLE, + new CharacterToolAnimation(1574, new Vector(10, 10 ,20), + new Vector(0, 0, 90), new Vector(0.5, 0.5, 0.5), "hand_r"), + new Vector(this.jobTool.getX() + 100, this.jobTool.getY() + 100, this.jobTool.getZ() + 50)); + JobManager.getWearableWorldObjects().add(woodPlank); + }); + return true; + } + + @Override + public boolean hasLevelRequired(Player player) { + Account account = WorldManager.getPlayerAccount(player); + ArrayList characterJobLevels = account.decodeCharacterJob(); + CharacterJobLevel characterJobLevel = characterJobLevels.stream().filter(x -> x.getJobId().equals(JobEnum.LUMBERJACK.type)) + .findFirst().orElse(null); + if(characterJobLevel == null) return false; + if(characterJobLevel.getJobLevel().getLevel() < 2) return false; + return true; + } + + @Override + public boolean onUse(Player player) { + return false; + } + + @Override + public boolean canBeUse() { + return false; + } +} diff --git a/src/main/java/fr/yuki/YukiRPFramework/job/tools/growbox/Pot.java b/src/main/java/fr/yuki/yrpf/job/tools/growbox/Pot.java similarity index 91% rename from src/main/java/fr/yuki/YukiRPFramework/job/tools/growbox/Pot.java rename to src/main/java/fr/yuki/yrpf/job/tools/growbox/Pot.java index c965a23..6f68627 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/job/tools/growbox/Pot.java +++ b/src/main/java/fr/yuki/yrpf/job/tools/growbox/Pot.java @@ -1,114 +1,114 @@ -package fr.yuki.YukiRPFramework.job.tools.growbox; - -import fr.yuki.YukiRPFramework.job.tools.GrowBox; -import fr.yuki.YukiRPFramework.vehicle.storeLayout.StoreLayoutTransform; -import net.onfirenetwork.onsetjava.Onset; -import net.onfirenetwork.onsetjava.data.Vector; -import net.onfirenetwork.onsetjava.entity.WorldObject; - -import java.util.UUID; - -public class Pot { - private String uuid; - private GrowBox growBox; - private WorldObject worldObject; - private int water; - private int state; - private boolean seed; - private int currentRate; - private WorldObject seedObject; - - public Pot(GrowBox growBox) { - this.uuid = UUID.randomUUID().toString(); - this.growBox = growBox; - this.water = 0; - this.state = 0; - this.currentRate = 1; - this.seed = false; - } - - public void spawnWorldObject(StoreLayoutTransform transform) { - this.worldObject = Onset.getServer().createObject(new Vector(0, 0,0), 554); - this.worldObject.attach(this.growBox.getJobTool().getWorldObject(), transform.getPosition(), transform.getRotation()); - this.worldObject.setScale(transform.getScale()); - this.spawnSeed(); - } - - public void destroyWorldObject() { - if(this.worldObject != null) { - this.worldObject.destroy(); - this.worldObject = null; - if(this.seedObject != null) { - this.seedObject.destroy(); - this.seedObject = null; - } - } - } - - public void spawnSeed() { - if(this.seedObject != null) return; - this.seedObject = Onset.getServer().createObject(new Vector(0, 0, 0), 63); - this.seedObject.attach(this.worldObject, new Vector(0, 0, 18), new Vector(0, 0, 0), "None"); - double scaleRate = ((double)this.state / 100d); - this.seedObject.setScale(new Vector(scaleRate, scaleRate, scaleRate)); - } - - public void removeSeed() { - if(this.seedObject == null) return; - this.seed = false; - this.state = 0; - this.seedObject.destroy(); - this.seedObject = null; - } - - public boolean grow() { - if(this.water <= 0) return false; - if(!this.seed) return false; - if(this.state >= 100) return false; - if(this.seedObject == null) return false; - this.water -= 2; - if(this.water < 0) this.water = 0; - this.state += this.currentRate; - if(this.state > 100) this.state = 100; - - double scaleRate = ((double)this.state / 100d); - this.seedObject.setScale(new Vector(scaleRate, scaleRate, scaleRate)); - return true; - } - - public String getUuid() { - return uuid; - } - - public int getWater() { - return water; - } - - public int getState() { - return state; - } - - public void setWater(int water) { - this.water = water; - } - - public void setState(int state) { - this.state = state; - } - - public boolean isSeed() { - return seed; - } - - public void setSeed(boolean seed) { - this.seed = seed; - } - - public int getCurrentRate() { - return currentRate; - } - - public void setCurrentRate(int currentRate) { - this.currentRate = currentRate; - } -} +package fr.yuki.yrpf.job.tools.growbox; + +import fr.yuki.yrpf.job.tools.GrowBox; +import fr.yuki.yrpf.vehicle.storeLayout.StoreLayoutTransform; +import net.onfirenetwork.onsetjava.Onset; +import net.onfirenetwork.onsetjava.data.Vector; +import net.onfirenetwork.onsetjava.entity.WorldObject; + +import java.util.UUID; + +public class Pot { + private String uuid; + private GrowBox growBox; + private WorldObject worldObject; + private int water; + private int state; + private boolean seed; + private int currentRate; + private WorldObject seedObject; + + public Pot(GrowBox growBox) { + this.uuid = UUID.randomUUID().toString(); + this.growBox = growBox; + this.water = 0; + this.state = 0; + this.currentRate = 1; + this.seed = false; + } + + public void spawnWorldObject(StoreLayoutTransform transform) { + this.worldObject = Onset.getServer().createObject(new Vector(0, 0,0), 554); + this.worldObject.attach(this.growBox.getJobTool().getWorldObject(), transform.getPosition(), transform.getRotation()); + this.worldObject.setScale(transform.getScale()); + this.spawnSeed(); + } + + public void destroyWorldObject() { + if(this.worldObject != null) { + this.worldObject.destroy(); + this.worldObject = null; + if(this.seedObject != null) { + this.seedObject.destroy(); + this.seedObject = null; + } + } + } + + public void spawnSeed() { + if(this.seedObject != null) return; + this.seedObject = Onset.getServer().createObject(new Vector(0, 0, 0), 63); + this.seedObject.attach(this.worldObject, new Vector(0, 0, 18), new Vector(0, 0, 0), "None"); + double scaleRate = ((double)this.state / 100d); + this.seedObject.setScale(new Vector(scaleRate, scaleRate, scaleRate)); + } + + public void removeSeed() { + if(this.seedObject == null) return; + this.seed = false; + this.state = 0; + this.seedObject.destroy(); + this.seedObject = null; + } + + public boolean grow() { + if(this.water <= 0) return false; + if(!this.seed) return false; + if(this.state >= 100) return false; + if(this.seedObject == null) return false; + this.water -= 2; + if(this.water < 0) this.water = 0; + this.state += this.currentRate; + if(this.state > 100) this.state = 100; + + double scaleRate = ((double)this.state / 100d); + this.seedObject.setScale(new Vector(scaleRate, scaleRate, scaleRate)); + return true; + } + + public String getUuid() { + return uuid; + } + + public int getWater() { + return water; + } + + public int getState() { + return state; + } + + public void setWater(int water) { + this.water = water; + } + + public void setState(int state) { + this.state = state; + } + + public boolean isSeed() { + return seed; + } + + public void setSeed(boolean seed) { + this.seed = seed; + } + + public int getCurrentRate() { + return currentRate; + } + + public void setCurrentRate(int currentRate) { + this.currentRate = currentRate; + } +} diff --git a/src/main/java/fr/yuki/YukiRPFramework/luaapi/AddAmbiantSoundEF.java b/src/main/java/fr/yuki/yrpf/luaapi/AddAmbiantSoundEF.java similarity index 88% rename from src/main/java/fr/yuki/YukiRPFramework/luaapi/AddAmbiantSoundEF.java rename to src/main/java/fr/yuki/yrpf/luaapi/AddAmbiantSoundEF.java index 7698101..114fc1c 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/luaapi/AddAmbiantSoundEF.java +++ b/src/main/java/fr/yuki/yrpf/luaapi/AddAmbiantSoundEF.java @@ -1,23 +1,23 @@ -package fr.yuki.YukiRPFramework.luaapi; - -import fr.yuki.YukiRPFramework.manager.SoundManager; -import net.onfirenetwork.onsetjava.Onset; -import net.onfirenetwork.onsetjava.data.Vector; -import net.onfirenetwork.onsetjava.plugin.ExportFunction; - -public class AddAmbiantSoundEF implements ExportFunction { - - @Override - public Object call(Object[] objects) { - String fileName = objects[1].toString(); - String name = objects[0].toString(); - double x = Double.parseDouble(objects[2].toString()); - double y = Double.parseDouble(objects[3].toString()); - double z = Double.parseDouble(objects[4].toString()); - int radius = Integer.parseInt(objects[5].toString()); - double volume = Double.parseDouble(objects[6].toString()); - Onset.print(x + "," + y + ", " + z + ", " + fileName + ", " + name + ", " + radius + ", " + volume); - SoundManager.createAmbiantSound(name, fileName, new Vector(x,y,z), radius, volume); - return null; - } -} +package fr.yuki.yrpf.luaapi; + +import fr.yuki.yrpf.manager.SoundManager; +import net.onfirenetwork.onsetjava.Onset; +import net.onfirenetwork.onsetjava.data.Vector; +import net.onfirenetwork.onsetjava.plugin.ExportFunction; + +public class AddAmbiantSoundEF implements ExportFunction { + + @Override + public Object call(Object[] objects) { + String fileName = objects[1].toString(); + String name = objects[0].toString(); + double x = Double.parseDouble(objects[2].toString()); + double y = Double.parseDouble(objects[3].toString()); + double z = Double.parseDouble(objects[4].toString()); + int radius = Integer.parseInt(objects[5].toString()); + double volume = Double.parseDouble(objects[6].toString()); + Onset.print(x + "," + y + ", " + z + ", " + fileName + ", " + name + ", " + radius + ", " + volume); + SoundManager.createAmbiantSound(name, fileName, new Vector(x,y,z), radius, volume); + return null; + } +} diff --git a/src/main/java/fr/yuki/YukiRPFramework/luaapi/AddItemEF.java b/src/main/java/fr/yuki/yrpf/luaapi/AddItemEF.java similarity index 70% rename from src/main/java/fr/yuki/YukiRPFramework/luaapi/AddItemEF.java rename to src/main/java/fr/yuki/yrpf/luaapi/AddItemEF.java index 3d8220a..1d8cbdb 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/luaapi/AddItemEF.java +++ b/src/main/java/fr/yuki/yrpf/luaapi/AddItemEF.java @@ -1,21 +1,20 @@ -package fr.yuki.YukiRPFramework.luaapi; - -import fr.yuki.YukiRPFramework.inventory.Inventory; -import fr.yuki.YukiRPFramework.manager.InventoryManager; -import fr.yuki.YukiRPFramework.manager.WorldManager; -import fr.yuki.YukiRPFramework.model.Account; -import net.onfirenetwork.onsetjava.Onset; -import net.onfirenetwork.onsetjava.entity.Player; -import net.onfirenetwork.onsetjava.plugin.ExportFunction; - -public class AddItemEF implements ExportFunction { - @Override - public Object call(Object[] objects) { - Player player = Onset.getPlayer(Integer.parseInt(objects[0].toString())); - if(player == null) return false; - Account account = WorldManager.getPlayerAccount(player); - if(account == null) return false; - InventoryManager.addItemToPlayer(player, objects[1].toString(), Integer.parseInt(objects[2].toString()), true); - return true; - } -} +package fr.yuki.yrpf.luaapi; + +import fr.yuki.yrpf.manager.InventoryManager; +import fr.yuki.yrpf.manager.WorldManager; +import fr.yuki.yrpf.model.Account; +import net.onfirenetwork.onsetjava.Onset; +import net.onfirenetwork.onsetjava.entity.Player; +import net.onfirenetwork.onsetjava.plugin.ExportFunction; + +public class AddItemEF implements ExportFunction { + @Override + public Object call(Object[] objects) { + Player player = Onset.getPlayer(Integer.parseInt(objects[0].toString())); + if(player == null) return false; + Account account = WorldManager.getPlayerAccount(player); + if(account == null) return false; + InventoryManager.addItemToPlayer(player, objects[1].toString(), Integer.parseInt(objects[2].toString()), true); + return true; + } +} diff --git a/src/main/java/fr/yuki/YukiRPFramework/luaapi/AddRestrictedZoneEF.java b/src/main/java/fr/yuki/yrpf/luaapi/AddRestrictedZoneEF.java similarity index 80% rename from src/main/java/fr/yuki/YukiRPFramework/luaapi/AddRestrictedZoneEF.java rename to src/main/java/fr/yuki/yrpf/luaapi/AddRestrictedZoneEF.java index a64a169..840f9d7 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/luaapi/AddRestrictedZoneEF.java +++ b/src/main/java/fr/yuki/yrpf/luaapi/AddRestrictedZoneEF.java @@ -1,25 +1,25 @@ -package fr.yuki.YukiRPFramework.luaapi; - -import fr.yuki.YukiRPFramework.manager.WorldManager; -import fr.yuki.YukiRPFramework.modding.Line3D; -import fr.yuki.YukiRPFramework.world.RestrictedZone; -import net.onfirenetwork.onsetjava.Onset; -import net.onfirenetwork.onsetjava.plugin.ExportFunction; - -public class AddRestrictedZoneEF implements ExportFunction { - @Override - public Object call(Object[] objects) { - Onset.print("New restricted zone added from lua : " + objects[0].toString()); - RestrictedZone restrictedZone = new RestrictedZone(new Line3D( - Double.parseDouble(objects[1].toString()), - Double.parseDouble(objects[2].toString()), - Double.parseDouble(objects[3].toString()), - Double.parseDouble(objects[4].toString()), - Double.parseDouble(objects[5].toString()), - Double.parseDouble(objects[6].toString()), - 6 - ), objects[0].toString()); - WorldManager.getRestrictedZones().add(restrictedZone); - return true; - } -} +package fr.yuki.yrpf.luaapi; + +import fr.yuki.yrpf.manager.WorldManager; +import fr.yuki.yrpf.modding.Line3D; +import fr.yuki.yrpf.world.RestrictedZone; +import net.onfirenetwork.onsetjava.Onset; +import net.onfirenetwork.onsetjava.plugin.ExportFunction; + +public class AddRestrictedZoneEF implements ExportFunction { + @Override + public Object call(Object[] objects) { + Onset.print("New restricted zone added from lua : " + objects[0].toString()); + RestrictedZone restrictedZone = new RestrictedZone(new Line3D( + Double.parseDouble(objects[1].toString()), + Double.parseDouble(objects[2].toString()), + Double.parseDouble(objects[3].toString()), + Double.parseDouble(objects[4].toString()), + Double.parseDouble(objects[5].toString()), + Double.parseDouble(objects[6].toString()), + 6 + ), objects[0].toString()); + WorldManager.getRestrictedZones().add(restrictedZone); + return true; + } +} diff --git a/src/main/java/fr/yuki/YukiRPFramework/luaapi/GetAccountEF.java b/src/main/java/fr/yuki/yrpf/luaapi/GetAccountEF.java similarity index 74% rename from src/main/java/fr/yuki/YukiRPFramework/luaapi/GetAccountEF.java rename to src/main/java/fr/yuki/yrpf/luaapi/GetAccountEF.java index d3b5d8e..1be1db8 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/luaapi/GetAccountEF.java +++ b/src/main/java/fr/yuki/yrpf/luaapi/GetAccountEF.java @@ -1,16 +1,16 @@ -package fr.yuki.YukiRPFramework.luaapi; - -import com.google.gson.Gson; -import fr.yuki.YukiRPFramework.manager.WorldManager; -import fr.yuki.YukiRPFramework.model.Account; -import net.onfirenetwork.onsetjava.Onset; -import net.onfirenetwork.onsetjava.plugin.ExportFunction; - -public class GetAccountEF implements ExportFunction { - @Override - public Object call(Object[] objects) { - Account account = WorldManager.getPlayerAccount(Onset.getPlayer(Integer.parseInt(objects[0].toString()))); - if(account == null) return null; - return new Gson().toJson(account); - } -} +package fr.yuki.yrpf.luaapi; + +import com.google.gson.Gson; +import fr.yuki.yrpf.manager.WorldManager; +import fr.yuki.yrpf.model.Account; +import net.onfirenetwork.onsetjava.Onset; +import net.onfirenetwork.onsetjava.plugin.ExportFunction; + +public class GetAccountEF implements ExportFunction { + @Override + public Object call(Object[] objects) { + Account account = WorldManager.getPlayerAccount(Onset.getPlayer(Integer.parseInt(objects[0].toString()))); + if(account == null) return null; + return new Gson().toJson(account); + } +} diff --git a/src/main/java/fr/yuki/YukiRPFramework/luaapi/GetAdminLevelEF.java b/src/main/java/fr/yuki/yrpf/luaapi/GetAdminLevelEF.java similarity index 73% rename from src/main/java/fr/yuki/YukiRPFramework/luaapi/GetAdminLevelEF.java rename to src/main/java/fr/yuki/yrpf/luaapi/GetAdminLevelEF.java index eebf802..2020eed 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/luaapi/GetAdminLevelEF.java +++ b/src/main/java/fr/yuki/yrpf/luaapi/GetAdminLevelEF.java @@ -1,15 +1,15 @@ -package fr.yuki.YukiRPFramework.luaapi; - -import fr.yuki.YukiRPFramework.manager.WorldManager; -import fr.yuki.YukiRPFramework.model.Account; -import net.onfirenetwork.onsetjava.Onset; -import net.onfirenetwork.onsetjava.plugin.ExportFunction; - -public class GetAdminLevelEF implements ExportFunction { - @Override - public Object call(Object[] objects) { - Account account = WorldManager.getPlayerAccount(Onset.getPlayer(Integer.parseInt(objects[0].toString()))); - if(account == null) return -1; - return account.getAdminLevel(); - } -} +package fr.yuki.yrpf.luaapi; + +import fr.yuki.yrpf.manager.WorldManager; +import fr.yuki.yrpf.model.Account; +import net.onfirenetwork.onsetjava.Onset; +import net.onfirenetwork.onsetjava.plugin.ExportFunction; + +public class GetAdminLevelEF implements ExportFunction { + @Override + public Object call(Object[] objects) { + Account account = WorldManager.getPlayerAccount(Onset.getPlayer(Integer.parseInt(objects[0].toString()))); + if(account == null) return -1; + return account.getAdminLevel(); + } +} diff --git a/src/main/java/fr/yuki/YukiRPFramework/luaapi/LuaAPIManager.java b/src/main/java/fr/yuki/yrpf/luaapi/LuaAPIManager.java similarity index 90% rename from src/main/java/fr/yuki/YukiRPFramework/luaapi/LuaAPIManager.java rename to src/main/java/fr/yuki/yrpf/luaapi/LuaAPIManager.java index ca9b529..f49956a 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/luaapi/LuaAPIManager.java +++ b/src/main/java/fr/yuki/yrpf/luaapi/LuaAPIManager.java @@ -1,23 +1,23 @@ -package fr.yuki.YukiRPFramework.luaapi; - -import fr.yuki.YukiRPFramework.luaapi.job.*; -import net.onfirenetwork.onsetjava.Onset; - -public class LuaAPIManager { - public static void init() { - Onset.getServer().addFunctionExport("GetAdminLevel", new GetAdminLevelEF()); - Onset.getServer().addFunctionExport("GetAccount", new GetAccountEF()); - Onset.getServer().addFunctionExport("AddAmbiantSound", new AddAmbiantSoundEF()); - Onset.getServer().addFunctionExport("SendToast", new SendToastEF()); - Onset.getServer().addFunctionExport("AddItem", new AddItemEF()); - Onset.getServer().addFunctionExport("AddRestrictedZone", new AddRestrictedZoneEF()); - - // Job API - Onset.getServer().addFunctionExport("CreateJob", new CreateJobEF()); - Onset.getServer().addFunctionExport("AddJobLevel", new AddJobLevelEF()); - Onset.getServer().addFunctionExport("AddJobResource", new AddJobResourceEF()); - Onset.getServer().addFunctionExport("AddItemResourceRequirement", new AddItemResourceRequirementEF()); - Onset.getServer().addFunctionExport("SetHarvestAnimation", new SetHarvestAnimationEF()); - - } -} +package fr.yuki.yrpf.luaapi; + +import fr.yuki.yrpf.luaapi.job.*; +import net.onfirenetwork.onsetjava.Onset; + +public class LuaAPIManager { + public static void init() { + Onset.getServer().addFunctionExport("GetAdminLevel", new GetAdminLevelEF()); + Onset.getServer().addFunctionExport("GetAccount", new GetAccountEF()); + Onset.getServer().addFunctionExport("AddAmbiantSound", new AddAmbiantSoundEF()); + Onset.getServer().addFunctionExport("SendToast", new SendToastEF()); + Onset.getServer().addFunctionExport("AddItem", new AddItemEF()); + Onset.getServer().addFunctionExport("AddRestrictedZone", new AddRestrictedZoneEF()); + + // Job API + Onset.getServer().addFunctionExport("CreateJob", new CreateJobEF()); + Onset.getServer().addFunctionExport("AddJobLevel", new AddJobLevelEF()); + Onset.getServer().addFunctionExport("AddJobResource", new AddJobResourceEF()); + Onset.getServer().addFunctionExport("AddItemResourceRequirement", new AddItemResourceRequirementEF()); + Onset.getServer().addFunctionExport("SetHarvestAnimation", new SetHarvestAnimationEF()); + + } +} diff --git a/src/main/java/fr/yuki/YukiRPFramework/luaapi/SendToastEF.java b/src/main/java/fr/yuki/yrpf/luaapi/SendToastEF.java similarity index 72% rename from src/main/java/fr/yuki/YukiRPFramework/luaapi/SendToastEF.java rename to src/main/java/fr/yuki/yrpf/luaapi/SendToastEF.java index cd85b33..823fa9f 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/luaapi/SendToastEF.java +++ b/src/main/java/fr/yuki/yrpf/luaapi/SendToastEF.java @@ -1,22 +1,20 @@ -package fr.yuki.YukiRPFramework.luaapi; - -import fr.yuki.YukiRPFramework.manager.SoundManager; -import fr.yuki.YukiRPFramework.manager.UIStateManager; -import net.onfirenetwork.onsetjava.Onset; -import net.onfirenetwork.onsetjava.data.Vector; -import net.onfirenetwork.onsetjava.entity.Player; -import net.onfirenetwork.onsetjava.plugin.ExportFunction; - -public class SendToastEF implements ExportFunction { - - @Override - public Object call(Object[] objects) { - Player player = Onset.getPlayer(Integer.parseInt(objects[0].toString())); - if(player == null) return null; - String type = objects[1].toString(); - String text = objects[2].toString(); - UIStateManager.sendNotification(player, type, text); - - return null; - } -} +package fr.yuki.yrpf.luaapi; + +import fr.yuki.yrpf.manager.UIStateManager; +import net.onfirenetwork.onsetjava.Onset; +import net.onfirenetwork.onsetjava.entity.Player; +import net.onfirenetwork.onsetjava.plugin.ExportFunction; + +public class SendToastEF implements ExportFunction { + + @Override + public Object call(Object[] objects) { + Player player = Onset.getPlayer(Integer.parseInt(objects[0].toString())); + if(player == null) return null; + String type = objects[1].toString(); + String text = objects[2].toString(); + UIStateManager.sendNotification(player, type, text); + + return null; + } +} diff --git a/src/main/java/fr/yuki/YukiRPFramework/luaapi/job/AddItemResourceRequirementEF.java b/src/main/java/fr/yuki/yrpf/luaapi/job/AddItemResourceRequirementEF.java similarity index 75% rename from src/main/java/fr/yuki/YukiRPFramework/luaapi/job/AddItemResourceRequirementEF.java rename to src/main/java/fr/yuki/yrpf/luaapi/job/AddItemResourceRequirementEF.java index 35a6fc4..9f92d7c 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/luaapi/job/AddItemResourceRequirementEF.java +++ b/src/main/java/fr/yuki/yrpf/luaapi/job/AddItemResourceRequirementEF.java @@ -1,19 +1,19 @@ -package fr.yuki.YukiRPFramework.luaapi.job; - -import fr.yuki.YukiRPFramework.job.Job; -import fr.yuki.YukiRPFramework.job.harvest.CustomHarvestableObject; -import fr.yuki.YukiRPFramework.manager.JobManager; -import net.onfirenetwork.onsetjava.plugin.ExportFunction; - -public class AddItemResourceRequirementEF implements ExportFunction { - @Override - public Object call(Object[] objects) { - Job job = JobManager.getJobs().get(objects[0].toString()); - if(job == null) return false; - CustomHarvestableObject harvestableObject = (CustomHarvestableObject)job.getHarvestableObjectsTemplate().stream().filter(x -> - x.getName().equals(objects[1].toString())).findFirst().orElse(null); - if(harvestableObject == null) return false; - harvestableObject.setRequiredItem(Integer.parseInt(objects[2].toString())); - return true; - } -} +package fr.yuki.yrpf.luaapi.job; + +import fr.yuki.yrpf.job.Job; +import fr.yuki.yrpf.job.harvest.CustomHarvestableObject; +import fr.yuki.yrpf.manager.JobManager; +import net.onfirenetwork.onsetjava.plugin.ExportFunction; + +public class AddItemResourceRequirementEF implements ExportFunction { + @Override + public Object call(Object[] objects) { + Job job = JobManager.getJobs().get(objects[0].toString()); + if(job == null) return false; + CustomHarvestableObject harvestableObject = (CustomHarvestableObject)job.getHarvestableObjectsTemplate().stream().filter(x -> + x.getName().equals(objects[1].toString())).findFirst().orElse(null); + if(harvestableObject == null) return false; + harvestableObject.setRequiredItem(Integer.parseInt(objects[2].toString())); + return true; + } +} diff --git a/src/main/java/fr/yuki/YukiRPFramework/luaapi/job/AddJobLevelEF.java b/src/main/java/fr/yuki/yrpf/luaapi/job/AddJobLevelEF.java similarity index 76% rename from src/main/java/fr/yuki/YukiRPFramework/luaapi/job/AddJobLevelEF.java rename to src/main/java/fr/yuki/yrpf/luaapi/job/AddJobLevelEF.java index cba2ac4..fb85c56 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/luaapi/job/AddJobLevelEF.java +++ b/src/main/java/fr/yuki/yrpf/luaapi/job/AddJobLevelEF.java @@ -1,27 +1,26 @@ -package fr.yuki.YukiRPFramework.luaapi.job; - -import fr.yuki.YukiRPFramework.job.CustomJob; -import fr.yuki.YukiRPFramework.job.Job; -import fr.yuki.YukiRPFramework.manager.JobManager; -import fr.yuki.YukiRPFramework.model.JobLevel; -import net.onfirenetwork.onsetjava.Onset; -import net.onfirenetwork.onsetjava.plugin.ExportFunction; - -public class AddJobLevelEF implements ExportFunction { - public static int tempJobLevelId = -1; - - @Override - public Object call(Object[] objects) { - Job job = JobManager.getJobs().get(objects[0].toString()); - if(job == null) return false; - JobLevel jobLevel = new JobLevel(); - jobLevel.setId(tempJobLevelId--); - jobLevel.setJobId(objects[0].toString()); - jobLevel.setName(objects[1].toString()); - jobLevel.setLevel(Integer.parseInt(objects[2].toString())); - jobLevel.setExpFloor(Integer.parseInt(objects[3].toString())); - JobManager.getJobLevels().add(jobLevel); - Onset.print("Added new job level for job="+jobLevel.getJobId()); - return true; - } -} +package fr.yuki.yrpf.luaapi.job; + +import fr.yuki.yrpf.job.Job; +import fr.yuki.yrpf.manager.JobManager; +import fr.yuki.yrpf.model.JobLevel; +import net.onfirenetwork.onsetjava.Onset; +import net.onfirenetwork.onsetjava.plugin.ExportFunction; + +public class AddJobLevelEF implements ExportFunction { + public static int tempJobLevelId = -1; + + @Override + public Object call(Object[] objects) { + Job job = JobManager.getJobs().get(objects[0].toString()); + if(job == null) return false; + JobLevel jobLevel = new JobLevel(); + jobLevel.setId(tempJobLevelId--); + jobLevel.setJobId(objects[0].toString()); + jobLevel.setName(objects[1].toString()); + jobLevel.setLevel(Integer.parseInt(objects[2].toString())); + jobLevel.setExpFloor(Integer.parseInt(objects[3].toString())); + JobManager.getJobLevels().add(jobLevel); + Onset.print("Added new job level for job="+jobLevel.getJobId()); + return true; + } +} diff --git a/src/main/java/fr/yuki/YukiRPFramework/luaapi/job/AddJobResourceEF.java b/src/main/java/fr/yuki/yrpf/luaapi/job/AddJobResourceEF.java similarity index 82% rename from src/main/java/fr/yuki/YukiRPFramework/luaapi/job/AddJobResourceEF.java rename to src/main/java/fr/yuki/yrpf/luaapi/job/AddJobResourceEF.java index ea1f1f7..872b724 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/luaapi/job/AddJobResourceEF.java +++ b/src/main/java/fr/yuki/yrpf/luaapi/job/AddJobResourceEF.java @@ -1,31 +1,31 @@ -package fr.yuki.YukiRPFramework.luaapi.job; - -import fr.yuki.YukiRPFramework.job.Job; -import fr.yuki.YukiRPFramework.job.JobSpawn; -import fr.yuki.YukiRPFramework.job.harvest.CustomHarvestableObject; -import fr.yuki.YukiRPFramework.manager.JobManager; -import net.onfirenetwork.onsetjava.Onset; -import net.onfirenetwork.onsetjava.plugin.ExportFunction; - -public class AddJobResourceEF implements ExportFunction { - @Override - public Object call(Object[] objects) { - Job job = JobManager.getJobs().get(objects[0].toString()); - if(job == null) return false; - CustomHarvestableObject customHarvestableObject = new CustomHarvestableObject( - objects[1].toString(), Integer.parseInt(objects[2].toString()), Integer.parseInt(objects[3].toString()), - Integer.parseInt(objects[4].toString()), Integer.parseInt(objects[5].toString()), Integer.parseInt(objects[6].toString()) - ); - job.getHarvestableObjectsTemplate().add(customHarvestableObject); - if(job.getJobConfig().getResources().stream().filter(x -> x.getName().equals(customHarvestableObject.getName())) - .findFirst().orElse(null) == null) { - JobSpawn jobSpawn = new JobSpawn(); - jobSpawn.setName(customHarvestableObject.getName()); - job.getJobConfig().getResources().add(jobSpawn); - } - job.refillHarvestResources(); - - Onset.print("Add harvestable object for job="+job.getJobType()+" name=" + customHarvestableObject.getName()); - return true; - } -} +package fr.yuki.yrpf.luaapi.job; + +import fr.yuki.yrpf.job.Job; +import fr.yuki.yrpf.job.JobSpawn; +import fr.yuki.yrpf.job.harvest.CustomHarvestableObject; +import fr.yuki.yrpf.manager.JobManager; +import net.onfirenetwork.onsetjava.Onset; +import net.onfirenetwork.onsetjava.plugin.ExportFunction; + +public class AddJobResourceEF implements ExportFunction { + @Override + public Object call(Object[] objects) { + Job job = JobManager.getJobs().get(objects[0].toString()); + if(job == null) return false; + CustomHarvestableObject customHarvestableObject = new CustomHarvestableObject( + objects[1].toString(), Integer.parseInt(objects[2].toString()), Integer.parseInt(objects[3].toString()), + Integer.parseInt(objects[4].toString()), Integer.parseInt(objects[5].toString()), Integer.parseInt(objects[6].toString()) + ); + job.getHarvestableObjectsTemplate().add(customHarvestableObject); + if(job.getJobConfig().getResources().stream().filter(x -> x.getName().equals(customHarvestableObject.getName())) + .findFirst().orElse(null) == null) { + JobSpawn jobSpawn = new JobSpawn(); + jobSpawn.setName(customHarvestableObject.getName()); + job.getJobConfig().getResources().add(jobSpawn); + } + job.refillHarvestResources(); + + Onset.print("Add harvestable object for job="+job.getJobType()+" name=" + customHarvestableObject.getName()); + return true; + } +} diff --git a/src/main/java/fr/yuki/YukiRPFramework/luaapi/job/CreateJobEF.java b/src/main/java/fr/yuki/yrpf/luaapi/job/CreateJobEF.java similarity index 75% rename from src/main/java/fr/yuki/YukiRPFramework/luaapi/job/CreateJobEF.java rename to src/main/java/fr/yuki/yrpf/luaapi/job/CreateJobEF.java index 2c9f713..ce26e60 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/luaapi/job/CreateJobEF.java +++ b/src/main/java/fr/yuki/yrpf/luaapi/job/CreateJobEF.java @@ -1,17 +1,17 @@ -package fr.yuki.YukiRPFramework.luaapi.job; - -import fr.yuki.YukiRPFramework.job.CustomJob; -import fr.yuki.YukiRPFramework.manager.JobManager; -import net.onfirenetwork.onsetjava.Onset; -import net.onfirenetwork.onsetjava.plugin.ExportFunction; - -public class CreateJobEF implements ExportFunction { - - @Override - public Object call(Object[] objects) { - CustomJob customJob = new CustomJob(objects[0].toString(), Integer.parseInt(objects[1].toString())); - JobManager.getJobs().put(objects[0].toString(), customJob); - Onset.print("New job created from lua name="+customJob.getJobType()); - return null; - } -} +package fr.yuki.yrpf.luaapi.job; + +import fr.yuki.yrpf.job.CustomJob; +import fr.yuki.yrpf.manager.JobManager; +import net.onfirenetwork.onsetjava.Onset; +import net.onfirenetwork.onsetjava.plugin.ExportFunction; + +public class CreateJobEF implements ExportFunction { + + @Override + public Object call(Object[] objects) { + CustomJob customJob = new CustomJob(objects[0].toString(), Integer.parseInt(objects[1].toString())); + JobManager.getJobs().put(objects[0].toString(), customJob); + Onset.print("New job created from lua name="+customJob.getJobType()); + return null; + } +} diff --git a/src/main/java/fr/yuki/YukiRPFramework/luaapi/job/SetHarvestAnimationEF.java b/src/main/java/fr/yuki/yrpf/luaapi/job/SetHarvestAnimationEF.java similarity index 75% rename from src/main/java/fr/yuki/YukiRPFramework/luaapi/job/SetHarvestAnimationEF.java rename to src/main/java/fr/yuki/yrpf/luaapi/job/SetHarvestAnimationEF.java index d52866d..04945e2 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/luaapi/job/SetHarvestAnimationEF.java +++ b/src/main/java/fr/yuki/yrpf/luaapi/job/SetHarvestAnimationEF.java @@ -1,23 +1,23 @@ -package fr.yuki.YukiRPFramework.luaapi.job; - -import fr.yuki.YukiRPFramework.character.CharacterLoopAnimation; -import fr.yuki.YukiRPFramework.job.Job; -import fr.yuki.YukiRPFramework.job.harvest.CustomHarvestableObject; -import fr.yuki.YukiRPFramework.manager.JobManager; -import net.onfirenetwork.onsetjava.plugin.ExportFunction; - -public class SetHarvestAnimationEF implements ExportFunction { - @Override - public Object call(Object[] objects) { - Job job = JobManager.getJobs().get(objects[0].toString()); - if(job == null) return false; - CustomHarvestableObject harvestableObject = (CustomHarvestableObject)job.getHarvestableObjectsTemplate().stream().filter(x -> - x.getName().equals(objects[1].toString())).findFirst().orElse(null); - if(harvestableObject == null) return false; - - CharacterLoopAnimation characterLoopAnimation = new CharacterLoopAnimation(objects[2].toString(), - Integer.parseInt(objects[3].toString()), Integer.parseInt(objects[4].toString()), objects[5].toString()); - harvestableObject.setCharacterLoopAnimation(characterLoopAnimation); - return null; - } -} +package fr.yuki.yrpf.luaapi.job; + +import fr.yuki.yrpf.character.CharacterLoopAnimation; +import fr.yuki.yrpf.job.Job; +import fr.yuki.yrpf.job.harvest.CustomHarvestableObject; +import fr.yuki.yrpf.manager.JobManager; +import net.onfirenetwork.onsetjava.plugin.ExportFunction; + +public class SetHarvestAnimationEF implements ExportFunction { + @Override + public Object call(Object[] objects) { + Job job = JobManager.getJobs().get(objects[0].toString()); + if(job == null) return false; + CustomHarvestableObject harvestableObject = (CustomHarvestableObject)job.getHarvestableObjectsTemplate().stream().filter(x -> + x.getName().equals(objects[1].toString())).findFirst().orElse(null); + if(harvestableObject == null) return false; + + CharacterLoopAnimation characterLoopAnimation = new CharacterLoopAnimation(objects[2].toString(), + Integer.parseInt(objects[3].toString()), Integer.parseInt(objects[4].toString()), objects[5].toString()); + harvestableObject.setCharacterLoopAnimation(characterLoopAnimation); + return null; + } +} diff --git a/src/main/java/fr/yuki/YukiRPFramework/manager/ATMManager.java b/src/main/java/fr/yuki/yrpf/manager/ATMManager.java similarity index 87% rename from src/main/java/fr/yuki/YukiRPFramework/manager/ATMManager.java rename to src/main/java/fr/yuki/yrpf/manager/ATMManager.java index 8a2bbe5..4fabcb5 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/manager/ATMManager.java +++ b/src/main/java/fr/yuki/yrpf/manager/ATMManager.java @@ -1,99 +1,98 @@ -package fr.yuki.YukiRPFramework.manager; - -import com.google.gson.Gson; -import fr.yuki.YukiRPFramework.enums.ItemTemplateEnum; -import fr.yuki.YukiRPFramework.enums.ToastTypeEnum; -import fr.yuki.YukiRPFramework.i18n.I18n; -import fr.yuki.YukiRPFramework.inventory.Inventory; -import fr.yuki.YukiRPFramework.model.ATM; -import fr.yuki.YukiRPFramework.model.Account; -import fr.yuki.YukiRPFramework.net.payload.AddToastPayload; -import fr.yuki.YukiRPFramework.net.payload.SetBankCashAmount; -import net.onfirenetwork.onsetjava.Onset; -import net.onfirenetwork.onsetjava.entity.Player; - -public class ATMManager { - /** - * Check the interaction request with a atm, check if is nearby a atm - * @param player The player - */ - public static boolean handleATMInteract(Player player) { - for(ATM atm : WorldManager.getAtms()) { - try { - if(atm.isNear(player)) { - openATM(player, atm); - return true; - } - }catch (Exception ex) {} - } - return false; - } - - /** - * Open the atm for the player - * @param player The player - * @param atm The ATM - */ - public static void openATM(Player player, ATM atm) { - if(UIStateManager.handleUIToogle(player, "atm")) { - SoundManager.playSound3D("sounds/atm_sound_in.mp3", player.getLocation(), 200, 0.4); - } - } - - /** - * Handle deposit request from player - * @param player The player - * @param value The amount to deposit - */ - public static void handleATMDeposit(Player player, int value) { - Onset.print("Request to deposit money="+value); - Inventory inventory = InventoryManager.getMainInventory(player);; - Account account = WorldManager.getPlayerAccount(player); - if(inventory.getCashAmount() < value) { - Onset.print("Player don't have the cash required on him amount="+inventory.getCashAmount()); - UIStateManager.sendNotification(player, ToastTypeEnum.ERROR, I18n.t(account.getLang(), "toast.atm.no_enought_money_on_me")); - return; - } - - // Add the bank money and save the player - inventory.removeItem(inventory.getItemByType(ItemTemplateEnum.CASH.id), value); - account.setBankMoney(account.getBankMoney() + value); - WorldManager.savePlayer(player); - UIStateManager.sendNotification(player, ToastTypeEnum.SUCCESS, I18n.t(account.getLang(), "toast.atm.success_deposit", String.valueOf(value))); - } - - /** - * Withdraw money from the bank account - * @param player The player - * @param value The amount to withdraw - */ - public static void handleATMWithdraw(Player player, int value) { - Onset.print("Request to deposit money="+value); - Inventory inventory = InventoryManager.getMainInventory(player); - Account account = WorldManager.getPlayerAccount(player); - if(account.getBankMoney() < value) { - Onset.print("Player don't have the cash required in bank amount="+inventory.getCashAmount()); - UIStateManager.sendNotification(player, ToastTypeEnum.ERROR, I18n.t(account.getLang(), "toast.atm.no_enought_money_in_bank")); - return; - } - - // Add the bank money and save the player - InventoryManager.addItemToPlayer(player, ItemTemplateEnum.CASH.id, value, false); - account.setBankMoney(account.getBankMoney() - value); - WorldManager.savePlayer(player); - UIStateManager.sendNotification(player, ToastTypeEnum.SUCCESS, I18n.t(account.getLang(), "toast.atm.success_withdraw", String.valueOf(value))); - } - - public static void handleATMGetInfos(Player player) { - Account account = WorldManager.getPlayerAccount(player); - Inventory inventory = InventoryManager.getMainInventory(player);; - player.callRemoteEvent("GlobalUI:DispatchToUI", new Gson().toJson(new SetBankCashAmount(account.getBankMoney(), inventory.getCashAmount()))); - } - - public static void removeCashFromBank(Player player, int amount) { - Account account = WorldManager.getPlayerAccount(player); - if(amount > account.getBankMoney()) return; - account.setBankMoney(account.getBankMoney() - amount); - WorldManager.savePlayer(player); - } -} +package fr.yuki.yrpf.manager; + +import com.google.gson.Gson; +import fr.yuki.yrpf.enums.ItemTemplateEnum; +import fr.yuki.yrpf.enums.ToastTypeEnum; +import fr.yuki.yrpf.i18n.I18n; +import fr.yuki.yrpf.inventory.Inventory; +import fr.yuki.yrpf.model.ATM; +import fr.yuki.yrpf.model.Account; +import fr.yuki.yrpf.net.payload.SetBankCashAmount; +import net.onfirenetwork.onsetjava.Onset; +import net.onfirenetwork.onsetjava.entity.Player; + +public class ATMManager { + /** + * Check the interaction request with a atm, check if is nearby a atm + * @param player The player + */ + public static boolean handleATMInteract(Player player) { + for(ATM atm : WorldManager.getAtms()) { + try { + if(atm.isNear(player)) { + openATM(player, atm); + return true; + } + }catch (Exception ex) {} + } + return false; + } + + /** + * Open the atm for the player + * @param player The player + * @param atm The ATM + */ + public static void openATM(Player player, ATM atm) { + if(UIStateManager.handleUIToogle(player, "atm")) { + SoundManager.playSound3D("sounds/atm_sound_in.mp3", player.getLocation(), 200, 0.4); + } + } + + /** + * Handle deposit request from player + * @param player The player + * @param value The amount to deposit + */ + public static void handleATMDeposit(Player player, int value) { + Onset.print("Request to deposit money="+value); + Inventory inventory = InventoryManager.getMainInventory(player);; + Account account = WorldManager.getPlayerAccount(player); + if(inventory.getCashAmount() < value) { + Onset.print("Player don't have the cash required on him amount="+inventory.getCashAmount()); + UIStateManager.sendNotification(player, ToastTypeEnum.ERROR, I18n.t(account.getLang(), "toast.atm.no_enought_money_on_me")); + return; + } + + // Add the bank money and save the player + inventory.removeItem(inventory.getItemByType(ItemTemplateEnum.CASH.id), value); + account.setBankMoney(account.getBankMoney() + value); + WorldManager.savePlayer(player); + UIStateManager.sendNotification(player, ToastTypeEnum.SUCCESS, I18n.t(account.getLang(), "toast.atm.success_deposit", String.valueOf(value))); + } + + /** + * Withdraw money from the bank account + * @param player The player + * @param value The amount to withdraw + */ + public static void handleATMWithdraw(Player player, int value) { + Onset.print("Request to deposit money="+value); + Inventory inventory = InventoryManager.getMainInventory(player); + Account account = WorldManager.getPlayerAccount(player); + if(account.getBankMoney() < value) { + Onset.print("Player don't have the cash required in bank amount="+inventory.getCashAmount()); + UIStateManager.sendNotification(player, ToastTypeEnum.ERROR, I18n.t(account.getLang(), "toast.atm.no_enought_money_in_bank")); + return; + } + + // Add the bank money and save the player + InventoryManager.addItemToPlayer(player, ItemTemplateEnum.CASH.id, value, false); + account.setBankMoney(account.getBankMoney() - value); + WorldManager.savePlayer(player); + UIStateManager.sendNotification(player, ToastTypeEnum.SUCCESS, I18n.t(account.getLang(), "toast.atm.success_withdraw", String.valueOf(value))); + } + + public static void handleATMGetInfos(Player player) { + Account account = WorldManager.getPlayerAccount(player); + Inventory inventory = InventoryManager.getMainInventory(player);; + player.callRemoteEvent("GlobalUI:DispatchToUI", new Gson().toJson(new SetBankCashAmount(account.getBankMoney(), inventory.getCashAmount()))); + } + + public static void removeCashFromBank(Player player, int amount) { + Account account = WorldManager.getPlayerAccount(player); + if(amount > account.getBankMoney()) return; + account.setBankMoney(account.getBankMoney() - amount); + WorldManager.savePlayer(player); + } +} diff --git a/src/main/java/fr/yuki/yrpf/manager/AccountManager.java b/src/main/java/fr/yuki/yrpf/manager/AccountManager.java new file mode 100644 index 0000000..838b1e0 --- /dev/null +++ b/src/main/java/fr/yuki/yrpf/manager/AccountManager.java @@ -0,0 +1,19 @@ +package fr.yuki.yrpf.manager; + +import eu.bebendorf.ajorm.Repo; +import fr.yuki.yrpf.model.AccountJobWhitelist; +import lombok.Getter; +import net.onfirenetwork.onsetjava.Onset; + +import java.sql.SQLException; +import java.util.List; + +public class AccountManager { + @Getter + private static List accountJobWhitelists; + + public static void init() throws SQLException { + accountJobWhitelists = Repo.get(AccountJobWhitelist.class).all(); + Onset.print("Loaded " + accountJobWhitelists.size() + " account job whitelist(s) from database"); + } +} diff --git a/src/main/java/fr/yuki/YukiRPFramework/manager/CharacterManager.java b/src/main/java/fr/yuki/yrpf/manager/CharacterManager.java similarity index 94% rename from src/main/java/fr/yuki/YukiRPFramework/manager/CharacterManager.java rename to src/main/java/fr/yuki/yrpf/manager/CharacterManager.java index e6b6d23..3d34df1 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/manager/CharacterManager.java +++ b/src/main/java/fr/yuki/yrpf/manager/CharacterManager.java @@ -1,19 +1,19 @@ -package fr.yuki.YukiRPFramework.manager; +package fr.yuki.yrpf.manager; import com.google.gson.Gson; -import fr.yuki.YukiRPFramework.character.CharacterState; -import fr.yuki.YukiRPFramework.character.CharacterStyle; -import fr.yuki.YukiRPFramework.enums.ItemTemplateEnum; -import fr.yuki.YukiRPFramework.enums.ToastTypeEnum; -import fr.yuki.YukiRPFramework.i18n.I18n; -import fr.yuki.YukiRPFramework.inventory.Inventory; -import fr.yuki.YukiRPFramework.inventory.InventoryItem; -import fr.yuki.YukiRPFramework.model.Account; -import fr.yuki.YukiRPFramework.net.payload.RequestThrowItemPayload; -import fr.yuki.YukiRPFramework.net.payload.SetFoodPayload; -import fr.yuki.YukiRPFramework.net.payload.StyleSavePartPayload; -import fr.yuki.YukiRPFramework.ui.GenericMenu; -import fr.yuki.YukiRPFramework.ui.GenericMenuItem; +import fr.yuki.yrpf.character.CharacterState; +import fr.yuki.yrpf.character.CharacterStyle; +import fr.yuki.yrpf.enums.ItemTemplateEnum; +import fr.yuki.yrpf.enums.ToastTypeEnum; +import fr.yuki.yrpf.i18n.I18n; +import fr.yuki.yrpf.inventory.Inventory; +import fr.yuki.yrpf.inventory.InventoryItem; +import fr.yuki.yrpf.model.Account; +import fr.yuki.yrpf.net.payload.RequestThrowItemPayload; +import fr.yuki.yrpf.net.payload.SetFoodPayload; +import fr.yuki.yrpf.net.payload.StyleSavePartPayload; +import fr.yuki.yrpf.ui.GenericMenu; +import fr.yuki.yrpf.ui.GenericMenuItem; import net.onfirenetwork.onsetjava.Onset; import net.onfirenetwork.onsetjava.data.Location; import net.onfirenetwork.onsetjava.data.Vector; diff --git a/src/main/java/fr/yuki/YukiRPFramework/manager/CompagnyManager.java b/src/main/java/fr/yuki/yrpf/manager/CompanyManager.java similarity index 63% rename from src/main/java/fr/yuki/YukiRPFramework/manager/CompagnyManager.java rename to src/main/java/fr/yuki/yrpf/manager/CompanyManager.java index 8fa3492..0d7678c 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/manager/CompagnyManager.java +++ b/src/main/java/fr/yuki/yrpf/manager/CompanyManager.java @@ -1,46 +1,43 @@ -package fr.yuki.YukiRPFramework.manager; +package fr.yuki.yrpf.manager; import com.google.gson.Gson; -import fr.yuki.YukiRPFramework.character.CharacterState; -import fr.yuki.YukiRPFramework.dao.CompagnyDAO; -import fr.yuki.YukiRPFramework.enums.ToastTypeEnum; -import fr.yuki.YukiRPFramework.model.Account; -import fr.yuki.YukiRPFramework.model.Compagny; -import fr.yuki.YukiRPFramework.net.payload.AddCompagnyEmployeePayload; -import fr.yuki.YukiRPFramework.net.payload.ClearCompagnyEmployeesPayload; -import fr.yuki.YukiRPFramework.net.payload.SetCompagnyPayload; -import fr.yuki.YukiRPFramework.ui.GenericMenu; -import fr.yuki.YukiRPFramework.ui.GenericMenuItem; +import eu.bebendorf.ajorm.Repo; +import fr.yuki.yrpf.character.CharacterState; +import fr.yuki.yrpf.enums.ToastTypeEnum; +import fr.yuki.yrpf.model.Account; +import fr.yuki.yrpf.model.Company; +import fr.yuki.yrpf.net.payload.AddCompagnyEmployeePayload; +import fr.yuki.yrpf.net.payload.ClearCompagnyEmployeesPayload; +import fr.yuki.yrpf.net.payload.SetCompagnyPayload; +import fr.yuki.yrpf.ui.GenericMenu; +import fr.yuki.yrpf.ui.GenericMenuItem; import net.onfirenetwork.onsetjava.Onset; import net.onfirenetwork.onsetjava.entity.Player; import java.sql.SQLException; import java.util.ArrayList; +import java.util.List; -public class CompagnyManager { - public static ArrayList compagnies = new ArrayList<>(); +public class CompanyManager { + public static List companies = new ArrayList<>(); - public static void init() throws SQLException { - compagnies = CompagnyDAO.loadCompagnies(); - Onset.print("Loaded " + compagnies.size() + " compagnie(s) from the database"); + public static void init() { + companies = Repo.get(Company.class).all(); + Onset.print("Loaded " + companies.size() + " companies from the database"); } - public static Compagny getCompagnyById(int id) { - return compagnies.stream().filter(x -> x.getId() == id).findFirst().orElse(null); + public static Company getCompanyById(int id) { + return companies.stream().filter(x -> x.getId() == id).findFirst().orElse(null); } - public static Compagny getCompagnyByName(String name) { - return compagnies.stream().filter(x -> x.getName().equals(name)).findFirst().orElse(null); - } - - public static void destroyCompagny() { - + public static Company getCompanyByName(String name) { + return companies.stream().filter(x -> x.getName().equals(name)).findFirst().orElse(null); } public static void handleCreateRequest(Player player, String name) throws SQLException { Account account = WorldManager.getPlayerAccount(player); if(account.getCompanyId() != -1) return; - if(getCompagnyByName(name.trim()) != null) { + if(getCompanyByName(name.trim()) != null) { UIStateManager.sendNotification(player, ToastTypeEnum.ERROR, "Ce nom est déjà pris"); return; } @@ -49,41 +46,39 @@ public static void handleCreateRequest(Player player, String name) throws SQLExc return; } ATMManager.removeCashFromBank(player, 10000); - Compagny compagny = new Compagny(); - compagny.setName(name.trim()); - compagny.setBankCash(0); - compagny.setOwner(player.getSteamId()); - compagny.setMaxMember(5); - CompagnyDAO.insertCompagny(compagny); - account.setCompanyId(compagny.getId()); + Company company = new Company(); + company.setName(name.trim()); + company.setOwner(player.getSteamId()); + company.save(); + account.setCompanyId(company.getId()); WorldManager.savePlayer(player); - compagnies.add(compagny); - Onset.print("Compagny " + name + " created"); + companies.add(company); + Onset.print("Company " + name + " created"); - refreshCompagny(player); + refreshCompany(player); } - public static ArrayList getOnlineEmployees(Compagny compagny) { + public static ArrayList getOnlineEmployees(Company company) { ArrayList players = new ArrayList<>(); for(Player player : Onset.getPlayers()) { try { Account account = WorldManager.getPlayerAccount(player); if(account == null) continue; - if(account.getCompanyId() == compagny.getId()) players.add(player); + if(account.getCompanyId() == company.getId()) players.add(player); } catch (Exception ex) {} } return players; } - public static void refreshCompagny(Player player) { + public static void refreshCompany(Player player) { Account account = WorldManager.getPlayerAccount(player); if(account.getCompanyId() == -1) { // No compagny player.callRemoteEvent("GlobalUI:DispatchToUI", new Gson().toJson(new SetCompagnyPayload( -1, "", 0,0 ))); } else { // Has compagny - Compagny compagny = getCompagnyById(account.getCompanyId()); - if(compagny == null) { // Can't find the compagny + Company company = getCompanyById(account.getCompanyId()); + if(company == null) { // Can't find the compagny player.callRemoteEvent("GlobalUI:DispatchToUI", new Gson().toJson(new SetCompagnyPayload( -1, "", 0,0 ))); @@ -93,15 +88,15 @@ public static void refreshCompagny(Player player) { return; } player.callRemoteEvent("GlobalUI:DispatchToUI", new Gson().toJson(new SetCompagnyPayload( - compagny.getId(), compagny.getName(), compagny.isOwner(player) ? 1:0,compagny.getBankCash() + company.getId(), company.getName(), company.isOwner(player) ? 1:0, company.getBankCash() ))); // Refresh employees player.callRemoteEvent("GlobalUI:DispatchToUI", new Gson().toJson(new ClearCompagnyEmployeesPayload())); - for(Player employee : getOnlineEmployees(compagny)) { + for(Player employee : getOnlineEmployees(company)) { Account eAccount = WorldManager.getPlayerAccount(employee); player.callRemoteEvent("GlobalUI:DispatchToUI", new Gson().toJson(new AddCompagnyEmployeePayload( - employee.getSteamId(), eAccount.getCharacterName(), compagny.isOwner(employee) ? 1 : 0, true + employee.getSteamId(), eAccount.getCharacterName(), company.isOwner(employee) ? 1 : 0, true ))); } } @@ -114,15 +109,15 @@ public static void handleInviteEmployee(Player player, String phoneNumber) { return; } Account account = WorldManager.getPlayerAccount(player); - Compagny compagny = getCompagnyById(account.getCompanyId()); - if(compagny == null) return; + Company company = getCompanyById(account.getCompanyId()); + if(company == null) return; UIStateManager.sendNotification(player, ToastTypeEnum.SUCCESS, "Invitation envoyée"); CharacterState characterState = CharacterManager.getCharacterStateByPlayer(invitedPlayer); - characterState.setCurrentCompagnyInvited(compagny.getId()); + characterState.setCurrentCompagnyInvited(company.getId()); // Build generic menu GenericMenu genericMenu = new GenericMenu(invitedPlayer); - genericMenu.getItems().add(new GenericMenuItem("Voulez-vous rejoindre " + compagny.getName() + " ?", "")); + genericMenu.getItems().add(new GenericMenuItem("Voulez-vous rejoindre " + company.getName() + " ?", "")); genericMenu.getItems().add(new GenericMenuItem("Accepter", "window.CallEvent(\"RemoteCallInterface\", \"Compagny:AcceptInvitation\");")); genericMenu.getItems().add(new GenericMenuItem("Refuser", "window.CallEvent(\"RemoteCallInterface\", \"Compagny:DeclineInvitation\");")); genericMenu.show(); @@ -132,8 +127,8 @@ public static void handleInviteEmployee(Player player, String phoneNumber) { public static void handleAcceptInvitation(Player player) { Account account = WorldManager.getPlayerAccount(player); CharacterState characterState = CharacterManager.getCharacterStateByPlayer(player); - Compagny compagny = getCompagnyById(characterState.getCurrentCompagnyInvited()); - account.setCompanyId(compagny.getId()); + Company company = getCompanyById(characterState.getCurrentCompagnyInvited()); + account.setCompanyId(company.getId()); WorldManager.savePlayer(player); // Reset invitation @@ -143,8 +138,8 @@ public static void handleAcceptInvitation(Player player) { characterState.setCurrentGenericMenu(null); } - for (Player employee : getOnlineEmployees(compagny)) { - refreshCompagny(employee); + for (Player employee : getOnlineEmployees(company)) { + refreshCompany(employee); UIStateManager.sendNotification(employee, ToastTypeEnum.SUCCESS, account.getCharacterName() + " fait désormais partie de l'entreprise"); } } @@ -162,23 +157,23 @@ public static void handleDeclineInvitation(Player player) { public static void handleKickEmployee(Player player, String steamid) { Account account = WorldManager.getPlayerAccount(player); - Compagny compagny = getCompagnyById(account.getCompanyId()); - if(!compagny.isOwner(player)) return; + Company company = getCompanyById(account.getCompanyId()); + if(!company.isOwner(player)) return; Player targetPlayer = WorldManager.findPlayerBySteamId(steamid); if(targetPlayer == null) return; Account targetAccount = WorldManager.getPlayerAccount(targetPlayer); - if(targetAccount.getId() == account.getId() && compagny.isOwner(player)) { + if(targetAccount.getId() == account.getId() && company.isOwner(player)) { UIStateManager.sendNotification(targetPlayer, ToastTypeEnum.ERROR, "Action impossible, contactez un administrateur pour supprimer l'entreprise"); return; } targetAccount.setCompanyId(-1); WorldManager.savePlayer(targetPlayer); - for (Player employee : getOnlineEmployees(compagny)) { - refreshCompagny(employee); + for (Player employee : getOnlineEmployees(company)) { + refreshCompany(employee); UIStateManager.sendNotification(employee, ToastTypeEnum.WARN, targetAccount.getCharacterName() + " fait désormais plus partie de l'entreprise"); } - UIStateManager.sendNotification(targetPlayer, ToastTypeEnum.ERROR, "Vous avez été licencier de l'entreprise " + compagny.getName()); - refreshCompagny(targetPlayer); + UIStateManager.sendNotification(targetPlayer, ToastTypeEnum.ERROR, "Vous avez été licencier de l'entreprise " + company.getName()); + refreshCompany(targetPlayer); } } diff --git a/src/main/java/fr/yuki/YukiRPFramework/manager/FuelManager.java b/src/main/java/fr/yuki/yrpf/manager/FuelManager.java similarity index 82% rename from src/main/java/fr/yuki/YukiRPFramework/manager/FuelManager.java rename to src/main/java/fr/yuki/yrpf/manager/FuelManager.java index 852b895..fdbd0ee 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/manager/FuelManager.java +++ b/src/main/java/fr/yuki/yrpf/manager/FuelManager.java @@ -1,96 +1,94 @@ -package fr.yuki.YukiRPFramework.manager; - -import fr.yuki.YukiRPFramework.character.CharacterLoopAnimation; -import fr.yuki.YukiRPFramework.character.CharacterState; -import fr.yuki.YukiRPFramework.character.CharacterToolAnimation; -import fr.yuki.YukiRPFramework.dao.FuelPointDAO; -import fr.yuki.YukiRPFramework.model.FuelPoint; -import fr.yuki.YukiRPFramework.model.Seller; -import net.onfirenetwork.onsetjava.Onset; -import net.onfirenetwork.onsetjava.data.Vector; -import net.onfirenetwork.onsetjava.entity.Pickup; -import net.onfirenetwork.onsetjava.entity.Player; -import net.onfirenetwork.onsetjava.entity.Vehicle; -import net.onfirenetwork.onsetjava.enums.Animation; - -import java.sql.SQLException; -import java.util.ArrayList; - -public class FuelManager { - private static ArrayList fuelPoints; - - public static void init() throws SQLException { - fuelPoints = FuelPointDAO.loadFuelPoints(); - Onset.print("Loaded " + fuelPoints.size() + " fuel point(s) from the database"); - spawnFuelPoints(); - - Onset.timer(30000, () -> { // 30 minutes - for(Vehicle v : Onset.getVehicles()) { - if(v.isEngineOn()) { - if(v.getPropertyInt("fuel") > 0) { - v.setProperty("fuel", v.getPropertyInt("fuel") - 1, true); - - if(v.getPropertyInt("fuel") <= 0) { - if(v.isEngineOn()) { - v.setEngineOn(false); - } - } - } else { - if(v.isEngineOn()) { - v.setEngineOn(false); - } - } - } - } - }); - } - - public static void spawnFuelPoints() { - for(FuelPoint fuelPoint : fuelPoints) { - Pickup pickup = Onset.getServer().createPickup(new Vector(fuelPoint.getX(), fuelPoint.getY(), fuelPoint.getZ()), 1); - ModdingManager.assignCustomModel(pickup, 50008); - } - } - - public static FuelPoint getNearestFuelPoint(Player player) { - for(FuelPoint fuelPoint : fuelPoints) { - if(fuelPoint.isNear(player)) { - return fuelPoint; - } - } - return null; - } - - public static boolean interactFuelPoint(Player player, boolean fake) { - CharacterState characterState = CharacterManager.getCharacterStateByPlayer(player); - if(!characterState.canInteract()) { - return false; - } - if(player.getVehicle() != null) return false; - if(!fake) { - FuelPoint fuelPoint = getNearestFuelPoint(player); - if(fuelPoint == null) return false; - } - - Vehicle nearbyVehicle = VehicleManager.getNearestVehicle(player.getLocation()); - if(nearbyVehicle == null) return false; - if(nearbyVehicle.getLocation().distance(player.getLocation()) > 300) return false; - if(nearbyVehicle.getPropertyInt("fuel") >= 100) return false; - CharacterManager.setCharacterFreeze(player, true); - nearbyVehicle.setProperty("fuel", 0, true); - - CharacterLoopAnimation characterLoopAnimation = new CharacterLoopAnimation(player, Animation.FISHING, 10000, 1, - "sounds/water_fill.mp3"); - characterLoopAnimation.setTool(new CharacterToolAnimation(507, new Vector(5,10,-15), - new Vector(0,90,0), new Vector(0.75, 0.75, 0.75), "hand_r")); - characterLoopAnimation.start(); - - // Put the object in the hand - Onset.delay(10000, () -> { - nearbyVehicle.setProperty("fuel", 100, true); - CharacterManager.setCharacterFreeze(player, false); - characterLoopAnimation.stop(); - }); - return true; - } -} +package fr.yuki.yrpf.manager; + +import eu.bebendorf.ajorm.Repo; +import fr.yuki.yrpf.character.CharacterLoopAnimation; +import fr.yuki.yrpf.character.CharacterState; +import fr.yuki.yrpf.character.CharacterToolAnimation; +import fr.yuki.yrpf.model.FuelPoint; +import net.onfirenetwork.onsetjava.Onset; +import net.onfirenetwork.onsetjava.data.Vector; +import net.onfirenetwork.onsetjava.entity.Pickup; +import net.onfirenetwork.onsetjava.entity.Player; +import net.onfirenetwork.onsetjava.entity.Vehicle; +import net.onfirenetwork.onsetjava.enums.Animation; + +import java.util.List; + +public class FuelManager { + private static List fuelPoints; + + public static void init() { + fuelPoints = Repo.get(FuelPoint.class).all(); + Onset.print("Loaded " + fuelPoints.size() + " fuel point(s) from the database"); + spawnFuelPoints(); + + Onset.timer(30000, () -> { // 30 minutes + for(Vehicle v : Onset.getVehicles()) { + if(v.isEngineOn()) { + if(v.getPropertyInt("fuel") > 0) { + v.setProperty("fuel", v.getPropertyInt("fuel") - 1, true); + + if(v.getPropertyInt("fuel") <= 0) { + if(v.isEngineOn()) { + v.setEngineOn(false); + } + } + } else { + if(v.isEngineOn()) { + v.setEngineOn(false); + } + } + } + } + }); + } + + public static void spawnFuelPoints() { + for(FuelPoint fuelPoint : fuelPoints) { + Pickup pickup = Onset.getServer().createPickup(new Vector(fuelPoint.getX(), fuelPoint.getY(), fuelPoint.getZ()), 1); + ModdingManager.assignCustomModel(pickup, 50008); + } + } + + public static FuelPoint getNearestFuelPoint(Player player) { + for(FuelPoint fuelPoint : fuelPoints) { + if(fuelPoint.isNear(player)) { + return fuelPoint; + } + } + return null; + } + + public static boolean interactFuelPoint(Player player, boolean fake) { + CharacterState characterState = CharacterManager.getCharacterStateByPlayer(player); + if(!characterState.canInteract()) { + return false; + } + if(player.getVehicle() != null) return false; + if(!fake) { + FuelPoint fuelPoint = getNearestFuelPoint(player); + if(fuelPoint == null) return false; + } + + Vehicle nearbyVehicle = VehicleManager.getNearestVehicle(player.getLocation()); + if(nearbyVehicle == null) return false; + if(nearbyVehicle.getLocation().distance(player.getLocation()) > 300) return false; + if(nearbyVehicle.getPropertyInt("fuel") >= 100) return false; + CharacterManager.setCharacterFreeze(player, true); + nearbyVehicle.setProperty("fuel", 0, true); + + CharacterLoopAnimation characterLoopAnimation = new CharacterLoopAnimation(player, Animation.FISHING, 10000, 1, + "sounds/water_fill.mp3"); + characterLoopAnimation.setTool(new CharacterToolAnimation(507, new Vector(5,10,-15), + new Vector(0,90,0), new Vector(0.75, 0.75, 0.75), "hand_r")); + characterLoopAnimation.start(); + + // Put the object in the hand + Onset.delay(10000, () -> { + nearbyVehicle.setProperty("fuel", 100, true); + CharacterManager.setCharacterFreeze(player, false); + characterLoopAnimation.stop(); + }); + return true; + } +} diff --git a/src/main/java/fr/yuki/YukiRPFramework/manager/GarageManager.java b/src/main/java/fr/yuki/yrpf/manager/GarageManager.java similarity index 93% rename from src/main/java/fr/yuki/YukiRPFramework/manager/GarageManager.java rename to src/main/java/fr/yuki/yrpf/manager/GarageManager.java index c8cb4b4..e004aa7 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/manager/GarageManager.java +++ b/src/main/java/fr/yuki/yrpf/manager/GarageManager.java @@ -1,259 +1,258 @@ -package fr.yuki.YukiRPFramework.manager; - -import com.google.gson.Gson; -import fr.yuki.YukiRPFramework.dao.GarageDAO; -import fr.yuki.YukiRPFramework.dao.VehicleGarageDAO; -import fr.yuki.YukiRPFramework.enums.ItemTemplateEnum; -import fr.yuki.YukiRPFramework.enums.ToastTypeEnum; -import fr.yuki.YukiRPFramework.i18n.I18n; -import fr.yuki.YukiRPFramework.inventory.Inventory; -import fr.yuki.YukiRPFramework.model.*; -import fr.yuki.YukiRPFramework.net.payload.*; -import net.onfirenetwork.onsetjava.Onset; -import net.onfirenetwork.onsetjava.data.Color; -import net.onfirenetwork.onsetjava.data.Vector; -import net.onfirenetwork.onsetjava.entity.Player; -import net.onfirenetwork.onsetjava.entity.Vehicle; - -import java.sql.SQLException; -import java.util.ArrayList; -import java.util.stream.Collectors; - -public class GarageManager { - - private static ArrayList vehicleGarages; - - public static void init() throws SQLException { - vehicleGarages = VehicleGarageDAO.loadVehiclesGarage(); - Onset.print("Loaded " + vehicleGarages.size() + " vehicle(s) from the database"); - - // Reset last garage to vehicle - for(VehicleGarage vehicleGarage : vehicleGarages) { - vehicleGarage.setGarageId(vehicleGarage.getGarageLastId()); - VehicleGarageDAO.saveVehicleGarage(vehicleGarage); - } - } - - /** - * Check if the player is near a garage to interact with - * @param player The player - */ - public static boolean handleGarageInteract(Player player) { - for(Garage garage : WorldManager.getGarages()) { - if(garage.isNear(player)) { - openGarage(player, garage); - return true; - } - } - return false; - } - - public static Garage getNearestGarage(Player player) { - for(Garage garage : WorldManager.getGarages()) { - if(garage.isNear(player)) { - return garage; - } - } - return null; - } - - public static Garage getNearestFromPosGarage(Player player) { - Garage nearest = null; - double distance = 999999999; - for(Garage garage : WorldManager.getGarages()) { - double d = player.getLocation().distance(new Vector(garage.getX(), garage.getY(), garage.getZ())); - if(d < distance) { - nearest = garage; - distance = d; - } - } - return nearest; - } - - /** - * Open the garage to the player - * @param player The player - * @param garage The garage to open - */ - public static void openGarage(Player player, Garage garage) { - if(player.getVehicle() != null) { - storeVehicleInGarage(player, garage); - return; - } - - UIStateManager.handleUIToogle(player, "garage"); - Onset.print("Request garage open player=" + player.getSteamId() + " garageId=" + garage.getId() + " name=" + garage.getName()); - - // Reset the garage first - player.callRemoteEvent("GlobalUI:DispatchToUI", - new Gson().toJson(new ResetVehicleGaragePayload())); - - // Send vehicles to players - for(VehicleGarage vehicleGarage : getVehicleGaragesByPlayer(player, garage.getId())) { - player.callRemoteEvent("GlobalUI:DispatchToUI", - new Gson().toJson(new AddVehicleGaragePayload(vehicleGarage.getModelId(), vehicleGarage.getUuid(), - vehicleGarage.getColor(), vehicleGarage.getLicencePlate()))); - } - } - - /** - * Store the vehicle in the garage - * @param player The player - * @param garage The garage to store - */ - public static void storeVehicleInGarage(Player player, Garage garage) { - Account account = WorldManager.getPlayerAccount(player); - Vehicle vehicle = player.getVehicle(); - if(!vehicle.getPropertyString("owner").equals(player.getSteamId())){ - UIStateManager.sendNotification(player, ToastTypeEnum.ERROR, I18n.t(account.getLang(), "toast.garage.not_owner_vehicle")); - return; - } - // Exit the player from the vehicle - player.exitVehicle(); - - // Update the vehicle instance - VehicleGarage vehicleGarage = vehicleGarages.stream().filter(x -> x.getUuid().equals(vehicle.getPropertyString("uuid"))) - .findFirst().orElse(null); - if(vehicleGarage == null || vehicleGarage.isRental()) { - UIStateManager.sendNotification(player, ToastTypeEnum.ERROR, I18n.t(account.getLang(), "toast.garage.not_owner_vehicle")); - return; - } - vehicleGarage.setGarageId(garage.getId()); - vehicleGarage.setGarageLastId(garage.getId()); - vehicleGarage.computeDamages(vehicle); - VehicleManager.clearKeysForVehicle(vehicle, player); - vehicleGarage.save(); - - // Destroy the vehicle - vehicle.destroy(); - - UIStateManager.sendNotification(player, ToastTypeEnum.SUCCESS, I18n.t(account.getLang(), "toast.garage.vehicle_stored", garage.getName())); - } - - /** - * Get all the vehicles in a specific garage for a player - * @param player The player - * @param garageId The garage id - * @return All players vehicle in the garage given - */ - public static ArrayList getVehicleGaragesByPlayer(Player player, int garageId) { - return new ArrayList<>(vehicleGarages.stream().filter(x -> x.getOwner() == WorldManager.getPlayerAccount(player).getId() && x.getGarageId() == garageId) - .collect(Collectors.toList())); - } - - public static VehicleGarage findVehicleGarageByVehicle(Vehicle vehicle) { - return vehicleGarages.stream().filter(x -> x.getUuid() == vehicle.getPropertyString("uuid")).findFirst().orElse(null); - } - - /** - * Handle the vehicle request from the player on the garage - * @param player The player - */ - public static void handleRequestVehicle(Player player, String vehicleUuid) { - Account account = WorldManager.getPlayerAccount(player); - Garage garage = getNearestGarage(player); - if(garage == null) { - UIStateManager.handleUIToogle(player, "garage"); - return; - } - VehicleGarage vehicleGarage = getVehicleGaragesByPlayer(player, garage.getId()).stream() - .filter(x -> x.getUuid().equals(vehicleUuid)).findFirst().orElse(null); - if(vehicleGarage == null) return; - - if(VehicleManager.getNearestVehicle(player.getLocation()) != null) { - if(VehicleManager.getNearestVehicle(player.getLocation()).getLocation().distance(player.getLocation()) < 400) { - UIStateManager.sendNotification(player, ToastTypeEnum.ERROR, I18n.t(account.getLang(), "toast.garage.vehicle_block_spawn")); - return; - } - } - - UIStateManager.handleUIToogle(player, "garage"); - vehicleGarage.setGarageId(-1); - vehicleGarage.setGarageLastId(garage.getId()); - VehicleManager.CreateVehicleResult createVehicleResult = VehicleManager.createVehicle(vehicleGarage.getModelId(), - new Vector(garage.getX(), garage.getY(), garage.getZ()), player.getLocationAndHeading().getHeading(), - player, vehicleGarage, false); - vehicleGarage.applyDamages(createVehicleResult.getVehicle()); - vehicleGarage.save(); - } - - public static ArrayList getVehicleGarages() { - return vehicleGarages; - } - - public static boolean handleVSellerInteract(Player player) { - for(VehicleSeller vehicleSeller : WorldManager.getVehicleSellers()) { - if(vehicleSeller.isNear(player)) { - openVehicleSeller(player, vehicleSeller); - return true; - } - } - return false; - } - - public static VehicleSeller getNearVehicleSeller(Player player) { - for(VehicleSeller vehicleSeller : WorldManager.getVehicleSellers()) { - if(vehicleSeller.isNear(player)) { - return vehicleSeller; - } - } - return null; - } - - public static void openVehicleSeller(Player player, VehicleSeller vehicleSeller) { - UIStateManager.handleUIToogle(player, "vseller"); - for(SellListItem sellListItem : vehicleSeller.getSellList()) { - player.callRemoteEvent("GlobalUI:DispatchToUI", - new Gson().toJson(new AddVSellerVehiclePayload(sellListItem.getModelId(), sellListItem.getPrice(), - sellListItem.getName(), sellListItem.getDescription()))); - } - } - - public static void handleRequestBuyVehicle(Player player, RequestBuyVehiclePayload payload) { - Account account = WorldManager.getPlayerAccount(player); - - if(player.getVehicle() != null) { - UIStateManager.handleUIToogle(player, "vseller"); - return; - } - - VehicleSeller vehicleSeller = getNearVehicleSeller(player); - if(vehicleSeller == null) { - UIStateManager.handleUIToogle(player, "vseller"); - return; - } - SellListItem sellListItem = vehicleSeller.getSellList().stream().filter(x -> x.getModelId() == payload.getModelId()).findFirst().orElse(null); - if(sellListItem == null) return; - - Vector spawnPoint = new Vector(vehicleSeller.getsX(), vehicleSeller.getsY(), vehicleSeller.getsZ()); - if(VehicleManager.getNearestVehicle(player.getLocation()) != null) { - if(VehicleManager.getNearestVehicle(spawnPoint).getLocation().distance(spawnPoint) < 400) { - UIStateManager.sendNotification(player, ToastTypeEnum.ERROR, I18n.t(account.getLang(), "toast.garage.vehicle_block_spawn")); - return; - } - } - - // Check price - Inventory inventory = InventoryManager.getMainInventory(player); - if(inventory.getCashAmount() < sellListItem.getPrice()) { - UIStateManager.sendNotification(player, ToastTypeEnum.ERROR, I18n.t(account.getLang(), "toast.atm.no_enought_money_on_me")); - UIStateManager.handleUIToogle(player, "vseller"); - return; - } - - UIStateManager.handleUIToogle(player, "vseller"); - - // Remove cash and spawn vehicle - Garage nearestGarage = getNearestFromPosGarage(player); - inventory.removeItem(inventory.getItemByType(ItemTemplateEnum.CASH.id), sellListItem.getPrice()); - VehicleManager.CreateVehicleResult createVehicleResult = VehicleManager.createVehicle(sellListItem.getModelId(), spawnPoint, vehicleSeller.getH(), - player, null, false); - createVehicleResult.getVehicleGarage().setColor(payload.getColor()); - createVehicleResult.getVehicleGarage().setGarageLastId(nearestGarage.getId()); - createVehicleResult.getVehicleGarage().save(); - createVehicleResult.getVehicle().setColor(new Color(payload.getAWTColor().getRed(), payload.getAWTColor().getGreen(), payload.getAWTColor().getBlue())); - - UIStateManager.sendNotification(player, ToastTypeEnum.SUCCESS, - I18n.t(account.getLang(), "toast.vseller.success_buy_vehicle", sellListItem.getName(), String.valueOf(sellListItem.getPrice()))); - } -} +package fr.yuki.yrpf.manager; + +import com.google.gson.Gson; +import fr.yuki.yrpf.dao.VehicleGarageDAO; +import fr.yuki.yrpf.enums.ItemTemplateEnum; +import fr.yuki.yrpf.enums.ToastTypeEnum; +import fr.yuki.yrpf.i18n.I18n; +import fr.yuki.yrpf.inventory.Inventory; +import fr.yuki.yrpf.model.*; +import fr.yuki.yrpf.net.payload.*; +import net.onfirenetwork.onsetjava.Onset; +import net.onfirenetwork.onsetjava.data.Color; +import net.onfirenetwork.onsetjava.data.Vector; +import net.onfirenetwork.onsetjava.entity.Player; +import net.onfirenetwork.onsetjava.entity.Vehicle; + +import java.sql.SQLException; +import java.util.ArrayList; +import java.util.stream.Collectors; + +public class GarageManager { + + private static ArrayList vehicleGarages; + + public static void init() throws SQLException { + vehicleGarages = VehicleGarageDAO.loadVehiclesGarage(); + Onset.print("Loaded " + vehicleGarages.size() + " vehicle(s) from the database"); + + // Reset last garage to vehicle + for(VehicleGarage vehicleGarage : vehicleGarages) { + vehicleGarage.setGarageId(vehicleGarage.getGarageLastId()); + VehicleGarageDAO.saveVehicleGarage(vehicleGarage); + } + } + + /** + * Check if the player is near a garage to interact with + * @param player The player + */ + public static boolean handleGarageInteract(Player player) { + for(Garage garage : WorldManager.getGarages()) { + if(garage.isNear(player)) { + openGarage(player, garage); + return true; + } + } + return false; + } + + public static Garage getNearestGarage(Player player) { + for(Garage garage : WorldManager.getGarages()) { + if(garage.isNear(player)) { + return garage; + } + } + return null; + } + + public static Garage getNearestFromPosGarage(Player player) { + Garage nearest = null; + double distance = 999999999; + for(Garage garage : WorldManager.getGarages()) { + double d = player.getLocation().distance(new Vector(garage.getX(), garage.getY(), garage.getZ())); + if(d < distance) { + nearest = garage; + distance = d; + } + } + return nearest; + } + + /** + * Open the garage to the player + * @param player The player + * @param garage The garage to open + */ + public static void openGarage(Player player, Garage garage) { + if(player.getVehicle() != null) { + storeVehicleInGarage(player, garage); + return; + } + + UIStateManager.handleUIToogle(player, "garage"); + Onset.print("Request garage open player=" + player.getSteamId() + " garageId=" + garage.getId() + " name=" + garage.getName()); + + // Reset the garage first + player.callRemoteEvent("GlobalUI:DispatchToUI", + new Gson().toJson(new ResetVehicleGaragePayload())); + + // Send vehicles to players + for(VehicleGarage vehicleGarage : getVehicleGaragesByPlayer(player, garage.getId())) { + player.callRemoteEvent("GlobalUI:DispatchToUI", + new Gson().toJson(new AddVehicleGaragePayload(vehicleGarage.getModelId(), vehicleGarage.getUuid(), + vehicleGarage.getColor(), vehicleGarage.getLicencePlate()))); + } + } + + /** + * Store the vehicle in the garage + * @param player The player + * @param garage The garage to store + */ + public static void storeVehicleInGarage(Player player, Garage garage) { + Account account = WorldManager.getPlayerAccount(player); + Vehicle vehicle = player.getVehicle(); + if(!vehicle.getPropertyString("owner").equals(player.getSteamId())){ + UIStateManager.sendNotification(player, ToastTypeEnum.ERROR, I18n.t(account.getLang(), "toast.garage.not_owner_vehicle")); + return; + } + // Exit the player from the vehicle + player.exitVehicle(); + + // Update the vehicle instance + VehicleGarage vehicleGarage = vehicleGarages.stream().filter(x -> x.getUuid().equals(vehicle.getPropertyString("uuid"))) + .findFirst().orElse(null); + if(vehicleGarage == null || vehicleGarage.isRental()) { + UIStateManager.sendNotification(player, ToastTypeEnum.ERROR, I18n.t(account.getLang(), "toast.garage.not_owner_vehicle")); + return; + } + vehicleGarage.setGarageId(garage.getId()); + vehicleGarage.setGarageLastId(garage.getId()); + vehicleGarage.computeDamages(vehicle); + VehicleManager.clearKeysForVehicle(vehicle, player); + vehicleGarage.save(); + + // Destroy the vehicle + vehicle.destroy(); + + UIStateManager.sendNotification(player, ToastTypeEnum.SUCCESS, I18n.t(account.getLang(), "toast.garage.vehicle_stored", garage.getName())); + } + + /** + * Get all the vehicles in a specific garage for a player + * @param player The player + * @param garageId The garage id + * @return All players vehicle in the garage given + */ + public static ArrayList getVehicleGaragesByPlayer(Player player, int garageId) { + return new ArrayList<>(vehicleGarages.stream().filter(x -> x.getOwner() == WorldManager.getPlayerAccount(player).getId() && x.getGarageId() == garageId) + .collect(Collectors.toList())); + } + + public static VehicleGarage findVehicleGarageByVehicle(Vehicle vehicle) { + return vehicleGarages.stream().filter(x -> x.getUuid() == vehicle.getPropertyString("uuid")).findFirst().orElse(null); + } + + /** + * Handle the vehicle request from the player on the garage + * @param player The player + */ + public static void handleRequestVehicle(Player player, String vehicleUuid) { + Account account = WorldManager.getPlayerAccount(player); + Garage garage = getNearestGarage(player); + if(garage == null) { + UIStateManager.handleUIToogle(player, "garage"); + return; + } + VehicleGarage vehicleGarage = getVehicleGaragesByPlayer(player, garage.getId()).stream() + .filter(x -> x.getUuid().equals(vehicleUuid)).findFirst().orElse(null); + if(vehicleGarage == null) return; + + if(VehicleManager.getNearestVehicle(player.getLocation()) != null) { + if(VehicleManager.getNearestVehicle(player.getLocation()).getLocation().distance(player.getLocation()) < 400) { + UIStateManager.sendNotification(player, ToastTypeEnum.ERROR, I18n.t(account.getLang(), "toast.garage.vehicle_block_spawn")); + return; + } + } + + UIStateManager.handleUIToogle(player, "garage"); + vehicleGarage.setGarageId(-1); + vehicleGarage.setGarageLastId(garage.getId()); + VehicleManager.CreateVehicleResult createVehicleResult = VehicleManager.createVehicle(vehicleGarage.getModelId(), + new Vector(garage.getX(), garage.getY(), garage.getZ()), player.getLocationAndHeading().getHeading(), + player, vehicleGarage, false); + vehicleGarage.applyDamages(createVehicleResult.getVehicle()); + vehicleGarage.save(); + } + + public static ArrayList getVehicleGarages() { + return vehicleGarages; + } + + public static boolean handleVSellerInteract(Player player) { + for(VehicleSeller vehicleSeller : WorldManager.getVehicleSellers()) { + if(vehicleSeller.isNear(player)) { + openVehicleSeller(player, vehicleSeller); + return true; + } + } + return false; + } + + public static VehicleSeller getNearVehicleSeller(Player player) { + for(VehicleSeller vehicleSeller : WorldManager.getVehicleSellers()) { + if(vehicleSeller.isNear(player)) { + return vehicleSeller; + } + } + return null; + } + + public static void openVehicleSeller(Player player, VehicleSeller vehicleSeller) { + UIStateManager.handleUIToogle(player, "vseller"); + for(SellListItem sellListItem : vehicleSeller.getSellList()) { + player.callRemoteEvent("GlobalUI:DispatchToUI", + new Gson().toJson(new AddVSellerVehiclePayload(sellListItem.getModelId(), sellListItem.getPrice(), + sellListItem.getName(), sellListItem.getDescription()))); + } + } + + public static void handleRequestBuyVehicle(Player player, RequestBuyVehiclePayload payload) { + Account account = WorldManager.getPlayerAccount(player); + + if(player.getVehicle() != null) { + UIStateManager.handleUIToogle(player, "vseller"); + return; + } + + VehicleSeller vehicleSeller = getNearVehicleSeller(player); + if(vehicleSeller == null) { + UIStateManager.handleUIToogle(player, "vseller"); + return; + } + SellListItem sellListItem = vehicleSeller.getSellList().stream().filter(x -> x.getModelId() == payload.getModelId()).findFirst().orElse(null); + if(sellListItem == null) return; + + Vector spawnPoint = vehicleSeller.getSpawnLocation(); + if(VehicleManager.getNearestVehicle(player.getLocation()) != null) { + if(VehicleManager.getNearestVehicle(spawnPoint).getLocation().distance(spawnPoint) < 400) { + UIStateManager.sendNotification(player, ToastTypeEnum.ERROR, I18n.t(account.getLang(), "toast.garage.vehicle_block_spawn")); + return; + } + } + + // Check price + Inventory inventory = InventoryManager.getMainInventory(player); + if(inventory.getCashAmount() < sellListItem.getPrice()) { + UIStateManager.sendNotification(player, ToastTypeEnum.ERROR, I18n.t(account.getLang(), "toast.atm.no_enought_money_on_me")); + UIStateManager.handleUIToogle(player, "vseller"); + return; + } + + UIStateManager.handleUIToogle(player, "vseller"); + + // Remove cash and spawn vehicle + Garage nearestGarage = getNearestFromPosGarage(player); + inventory.removeItem(inventory.getItemByType(ItemTemplateEnum.CASH.id), sellListItem.getPrice()); + VehicleManager.CreateVehicleResult createVehicleResult = VehicleManager.createVehicle(sellListItem.getModelId(), spawnPoint, vehicleSeller.getH(), + player, null, false); + createVehicleResult.getVehicleGarage().setColor(payload.getColor()); + createVehicleResult.getVehicleGarage().setGarageLastId(nearestGarage.getId()); + createVehicleResult.getVehicleGarage().save(); + createVehicleResult.getVehicle().setColor(new Color(payload.getAWTColor().getRed(), payload.getAWTColor().getGreen(), payload.getAWTColor().getBlue())); + + UIStateManager.sendNotification(player, ToastTypeEnum.SUCCESS, + I18n.t(account.getLang(), "toast.vseller.success_buy_vehicle", sellListItem.getName(), String.valueOf(sellListItem.getPrice()))); + } +} diff --git a/src/main/java/fr/yuki/YukiRPFramework/manager/GrowboxManager.java b/src/main/java/fr/yuki/yrpf/manager/GrowboxManager.java similarity index 90% rename from src/main/java/fr/yuki/YukiRPFramework/manager/GrowboxManager.java rename to src/main/java/fr/yuki/yrpf/manager/GrowboxManager.java index 3230d42..5a1e818 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/manager/GrowboxManager.java +++ b/src/main/java/fr/yuki/yrpf/manager/GrowboxManager.java @@ -1,154 +1,151 @@ -package fr.yuki.YukiRPFramework.manager; - -import fr.yuki.YukiRPFramework.dao.GrowboxDAO; -import fr.yuki.YukiRPFramework.enums.JobEnum; -import fr.yuki.YukiRPFramework.job.tools.Generator; -import fr.yuki.YukiRPFramework.job.tools.GrowBox; -import fr.yuki.YukiRPFramework.model.GrowboxModel; -import fr.yuki.YukiRPFramework.model.JobTool; -import fr.yuki.YukiRPFramework.net.payload.GrowboxFillWaterPotPayload; -import net.onfirenetwork.onsetjava.Onset; -import net.onfirenetwork.onsetjava.data.Vector; -import net.onfirenetwork.onsetjava.entity.Player; - -import java.sql.SQLException; -import java.util.ArrayList; -import java.util.Timer; -import java.util.TimerTask; -import java.util.stream.Collectors; - -public class GrowboxManager { - public static void init() throws SQLException { - // Load growboxes - for(GrowboxModel growboxModel : GrowboxDAO.loadGrowbox()) { - JobTool jobTool = new JobTool(); - jobTool.setId(-1); - jobTool.setModelId(50007); - jobTool.setName("GrowBox"); - jobTool.setJobType("WEED"); - jobTool.setLevelRequired(1); - jobTool.setReward(0); - jobTool.setX(growboxModel.getX()); - jobTool.setY(growboxModel.getY()); - jobTool.setZ(growboxModel.getZ()); - jobTool.setRx(growboxModel.getRx()); - jobTool.setRy(growboxModel.getRy()); - jobTool.setRz(growboxModel.getRz()); - jobTool.setSx(1); - jobTool.setSy(1); - jobTool.setSz(1); - jobTool.setJobToolType("GROWBOX"); - ((GrowBox)jobTool.getJobToolHandler()).setGrowboxModel(growboxModel); - JobManager.getJobTools().add(jobTool); - jobTool.spawn(JobManager.getJobs().get(JobEnum.WEED)); - } - - Onset.timer(10000, () -> { - tickGrow(); - }); - - Onset.timer(20000, () -> { - tickGenerator(); - }); - } - - public static void tickGrow() { - try { - for(JobTool jobTool : JobManager.getJobTools().stream().filter(x -> x.getJobToolType().toLowerCase().equals("growbox")) - .collect(Collectors.toList())) { - try { - GrowBox growBox = (GrowBox)jobTool.getJobToolHandler(); - growBox.tickGrow(); - }catch (Exception ex) { - ex.printStackTrace(); - Onset.print("Can't tick single grow: " + ex.toString()); - } - } - } catch (Exception ex) { - ex.printStackTrace(); - Onset.print("Can't tick grow: " + ex.toString()); - } - } - - public static void tickGenerator() { - try { - for(JobTool jobTool : JobManager.getJobTools().stream().filter(x -> x.getJobToolType().toLowerCase().equals("generator")) - .collect(Collectors.toList())) { - try { - Generator generator = (Generator) jobTool.getJobToolHandler(); - generator.tickFuel(); - } catch (Exception ex) { - ex.printStackTrace(); - Onset.print("Can't tick single generator: " + ex.toString()); - } - } - } catch (Exception ex) { - ex.printStackTrace();; - Onset.print("Can't tick generator: " + ex.toString()); - } - } - - public static Generator getGeneratorNearby(Vector position, int distance) { - for(JobTool jobTool : JobManager.getJobTools().stream().filter(x -> x.getJobToolType().toLowerCase().equals("generator")) - .collect(Collectors.toList())) { - Generator generator = (Generator)jobTool.getJobToolHandler(); - if(new Vector(jobTool.getX(), jobTool.getY(), jobTool.getZ()).distance(position) <= distance) { - return generator; - } - } - return null; - } - - public static Generator getGeneratorOnNearby(Vector position, int distance) { - for(JobTool jobTool : JobManager.getJobTools().stream().filter(x -> x.getJobToolType().toLowerCase().equals("generator")) - .collect(Collectors.toList())) { - Generator generator = (Generator)jobTool.getJobToolHandler(); - if(generator.isOn()) { - if(new Vector(jobTool.getX(), jobTool.getY(), jobTool.getZ()).distance(position) <= distance) { - return generator; - } - } - } - return null; - } - - public static void handleGrowboxFillWaterPot(Player player, GrowboxFillWaterPotPayload payload) { - JobTool jobTool = JobManager.getJobTools().stream().filter - (x -> x.getUuid().equals(payload.getGrowboxId())).findFirst().orElse(null); - if(jobTool == null) return; - GrowBox growBox = (GrowBox)jobTool.getJobToolHandler(); - growBox.fillPotWater(player, payload.getPotId()); - } - - public static void handleGrowboxFillSeedPot(Player player, GrowboxFillWaterPotPayload payload) { - JobTool jobTool = JobManager.getJobTools().stream().filter - (x -> x.getUuid().equals(payload.getGrowboxId())).findFirst().orElse(null); - if(jobTool == null) return; - GrowBox growBox = (GrowBox)jobTool.getJobToolHandler(); - growBox.fillPotSeed(player, payload.getPotId()); - } - - public static void handleGrowboxHarvestRequest(Player player, GrowboxFillWaterPotPayload payload) { - JobTool jobTool = JobManager.getJobTools().stream().filter - (x -> x.getUuid().equals(payload.getGrowboxId())).findFirst().orElse(null); - if(jobTool == null) return; - GrowBox growBox = (GrowBox)jobTool.getJobToolHandler(); - growBox.harvestPot(player, payload.getPotId()); - } - - public static void handleGrowboxTakePotRequest(Player player, GrowboxFillWaterPotPayload payload) { - JobTool jobTool = JobManager.getJobTools().stream().filter - (x -> x.getUuid().equals(payload.getGrowboxId())).findFirst().orElse(null); - if(jobTool == null) return; - GrowBox growBox = (GrowBox)jobTool.getJobToolHandler(); - growBox.takePot(player, payload.getPotId()); - } - - public static void handleGrowboxDestroy(Player player, String growboxId) { - JobTool jobTool = JobManager.getJobTools().stream().filter - (x -> x.getUuid().equals(growboxId)).findFirst().orElse(null); - if(jobTool == null) return; - GrowBox growBox = (GrowBox)jobTool.getJobToolHandler(); - growBox.destroy(player); - } -} +package fr.yuki.yrpf.manager; + +import fr.yuki.yrpf.dao.GrowboxDAO; +import fr.yuki.yrpf.enums.JobEnum; +import fr.yuki.yrpf.job.tools.Generator; +import fr.yuki.yrpf.job.tools.GrowBox; +import fr.yuki.yrpf.model.GrowboxModel; +import fr.yuki.yrpf.model.JobTool; +import fr.yuki.yrpf.net.payload.GrowboxFillWaterPotPayload; +import net.onfirenetwork.onsetjava.Onset; +import net.onfirenetwork.onsetjava.data.Vector; +import net.onfirenetwork.onsetjava.entity.Player; + +import java.sql.SQLException; +import java.util.stream.Collectors; + +public class GrowboxManager { + public static void init() throws SQLException { + // Load growboxes + for(GrowboxModel growboxModel : GrowboxDAO.loadGrowbox()) { + JobTool jobTool = new JobTool(); + jobTool.setId(-1); + jobTool.setModelId(50007); + jobTool.setName("GrowBox"); + jobTool.setJobType("WEED"); + jobTool.setLevelRequired(1); + jobTool.setReward(0); + jobTool.setX(growboxModel.getX()); + jobTool.setY(growboxModel.getY()); + jobTool.setZ(growboxModel.getZ()); + jobTool.setRx(growboxModel.getRx()); + jobTool.setRy(growboxModel.getRy()); + jobTool.setRz(growboxModel.getRz()); + jobTool.setSx(1); + jobTool.setSy(1); + jobTool.setSz(1); + jobTool.setJobToolType("GROWBOX"); + ((GrowBox)jobTool.getJobToolHandler()).setGrowboxModel(growboxModel); + JobManager.getJobTools().add(jobTool); + jobTool.spawn(JobManager.getJobs().get(JobEnum.WEED)); + } + + Onset.timer(10000, () -> { + tickGrow(); + }); + + Onset.timer(20000, () -> { + tickGenerator(); + }); + } + + public static void tickGrow() { + try { + for(JobTool jobTool : JobManager.getJobTools().stream().filter(x -> x.getJobToolType().toLowerCase().equals("growbox")) + .collect(Collectors.toList())) { + try { + GrowBox growBox = (GrowBox)jobTool.getJobToolHandler(); + growBox.tickGrow(); + }catch (Exception ex) { + ex.printStackTrace(); + Onset.print("Can't tick single grow: " + ex.toString()); + } + } + } catch (Exception ex) { + ex.printStackTrace(); + Onset.print("Can't tick grow: " + ex.toString()); + } + } + + public static void tickGenerator() { + try { + for(JobTool jobTool : JobManager.getJobTools().stream().filter(x -> x.getJobToolType().toLowerCase().equals("generator")) + .collect(Collectors.toList())) { + try { + Generator generator = (Generator) jobTool.getJobToolHandler(); + generator.tickFuel(); + } catch (Exception ex) { + ex.printStackTrace(); + Onset.print("Can't tick single generator: " + ex.toString()); + } + } + } catch (Exception ex) { + ex.printStackTrace();; + Onset.print("Can't tick generator: " + ex.toString()); + } + } + + public static Generator getGeneratorNearby(Vector position, int distance) { + for(JobTool jobTool : JobManager.getJobTools().stream().filter(x -> x.getJobToolType().toLowerCase().equals("generator")) + .collect(Collectors.toList())) { + Generator generator = (Generator)jobTool.getJobToolHandler(); + if(new Vector(jobTool.getX(), jobTool.getY(), jobTool.getZ()).distance(position) <= distance) { + return generator; + } + } + return null; + } + + public static Generator getGeneratorOnNearby(Vector position, int distance) { + for(JobTool jobTool : JobManager.getJobTools().stream().filter(x -> x.getJobToolType().toLowerCase().equals("generator")) + .collect(Collectors.toList())) { + Generator generator = (Generator)jobTool.getJobToolHandler(); + if(generator.isOn()) { + if(new Vector(jobTool.getX(), jobTool.getY(), jobTool.getZ()).distance(position) <= distance) { + return generator; + } + } + } + return null; + } + + public static void handleGrowboxFillWaterPot(Player player, GrowboxFillWaterPotPayload payload) { + JobTool jobTool = JobManager.getJobTools().stream().filter + (x -> x.getUuid().equals(payload.getGrowboxId())).findFirst().orElse(null); + if(jobTool == null) return; + GrowBox growBox = (GrowBox)jobTool.getJobToolHandler(); + growBox.fillPotWater(player, payload.getPotId()); + } + + public static void handleGrowboxFillSeedPot(Player player, GrowboxFillWaterPotPayload payload) { + JobTool jobTool = JobManager.getJobTools().stream().filter + (x -> x.getUuid().equals(payload.getGrowboxId())).findFirst().orElse(null); + if(jobTool == null) return; + GrowBox growBox = (GrowBox)jobTool.getJobToolHandler(); + growBox.fillPotSeed(player, payload.getPotId()); + } + + public static void handleGrowboxHarvestRequest(Player player, GrowboxFillWaterPotPayload payload) { + JobTool jobTool = JobManager.getJobTools().stream().filter + (x -> x.getUuid().equals(payload.getGrowboxId())).findFirst().orElse(null); + if(jobTool == null) return; + GrowBox growBox = (GrowBox)jobTool.getJobToolHandler(); + growBox.harvestPot(player, payload.getPotId()); + } + + public static void handleGrowboxTakePotRequest(Player player, GrowboxFillWaterPotPayload payload) { + JobTool jobTool = JobManager.getJobTools().stream().filter + (x -> x.getUuid().equals(payload.getGrowboxId())).findFirst().orElse(null); + if(jobTool == null) return; + GrowBox growBox = (GrowBox)jobTool.getJobToolHandler(); + growBox.takePot(player, payload.getPotId()); + } + + public static void handleGrowboxDestroy(Player player, String growboxId) { + JobTool jobTool = JobManager.getJobTools().stream().filter + (x -> x.getUuid().equals(growboxId)).findFirst().orElse(null); + if(jobTool == null) return; + GrowBox growBox = (GrowBox)jobTool.getJobToolHandler(); + growBox.destroy(player); + } +} diff --git a/src/main/java/fr/yuki/YukiRPFramework/manager/HouseManager.java b/src/main/java/fr/yuki/yrpf/manager/HouseManager.java similarity index 87% rename from src/main/java/fr/yuki/YukiRPFramework/manager/HouseManager.java rename to src/main/java/fr/yuki/yrpf/manager/HouseManager.java index fd35c69..75d3f66 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/manager/HouseManager.java +++ b/src/main/java/fr/yuki/yrpf/manager/HouseManager.java @@ -1,19 +1,19 @@ -package fr.yuki.YukiRPFramework.manager; +package fr.yuki.yrpf.manager; import com.google.gson.Gson; import com.google.gson.reflect.TypeToken; import eu.bebendorf.ajorm.Repo; -import fr.yuki.YukiRPFramework.character.CharacterState; -import fr.yuki.YukiRPFramework.dao.HouseDAO; -import fr.yuki.YukiRPFramework.dao.HouseItemDAO; -import fr.yuki.YukiRPFramework.enums.ItemTemplateEnum; -import fr.yuki.YukiRPFramework.enums.ToastTypeEnum; -import fr.yuki.YukiRPFramework.i18n.I18n; -import fr.yuki.YukiRPFramework.inventory.Inventory; -import fr.yuki.YukiRPFramework.job.ObjectPlacementInstance; -import fr.yuki.YukiRPFramework.job.placementObject.GenericPlacementInstance; -import fr.yuki.YukiRPFramework.model.*; -import fr.yuki.YukiRPFramework.net.payload.SetHouseInfosPayload; +import fr.yuki.yrpf.character.CharacterState; +import fr.yuki.yrpf.dao.HouseItemDAO; +import fr.yuki.yrpf.enums.ItemTemplateEnum; +import fr.yuki.yrpf.enums.ToastTypeEnum; +import fr.yuki.yrpf.i18n.I18n; +import fr.yuki.yrpf.inventory.Inventory; +import fr.yuki.yrpf.job.ObjectPlacementInstance; +import fr.yuki.yrpf.job.placementObject.GenericPlacementInstance; +import fr.yuki.yrpf.model.*; +import fr.yuki.yrpf.net.payload.SetHouseInfosPayload; +import lombok.Getter; import net.onfirenetwork.onsetjava.Onset; import net.onfirenetwork.onsetjava.data.Vector; import net.onfirenetwork.onsetjava.entity.Door; @@ -23,13 +23,16 @@ import java.io.FileReader; import java.sql.SQLException; import java.util.ArrayList; +import java.util.List; public class HouseManager { - public static ArrayList houses; - public static ArrayList itemShopObjects; + @Getter + public static List houses; + @Getter + public static List itemShopObjects; public static void init() throws SQLException { - houses = HouseDAO.loadHouses(); + houses = Repo.get(House.class).all(); Onset.print("Loaded " + houses.size() + " house(s) from the database"); loadItemsShop(); @@ -105,7 +108,7 @@ public static void handleBuyHouseRequest(Player player) throws SQLException { } inventory.removeItem(inventory.getItemByType(ItemTemplateEnum.CASH.id), house.getPrice()); house.setAccountId(account.getId()); - HouseDAO.saveHouse(house); + house.save(); UIStateManager.sendNotification(player, ToastTypeEnum.SUCCESS, I18n.t(account.getLang(), "toast.house.success_buy")); UIStateManager.handleUIToogle(player, "houseBuy"); } @@ -166,11 +169,4 @@ public static boolean canBuildInHouse(Player player, House house) { return false; } - public static ArrayList getHouses() { - return houses; - } - - public static ArrayList getItemShopObjects() { - return itemShopObjects; - } } diff --git a/src/main/java/fr/yuki/YukiRPFramework/manager/InventoryManager.java b/src/main/java/fr/yuki/yrpf/manager/InventoryManager.java similarity index 87% rename from src/main/java/fr/yuki/YukiRPFramework/manager/InventoryManager.java rename to src/main/java/fr/yuki/yrpf/manager/InventoryManager.java index 9e1016b..3a8e463 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/manager/InventoryManager.java +++ b/src/main/java/fr/yuki/yrpf/manager/InventoryManager.java @@ -1,160 +1,160 @@ -package fr.yuki.YukiRPFramework.manager; - -import com.google.gson.Gson; -import fr.yuki.YukiRPFramework.dao.InventoryDAO; -import fr.yuki.YukiRPFramework.dao.ItemTemplateDAO; -import fr.yuki.YukiRPFramework.enums.ToastTypeEnum; -import fr.yuki.YukiRPFramework.i18n.I18n; -import fr.yuki.YukiRPFramework.inventory.Inventory; -import fr.yuki.YukiRPFramework.inventory.InventoryItem; -import fr.yuki.YukiRPFramework.model.Account; -import fr.yuki.YukiRPFramework.model.GroundItem; -import fr.yuki.YukiRPFramework.model.ItemTemplate; -import fr.yuki.YukiRPFramework.net.payload.RemoteItemInventoryPayload; -import fr.yuki.YukiRPFramework.net.payload.RequestInventoryContentPayload; -import fr.yuki.YukiRPFramework.net.payload.RequestThrowItemPayload; -import fr.yuki.YukiRPFramework.utils.Basic; -import net.onfirenetwork.onsetjava.Onset; -import net.onfirenetwork.onsetjava.data.Vector; -import net.onfirenetwork.onsetjava.entity.Player; - -import java.sql.SQLException; -import java.util.*; - -public class InventoryManager { - private static HashMap itemTemplates; - private static HashMap inventories; - - public static void init() throws SQLException { - itemTemplates = ItemTemplateDAO.getItemTemplates(); - Onset.print("Loaded " + itemTemplates.size() + " item template(s) from the database"); - - inventories = InventoryDAO.loadInventories(); - Onset.print("Loaded " + inventories.size() + " inventorie(s) from the database"); - } - - /** - * Find a inventory by the id - * @param id The inventory id - * @return The inventory - */ - public static Inventory getInventoryById(int id) { - if(!inventories.containsKey(id)) return null; - return inventories.get(id); - } - - /** - * Get all inventories for the player - * @param accountId The account id - * @return All inventories of the player - */ - public static ArrayList getInventoriesForAccount(int accountId) { - ArrayList playerInventories = new ArrayList<>(); - for(Map.Entry inventoryEntry : inventories.entrySet()) { - try { - if(accountId == inventoryEntry.getValue().getCharacterId()) { - playerInventories.add(inventoryEntry.getValue()); - } - }catch (Exception ex) {} - } - return playerInventories; - } - - /** - * Try to add the item to the player inventory, this function check the weight - * @param player The player - * @param templateId The template id - * @param quantity The quantity - * @return The fresh or existing item - */ - public static InventoryItem addItemToPlayer(Player player, String templateId, int quantity, boolean checkWeight) { - Onset.print("Add item=" + templateId + " to size=" + getInventoriesForAccount(player.getPropertyInt("accountId")).size()); - Inventory inventory = getInventoriesForAccount(player.getPropertyInt("accountId")).get(0); - InventoryItem inventoryItem = new InventoryItem(); - inventoryItem.setId(UUID.randomUUID().toString()); - inventoryItem.setTemplateId(templateId); - inventoryItem.setAmount(quantity); - inventoryItem.setExtraProperties(new HashMap<>()); - - Account account = WorldManager.getPlayerAccount(player); - if(checkWeight) { - if(!checkInventoryWeight(player, inventoryItem)) { - UIStateManager.sendNotification(player, ToastTypeEnum.ERROR, I18n.t(account.getLang(), "toast.inventory.no_space_left")); - return null; - } - } - inventoryItem = inventory.addItem(inventoryItem); - inventory.save(); - Onset.print("Inventory weight is now " + inventory.getCurrentWeight() + "/" + inventory.getMaxWeight()); - return inventoryItem; - } - - public static Inventory getMainInventory(Player player) { - return getInventoriesForAccount(player.getPropertyInt("accountId")).get(0); - } - - /** - * Check if the item can fit in the inventory - * @param player The player - * @param inventoryItem The item to fit - * @return If the weight is ok - */ - public static boolean checkInventoryWeight(Player player, InventoryItem inventoryItem) { - Inventory inventory = getInventoriesForAccount(player.getPropertyInt("accountId")).get(0); - if(inventory.getCurrentWeight() + (inventoryItem.getTemplate().getWeight() * inventoryItem.getAmount()) > inventory.getMaxWeight()) { - return false; - } - return true; - } - - /** - * The client request the inventory content - * @param player The player - * @param payload The inventory type - */ - public static void handleRequestContent(Player player, RequestInventoryContentPayload payload) { - Onset.print("Request inventory type="+payload.getType()); - switch (payload.getType()) { - case "main": - getInventoriesForAccount(player.getPropertyInt("accountId")).get(0) - .sendInventoryContent(player); - break; - } - } - - public static void handleThrowItem(Player player, RequestThrowItemPayload payload) { - Onset.print("Player request to throw a item id=" + payload.getId() + " quantity=" + payload.getQuantity()); - if(payload.getQuantity() <= 0) return; - Inventory inventory = getMainInventory(player); - InventoryItem sourceItem = inventory.getItem(payload.getId()); - if(sourceItem == null) return; - if(payload.getQuantity() > sourceItem.getAmount()) return; - - InventoryItem inventoryItem = sourceItem; - if(payload.getQuantity() < sourceItem.getAmount()) { - inventoryItem = sourceItem.copy(); - inventoryItem.setAmount(payload.getQuantity()); - sourceItem.setAmount(sourceItem.getAmount() - payload.getQuantity()); - inventory.updateItemPlayerView(sourceItem); - } else { - inventory.getInventoryItems().remove(sourceItem); - player.callRemoteEvent("GlobalUI:DispatchToUI", new Gson().toJson(new RemoteItemInventoryPayload(sourceItem.getId()))); - } - - GroundItem groundItem = new GroundItem(inventoryItem, payload.getQuantity(), - new Vector(player.getLocation().getX() + Basic.randomNumber(-150, 150), - player.getLocation().getY() + Basic.randomNumber(-150, 150), - player.getLocation().getZ())); - WorldManager.getGroundItems().add(groundItem); - InventoryManager.getMainInventory(player).save(); - inventory.updateWeightView(); - } - - public static HashMap getItemTemplates() { - return itemTemplates; - } - - public static HashMap getInventories() { - return inventories; - } -} +package fr.yuki.yrpf.manager; + +import com.google.gson.Gson; +import fr.yuki.yrpf.dao.InventoryDAO; +import fr.yuki.yrpf.dao.ItemTemplateDAO; +import fr.yuki.yrpf.enums.ToastTypeEnum; +import fr.yuki.yrpf.i18n.I18n; +import fr.yuki.yrpf.inventory.Inventory; +import fr.yuki.yrpf.inventory.InventoryItem; +import fr.yuki.yrpf.model.Account; +import fr.yuki.yrpf.model.GroundItem; +import fr.yuki.yrpf.model.ItemTemplate; +import fr.yuki.yrpf.net.payload.RemoteItemInventoryPayload; +import fr.yuki.yrpf.net.payload.RequestInventoryContentPayload; +import fr.yuki.yrpf.net.payload.RequestThrowItemPayload; +import fr.yuki.yrpf.utils.Basic; +import net.onfirenetwork.onsetjava.Onset; +import net.onfirenetwork.onsetjava.data.Vector; +import net.onfirenetwork.onsetjava.entity.Player; + +import java.sql.SQLException; +import java.util.*; + +public class InventoryManager { + private static HashMap itemTemplates; + private static HashMap inventories; + + public static void init() throws SQLException { + itemTemplates = ItemTemplateDAO.getItemTemplates(); + Onset.print("Loaded " + itemTemplates.size() + " item template(s) from the database"); + + inventories = InventoryDAO.loadInventories(); + Onset.print("Loaded " + inventories.size() + " inventorie(s) from the database"); + } + + /** + * Find a inventory by the id + * @param id The inventory id + * @return The inventory + */ + public static Inventory getInventoryById(int id) { + if(!inventories.containsKey(id)) return null; + return inventories.get(id); + } + + /** + * Get all inventories for the player + * @param accountId The account id + * @return All inventories of the player + */ + public static ArrayList getInventoriesForAccount(int accountId) { + ArrayList playerInventories = new ArrayList<>(); + for(Map.Entry inventoryEntry : inventories.entrySet()) { + try { + if(accountId == inventoryEntry.getValue().getCharacterId()) { + playerInventories.add(inventoryEntry.getValue()); + } + }catch (Exception ex) {} + } + return playerInventories; + } + + /** + * Try to add the item to the player inventory, this function check the weight + * @param player The player + * @param templateId The template id + * @param quantity The quantity + * @return The fresh or existing item + */ + public static InventoryItem addItemToPlayer(Player player, String templateId, int quantity, boolean checkWeight) { + Onset.print("Add item=" + templateId + " to size=" + getInventoriesForAccount(player.getPropertyInt("accountId")).size()); + Inventory inventory = getInventoriesForAccount(player.getPropertyInt("accountId")).get(0); + InventoryItem inventoryItem = new InventoryItem(); + inventoryItem.setId(UUID.randomUUID().toString()); + inventoryItem.setTemplateId(templateId); + inventoryItem.setAmount(quantity); + inventoryItem.setExtraProperties(new HashMap<>()); + + Account account = WorldManager.getPlayerAccount(player); + if(checkWeight) { + if(!checkInventoryWeight(player, inventoryItem)) { + UIStateManager.sendNotification(player, ToastTypeEnum.ERROR, I18n.t(account.getLang(), "toast.inventory.no_space_left")); + return null; + } + } + inventoryItem = inventory.addItem(inventoryItem); + inventory.save(); + Onset.print("Inventory weight is now " + inventory.getCurrentWeight() + "/" + inventory.getMaxWeight()); + return inventoryItem; + } + + public static Inventory getMainInventory(Player player) { + return getInventoriesForAccount(player.getPropertyInt("accountId")).get(0); + } + + /** + * Check if the item can fit in the inventory + * @param player The player + * @param inventoryItem The item to fit + * @return If the weight is ok + */ + public static boolean checkInventoryWeight(Player player, InventoryItem inventoryItem) { + Inventory inventory = getInventoriesForAccount(player.getPropertyInt("accountId")).get(0); + if(inventory.getCurrentWeight() + (inventoryItem.getTemplate().getWeight() * inventoryItem.getAmount()) > inventory.getMaxWeight()) { + return false; + } + return true; + } + + /** + * The client request the inventory content + * @param player The player + * @param payload The inventory type + */ + public static void handleRequestContent(Player player, RequestInventoryContentPayload payload) { + Onset.print("Request inventory type="+payload.getType()); + switch (payload.getType()) { + case "main": + getInventoriesForAccount(player.getPropertyInt("accountId")).get(0) + .sendInventoryContent(player); + break; + } + } + + public static void handleThrowItem(Player player, RequestThrowItemPayload payload) { + Onset.print("Player request to throw a item id=" + payload.getId() + " quantity=" + payload.getQuantity()); + if(payload.getQuantity() <= 0) return; + Inventory inventory = getMainInventory(player); + InventoryItem sourceItem = inventory.getItem(payload.getId()); + if(sourceItem == null) return; + if(payload.getQuantity() > sourceItem.getAmount()) return; + + InventoryItem inventoryItem = sourceItem; + if(payload.getQuantity() < sourceItem.getAmount()) { + inventoryItem = sourceItem.copy(); + inventoryItem.setAmount(payload.getQuantity()); + sourceItem.setAmount(sourceItem.getAmount() - payload.getQuantity()); + inventory.updateItemPlayerView(sourceItem); + } else { + inventory.getInventoryItems().remove(sourceItem); + player.callRemoteEvent("GlobalUI:DispatchToUI", new Gson().toJson(new RemoteItemInventoryPayload(sourceItem.getId()))); + } + + GroundItem groundItem = new GroundItem(inventoryItem, payload.getQuantity(), + new Vector(player.getLocation().getX() + Basic.randomNumber(-150, 150), + player.getLocation().getY() + Basic.randomNumber(-150, 150), + player.getLocation().getZ())); + WorldManager.getGroundItems().add(groundItem); + InventoryManager.getMainInventory(player).save(); + inventory.updateWeightView(); + } + + public static HashMap getItemTemplates() { + return itemTemplates; + } + + public static HashMap getInventories() { + return inventories; + } +} diff --git a/src/main/java/fr/yuki/YukiRPFramework/manager/ItemManager.java b/src/main/java/fr/yuki/yrpf/manager/ItemManager.java similarity index 91% rename from src/main/java/fr/yuki/YukiRPFramework/manager/ItemManager.java rename to src/main/java/fr/yuki/yrpf/manager/ItemManager.java index c9fe09f..a78f833 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/manager/ItemManager.java +++ b/src/main/java/fr/yuki/yrpf/manager/ItemManager.java @@ -1,400 +1,397 @@ -package fr.yuki.YukiRPFramework.manager; - -import com.google.gson.Gson; -import com.google.gson.reflect.TypeToken; -import fr.yuki.YukiRPFramework.character.CharacterLoopAnimation; -import fr.yuki.YukiRPFramework.character.CharacterState; -import fr.yuki.YukiRPFramework.character.CharacterToolAnimation; -import fr.yuki.YukiRPFramework.enums.ToastTypeEnum; -import fr.yuki.YukiRPFramework.i18n.I18n; -import fr.yuki.YukiRPFramework.inventory.Inventory; -import fr.yuki.YukiRPFramework.inventory.InventoryItem; -import fr.yuki.YukiRPFramework.job.ObjectPlacementInstance; -import fr.yuki.YukiRPFramework.job.WearableWorldObject; -import fr.yuki.YukiRPFramework.job.placementObject.GeneratorPlacementInstance; -import fr.yuki.YukiRPFramework.job.placementObject.GrowBoxPlacementInstance; -import fr.yuki.YukiRPFramework.job.tools.Generator; -import fr.yuki.YukiRPFramework.model.Account; -import fr.yuki.YukiRPFramework.model.Bag; -import fr.yuki.YukiRPFramework.model.ItemShopObject; -import fr.yuki.YukiRPFramework.model.Mask; -import fr.yuki.YukiRPFramework.net.payload.RequestThrowItemPayload; -import fr.yuki.YukiRPFramework.net.payload.RequestUseItemPayload; -import fr.yuki.YukiRPFramework.ui.UIState; -import net.onfirenetwork.onsetjava.Onset; -import net.onfirenetwork.onsetjava.data.Vector; -import net.onfirenetwork.onsetjava.entity.Player; -import net.onfirenetwork.onsetjava.entity.Vehicle; -import net.onfirenetwork.onsetjava.enums.Animation; - -import java.io.File; -import java.io.FileReader; -import java.util.ArrayList; - -public class ItemManager { - public static ArrayList masks = new ArrayList<>(); - public static ArrayList bags = new ArrayList<>(); - - public static void init() { - loadMasks(); - loadBags(); - } - - private static void loadMasks() { - try { - new File("yrpf").mkdir(); - masks = new Gson().fromJson(new FileReader("yrpf/masks.json"), new TypeToken>(){}.getType()); - Onset.print("Loaded " + masks.size() + " mask(s) from the cache"); - } catch (Exception e) { - Onset.print("Can't load mask cache: " + e.toString()); - } - } - - private static void loadBags() { - try { - new File("yrpf").mkdir(); - bags = new Gson().fromJson(new FileReader("yrpf/bags.json"), new TypeToken>(){}.getType()); - Onset.print("Loaded " + bags.size() + " bag(s) from the cache"); - } catch (Exception e) { - Onset.print("Can't load bags cache: " + e.toString()); - } - } - - public static void handleItemUse(Player player, RequestUseItemPayload payload) { - Inventory inventory = InventoryManager.getMainInventory(player); - InventoryItem inventoryItem = inventory.getItem(payload.getId()); - if(inventoryItem == null) return; - if(inventoryItem.getAmount() <= 0) return; - Account account = WorldManager.getPlayerAccount(player); - - CharacterState state = CharacterManager.getCharacterStateByPlayer(player); - if(state.isCuffed()) return; - - // Check food item - if(inventoryItem.getTemplate().getFoodValue() != 0 || inventoryItem.getTemplate().getDrinkValue() != 0) { - useFood(player, inventoryItem); - return; - } - - // Check weapon items - if(inventoryItem.getTemplate().getWeaponId() != -1) { - if(WeaponManager.requestEquipWeapon(player, inventoryItem.getTemplate().getWeaponId())) { - inventory.removeItem(inventoryItem, 1); - } - else { - UIStateManager.sendNotification(player, ToastTypeEnum.ERROR, I18n.t(account.getLang(), "toast.weapon.no_slot_available")); - } - return; - } - - // Check mask item - if(inventoryItem.getTemplate().getMaskId() != -1) { - Mask mask = masks.stream().filter(x -> x.getModelId() == inventoryItem.getTemplate().getMaskId()) - .findFirst().orElse(null); - if(mask == null) { - Onset.print("Can't find the mask in the masks.json id: " + mask.getModelId()); - return; - } - if(state.getCurrentMask() != null) { - state.unattachMask(); - return; - } - state.attachMask(mask, player); - return; - } - - // Check bag item - if(inventoryItem.getTemplate().getBagId() != -1) { - Bag bag = bags.stream().filter(x -> x.getModelId() == inventoryItem.getTemplate().getBagId()) - .findFirst().orElse(null); - if(bag == null) { - Onset.print("Can't find the bag in the bags.json id: " + inventoryItem.getTemplate().getBagId()); - return; - } - if(state.getCurrentBag() != null) { - state.unattachBag(player); - return; - } - state.attachBag(bag, player); - inventory.removeItem(inventoryItem, 1); - - inventory.updateWeightView(); - return; - } - - // Check custom actions per item - switch (inventoryItem.getTemplateId()) { - case "11": // Temp need to use a enum - usePot(player, inventoryItem); - break; - - case "10": // Ticket livraison: growbox - useDeliveryTicketGrowbox(player, inventoryItem); - break; - - case "14": // Ticket livraison: generator - useDeliveryTicketGenerator(player, inventoryItem); - break; - - case "15": // Jerrican fuel - useJerricanFuel(player, inventoryItem); - break; - - case "16": // Cuff - useCuff(player, inventoryItem); - break; - - case "17": // Defibrilator - useDefibrilator(player, inventoryItem); - break; - - case "18": // Light saber - useLightSaber(player, inventoryItem); - break; - - case "20": // Ammo - useAmmo(player, inventoryItem); - break; - - case "28": // RepairKit - useRepairKit(player, inventoryItem); - break; - - case "33": // Bandage - useBandage(player, inventoryItem); - break; - - case "34": // Jack - useJack(player, inventoryItem); - break; - } - } - - private static void useJack(Player player, InventoryItem inventoryItem) { - if(player.getVehicle() != null) return; - CharacterState state = CharacterManager.getCharacterStateByPlayer(player); - if(!state.canInteract()) return; - Vehicle vehicle = VehicleManager.getNearestVehicle(player.getLocation()); - if(vehicle == null) return; - if(vehicle.getLocation().distance(player.getLocation()) > 500) return; - //Inventory inventory = InventoryManager.getMainInventory(player); - //inventory.removeItem(inventoryItem, 1); - - CharacterLoopAnimation characterLoopAnimation = new CharacterLoopAnimation(player, Animation.COMBINE, - 5000, 2, "sounds/car_repair_1.mp3"); - characterLoopAnimation.start(); - CharacterManager.setCharacterFreeze(player, true); - vehicle.setEngineOn(false); - Onset.delay(15000, () -> { - CharacterManager.setCharacterFreeze(player, false); - vehicle.setRotation(new Vector(0 , vehicle.getRotation().getY(),0)); - }); - } - - private static void useBandage(Player player, InventoryItem inventoryItem) { - CharacterState state = CharacterManager.getCharacterStateByPlayer(player); - Account account = WorldManager.getPlayerAccount(player); - if(!state.canInteract()) { - return; - } - if(state.getWearableWorldObject() != null) { // Can't use the item because the player wear something already - UIStateManager.sendNotification(player, ToastTypeEnum.ERROR, I18n.t(account.getLang(), "action.vehicle.wearSomething")); - return; - } - if(player.isDead()) return; - if(player.getHealth() >= 100) return; - - player.setAnimation(Animation.COMBINE); - if(player.getHealth() + 25 > 100) { - player.setHealth(100); - } else { - player.setHealth(player.getHealth() + 25); - } - - Inventory inventory = InventoryManager.getMainInventory(player); - inventory.removeItem(inventoryItem, 1); - } - - private static void useFood(Player player, InventoryItem inventoryItem) { - CharacterState state = CharacterManager.getCharacterStateByPlayer(player); - Account account = WorldManager.getPlayerAccount(player); - if(!state.canInteract()) { - return; - } - if(state.getWearableWorldObject() != null) { // Can't use the item because the player wear something already - UIStateManager.sendNotification(player, ToastTypeEnum.ERROR, I18n.t(account.getLang(), "action.vehicle.wearSomething")); - return; - } - CharacterManager.applyFoodChange(player, inventoryItem.getTemplate().getFoodValue()); - CharacterManager.applyDrinkChange(player, inventoryItem.getTemplate().getDrinkValue()); - player.setAnimation(Animation.DRINKING); - - Inventory inventory = InventoryManager.getMainInventory(player); - inventory.removeItem(inventoryItem, 1); - } - - private static void useCuff(Player player, InventoryItem inventoryItem) { - if(player.getVehicle() != null) return; - Player nearestPlayer = WorldManager.getNearestPlayer(player); - if(nearestPlayer == null) return; - if(nearestPlayer.getLocation().distance(player.getLocation()) > 200) return; - WorldManager.cuffPlayer(nearestPlayer); - - Inventory inventory = InventoryManager.getMainInventory(player); - inventory.removeItem(inventoryItem, 1); - } - - private static void usePot(Player player, InventoryItem inventoryItem) { - if(player.getVehicle() != null) return; - Account account = WorldManager.getPlayerAccount(player); - CharacterState state = CharacterManager.getCharacterStateByPlayer(player); - if(state.getWearableWorldObject() != null) { // Can't use the item because the player wear something already - UIStateManager.sendNotification(player, ToastTypeEnum.ERROR, I18n.t(account.getLang(), "action.vehicle.wearSomething")); - return; - } - - // Put the object in the hand - CharacterToolAnimation characterToolAnimation = new CharacterToolAnimation(554, new Vector(0, 8, 0), - new Vector(90,0, 90), new Vector(1.50,1.50,2.40), "hand_r"); - WearableWorldObject wearableWorldObject = new WearableWorldObject(554, true, - Animation.CARRY_IDLE, characterToolAnimation, player.getLocation()); - JobManager.getWearableWorldObjects().add(wearableWorldObject); - JobManager.handleWearObjectRequest(player, wearableWorldObject.getUuid()); - - // Delete the item from the inventory - Inventory inventory = InventoryManager.getMainInventory(player); - inventory.removeItem(inventoryItem, 1); - } - - private static void useDeliveryTicketGrowbox(Player player, InventoryItem inventoryItem) { - if(player.getVehicle() != null) return; - CharacterState characterState = CharacterManager.getCharacterStateByPlayer(player); - if(characterState.getCurrentObjectPlacementInstance() != null) { - return; - } - - UIStateManager.handleUIToogle(player, "inventory"); - ObjectPlacementInstance objectPlacementInstance = new GrowBoxPlacementInstance(50007, player.getLocation()); - characterState.setCurrentObjectPlacementInstance(objectPlacementInstance); - objectPlacementInstance.spawn(); - objectPlacementInstance.setEditableBy(player); - } - - private static void useDeliveryTicketGenerator(Player player, InventoryItem inventoryItem) { - if(player.getVehicle() != null) return; - CharacterState characterState = CharacterManager.getCharacterStateByPlayer(player); - if(characterState.getCurrentObjectPlacementInstance() != null) { - return; - } - - UIStateManager.handleUIToogle(player, "inventory"); - ObjectPlacementInstance objectPlacementInstance = new GeneratorPlacementInstance( player.getLocation()); - characterState.setCurrentObjectPlacementInstance(objectPlacementInstance); - objectPlacementInstance.spawn(); - objectPlacementInstance.setEditableBy(player); - } - - private static void useJerricanFuel(Player player, InventoryItem inventoryItem) { - if(player.getVehicle() != null) return; - Account account = WorldManager.getPlayerAccount(player); - CharacterState state = CharacterManager.getCharacterStateByPlayer(player); - if(state.getWearableWorldObject() != null) { // Can't use the item because the player wear something already - UIStateManager.sendNotification(player, ToastTypeEnum.ERROR, I18n.t(account.getLang(), "action.vehicle.wearSomething")); - return; - } - - Generator generator = GrowboxManager.getGeneratorNearby(player.getLocation(), 250); - if(generator != null) { - if(generator.getFuel() >= 100) return; - - // Delete the item from the inventory - Inventory inventory = InventoryManager.getMainInventory(player); - inventory.removeItem(inventoryItem, 1); - - CharacterManager.setCharacterFreeze(player, true); - CharacterLoopAnimation characterLoopAnimation = new CharacterLoopAnimation(player, Animation.FISHING, 10000, 1, - "sounds/water_fill.mp3"); - characterLoopAnimation.setTool(new CharacterToolAnimation(507, new Vector(5,10,-15), - new Vector(0,90,0), new Vector(0.75, 0.75, 0.75), "hand_r")); - characterLoopAnimation.start(); - - // Put the object in the hand - Onset.delay(10000, () -> { - generator.setFuel(100); - CharacterManager.setCharacterFreeze(player, false); - characterLoopAnimation.stop(); - }); - return; - } - - Vehicle vehicleNearby = VehicleManager.getNearestVehicle(player.getLocation()); - if(vehicleNearby != null) { - if(vehicleNearby.getLocation().distance(player.getLocation()) < 300) { - FuelManager.interactFuelPoint(player, true); - return; - } - } - } - - private static void useDefibrilator(Player player, InventoryItem inventoryItem) { - if(player.getVehicle() != null) return; - Player nearestPlayer = WorldManager.getNearestPlayer(player); - if(nearestPlayer == null) return; - if(nearestPlayer.getLocation().distance(player.getLocation()) > 200) return; - WorldManager.revive(player, nearestPlayer); - Inventory inventory = InventoryManager.getMainInventory(player); - inventory.removeItem(inventoryItem, 1); - } - - private static void useLightSaber(Player player, InventoryItem inventoryItem) { - if(player.getVehicle() != null) return; - Account account = WorldManager.getPlayerAccount(player); - CharacterState state = CharacterManager.getCharacterStateByPlayer(player); - if(state.getWearableWorldObject() != null) { // Can't use the item because the player wear something already - UIStateManager.sendNotification(player, ToastTypeEnum.ERROR, I18n.t(account.getLang(), "action.vehicle.wearSomething")); - return; - } - - // Put the object in the hand - CharacterToolAnimation characterToolAnimation = new CharacterToolAnimation(50009, new Vector(-7, 7, 0), - new Vector(90,90, 0), new Vector(0.05,0.05,0.05), "hand_r"); - WearableWorldObject wearableWorldObject = new WearableWorldObject(50009, true, - Animation.STOP, characterToolAnimation, player.getLocation()); - JobManager.getWearableWorldObjects().add(wearableWorldObject); - JobManager.handleWearObjectRequest(player, wearableWorldObject.getUuid()); - SoundManager.playSound3D("sounds/ls_sound.mp3", player.getLocation(), 700, 1); - } - - private static void useAmmo(Player player, InventoryItem inventoryItem) { - if(WeaponManager.fillWeaponWithAmmo(player)) { - Inventory inventory = InventoryManager.getMainInventory(player); - inventory.removeItem(inventoryItem, 1); - } - } - - private static void useRepairKit(Player player, InventoryItem inventoryItem) { - if(player.getVehicle() != null) return; - CharacterState state = CharacterManager.getCharacterStateByPlayer(player); - if(!state.canInteract()) return; - Vehicle vehicle = VehicleManager.getNearestVehicle(player.getLocation()); - if(vehicle == null) return; - if(vehicle.getLocation().distance(player.getLocation()) > 500) return; - Inventory inventory = InventoryManager.getMainInventory(player); - inventory.removeItem(inventoryItem, 1); - - vehicle.setHood(80); - CharacterLoopAnimation characterLoopAnimation = new CharacterLoopAnimation(player, Animation.COMBINE, - 5000, 2, "sounds/car_repair_1.mp3"); - characterLoopAnimation.start(); - CharacterManager.setCharacterFreeze(player, true); - vehicle.setEngineOn(false); - Onset.delay(15000, () -> { - CharacterManager.setCharacterFreeze(player, false); - vehicle.setHealth(5000); - for(int i = 0; i < 8; i++) { - vehicle.setDamage(i + 1, 0); - } - vehicle.setHood(0); - }); - } -} +package fr.yuki.yrpf.manager; + +import com.google.gson.Gson; +import com.google.gson.reflect.TypeToken; +import fr.yuki.yrpf.character.CharacterLoopAnimation; +import fr.yuki.yrpf.character.CharacterState; +import fr.yuki.yrpf.character.CharacterToolAnimation; +import fr.yuki.yrpf.enums.ToastTypeEnum; +import fr.yuki.yrpf.i18n.I18n; +import fr.yuki.yrpf.inventory.Inventory; +import fr.yuki.yrpf.inventory.InventoryItem; +import fr.yuki.yrpf.job.ObjectPlacementInstance; +import fr.yuki.yrpf.job.WearableWorldObject; +import fr.yuki.yrpf.job.placementObject.GeneratorPlacementInstance; +import fr.yuki.yrpf.job.placementObject.GrowBoxPlacementInstance; +import fr.yuki.yrpf.job.tools.Generator; +import fr.yuki.yrpf.model.Account; +import fr.yuki.yrpf.model.Bag; +import fr.yuki.yrpf.model.Mask; +import fr.yuki.yrpf.net.payload.RequestUseItemPayload; +import net.onfirenetwork.onsetjava.Onset; +import net.onfirenetwork.onsetjava.data.Vector; +import net.onfirenetwork.onsetjava.entity.Player; +import net.onfirenetwork.onsetjava.entity.Vehicle; +import net.onfirenetwork.onsetjava.enums.Animation; + +import java.io.File; +import java.io.FileReader; +import java.util.ArrayList; + +public class ItemManager { + public static ArrayList masks = new ArrayList<>(); + public static ArrayList bags = new ArrayList<>(); + + public static void init() { + loadMasks(); + loadBags(); + } + + private static void loadMasks() { + try { + new File("yrpf").mkdir(); + masks = new Gson().fromJson(new FileReader("yrpf/masks.json"), new TypeToken>(){}.getType()); + Onset.print("Loaded " + masks.size() + " mask(s) from the cache"); + } catch (Exception e) { + Onset.print("Can't load mask cache: " + e.toString()); + } + } + + private static void loadBags() { + try { + new File("yrpf").mkdir(); + bags = new Gson().fromJson(new FileReader("yrpf/bags.json"), new TypeToken>(){}.getType()); + Onset.print("Loaded " + bags.size() + " bag(s) from the cache"); + } catch (Exception e) { + Onset.print("Can't load bags cache: " + e.toString()); + } + } + + public static void handleItemUse(Player player, RequestUseItemPayload payload) { + Inventory inventory = InventoryManager.getMainInventory(player); + InventoryItem inventoryItem = inventory.getItem(payload.getId()); + if(inventoryItem == null) return; + if(inventoryItem.getAmount() <= 0) return; + Account account = WorldManager.getPlayerAccount(player); + + CharacterState state = CharacterManager.getCharacterStateByPlayer(player); + if(state.isCuffed()) return; + + // Check food item + if(inventoryItem.getTemplate().getFoodValue() != 0 || inventoryItem.getTemplate().getDrinkValue() != 0) { + useFood(player, inventoryItem); + return; + } + + // Check weapon items + if(inventoryItem.getTemplate().getWeaponId() != -1) { + if(WeaponManager.requestEquipWeapon(player, inventoryItem.getTemplate().getWeaponId())) { + inventory.removeItem(inventoryItem, 1); + } + else { + UIStateManager.sendNotification(player, ToastTypeEnum.ERROR, I18n.t(account.getLang(), "toast.weapon.no_slot_available")); + } + return; + } + + // Check mask item + if(inventoryItem.getTemplate().getMaskId() != -1) { + Mask mask = masks.stream().filter(x -> x.getModelId() == inventoryItem.getTemplate().getMaskId()) + .findFirst().orElse(null); + if(mask == null) { + Onset.print("Can't find the mask in the masks.json id: " + mask.getModelId()); + return; + } + if(state.getCurrentMask() != null) { + state.unattachMask(); + return; + } + state.attachMask(mask, player); + return; + } + + // Check bag item + if(inventoryItem.getTemplate().getBagId() != -1) { + Bag bag = bags.stream().filter(x -> x.getModelId() == inventoryItem.getTemplate().getBagId()) + .findFirst().orElse(null); + if(bag == null) { + Onset.print("Can't find the bag in the bags.json id: " + inventoryItem.getTemplate().getBagId()); + return; + } + if(state.getCurrentBag() != null) { + state.unattachBag(player); + return; + } + state.attachBag(bag, player); + inventory.removeItem(inventoryItem, 1); + + inventory.updateWeightView(); + return; + } + + // Check custom actions per item + switch (inventoryItem.getTemplateId()) { + case "11": // Temp need to use a enum + usePot(player, inventoryItem); + break; + + case "10": // Ticket livraison: growbox + useDeliveryTicketGrowbox(player, inventoryItem); + break; + + case "14": // Ticket livraison: generator + useDeliveryTicketGenerator(player, inventoryItem); + break; + + case "15": // Jerrican fuel + useJerricanFuel(player, inventoryItem); + break; + + case "16": // Cuff + useCuff(player, inventoryItem); + break; + + case "17": // Defibrilator + useDefibrilator(player, inventoryItem); + break; + + case "18": // Light saber + useLightSaber(player, inventoryItem); + break; + + case "20": // Ammo + useAmmo(player, inventoryItem); + break; + + case "28": // RepairKit + useRepairKit(player, inventoryItem); + break; + + case "33": // Bandage + useBandage(player, inventoryItem); + break; + + case "34": // Jack + useJack(player, inventoryItem); + break; + } + } + + private static void useJack(Player player, InventoryItem inventoryItem) { + if(player.getVehicle() != null) return; + CharacterState state = CharacterManager.getCharacterStateByPlayer(player); + if(!state.canInteract()) return; + Vehicle vehicle = VehicleManager.getNearestVehicle(player.getLocation()); + if(vehicle == null) return; + if(vehicle.getLocation().distance(player.getLocation()) > 500) return; + //Inventory inventory = InventoryManager.getMainInventory(player); + //inventory.removeItem(inventoryItem, 1); + + CharacterLoopAnimation characterLoopAnimation = new CharacterLoopAnimation(player, Animation.COMBINE, + 5000, 2, "sounds/car_repair_1.mp3"); + characterLoopAnimation.start(); + CharacterManager.setCharacterFreeze(player, true); + vehicle.setEngineOn(false); + Onset.delay(15000, () -> { + CharacterManager.setCharacterFreeze(player, false); + vehicle.setRotation(new Vector(0 , vehicle.getRotation().getY(),0)); + }); + } + + private static void useBandage(Player player, InventoryItem inventoryItem) { + CharacterState state = CharacterManager.getCharacterStateByPlayer(player); + Account account = WorldManager.getPlayerAccount(player); + if(!state.canInteract()) { + return; + } + if(state.getWearableWorldObject() != null) { // Can't use the item because the player wear something already + UIStateManager.sendNotification(player, ToastTypeEnum.ERROR, I18n.t(account.getLang(), "action.vehicle.wearSomething")); + return; + } + if(player.isDead()) return; + if(player.getHealth() >= 100) return; + + player.setAnimation(Animation.COMBINE); + if(player.getHealth() + 25 > 100) { + player.setHealth(100); + } else { + player.setHealth(player.getHealth() + 25); + } + + Inventory inventory = InventoryManager.getMainInventory(player); + inventory.removeItem(inventoryItem, 1); + } + + private static void useFood(Player player, InventoryItem inventoryItem) { + CharacterState state = CharacterManager.getCharacterStateByPlayer(player); + Account account = WorldManager.getPlayerAccount(player); + if(!state.canInteract()) { + return; + } + if(state.getWearableWorldObject() != null) { // Can't use the item because the player wear something already + UIStateManager.sendNotification(player, ToastTypeEnum.ERROR, I18n.t(account.getLang(), "action.vehicle.wearSomething")); + return; + } + CharacterManager.applyFoodChange(player, inventoryItem.getTemplate().getFoodValue()); + CharacterManager.applyDrinkChange(player, inventoryItem.getTemplate().getDrinkValue()); + player.setAnimation(Animation.DRINKING); + + Inventory inventory = InventoryManager.getMainInventory(player); + inventory.removeItem(inventoryItem, 1); + } + + private static void useCuff(Player player, InventoryItem inventoryItem) { + if(player.getVehicle() != null) return; + Player nearestPlayer = WorldManager.getNearestPlayer(player); + if(nearestPlayer == null) return; + if(nearestPlayer.getLocation().distance(player.getLocation()) > 200) return; + WorldManager.cuffPlayer(nearestPlayer); + + Inventory inventory = InventoryManager.getMainInventory(player); + inventory.removeItem(inventoryItem, 1); + } + + private static void usePot(Player player, InventoryItem inventoryItem) { + if(player.getVehicle() != null) return; + Account account = WorldManager.getPlayerAccount(player); + CharacterState state = CharacterManager.getCharacterStateByPlayer(player); + if(state.getWearableWorldObject() != null) { // Can't use the item because the player wear something already + UIStateManager.sendNotification(player, ToastTypeEnum.ERROR, I18n.t(account.getLang(), "action.vehicle.wearSomething")); + return; + } + + // Put the object in the hand + CharacterToolAnimation characterToolAnimation = new CharacterToolAnimation(554, new Vector(0, 8, 0), + new Vector(90,0, 90), new Vector(1.50,1.50,2.40), "hand_r"); + WearableWorldObject wearableWorldObject = new WearableWorldObject(554, true, + Animation.CARRY_IDLE, characterToolAnimation, player.getLocation()); + JobManager.getWearableWorldObjects().add(wearableWorldObject); + JobManager.handleWearObjectRequest(player, wearableWorldObject.getUuid()); + + // Delete the item from the inventory + Inventory inventory = InventoryManager.getMainInventory(player); + inventory.removeItem(inventoryItem, 1); + } + + private static void useDeliveryTicketGrowbox(Player player, InventoryItem inventoryItem) { + if(player.getVehicle() != null) return; + CharacterState characterState = CharacterManager.getCharacterStateByPlayer(player); + if(characterState.getCurrentObjectPlacementInstance() != null) { + return; + } + + UIStateManager.handleUIToogle(player, "inventory"); + ObjectPlacementInstance objectPlacementInstance = new GrowBoxPlacementInstance(50007, player.getLocation()); + characterState.setCurrentObjectPlacementInstance(objectPlacementInstance); + objectPlacementInstance.spawn(); + objectPlacementInstance.setEditableBy(player); + } + + private static void useDeliveryTicketGenerator(Player player, InventoryItem inventoryItem) { + if(player.getVehicle() != null) return; + CharacterState characterState = CharacterManager.getCharacterStateByPlayer(player); + if(characterState.getCurrentObjectPlacementInstance() != null) { + return; + } + + UIStateManager.handleUIToogle(player, "inventory"); + ObjectPlacementInstance objectPlacementInstance = new GeneratorPlacementInstance( player.getLocation()); + characterState.setCurrentObjectPlacementInstance(objectPlacementInstance); + objectPlacementInstance.spawn(); + objectPlacementInstance.setEditableBy(player); + } + + private static void useJerricanFuel(Player player, InventoryItem inventoryItem) { + if(player.getVehicle() != null) return; + Account account = WorldManager.getPlayerAccount(player); + CharacterState state = CharacterManager.getCharacterStateByPlayer(player); + if(state.getWearableWorldObject() != null) { // Can't use the item because the player wear something already + UIStateManager.sendNotification(player, ToastTypeEnum.ERROR, I18n.t(account.getLang(), "action.vehicle.wearSomething")); + return; + } + + Generator generator = GrowboxManager.getGeneratorNearby(player.getLocation(), 250); + if(generator != null) { + if(generator.getFuel() >= 100) return; + + // Delete the item from the inventory + Inventory inventory = InventoryManager.getMainInventory(player); + inventory.removeItem(inventoryItem, 1); + + CharacterManager.setCharacterFreeze(player, true); + CharacterLoopAnimation characterLoopAnimation = new CharacterLoopAnimation(player, Animation.FISHING, 10000, 1, + "sounds/water_fill.mp3"); + characterLoopAnimation.setTool(new CharacterToolAnimation(507, new Vector(5,10,-15), + new Vector(0,90,0), new Vector(0.75, 0.75, 0.75), "hand_r")); + characterLoopAnimation.start(); + + // Put the object in the hand + Onset.delay(10000, () -> { + generator.setFuel(100); + CharacterManager.setCharacterFreeze(player, false); + characterLoopAnimation.stop(); + }); + return; + } + + Vehicle vehicleNearby = VehicleManager.getNearestVehicle(player.getLocation()); + if(vehicleNearby != null) { + if(vehicleNearby.getLocation().distance(player.getLocation()) < 300) { + FuelManager.interactFuelPoint(player, true); + return; + } + } + } + + private static void useDefibrilator(Player player, InventoryItem inventoryItem) { + if(player.getVehicle() != null) return; + Player nearestPlayer = WorldManager.getNearestPlayer(player); + if(nearestPlayer == null) return; + if(nearestPlayer.getLocation().distance(player.getLocation()) > 200) return; + WorldManager.revive(player, nearestPlayer); + Inventory inventory = InventoryManager.getMainInventory(player); + inventory.removeItem(inventoryItem, 1); + } + + private static void useLightSaber(Player player, InventoryItem inventoryItem) { + if(player.getVehicle() != null) return; + Account account = WorldManager.getPlayerAccount(player); + CharacterState state = CharacterManager.getCharacterStateByPlayer(player); + if(state.getWearableWorldObject() != null) { // Can't use the item because the player wear something already + UIStateManager.sendNotification(player, ToastTypeEnum.ERROR, I18n.t(account.getLang(), "action.vehicle.wearSomething")); + return; + } + + // Put the object in the hand + CharacterToolAnimation characterToolAnimation = new CharacterToolAnimation(50009, new Vector(-7, 7, 0), + new Vector(90,90, 0), new Vector(0.05,0.05,0.05), "hand_r"); + WearableWorldObject wearableWorldObject = new WearableWorldObject(50009, true, + Animation.STOP, characterToolAnimation, player.getLocation()); + JobManager.getWearableWorldObjects().add(wearableWorldObject); + JobManager.handleWearObjectRequest(player, wearableWorldObject.getUuid()); + SoundManager.playSound3D("sounds/ls_sound.mp3", player.getLocation(), 700, 1); + } + + private static void useAmmo(Player player, InventoryItem inventoryItem) { + if(WeaponManager.fillWeaponWithAmmo(player)) { + Inventory inventory = InventoryManager.getMainInventory(player); + inventory.removeItem(inventoryItem, 1); + } + } + + private static void useRepairKit(Player player, InventoryItem inventoryItem) { + if(player.getVehicle() != null) return; + CharacterState state = CharacterManager.getCharacterStateByPlayer(player); + if(!state.canInteract()) return; + Vehicle vehicle = VehicleManager.getNearestVehicle(player.getLocation()); + if(vehicle == null) return; + if(vehicle.getLocation().distance(player.getLocation()) > 500) return; + Inventory inventory = InventoryManager.getMainInventory(player); + inventory.removeItem(inventoryItem, 1); + + vehicle.setHood(80); + CharacterLoopAnimation characterLoopAnimation = new CharacterLoopAnimation(player, Animation.COMBINE, + 5000, 2, "sounds/car_repair_1.mp3"); + characterLoopAnimation.start(); + CharacterManager.setCharacterFreeze(player, true); + vehicle.setEngineOn(false); + Onset.delay(15000, () -> { + CharacterManager.setCharacterFreeze(player, false); + vehicle.setHealth(5000); + for(int i = 0; i < 8; i++) { + vehicle.setDamage(i + 1, 0); + } + vehicle.setHood(0); + }); + } +} diff --git a/src/main/java/fr/yuki/YukiRPFramework/manager/JobManager.java b/src/main/java/fr/yuki/yrpf/manager/JobManager.java similarity index 96% rename from src/main/java/fr/yuki/YukiRPFramework/manager/JobManager.java rename to src/main/java/fr/yuki/yrpf/manager/JobManager.java index bfe0efc..b067ecb 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/manager/JobManager.java +++ b/src/main/java/fr/yuki/yrpf/manager/JobManager.java @@ -1,22 +1,20 @@ -package fr.yuki.YukiRPFramework.manager; +package fr.yuki.yrpf.manager; import com.google.gson.Gson; -import fr.yuki.YukiRPFramework.character.CharacterJobLevel; -import fr.yuki.YukiRPFramework.character.CharacterState; -import fr.yuki.YukiRPFramework.character.CharacterStyle; -import fr.yuki.YukiRPFramework.dao.*; -import fr.yuki.YukiRPFramework.enums.ItemTemplateEnum; -import fr.yuki.YukiRPFramework.enums.JobEnum; -import fr.yuki.YukiRPFramework.enums.ToastTypeEnum; -import fr.yuki.YukiRPFramework.i18n.I18n; -import fr.yuki.YukiRPFramework.inventory.Inventory; -import fr.yuki.YukiRPFramework.inventory.InventoryItem; -import fr.yuki.YukiRPFramework.job.*; -import fr.yuki.YukiRPFramework.model.*; -import fr.yuki.YukiRPFramework.net.payload.AddCharacterJobPayload; -import fr.yuki.YukiRPFramework.net.payload.AddToastPayload; -import fr.yuki.YukiRPFramework.net.payload.AddXpBarItemPayload; -import fr.yuki.YukiRPFramework.ui.UIState; +import fr.yuki.yrpf.character.CharacterJobLevel; +import fr.yuki.yrpf.character.CharacterState; +import fr.yuki.yrpf.character.CharacterStyle; +import fr.yuki.yrpf.dao.*; +import fr.yuki.yrpf.enums.ItemTemplateEnum; +import fr.yuki.yrpf.enums.JobEnum; +import fr.yuki.yrpf.enums.ToastTypeEnum; +import fr.yuki.yrpf.i18n.I18n; +import fr.yuki.yrpf.inventory.Inventory; +import fr.yuki.yrpf.inventory.InventoryItem; +import fr.yuki.yrpf.job.*; +import fr.yuki.yrpf.model.*; +import fr.yuki.yrpf.net.payload.AddCharacterJobPayload; +import fr.yuki.yrpf.net.payload.AddXpBarItemPayload; import net.onfirenetwork.onsetjava.Onset; import net.onfirenetwork.onsetjava.data.Color; import net.onfirenetwork.onsetjava.data.Vector; diff --git a/src/main/java/fr/yuki/YukiRPFramework/manager/MapManager.java b/src/main/java/fr/yuki/yrpf/manager/MapManager.java similarity index 70% rename from src/main/java/fr/yuki/YukiRPFramework/manager/MapManager.java rename to src/main/java/fr/yuki/yrpf/manager/MapManager.java index 262d9ce..736ae9b 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/manager/MapManager.java +++ b/src/main/java/fr/yuki/yrpf/manager/MapManager.java @@ -1,42 +1,40 @@ -package fr.yuki.YukiRPFramework.manager; - -import com.google.gson.Gson; -import fr.yuki.YukiRPFramework.job.JobConfig; -import fr.yuki.YukiRPFramework.model.GameMapConfig; -import fr.yuki.YukiRPFramework.model.GameMapMarker; -import fr.yuki.YukiRPFramework.model.GameMapZone; -import fr.yuki.YukiRPFramework.net.payload.AddGameMapMarkerPayload; -import fr.yuki.YukiRPFramework.net.payload.AddGameMapZonePayload; -import fr.yuki.YukiRPFramework.net.payload.AddToastPayload; -import net.onfirenetwork.onsetjava.Onset; -import net.onfirenetwork.onsetjava.entity.Player; - -import java.io.File; -import java.io.FileNotFoundException; -import java.io.FileReader; - -public class MapManager { - private static GameMapConfig mapConfig; - - public static void init() throws FileNotFoundException { - new File("yrpf").mkdir(); - mapConfig = new Gson().fromJson(new FileReader("yrpf/gamemap.json"), GameMapConfig.class); - Onset.print("Loaded the gamemap from the JSON config file"); - } - - public static void setupGameMap(Player player) { - // Send markers - for(GameMapMarker gameMapMarker : mapConfig.getMarkers()) { - player.callRemoteEvent("GlobalUI:DispatchToUI", new Gson().toJson(new AddGameMapMarkerPayload(gameMapMarker))); - } - - // Send zones - for(GameMapZone gameMapZone : mapConfig.getZones()) { - player.callRemoteEvent("GlobalUI:DispatchToUI", new Gson().toJson(new AddGameMapZonePayload(gameMapZone))); - } - } - - public static GameMapConfig getMapConfig() { - return mapConfig; - } -} +package fr.yuki.yrpf.manager; + +import com.google.gson.Gson; +import fr.yuki.yrpf.model.GameMapConfig; +import fr.yuki.yrpf.model.GameMapMarker; +import fr.yuki.yrpf.model.GameMapZone; +import fr.yuki.yrpf.net.payload.AddGameMapMarkerPayload; +import fr.yuki.yrpf.net.payload.AddGameMapZonePayload; +import net.onfirenetwork.onsetjava.Onset; +import net.onfirenetwork.onsetjava.entity.Player; + +import java.io.File; +import java.io.FileNotFoundException; +import java.io.FileReader; + +public class MapManager { + private static GameMapConfig mapConfig; + + public static void init() throws FileNotFoundException { + new File("yrpf").mkdir(); + mapConfig = new Gson().fromJson(new FileReader("yrpf/gamemap.json"), GameMapConfig.class); + Onset.print("Loaded the gamemap from the JSON config file"); + } + + public static void setupGameMap(Player player) { + // Send markers + for(GameMapMarker gameMapMarker : mapConfig.getMarkers()) { + player.callRemoteEvent("GlobalUI:DispatchToUI", new Gson().toJson(new AddGameMapMarkerPayload(gameMapMarker))); + } + + // Send zones + for(GameMapZone gameMapZone : mapConfig.getZones()) { + player.callRemoteEvent("GlobalUI:DispatchToUI", new Gson().toJson(new AddGameMapZonePayload(gameMapZone))); + } + } + + public static GameMapConfig getMapConfig() { + return mapConfig; + } +} diff --git a/src/main/java/fr/yuki/YukiRPFramework/manager/ModdingManager.java b/src/main/java/fr/yuki/yrpf/manager/ModdingManager.java similarity index 89% rename from src/main/java/fr/yuki/YukiRPFramework/manager/ModdingManager.java rename to src/main/java/fr/yuki/yrpf/manager/ModdingManager.java index 5082979..7eb8896 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/manager/ModdingManager.java +++ b/src/main/java/fr/yuki/yrpf/manager/ModdingManager.java @@ -1,55 +1,54 @@ -package fr.yuki.YukiRPFramework.manager; - -import com.google.gson.Gson; -import fr.yuki.YukiRPFramework.job.JobConfig; -import fr.yuki.YukiRPFramework.modding.ModdingCustomModel; -import fr.yuki.YukiRPFramework.modding.ModdingFile; -import net.onfirenetwork.onsetjava.Onset; -import net.onfirenetwork.onsetjava.entity.Pickup; -import net.onfirenetwork.onsetjava.entity.Player; -import net.onfirenetwork.onsetjava.entity.WorldObject; - -import java.io.FileNotFoundException; -import java.io.FileReader; - -public class ModdingManager { - private static ModdingFile moddingFile; - - public static void init() throws FileNotFoundException { - moddingFile = new Gson().fromJson(new FileReader("yrpf/modding.json"), ModdingFile.class); - Onset.print("Modding file loaded with " + moddingFile.getCustomModels().size() + " custom model(s)"); - } - - public static ModdingFile getModdingFile() { - return moddingFile; - } - - public static boolean isCustomModelId(int modelId) { - return moddingFile.getCustomModels().stream().filter(x -> x.getId() == modelId).findFirst().orElse(null) != null; - } - - public static void assignCustomModel(WorldObject worldObject, int modelId) { - ModdingCustomModel moddingCustomModel = moddingFile.getCustomModels().stream().filter(x -> x.getId() == modelId).findFirst().orElse(null); - if(moddingCustomModel == null) { - Onset.print("Can't assign custom model, can't find the model: " + modelId); - return; - } - worldObject.setProperty("customModelPath", moddingCustomModel.getPath(), true); - } - - public static void assignCustomModel(Pickup pickup, int modelId) { - ModdingCustomModel moddingCustomModel = moddingFile.getCustomModels().stream().filter(x -> x.getId() == modelId).findFirst().orElse(null); - if(moddingCustomModel == null) { - Onset.print("Can't assign custom model, can't find the model: " + modelId); - return; - } - pickup.setProperty("customModelPath", moddingCustomModel.getPath(), true); - } - - public static void onEditorOpen(Player player) { - Onset.print("Editor opened"); - for(ModdingCustomModel customModel : moddingFile.getCustomModels()) { - player.callRemoteEvent("Editor:AddCustomObject", customModel.getId(), customModel.getPath()); - } - } -} +package fr.yuki.yrpf.manager; + +import com.google.gson.Gson; +import fr.yuki.yrpf.modding.ModdingCustomModel; +import fr.yuki.yrpf.modding.ModdingFile; +import net.onfirenetwork.onsetjava.Onset; +import net.onfirenetwork.onsetjava.entity.Pickup; +import net.onfirenetwork.onsetjava.entity.Player; +import net.onfirenetwork.onsetjava.entity.WorldObject; + +import java.io.FileNotFoundException; +import java.io.FileReader; + +public class ModdingManager { + private static ModdingFile moddingFile; + + public static void init() throws FileNotFoundException { + moddingFile = new Gson().fromJson(new FileReader("yrpf/modding.json"), ModdingFile.class); + Onset.print("Modding file loaded with " + moddingFile.getCustomModels().size() + " custom model(s)"); + } + + public static ModdingFile getModdingFile() { + return moddingFile; + } + + public static boolean isCustomModelId(int modelId) { + return moddingFile.getCustomModels().stream().filter(x -> x.getId() == modelId).findFirst().orElse(null) != null; + } + + public static void assignCustomModel(WorldObject worldObject, int modelId) { + ModdingCustomModel moddingCustomModel = moddingFile.getCustomModels().stream().filter(x -> x.getId() == modelId).findFirst().orElse(null); + if(moddingCustomModel == null) { + Onset.print("Can't assign custom model, can't find the model: " + modelId); + return; + } + worldObject.setProperty("customModelPath", moddingCustomModel.getPath(), true); + } + + public static void assignCustomModel(Pickup pickup, int modelId) { + ModdingCustomModel moddingCustomModel = moddingFile.getCustomModels().stream().filter(x -> x.getId() == modelId).findFirst().orElse(null); + if(moddingCustomModel == null) { + Onset.print("Can't assign custom model, can't find the model: " + modelId); + return; + } + pickup.setProperty("customModelPath", moddingCustomModel.getPath(), true); + } + + public static void onEditorOpen(Player player) { + Onset.print("Editor opened"); + for(ModdingCustomModel customModel : moddingFile.getCustomModels()) { + player.callRemoteEvent("Editor:AddCustomObject", customModel.getId(), customModel.getPath()); + } + } +} diff --git a/src/main/java/fr/yuki/YukiRPFramework/manager/PhoneManager.java b/src/main/java/fr/yuki/yrpf/manager/PhoneManager.java similarity index 92% rename from src/main/java/fr/yuki/YukiRPFramework/manager/PhoneManager.java rename to src/main/java/fr/yuki/yrpf/manager/PhoneManager.java index 811577d..74e49b5 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/manager/PhoneManager.java +++ b/src/main/java/fr/yuki/yrpf/manager/PhoneManager.java @@ -1,331 +1,328 @@ -package fr.yuki.YukiRPFramework.manager; - -import com.google.gson.Gson; -import fr.yuki.YukiRPFramework.character.CharacterLoopAnimation; -import fr.yuki.YukiRPFramework.character.CharacterState; -import fr.yuki.YukiRPFramework.character.CharacterToolAnimation; -import fr.yuki.YukiRPFramework.dao.PhoneContactDAO; -import fr.yuki.YukiRPFramework.enums.JobEnum; -import fr.yuki.YukiRPFramework.enums.ToastTypeEnum; -import fr.yuki.YukiRPFramework.i18n.I18n; -import fr.yuki.YukiRPFramework.job.Job; -import fr.yuki.YukiRPFramework.model.Account; -import fr.yuki.YukiRPFramework.model.AccountJobWhitelist; -import fr.yuki.YukiRPFramework.model.PhoneContact; -import fr.yuki.YukiRPFramework.net.payload.*; -import fr.yuki.YukiRPFramework.phone.PhoneCall; -import fr.yuki.YukiRPFramework.phone.PhoneMessage; -import fr.yuki.YukiRPFramework.phone.UrgencyPhoneMessage; -import fr.yuki.YukiRPFramework.utils.Basic; -import net.onfirenetwork.onsetjava.Onset; -import net.onfirenetwork.onsetjava.data.Vector; -import net.onfirenetwork.onsetjava.entity.Player; -import net.onfirenetwork.onsetjava.enums.Animation; - -import java.sql.SQLException; -import java.util.*; -import java.util.stream.Collectors; - -public class PhoneManager { - private static ArrayList phoneContacts; - private static ArrayList phoneMessages; - private static HashMap> urgencyMessages; - - private static int urgencyPhoneMessageCurrentId = 1; - - public static void init() throws SQLException { - phoneContacts = PhoneContactDAO.loadPhoneContacts(); - Onset.print("Loaded " + phoneContacts.size() + " phone contact(s) from the database"); - - phoneMessages = new ArrayList<>(); - - // init urgency - urgencyMessages = new HashMap<>(); - urgencyMessages.put("police", new ArrayList<>()); - urgencyMessages.put("hospital", new ArrayList<>()); - } - - public static String generateRandomPhoneNumber() { - String phoneNumber = "07"; - for(int i = 0; i < 8; i++) { - phoneNumber += String.valueOf(Basic.randomNumber(1, 9)); - } - return phoneNumber; - } - - public static void handleRequestPhoneContacts(Player player) { - Account account = WorldManager.getPlayerAccount(player); - ArrayList contacts = new ArrayList<>(phoneContacts.stream().filter(x -> x.getAccountId() == account.getId()).collect(Collectors.toList())); - for(PhoneContact contact : contacts) { - player.callRemoteEvent("GlobalUI:DispatchToUI", new Gson().toJson(new AddClientContactPayload(contact.getId(), contact.getName(), contact.getNumber()))); - } - } - - public static void handleAddPhoneContact(Player player, PhoneAddContactPayload payload) throws SQLException { - if(payload.getName().trim().equals("")|| payload.getNumber().trim() == "") return; - Account account = WorldManager.getPlayerAccount(player); - ArrayList contacts = new ArrayList<>(phoneContacts.stream().filter(x -> x.getAccountId() == account.getId()).collect(Collectors.toList())); - if(contacts.size() >= 30) return; // Too much contact - PhoneContact phoneContact = new PhoneContact(); - phoneContact.setName(payload.getName()); - phoneContact.setNumber(payload.getNumber()); - phoneContact.setAccountId(account.getId()); - PhoneContactDAO.insertPhoneContact(phoneContact); - phoneContacts.add(phoneContact); - Onset.print("Phone contact created"); - } - - public static void handleRequestSendMessage(Player player, RequestPhoneSendMessagePayload payload) { - if(payload.getMessage().trim().equals("") || payload.getNumber().trim().equals("")) return; - Account account = WorldManager.getPlayerAccount(player); - PhoneMessage phoneMessage = new PhoneMessage(); - phoneMessage.setFromNumber(account.getPhoneNumber()); - phoneMessage.setToNumber(payload.getNumber()); - phoneMessage.setMessage(payload.getMessage()); - phoneMessage.setMessageType(1); // Text message - phoneMessages.add(phoneMessage); - - // Send message to players - player.callRemoteEvent("GlobalUI:DispatchToUI", new Gson().toJson(new AddPhoneMessagePayload - (phoneMessage.getMessageType(), phoneMessage.getFromNumber(), phoneMessage.getMessage()))); - Player otherPlayer = WorldManager.getPlayerByPhoneNumber(phoneMessage.getToNumber()); - if(otherPlayer != null) { - Account otherAccount = WorldManager.getPlayerAccount(otherPlayer); - otherPlayer.callRemoteEvent("GlobalUI:DispatchToUI", new Gson().toJson(new AddPhoneMessagePayload - (phoneMessage.getMessageType(), phoneMessage.getFromNumber(), phoneMessage.getMessage()))); - SoundManager.playSound3D("sounds/notif_1.mp3", otherPlayer.getLocation(), 350, 2); - UIStateManager.sendNotification(otherPlayer, ToastTypeEnum.SUCCESS, I18n.t(otherAccount.getLang(), - "toast.phone.you_have_received_message", account.getPhoneNumber())); - } - } - - public static ArrayList getConversation(String number1, String number2) { - ArrayList messages = new ArrayList<>(); - for(PhoneMessage phoneMessage : phoneMessages) { - if(phoneMessage.getFromNumber().equals(number1)) { - if(phoneMessage.getToNumber().equals(number2)) { - messages.add(phoneMessage); - continue; - } - } - - if(phoneMessage.getFromNumber().equals(number2)) { - if(phoneMessage.getToNumber().equals(number1)) { - messages.add(phoneMessage); - continue; - } - } - } - return messages; - } - - public static void handleRequestConversation(Player player, String number) { - Account account = WorldManager.getPlayerAccount(player); - ArrayList messages = getConversation(account.getPhoneNumber(), number); - - for(PhoneMessage phoneMessage : messages) { - player.callRemoteEvent("GlobalUI:DispatchToUI", new Gson().toJson(new AddPhoneMessagePayload - (phoneMessage.getMessageType(), phoneMessage.getFromNumber(), phoneMessage.getMessage()))); - } - } - - public static void handleRequestConversationsList(Player player) { - Account account = WorldManager.getPlayerAccount(player); - ArrayList phoneMessages = getConversationsWithNumber(account.getPhoneNumber()); - HashMap> uniqueConversation = new HashMap<>(); - - // Make unique conversation - for(PhoneMessage phoneMessage : phoneMessages) { - if(phoneMessage.getFromNumber().equals(account.getPhoneNumber())) { - if(!uniqueConversation.containsKey(phoneMessage.getToNumber())) { - uniqueConversation.put(phoneMessage.getToNumber(), new ArrayList<>()); - uniqueConversation.get(phoneMessage.getToNumber()).add(phoneMessage); - } - else { - uniqueConversation.get(phoneMessage.getToNumber()).add(phoneMessage); - } - } - - if(phoneMessage.getToNumber().equals(account.getPhoneNumber())) { - if(!uniqueConversation.containsKey(phoneMessage.getFromNumber())) { - uniqueConversation.put(phoneMessage.getFromNumber(), new ArrayList<>()); - uniqueConversation.get(phoneMessage.getFromNumber()).add(phoneMessage); - } - else { - uniqueConversation.get(phoneMessage.getFromNumber()).add(phoneMessage); - } - } - } - - for(Map.Entry> conversations : uniqueConversation.entrySet()) { - player.callRemoteEvent("GlobalUI:DispatchToUI", new Gson().toJson(new AddPhoneConversationPayload( - conversations.getKey(), conversations.getValue().get(conversations.getValue().size() - 1).getMessage() - ))); - } - } - - public static void handleRequestCall(Player player, String phoneNumber) { - Onset.print("Request call to " + phoneNumber); - CharacterState state = CharacterManager.getCharacterStateByPlayer(player); - if(state.getCurrentPhoneCall() != null){ - Onset.print("Caller already in call"); - return; - } - Player receiver = WorldManager.getPlayerByPhoneNumber(phoneNumber); - if(receiver == null) { - Onset.print("Can't find the receiver"); - return; - } - CharacterState receiverState = CharacterManager.getCharacterStateByPlayer(receiver); - if(receiverState.getCurrentPhoneCall() != null) { - Onset.print("Receiver already in call"); - return; - } - - PhoneCall phoneCall = new PhoneCall(player, receiver); - state.setCurrentPhoneCall(phoneCall); - receiverState.setCurrentPhoneCall(phoneCall); - phoneCall.displayCall(); - Onset.print("Call begin"); - } - - public static void handleCallAnswer(Player player) { - CharacterState state = CharacterManager.getCharacterStateByPlayer(player); - if(state.getCurrentPhoneCall() == null){ - Onset.print("Can't answer because there is no call"); - return; - } - state.getCurrentPhoneCall().begin(); - attachPhone(state.getCurrentPhoneCall().getCaller()); - attachPhone(state.getCurrentPhoneCall().getReceiver()); - } - - public static void handleCallEnd(Player player) { - Onset.print("Request end call"); - CharacterState state = CharacterManager.getCharacterStateByPlayer(player); - if(state.getCurrentPhoneCall() == null){ - Onset.print("Can't answer because there is no call"); - return; - } - state.getCurrentPhoneCall().end(); - } - - public static void handleAttachPhone(Player player, String phoneState) { - CharacterState state = CharacterManager.getCharacterStateByPlayer(player); - if(!state.canInteract()) return; - if(phoneState.equals("true")) { - attachPhone(player); - } else { - if(state.getCurrentPhoneCall() == null) { - player.setAnimation(Animation.PHONE_PUTAWAY); - state.getCurrentPhoneAttached().unAttach(); - state.setCurrentPhoneAttached(null); - } - } - } - - public static void handleUrgencyRequest(Player player, UrgencyRequestPayload payload) { - Account account = WorldManager.getPlayerAccount(player); - UrgencyPhoneMessage urgencyPhoneMessage = new UrgencyPhoneMessage(); - urgencyPhoneMessage.setId(urgencyPhoneMessageCurrentId++); - urgencyPhoneMessage.setFromNumber(account.getPhoneNumber()); - urgencyPhoneMessage.setToNumber(payload.getService()); - urgencyPhoneMessage.setMessage(payload.getText()); - urgencyPhoneMessage.setMessageType(1); - urgencyPhoneMessage.setService(payload.getService().toLowerCase()); - urgencyPhoneMessage.setPosition(player.getLocation()); - urgencyMessages.get(payload.getService()).add(urgencyPhoneMessage); - UIStateManager.sendNotification(player, ToastTypeEnum.SUCCESS, "Votre demande est désormais en attente"); - - // Display messages - JobEnum jobEnum = JobEnum.POLICE; - Onset.print("Add urgency for service: " + payload.getService().toLowerCase()); - switch (payload.getService().toLowerCase()) { - case "police": - jobEnum = JobEnum.POLICE; - break; - - case "hospital": - jobEnum = JobEnum.EMS; - break; - } - ArrayList whitelistedPlayers = JobManager.getWhitelistedPlayersForJob(jobEnum); - for(Player wPlayer : whitelistedPlayers) { - try { - player.callRemoteEvent("GlobalUI:DispatchToUI", new Gson().toJson(new AddPhoneUrgencyPayload( - urgencyPhoneMessage.getId(), urgencyPhoneMessage.getFromNumber(), urgencyPhoneMessage.getMessage(), - urgencyPhoneMessage.getService(), - urgencyPhoneMessage.getPosition().getX(), urgencyPhoneMessage.getPosition().getY(), urgencyPhoneMessage.getPosition().getZ() - ))); - UIStateManager.sendNotification(wPlayer, ToastTypeEnum.SUCCESS, "Vous avez reçu une nouvelle urgence"); - SoundManager.playSound3D("sounds/notif_1.mp3", wPlayer.getLocation(), 350, 2); - } catch (Exception ex) { - Onset.print("Can't send urgency: " + ex.toString()); - } - } - } - - public static void attachPhone(Player player) { - CharacterState state = CharacterManager.getCharacterStateByPlayer(player); - if(state.getCurrentPhoneAttached() != null) return; - CharacterToolAnimation toolAnimation = new CharacterToolAnimation(50011, new Vector(-10,4,5), - new Vector(180,-40,90), new Vector(0.02, 0.02, 0.02), "hand_r"); - player.setAnimation(Animation.PHONE_HOLD); - state.setCurrentPhoneAttached(toolAnimation); - toolAnimation.attach(player); - } - - public static ArrayList getConversationsWithNumber(String number) { - ArrayList messages = new ArrayList<>(); - for(PhoneMessage phoneMessage : phoneMessages) { - if(phoneMessage.getToNumber().equals(number)) { - messages.add(phoneMessage); - continue; - } - - if(phoneMessage.getFromNumber().equals(number)) { - messages.add(phoneMessage); - continue; - } - } - return messages; - } - - private static void refreshUrgencyMessages(Player player) { - Account account = WorldManager.getPlayerAccount(player); - boolean isPolice = AccountManager.getAccountJobWhitelists().stream() - .filter(x -> x.getAccountId() == account.getId() && x.getJobId().equals(JobEnum.POLICE.type)) - .findFirst().orElse(null) != null; - boolean isEMS = AccountManager.getAccountJobWhitelists().stream() - .filter(x -> x.getAccountId() == account.getId() && x.getJobId().equals(JobEnum.EMS.type)) - .findFirst().orElse(null) != null; - ArrayList urgencyPhoneMessages = new ArrayList<>(); - - // Check whitelists - if(isPolice) urgencyPhoneMessages.addAll(urgencyMessages.get("police")); - if(isEMS) urgencyPhoneMessages.addAll(urgencyMessages.get("hospital")); - - player.callRemoteEvent("GlobalUI:DispatchToUI", new Gson().toJson(new ClearPhoneUrgencyPayload())); - Collections.reverse(urgencyPhoneMessages); // Reverse to get the newest before - for(UrgencyPhoneMessage urgencyPhoneMessage : urgencyPhoneMessages) { - player.callRemoteEvent("GlobalUI:DispatchToUI", new Gson().toJson(new AddPhoneUrgencyPayload( - urgencyPhoneMessage.getId(), urgencyPhoneMessage.getFromNumber(), urgencyPhoneMessage.getMessage(), - urgencyPhoneMessage.getService(), - urgencyPhoneMessage.getPosition().getX(), urgencyPhoneMessage.getPosition().getY(), urgencyPhoneMessage.getPosition().getZ() - ))); - } - } - - public static void handleUrgencyListRequest(Player player) { - refreshUrgencyMessages(player); - } - - public static void handleUrgencySolveRequest(Player player, SolveUrgencyPayload payload) { - UrgencyPhoneMessage phoneMessage = urgencyMessages.get(payload.getService()).stream() - .filter(x -> x.getId() == payload.getId()).findFirst().orElse(null); - if(phoneMessage == null) return; - urgencyMessages.get(payload.getService()).remove(phoneMessage); - refreshUrgencyMessages(player); - UIStateManager.sendNotification(player, ToastTypeEnum.SUCCESS, "Urgence clôturée"); - } -} +package fr.yuki.yrpf.manager; + +import com.google.gson.Gson; +import fr.yuki.yrpf.character.CharacterState; +import fr.yuki.yrpf.character.CharacterToolAnimation; +import fr.yuki.yrpf.dao.PhoneContactDAO; +import fr.yuki.yrpf.enums.JobEnum; +import fr.yuki.yrpf.enums.ToastTypeEnum; +import fr.yuki.yrpf.i18n.I18n; +import fr.yuki.yrpf.model.Account; +import fr.yuki.yrpf.model.PhoneContact; +import fr.yuki.yrpf.net.payload.*; +import fr.yuki.yrpf.phone.PhoneCall; +import fr.yuki.yrpf.phone.PhoneMessage; +import fr.yuki.yrpf.phone.UrgencyPhoneMessage; +import fr.yuki.yrpf.utils.Basic; +import net.onfirenetwork.onsetjava.Onset; +import net.onfirenetwork.onsetjava.data.Vector; +import net.onfirenetwork.onsetjava.entity.Player; +import net.onfirenetwork.onsetjava.enums.Animation; + +import java.sql.SQLException; +import java.util.*; +import java.util.stream.Collectors; + +public class PhoneManager { + private static ArrayList phoneContacts; + private static ArrayList phoneMessages; + private static HashMap> urgencyMessages; + + private static int urgencyPhoneMessageCurrentId = 1; + + public static void init() throws SQLException { + phoneContacts = PhoneContactDAO.loadPhoneContacts(); + Onset.print("Loaded " + phoneContacts.size() + " phone contact(s) from the database"); + + phoneMessages = new ArrayList<>(); + + // init urgency + urgencyMessages = new HashMap<>(); + urgencyMessages.put("police", new ArrayList<>()); + urgencyMessages.put("hospital", new ArrayList<>()); + } + + public static String generateRandomPhoneNumber() { + String phoneNumber = "07"; + for(int i = 0; i < 8; i++) { + phoneNumber += String.valueOf(Basic.randomNumber(1, 9)); + } + return phoneNumber; + } + + public static void handleRequestPhoneContacts(Player player) { + Account account = WorldManager.getPlayerAccount(player); + ArrayList contacts = new ArrayList<>(phoneContacts.stream().filter(x -> x.getAccountId() == account.getId()).collect(Collectors.toList())); + for(PhoneContact contact : contacts) { + player.callRemoteEvent("GlobalUI:DispatchToUI", new Gson().toJson(new AddClientContactPayload(contact.getId(), contact.getName(), contact.getNumber()))); + } + } + + public static void handleAddPhoneContact(Player player, PhoneAddContactPayload payload) throws SQLException { + if(payload.getName().trim().equals("")|| payload.getNumber().trim() == "") return; + Account account = WorldManager.getPlayerAccount(player); + ArrayList contacts = new ArrayList<>(phoneContacts.stream().filter(x -> x.getAccountId() == account.getId()).collect(Collectors.toList())); + if(contacts.size() >= 30) return; // Too much contact + PhoneContact phoneContact = new PhoneContact(); + phoneContact.setName(payload.getName()); + phoneContact.setNumber(payload.getNumber()); + phoneContact.setAccountId(account.getId()); + PhoneContactDAO.insertPhoneContact(phoneContact); + phoneContacts.add(phoneContact); + Onset.print("Phone contact created"); + } + + public static void handleRequestSendMessage(Player player, RequestPhoneSendMessagePayload payload) { + if(payload.getMessage().trim().equals("") || payload.getNumber().trim().equals("")) return; + Account account = WorldManager.getPlayerAccount(player); + PhoneMessage phoneMessage = new PhoneMessage(); + phoneMessage.setFromNumber(account.getPhoneNumber()); + phoneMessage.setToNumber(payload.getNumber()); + phoneMessage.setMessage(payload.getMessage()); + phoneMessage.setMessageType(1); // Text message + phoneMessages.add(phoneMessage); + + // Send message to players + player.callRemoteEvent("GlobalUI:DispatchToUI", new Gson().toJson(new AddPhoneMessagePayload + (phoneMessage.getMessageType(), phoneMessage.getFromNumber(), phoneMessage.getMessage()))); + Player otherPlayer = WorldManager.getPlayerByPhoneNumber(phoneMessage.getToNumber()); + if(otherPlayer != null) { + Account otherAccount = WorldManager.getPlayerAccount(otherPlayer); + otherPlayer.callRemoteEvent("GlobalUI:DispatchToUI", new Gson().toJson(new AddPhoneMessagePayload + (phoneMessage.getMessageType(), phoneMessage.getFromNumber(), phoneMessage.getMessage()))); + SoundManager.playSound3D("sounds/notif_1.mp3", otherPlayer.getLocation(), 350, 2); + UIStateManager.sendNotification(otherPlayer, ToastTypeEnum.SUCCESS, I18n.t(otherAccount.getLang(), + "toast.phone.you_have_received_message", account.getPhoneNumber())); + } + } + + public static ArrayList getConversation(String number1, String number2) { + ArrayList messages = new ArrayList<>(); + for(PhoneMessage phoneMessage : phoneMessages) { + if(phoneMessage.getFromNumber().equals(number1)) { + if(phoneMessage.getToNumber().equals(number2)) { + messages.add(phoneMessage); + continue; + } + } + + if(phoneMessage.getFromNumber().equals(number2)) { + if(phoneMessage.getToNumber().equals(number1)) { + messages.add(phoneMessage); + continue; + } + } + } + return messages; + } + + public static void handleRequestConversation(Player player, String number) { + Account account = WorldManager.getPlayerAccount(player); + ArrayList messages = getConversation(account.getPhoneNumber(), number); + + for(PhoneMessage phoneMessage : messages) { + player.callRemoteEvent("GlobalUI:DispatchToUI", new Gson().toJson(new AddPhoneMessagePayload + (phoneMessage.getMessageType(), phoneMessage.getFromNumber(), phoneMessage.getMessage()))); + } + } + + public static void handleRequestConversationsList(Player player) { + Account account = WorldManager.getPlayerAccount(player); + ArrayList phoneMessages = getConversationsWithNumber(account.getPhoneNumber()); + HashMap> uniqueConversation = new HashMap<>(); + + // Make unique conversation + for(PhoneMessage phoneMessage : phoneMessages) { + if(phoneMessage.getFromNumber().equals(account.getPhoneNumber())) { + if(!uniqueConversation.containsKey(phoneMessage.getToNumber())) { + uniqueConversation.put(phoneMessage.getToNumber(), new ArrayList<>()); + uniqueConversation.get(phoneMessage.getToNumber()).add(phoneMessage); + } + else { + uniqueConversation.get(phoneMessage.getToNumber()).add(phoneMessage); + } + } + + if(phoneMessage.getToNumber().equals(account.getPhoneNumber())) { + if(!uniqueConversation.containsKey(phoneMessage.getFromNumber())) { + uniqueConversation.put(phoneMessage.getFromNumber(), new ArrayList<>()); + uniqueConversation.get(phoneMessage.getFromNumber()).add(phoneMessage); + } + else { + uniqueConversation.get(phoneMessage.getFromNumber()).add(phoneMessage); + } + } + } + + for(Map.Entry> conversations : uniqueConversation.entrySet()) { + player.callRemoteEvent("GlobalUI:DispatchToUI", new Gson().toJson(new AddPhoneConversationPayload( + conversations.getKey(), conversations.getValue().get(conversations.getValue().size() - 1).getMessage() + ))); + } + } + + public static void handleRequestCall(Player player, String phoneNumber) { + Onset.print("Request call to " + phoneNumber); + CharacterState state = CharacterManager.getCharacterStateByPlayer(player); + if(state.getCurrentPhoneCall() != null){ + Onset.print("Caller already in call"); + return; + } + Player receiver = WorldManager.getPlayerByPhoneNumber(phoneNumber); + if(receiver == null) { + Onset.print("Can't find the receiver"); + return; + } + CharacterState receiverState = CharacterManager.getCharacterStateByPlayer(receiver); + if(receiverState.getCurrentPhoneCall() != null) { + Onset.print("Receiver already in call"); + return; + } + + PhoneCall phoneCall = new PhoneCall(player, receiver); + state.setCurrentPhoneCall(phoneCall); + receiverState.setCurrentPhoneCall(phoneCall); + phoneCall.displayCall(); + Onset.print("Call begin"); + } + + public static void handleCallAnswer(Player player) { + CharacterState state = CharacterManager.getCharacterStateByPlayer(player); + if(state.getCurrentPhoneCall() == null){ + Onset.print("Can't answer because there is no call"); + return; + } + state.getCurrentPhoneCall().begin(); + attachPhone(state.getCurrentPhoneCall().getCaller()); + attachPhone(state.getCurrentPhoneCall().getReceiver()); + } + + public static void handleCallEnd(Player player) { + Onset.print("Request end call"); + CharacterState state = CharacterManager.getCharacterStateByPlayer(player); + if(state.getCurrentPhoneCall() == null){ + Onset.print("Can't answer because there is no call"); + return; + } + state.getCurrentPhoneCall().end(); + } + + public static void handleAttachPhone(Player player, String phoneState) { + CharacterState state = CharacterManager.getCharacterStateByPlayer(player); + if(!state.canInteract()) return; + if(phoneState.equals("true")) { + attachPhone(player); + } else { + if(state.getCurrentPhoneCall() == null) { + player.setAnimation(Animation.PHONE_PUTAWAY); + state.getCurrentPhoneAttached().unAttach(); + state.setCurrentPhoneAttached(null); + } + } + } + + public static void handleUrgencyRequest(Player player, UrgencyRequestPayload payload) { + Account account = WorldManager.getPlayerAccount(player); + UrgencyPhoneMessage urgencyPhoneMessage = new UrgencyPhoneMessage(); + urgencyPhoneMessage.setId(urgencyPhoneMessageCurrentId++); + urgencyPhoneMessage.setFromNumber(account.getPhoneNumber()); + urgencyPhoneMessage.setToNumber(payload.getService()); + urgencyPhoneMessage.setMessage(payload.getText()); + urgencyPhoneMessage.setMessageType(1); + urgencyPhoneMessage.setService(payload.getService().toLowerCase()); + urgencyPhoneMessage.setPosition(player.getLocation()); + urgencyMessages.get(payload.getService()).add(urgencyPhoneMessage); + UIStateManager.sendNotification(player, ToastTypeEnum.SUCCESS, "Votre demande est désormais en attente"); + + // Display messages + JobEnum jobEnum = JobEnum.POLICE; + Onset.print("Add urgency for service: " + payload.getService().toLowerCase()); + switch (payload.getService().toLowerCase()) { + case "police": + jobEnum = JobEnum.POLICE; + break; + + case "hospital": + jobEnum = JobEnum.EMS; + break; + } + ArrayList whitelistedPlayers = JobManager.getWhitelistedPlayersForJob(jobEnum); + for(Player wPlayer : whitelistedPlayers) { + try { + player.callRemoteEvent("GlobalUI:DispatchToUI", new Gson().toJson(new AddPhoneUrgencyPayload( + urgencyPhoneMessage.getId(), urgencyPhoneMessage.getFromNumber(), urgencyPhoneMessage.getMessage(), + urgencyPhoneMessage.getService(), + urgencyPhoneMessage.getPosition().getX(), urgencyPhoneMessage.getPosition().getY(), urgencyPhoneMessage.getPosition().getZ() + ))); + UIStateManager.sendNotification(wPlayer, ToastTypeEnum.SUCCESS, "Vous avez reçu une nouvelle urgence"); + SoundManager.playSound3D("sounds/notif_1.mp3", wPlayer.getLocation(), 350, 2); + } catch (Exception ex) { + Onset.print("Can't send urgency: " + ex.toString()); + } + } + } + + public static void attachPhone(Player player) { + CharacterState state = CharacterManager.getCharacterStateByPlayer(player); + if(state.getCurrentPhoneAttached() != null) return; + CharacterToolAnimation toolAnimation = new CharacterToolAnimation(50011, new Vector(-10,4,5), + new Vector(180,-40,90), new Vector(0.02, 0.02, 0.02), "hand_r"); + player.setAnimation(Animation.PHONE_HOLD); + state.setCurrentPhoneAttached(toolAnimation); + toolAnimation.attach(player); + } + + public static ArrayList getConversationsWithNumber(String number) { + ArrayList messages = new ArrayList<>(); + for(PhoneMessage phoneMessage : phoneMessages) { + if(phoneMessage.getToNumber().equals(number)) { + messages.add(phoneMessage); + continue; + } + + if(phoneMessage.getFromNumber().equals(number)) { + messages.add(phoneMessage); + continue; + } + } + return messages; + } + + private static void refreshUrgencyMessages(Player player) { + Account account = WorldManager.getPlayerAccount(player); + boolean isPolice = AccountManager.getAccountJobWhitelists().stream() + .filter(x -> x.getAccountId() == account.getId() && x.getJobId().equals(JobEnum.POLICE.type)) + .findFirst().orElse(null) != null; + boolean isEMS = AccountManager.getAccountJobWhitelists().stream() + .filter(x -> x.getAccountId() == account.getId() && x.getJobId().equals(JobEnum.EMS.type)) + .findFirst().orElse(null) != null; + ArrayList urgencyPhoneMessages = new ArrayList<>(); + + // Check whitelists + if(isPolice) urgencyPhoneMessages.addAll(urgencyMessages.get("police")); + if(isEMS) urgencyPhoneMessages.addAll(urgencyMessages.get("hospital")); + + player.callRemoteEvent("GlobalUI:DispatchToUI", new Gson().toJson(new ClearPhoneUrgencyPayload())); + Collections.reverse(urgencyPhoneMessages); // Reverse to get the newest before + for(UrgencyPhoneMessage urgencyPhoneMessage : urgencyPhoneMessages) { + player.callRemoteEvent("GlobalUI:DispatchToUI", new Gson().toJson(new AddPhoneUrgencyPayload( + urgencyPhoneMessage.getId(), urgencyPhoneMessage.getFromNumber(), urgencyPhoneMessage.getMessage(), + urgencyPhoneMessage.getService(), + urgencyPhoneMessage.getPosition().getX(), urgencyPhoneMessage.getPosition().getY(), urgencyPhoneMessage.getPosition().getZ() + ))); + } + } + + public static void handleUrgencyListRequest(Player player) { + refreshUrgencyMessages(player); + } + + public static void handleUrgencySolveRequest(Player player, SolveUrgencyPayload payload) { + UrgencyPhoneMessage phoneMessage = urgencyMessages.get(payload.getService()).stream() + .filter(x -> x.getId() == payload.getId()).findFirst().orElse(null); + if(phoneMessage == null) return; + urgencyMessages.get(payload.getService()).remove(phoneMessage); + refreshUrgencyMessages(player); + UIStateManager.sendNotification(player, ToastTypeEnum.SUCCESS, "Urgence clôturée"); + } +} diff --git a/src/main/java/fr/yuki/YukiRPFramework/manager/SoundManager.java b/src/main/java/fr/yuki/yrpf/manager/SoundManager.java similarity index 95% rename from src/main/java/fr/yuki/YukiRPFramework/manager/SoundManager.java rename to src/main/java/fr/yuki/yrpf/manager/SoundManager.java index 26d350a..6aa6840 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/manager/SoundManager.java +++ b/src/main/java/fr/yuki/yrpf/manager/SoundManager.java @@ -1,82 +1,82 @@ -package fr.yuki.YukiRPFramework.manager; - -import net.onfirenetwork.onsetjava.Onset; -import net.onfirenetwork.onsetjava.data.Vector; -import net.onfirenetwork.onsetjava.entity.Player; -import net.onfirenetwork.onsetjava.entity.WorldObject; - -import java.util.HashMap; - -public class SoundManager { - private static HashMap ambiantSounds = new HashMap(); - - public static void init() { - createAmbiantSound("hammerhead_station", "sounds/ambiant_1.mp3", - new Vector(127357, 78077, 1568), 6000, 0.3); - } - - /** - * Play a sound for players around the position - * @param fileName The sound file name - * @param position The position source - * @param radius The radius max of the sound - */ - public static void playSound3D(String fileName, Vector position, double radius, double volume) { - try { - for(Player player : Onset.getPlayers()) { - try { - if(player.getLocation().distance(position) < radius + 500) { - player.callRemoteEvent("Sound:PlaySound3D", fileName, position.getX(), position.getY(), position.getZ(), radius, volume); - } - } - catch (Exception ex) { - ex.printStackTrace(); - } - } - } - catch (Exception ex) { - ex.printStackTrace(); - } - } - - /** - * Create a ambiant sound, for making like a radio for example - * @param name The key - * @param soundName The sound path - * @param position The position - * @param radius The radius - * @param volume The volume - */ - public static WorldObject createAmbiantSound(String name, String soundName, Vector position, int radius, double volume) { - WorldObject worldObject = Onset.getServer().createObject(position, 1); - worldObject.setProperty("ambiantSoundObject", 1, true); - worldObject.setProperty("ambiantSoundName", soundName, true); - worldObject.setProperty("ambiantSoundRadius", radius, true); - worldObject.setProperty("ambiantSoundVolume", volume, true); - worldObject.setStreamDistance(radius); - ambiantSounds.put(name, worldObject); - return worldObject; - } - - public static HashMap getAmbiantSounds() { - return ambiantSounds; - } - - public static void playSound2D(Player player, String id, String fileName, double volume) { - try { - player.callRemoteEvent("Sound:PlayAndRegister2DSound", id, fileName, volume); - } - catch (Exception ex) { - ex.printStackTrace(); - } - } - - public static void stopSound2D(Player player, String id) { - try { - player.callRemoteEvent("Sound:Stop2DSound", id); - } - catch (Exception ex) { - ex.printStackTrace(); - } - } -} +package fr.yuki.yrpf.manager; + +import net.onfirenetwork.onsetjava.Onset; +import net.onfirenetwork.onsetjava.data.Vector; +import net.onfirenetwork.onsetjava.entity.Player; +import net.onfirenetwork.onsetjava.entity.WorldObject; + +import java.util.HashMap; + +public class SoundManager { + private static HashMap ambiantSounds = new HashMap(); + + public static void init() { + createAmbiantSound("hammerhead_station", "sounds/ambiant_1.mp3", + new Vector(127357, 78077, 1568), 6000, 0.3); + } + + /** + * Play a sound for players around the position + * @param fileName The sound file name + * @param position The position source + * @param radius The radius max of the sound + */ + public static void playSound3D(String fileName, Vector position, double radius, double volume) { + try { + for(Player player : Onset.getPlayers()) { + try { + if(player.getLocation().distance(position) < radius + 500) { + player.callRemoteEvent("Sound:PlaySound3D", fileName, position.getX(), position.getY(), position.getZ(), radius, volume); + } + } + catch (Exception ex) { + ex.printStackTrace(); + } + } + } + catch (Exception ex) { + ex.printStackTrace(); + } + } + + /** + * Create a ambiant sound, for making like a radio for example + * @param name The key + * @param soundName The sound path + * @param position The position + * @param radius The radius + * @param volume The volume + */ + public static WorldObject createAmbiantSound(String name, String soundName, Vector position, int radius, double volume) { + WorldObject worldObject = Onset.getServer().createObject(position, 1); + worldObject.setProperty("ambiantSoundObject", 1, true); + worldObject.setProperty("ambiantSoundName", soundName, true); + worldObject.setProperty("ambiantSoundRadius", radius, true); + worldObject.setProperty("ambiantSoundVolume", volume, true); + worldObject.setStreamDistance(radius); + ambiantSounds.put(name, worldObject); + return worldObject; + } + + public static HashMap getAmbiantSounds() { + return ambiantSounds; + } + + public static void playSound2D(Player player, String id, String fileName, double volume) { + try { + player.callRemoteEvent("Sound:PlayAndRegister2DSound", id, fileName, volume); + } + catch (Exception ex) { + ex.printStackTrace(); + } + } + + public static void stopSound2D(Player player, String id) { + try { + player.callRemoteEvent("Sound:Stop2DSound", id); + } + catch (Exception ex) { + ex.printStackTrace(); + } + } +} diff --git a/src/main/java/fr/yuki/YukiRPFramework/manager/TebexManager.java b/src/main/java/fr/yuki/yrpf/manager/TebexManager.java similarity index 88% rename from src/main/java/fr/yuki/YukiRPFramework/manager/TebexManager.java rename to src/main/java/fr/yuki/yrpf/manager/TebexManager.java index 20d79a0..3c905ee 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/manager/TebexManager.java +++ b/src/main/java/fr/yuki/yrpf/manager/TebexManager.java @@ -1,70 +1,70 @@ -package fr.yuki.YukiRPFramework.manager; - -import fr.yuki.YukiRPFramework.model.ItemTemplate; -import fr.yuki.YukiRPFramework.tebex.TebexAPI; -import fr.yuki.YukiRPFramework.tebex.responses.Command; -import fr.yuki.YukiRPFramework.tebex.responses.TebexCommandQueue; -import net.onfirenetwork.onsetjava.Onset; -import net.onfirenetwork.onsetjava.entity.Player; - -import java.io.IOException; - -public class TebexManager { - public static TebexAPI tebexAPI; - - public static void init() throws Exception { - if(WorldManager.getServerConfig().getTebexSecretKey().equals("")) { - Onset.print("TebexAPI not configured, you need to put your secret key in yrpf/server_config.json"); - return; - } - tebexAPI = new TebexAPI(WorldManager.getServerConfig().getTebexSecretKey()); - Onset.print("TebexAPI initialized"); - - Onset.timer(10000, () -> { - processCommands(); - }); - } - - private static void processCommands() { - try { - TebexCommandQueue commandQueue = tebexAPI.getCommandQueues(); - if(commandQueue == null) return; - for(Command command : commandQueue.getCommands()) { - Onset.print("Process command id: " + command.getID()); - Onset.print("Command parameters: " + command.getCommand()); - - String commandType = command.getCommand().split(" ")[0]; - boolean isSuccess = false; - switch (commandType) { - case "purchase_item": - isSuccess = onPurchaseItem(command); - break; - } - - if(isSuccess) { - Onset.print("Purchase success, now delete it from Tebex queue"); - tebexAPI.deleteCommand(command); - } else { - Onset.print("Purchase failed, we keep it in queue"); - } - } - } catch (IOException e) { - e.printStackTrace(); - Onset.print("Can't process tebex commands"); - } - } - - private static boolean onPurchaseItem(Command command) { - int itemId = Integer.parseInt(command.getCommand().split(" ")[1]); - int quantity = Integer.parseInt(command.getCommand().split(" ")[2]); - Player player = WorldManager.findPlayerBySteamId(command.getPlayer().getUUID()); - if(player == null) return false; - if(CharacterManager.getCharacterStateByPlayer(player) == null) return false; - if(!CharacterManager.getCharacterStateByPlayer(player).isHasUIReady()) return false; - - ItemTemplate itemTemplate = InventoryManager.getItemTemplates().get(itemId); - InventoryManager.addItemToPlayer(player, String.valueOf(itemTemplate.getId()), quantity, false); - - return true; - } -} +package fr.yuki.yrpf.manager; + +import fr.yuki.yrpf.model.ItemTemplate; +import fr.yuki.yrpf.tebex.TebexAPI; +import fr.yuki.yrpf.tebex.responses.Command; +import fr.yuki.yrpf.tebex.responses.TebexCommandQueue; +import net.onfirenetwork.onsetjava.Onset; +import net.onfirenetwork.onsetjava.entity.Player; + +import java.io.IOException; + +public class TebexManager { + public static TebexAPI tebexAPI; + + public static void init() throws Exception { + if(WorldManager.getServerConfig().getTebexSecretKey().equals("")) { + Onset.print("TebexAPI not configured, you need to put your secret key in yrpf/server_config.json"); + return; + } + tebexAPI = new TebexAPI(WorldManager.getServerConfig().getTebexSecretKey()); + Onset.print("TebexAPI initialized"); + + Onset.timer(10000, () -> { + processCommands(); + }); + } + + private static void processCommands() { + try { + TebexCommandQueue commandQueue = tebexAPI.getCommandQueues(); + if(commandQueue == null) return; + for(Command command : commandQueue.getCommands()) { + Onset.print("Process command id: " + command.getID()); + Onset.print("Command parameters: " + command.getCommand()); + + String commandType = command.getCommand().split(" ")[0]; + boolean isSuccess = false; + switch (commandType) { + case "purchase_item": + isSuccess = onPurchaseItem(command); + break; + } + + if(isSuccess) { + Onset.print("Purchase success, now delete it from Tebex queue"); + tebexAPI.deleteCommand(command); + } else { + Onset.print("Purchase failed, we keep it in queue"); + } + } + } catch (IOException e) { + e.printStackTrace(); + Onset.print("Can't process tebex commands"); + } + } + + private static boolean onPurchaseItem(Command command) { + int itemId = Integer.parseInt(command.getCommand().split(" ")[1]); + int quantity = Integer.parseInt(command.getCommand().split(" ")[2]); + Player player = WorldManager.findPlayerBySteamId(command.getPlayer().getUUID()); + if(player == null) return false; + if(CharacterManager.getCharacterStateByPlayer(player) == null) return false; + if(!CharacterManager.getCharacterStateByPlayer(player).isHasUIReady()) return false; + + ItemTemplate itemTemplate = InventoryManager.getItemTemplates().get(itemId); + InventoryManager.addItemToPlayer(player, String.valueOf(itemTemplate.getId()), quantity, false); + + return true; + } +} diff --git a/src/main/java/fr/yuki/YukiRPFramework/manager/TimeManager.java b/src/main/java/fr/yuki/yrpf/manager/TimeManager.java similarity index 94% rename from src/main/java/fr/yuki/YukiRPFramework/manager/TimeManager.java rename to src/main/java/fr/yuki/yrpf/manager/TimeManager.java index 1cc72c8..dff8154 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/manager/TimeManager.java +++ b/src/main/java/fr/yuki/yrpf/manager/TimeManager.java @@ -1,49 +1,49 @@ -package fr.yuki.YukiRPFramework.manager; - -import net.onfirenetwork.onsetjava.Onset; -import net.onfirenetwork.onsetjava.entity.Player; - -public class TimeManager { - private static float currentHour; - - public static void init() { - currentHour = WorldManager.getServerConfig().getStartHour(); - Onset.timer(getRealTimePerHour() / 60, () -> tickHour()); - Onset.print("Time initialized"); - } - - public static int getRealTimePerHour() { - return WorldManager.getServerConfig().getTimePerHour(); - } - - public static void setCurrentHourForPlayer(Player player) { - player.callRemoteEvent("Time:SetHour", String.valueOf(getCurrentHour())); - } - - public static void tickHour() { - currentHour += 1f / 60f; - if(currentHour > 18 || currentHour < 8) currentHour += (1f / 60f) * 4; - if(currentHour > 24) currentHour = 0; - //Onset.print("Time changed, current hour: " + currentHour); - for(Player player : Onset.getPlayers()) { - try { - setCurrentHourForPlayer(player); - } - catch(Exception ex) {} - } - } - - public static float getCurrentHour() { - return currentHour; - } - - public static void setCurrentHour(float value) { - currentHour = value; - for(Player player : Onset.getPlayers()) { - try { - setCurrentHourForPlayer(player); - } - catch(Exception ex) {} - } - } -} +package fr.yuki.yrpf.manager; + +import net.onfirenetwork.onsetjava.Onset; +import net.onfirenetwork.onsetjava.entity.Player; + +public class TimeManager { + private static float currentHour; + + public static void init() { + currentHour = WorldManager.getServerConfig().getStartHour(); + Onset.timer(getRealTimePerHour() / 60, () -> tickHour()); + Onset.print("Time initialized"); + } + + public static int getRealTimePerHour() { + return WorldManager.getServerConfig().getTimePerHour(); + } + + public static void setCurrentHourForPlayer(Player player) { + player.callRemoteEvent("Time:SetHour", String.valueOf(getCurrentHour())); + } + + public static void tickHour() { + currentHour += 1f / 60f; + if(currentHour > 18 || currentHour < 8) currentHour += (1f / 60f) * 4; + if(currentHour > 24) currentHour = 0; + //Onset.print("Time changed, current hour: " + currentHour); + for(Player player : Onset.getPlayers()) { + try { + setCurrentHourForPlayer(player); + } + catch(Exception ex) {} + } + } + + public static float getCurrentHour() { + return currentHour; + } + + public static void setCurrentHour(float value) { + currentHour = value; + for(Player player : Onset.getPlayers()) { + try { + setCurrentHourForPlayer(player); + } + catch(Exception ex) {} + } + } +} diff --git a/src/main/java/fr/yuki/YukiRPFramework/manager/UIStateManager.java b/src/main/java/fr/yuki/yrpf/manager/UIStateManager.java similarity index 96% rename from src/main/java/fr/yuki/YukiRPFramework/manager/UIStateManager.java rename to src/main/java/fr/yuki/yrpf/manager/UIStateManager.java index 254ae82..d87b1e9 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/manager/UIStateManager.java +++ b/src/main/java/fr/yuki/yrpf/manager/UIStateManager.java @@ -1,13 +1,13 @@ -package fr.yuki.YukiRPFramework.manager; +package fr.yuki.yrpf.manager; import com.google.gson.Gson; -import fr.yuki.YukiRPFramework.character.CharacterState; -import fr.yuki.YukiRPFramework.enums.ToastTypeEnum; -import fr.yuki.YukiRPFramework.inventory.Inventory; -import fr.yuki.YukiRPFramework.model.Account; -import fr.yuki.YukiRPFramework.net.payload.*; -import fr.yuki.YukiRPFramework.ui.UIState; -import fr.yuki.YukiRPFramework.utils.Basic; +import fr.yuki.yrpf.character.CharacterState; +import fr.yuki.yrpf.enums.ToastTypeEnum; +import fr.yuki.yrpf.inventory.Inventory; +import fr.yuki.yrpf.model.Account; +import fr.yuki.yrpf.net.payload.*; +import fr.yuki.yrpf.ui.UIState; +import fr.yuki.yrpf.utils.Basic; import net.onfirenetwork.onsetjava.Onset; import net.onfirenetwork.onsetjava.data.Location; import net.onfirenetwork.onsetjava.entity.Player; @@ -190,7 +190,7 @@ public static void handleUIReady(Player player) throws SQLException { player.callRemoteEvent("GlobalUI:DispatchToUI", new Gson().toJson(new SetPhoneNumberPayload(account.getPhoneNumber()))); // Send compagny - CompagnyManager.refreshCompagny(player); + CompanyManager.refreshCompany(player); // Generate a phone number for the player if(account.getPhoneNumber().trim().equals("")) { diff --git a/src/main/java/fr/yuki/YukiRPFramework/manager/VehicleManager.java b/src/main/java/fr/yuki/yrpf/manager/VehicleManager.java similarity index 91% rename from src/main/java/fr/yuki/YukiRPFramework/manager/VehicleManager.java rename to src/main/java/fr/yuki/yrpf/manager/VehicleManager.java index 7cc458e..0dd3ed3 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/manager/VehicleManager.java +++ b/src/main/java/fr/yuki/yrpf/manager/VehicleManager.java @@ -1,362 +1,356 @@ -package fr.yuki.YukiRPFramework.manager; - -import com.google.gson.Gson; -import fr.yuki.YukiRPFramework.dao.VehicleGarageDAO; -import fr.yuki.YukiRPFramework.enums.ItemTemplateEnum; -import fr.yuki.YukiRPFramework.enums.ToastTypeEnum; -import fr.yuki.YukiRPFramework.i18n.I18n; -import fr.yuki.YukiRPFramework.inventory.Inventory; -import fr.yuki.YukiRPFramework.inventory.InventoryItem; -import fr.yuki.YukiRPFramework.job.WearableWorldObject; -import fr.yuki.YukiRPFramework.job.customGoal.DeliveryPointGoal; -import fr.yuki.YukiRPFramework.model.Account; -import fr.yuki.YukiRPFramework.model.House; -import fr.yuki.YukiRPFramework.model.VehicleGarage; -import fr.yuki.YukiRPFramework.net.payload.AddVChestItemPayload; -import fr.yuki.YukiRPFramework.net.payload.AddVehicleGaragePayload; -import fr.yuki.YukiRPFramework.ui.UIState; -import fr.yuki.YukiRPFramework.utils.Basic; -import fr.yuki.YukiRPFramework.vehicle.storeLayout.*; -import net.onfirenetwork.onsetjava.Onset; -import net.onfirenetwork.onsetjava.data.Color; -import net.onfirenetwork.onsetjava.data.Vector; -import net.onfirenetwork.onsetjava.entity.Door; -import net.onfirenetwork.onsetjava.entity.Player; -import net.onfirenetwork.onsetjava.entity.Vehicle; -import net.onfirenetwork.onsetjava.plugin.event.EventHandler; -import net.onfirenetwork.onsetjava.plugin.event.player.PlayerEnterVehicleEvent; - -import java.sql.SQLException; -import java.util.ArrayList; -import java.util.UUID; -import java.util.stream.Collectors; - -public class VehicleManager { - - private static ArrayList vehicleStoreLayouts; - - public static void init() { - vehicleStoreLayouts = new ArrayList<>(); - vehicleStoreLayouts.add(new MiniTruckStoreLayout()); - vehicleStoreLayouts.add(new GarbageTruckStoreLayout()); - vehicleStoreLayouts.add(new MiniPickupStoreLayout()); - vehicleStoreLayouts.add(new TruckStoreLayout()); - } - - public static class CreateVehicleResult { - private Vehicle vehicle; - private VehicleGarage vehicleGarage; - - public CreateVehicleResult(Vehicle vehicle, VehicleGarage vehicleGarage){ - this.vehicle = vehicle; - this.vehicleGarage = vehicleGarage; - } - - public Vehicle getVehicle() { - return vehicle; - } - - public VehicleGarage getVehicleGarage() { - return vehicleGarage; - } - } - - /** - * Create a vehicle at positon, if player is given, he will be the owner - * @param modelId The model id - * @param position The position - * @param heading The heading - * @param player Attach a player to the vehicle, the player will be the owner - */ - public static CreateVehicleResult createVehicle(int modelId, Vector position, double heading, Player player, VehicleGarage vehicleGarage, - boolean isRental) { - try { - Vehicle vehicle = Onset.getServer().createVehicle(position, heading, modelId); - vehicle.disableRespawn(); // Disable the respawn of it - if(vehicleGarage == null) { - vehicle.setLicensePlate(getRandomLicencePlate("C")); - String vehicleUUID = UUID.randomUUID().toString(); - vehicle.setProperty("uuid", vehicleUUID, true); - vehicle.setColor(new Color(Basic.randomNumber(0, 255), Basic.randomNumber(0, 255), Basic.randomNumber(0, 255))); - - // Save the vehicle in garage - vehicleGarage = new VehicleGarage(); - vehicleGarage.setUuid(vehicleUUID); - vehicleGarage.setOwner(WorldManager.getPlayerAccount(player).getId()); - vehicleGarage.setGarageId(-1); - vehicleGarage.setGarageLastId(WorldManager.getGarages().get(0).getId()); - vehicleGarage.setModelId(modelId); - vehicleGarage.setDamage("[0,0,0,0,0,0,0,0]"); - vehicleGarage.setHealth(5000); - vehicleGarage.setRental(isRental); - vehicleGarage.setLicencePlate(vehicle.getLicensePlate()); - vehicleGarage.setColor("#" + Integer.toHexString(vehicle.getColor().getRed()) + Integer.toHexString(vehicle.getColor().getGreen()) + Integer.toHexString(vehicle.getColor().getBlue())); - if(!isRental) VehicleGarageDAO.createVehicleGarage(vehicleGarage); - GarageManager.getVehicleGarages().add(vehicleGarage); - } - else { - vehicleGarage.setRental(isRental); - vehicle.setLicensePlate(vehicleGarage.getLicencePlate()); - vehicle.setProperty("uuid", vehicleGarage.getUuid(), true); - java.awt.Color color = java.awt.Color.decode(vehicleGarage.getColor()); - vehicle.setColor(new Color(color.getRed(), color.getGreen(), color.getBlue())); - } - - vehicle.setProperty("owner", player.getSteamId(), true); - vehicle.setProperty("locked", 0, true); - vehicle.setProperty("fuel", 50, true); - - // Create the key for the player - createKeyForVehicle(vehicle, player); - player.enterVehicle(vehicle); - vehicle.setHeading(heading); - - return new CreateVehicleResult(vehicle, vehicleGarage); - } catch (Exception ex) { - ex.printStackTrace(); - Onset.print("Can't create the vehicle: " + ex.toString()); - return null; - } - } - - /** - * Create a vehicle key for the vehicle in the player inventory - * @param vehicle The vehicle - * @param player The player where the key will be put in - * @return The key item - */ - public static InventoryItem createKeyForVehicle(Vehicle vehicle, Player player) { - String vehicleUUID = vehicle.getPropertyString("uuid"); - InventoryItem keyItem = InventoryManager.addItemToPlayer(player, ItemTemplateEnum.VKEY.id, 1, false); - if(keyItem == null) return null; - keyItem.getExtraProperties().put("vehicle_uuid", vehicleUUID); - InventoryManager.getMainInventory(player).save(); - return keyItem; - } - - /** - * Delete all keys in player inventory for the vehicle - * @param vehicle The vehicle - * @param player The player where delete keys - */ - public static void clearKeysForVehicle(Vehicle vehicle, Player player) { - for(InventoryItem keyItem : InventoryManager.getMainInventory(player).getItemsByType(ItemTemplateEnum.VKEY.id)) { - try { - if(keyItem.getExtraProperties().get("vehicle_uuid").equals(vehicle.getPropertyString("uuid"))) { - InventoryManager.getMainInventory(player).removeItem(keyItem, keyItem.getAmount()); - } - } - catch (Exception ex) {} - } - } - - /** - * The player request to lock the nearest vehicle - * @param player The player - */ - public static void handleVehicleLockRequest(Player player) { - Onset.print("Request lock toogle from player="+player.getSteamId()); - - Account account = WorldManager.getPlayerAccount(player); - Door nearestDoor = WorldManager.getNearestDoor(player.getLocation()); - if(nearestDoor.getLocation().distance(player.getLocation()) < 200) { - House house = HouseManager.getHouseAtLocation(nearestDoor.getLocation()); - if(house != null) { - if(HouseManager.canBuildInHouse(player, house)) { - if(house.isLocked()) { - house.setLocked(false); - UIStateManager.sendNotification(player, ToastTypeEnum.WARN, I18n.t(account.getLang(), "toast.house.doors_unlocked")); - } else { - house.setLocked(true); - for(Door door : house.getLine3D().getDoorsInside()) { - door.close(); - } - UIStateManager.sendNotification(player, ToastTypeEnum.SUCCESS, I18n.t(account.getLang(), "toast.house.doors_locked")); - } - SoundManager.playSound3D("sounds/lock_door.mp3", nearestDoor.getLocation(), 500, 0.8); - return; - } - } - } - - for(Vehicle vehicle : Onset.getServer().getVehicles()) { - if(vehicle.getLocation().distance(player.getLocation()) < 1500) { - tryToogleLockVehicle(player, vehicle); - } - } - } - - /** - * Try to lock/unlock the vehicle if player have the right key - * @param player The player - * @param vehicle The vehicle - */ - public static void tryToogleLockVehicle(Player player, Vehicle vehicle) { - Account account = WorldManager.getPlayerAccount(player); - for(InventoryItem keyItem : InventoryManager.getMainInventory(player).getItemsByType(ItemTemplateEnum.VKEY.id)) { - if(keyItem.getExtraProperties().get("vehicle_uuid").equals(vehicle.getPropertyString("uuid"))) { - if(vehicle.getPropertyInt("locked") == 1) { - UIStateManager.sendNotification(player, ToastTypeEnum.WARN, I18n.t(account.getLang(), - "toast.vehicle.lock_off", vehicle.getLicensePlate())); - vehicle.setProperty("locked", 0, true); - SoundManager.playSound3D("sounds/carUnlock.mp3", vehicle.getLocation(), 2500, 1); - } else { - UIStateManager.sendNotification(player, ToastTypeEnum.WARN, I18n.t(account.getLang(), - "toast.vehicle.lock_on", vehicle.getLicensePlate())); - vehicle.setProperty("locked", 1, true); - SoundManager.playSound3D("sounds/carLock.mp3", vehicle.getLocation(), 2500, 1); - } - blinkVehicleLight(vehicle); - } - } - } - - /** - * Blink lights of the vehicle - * @param vehicle The vehicle - */ - private static void blinkVehicleLight(Vehicle vehicle) { - for(int i=0; i<6; i++){ - int c = i; - Onset.delay(c*200, () -> { - vehicle.setLightOn(c%2==0); - }); - } - } - - /** - * Get a random licence plate - * @return A random licence plate - */ - private static String getRandomLicencePlate(String prefix) { - return prefix + "-" + Basic.randomNumber(1000, 9999); - } - - public static void onPlayerEnterVehicle(Player player, Vehicle vehicle, int seatId) { - if(seatId == 1) { - if(vehicle.getPropertyInt("fuel") > 0) { - vehicle.setEngineOn(true); - } - } - - Account account = WorldManager.getPlayerAccount(player); - // Show waypoints for items in storage - for(WearableWorldObject wearableWorldObject : getVehicleWearableObjects(vehicle)) { - if(wearableWorldObject.getDeliveryPointGoal() == null) continue; - DeliveryPointGoal deliveryPointGoal = wearableWorldObject.getDeliveryPointGoal(); - player.callRemoteEvent("Map:AddWaypoint", I18n.t(account.getLang(), "toast.delivery.delivery_point"), deliveryPointGoal.getWearableWorldObject().getUuid(), - deliveryPointGoal.getPosition().getX(), deliveryPointGoal.getPosition().getY(), - deliveryPointGoal.getPosition().getZ()); - } - } - - public static void onPlayerVehicleExit(Player player, Vehicle vehicle, int seatId) { - if(seatId == 1) vehicle.setEngineOn(false); - - // Remove waypoints for items in storage - for(WearableWorldObject wearableWorldObject : getVehicleWearableObjects(vehicle)) { - if(wearableWorldObject.getDeliveryPointGoal() == null) continue; - DeliveryPointGoal deliveryPointGoal = wearableWorldObject.getDeliveryPointGoal(); - player.callRemoteEvent("Map:RemoveWaypoint", deliveryPointGoal.getWearableWorldObject().getUuid()); - } - } - - public static Vehicle getNearestVehicle(Vector position) { - Vehicle nearestVehicle = null; - for(Vehicle vehicle : Onset.getVehicles()) { - try { - if(nearestVehicle == null) { - nearestVehicle = vehicle; - } - else { - if(vehicle.getLocation().distance(position) < nearestVehicle.getLocation().distance(position)) { - nearestVehicle = vehicle; - } - } - }catch (Exception ex) { - continue; - } - } - return nearestVehicle; - } - - public static boolean canStoreWorldWearableObject(Vehicle vehicle) { - if(vehicle.getModel() == 22 || vehicle.getModel() == 23) - return true; - return false; - } - - public static int getInteractionDistance(Vehicle vehicle) { - if(vehicle.getModel() == 22 || vehicle.getModel() == 23) - return 500; - if(vehicle.getModel() == 9 || vehicle.getModel() == 28) - return 700; - return 400; - } - - - public static boolean storeWorldWearableObject(Vehicle vehicle, WearableWorldObject wearableWorldObject) { - VehicleStoreLayout vehicleStoreLayout = vehicleStoreLayouts.stream() - .filter(x -> x.isAdaptedForModel(vehicle.getModel())).findFirst().orElse(null); - if(vehicleStoreLayout == null) return false; - return vehicleStoreLayout.store(vehicle, wearableWorldObject); - } - - public static ArrayList getVehicleWearableObjects(Vehicle vehicle) { - return new ArrayList<>(JobManager.getWearableWorldObjects().stream() - .filter(x -> x.getVehicleUUID() != null) - .filter(x -> x.getVehicleUUID().equals(vehicle.getPropertyString("uuid"))) - .collect(Collectors.toList())); - } - - public static boolean handleVehicleChestStorageRequest(Player player) { - if(player.getVehicle() != null) return false; - Vehicle vehicle = getNearestVehicle(player.getLocation()); - if(vehicle == null) return false; - if(vehicle.getModel() == 33 || vehicle.getModel() == 34) return false; - if(vehicle.getLocation().distance(player.getLocation()) > getInteractionDistance(vehicle)) return false; - - Account account = WorldManager.getPlayerAccount(player); - try{ - if(vehicle.getPropertyInt("locked") == 1) { - UIStateManager.sendNotification(player, ToastTypeEnum.ERROR, I18n.t(account.getLang(), "action.vehicle.locked")); - return true; - } - if(!UIStateManager.handleUIToogle(player, "vchest")) return true; - } catch (Exception ex) { - return false; - } - for(WearableWorldObject wearableWorldObject : getVehicleWearableObjects(vehicle)) { - try { - player.callRemoteEvent("GlobalUI:DispatchToUI", - new Gson().toJson(new AddVChestItemPayload(wearableWorldObject.getUuid(), wearableWorldObject.getModelId(), ""))); - }catch (Exception ex) { - - } - } - return true; - } - - public static void handleRequestWearFromVehicleChest(Player player, String uuid) { - if(player.getVehicle() != null) return; - Vehicle vehicle = getNearestVehicle(player.getLocation()); - if(vehicle.getLocation().distance(player.getLocation()) > VehicleManager.getInteractionDistance(vehicle)) return; - - Account account = WorldManager.getPlayerAccount(player); - if(vehicle.getPropertyInt("locked") == 1) { - UIStateManager.sendNotification(player, ToastTypeEnum.ERROR, I18n.t(account.getLang(), "action.vehicle.locked")); - return; - } - WearableWorldObject wearableWorldObject = getVehicleWearableObjects(vehicle).stream() - .filter(x -> x.getUuid().equals(uuid)).findFirst().orElse(null); - if(wearableWorldObject == null) return; - UIStateManager.handleUIToogle(player, "vchest"); - if(CharacterManager.getCharacterStateByPlayer(player).getWearableWorldObject() != null) { - UIStateManager.sendNotification(player, ToastTypeEnum.ERROR, I18n.t(account.getLang(), "action.vehicle.wearSomething")); - return; - } - - wearableWorldObject.removeFromVehicle(); - wearableWorldObject.requestWear(player); - } -} +package fr.yuki.yrpf.manager; + +import com.google.gson.Gson; +import fr.yuki.yrpf.dao.VehicleGarageDAO; +import fr.yuki.yrpf.enums.ItemTemplateEnum; +import fr.yuki.yrpf.enums.ToastTypeEnum; +import fr.yuki.yrpf.i18n.I18n; +import fr.yuki.yrpf.inventory.InventoryItem; +import fr.yuki.yrpf.job.WearableWorldObject; +import fr.yuki.yrpf.job.customGoal.DeliveryPointGoal; +import fr.yuki.yrpf.model.Account; +import fr.yuki.yrpf.model.House; +import fr.yuki.yrpf.model.VehicleGarage; +import fr.yuki.yrpf.net.payload.AddVChestItemPayload; +import fr.yuki.yrpf.utils.Basic; +import fr.yuki.yrpf.vehicle.storeLayout.*; +import net.onfirenetwork.onsetjava.Onset; +import net.onfirenetwork.onsetjava.data.Color; +import net.onfirenetwork.onsetjava.data.Vector; +import net.onfirenetwork.onsetjava.entity.Door; +import net.onfirenetwork.onsetjava.entity.Player; +import net.onfirenetwork.onsetjava.entity.Vehicle; + +import java.util.ArrayList; +import java.util.UUID; +import java.util.stream.Collectors; + +public class VehicleManager { + + private static ArrayList vehicleStoreLayouts; + + public static void init() { + vehicleStoreLayouts = new ArrayList<>(); + vehicleStoreLayouts.add(new MiniTruckStoreLayout()); + vehicleStoreLayouts.add(new GarbageTruckStoreLayout()); + vehicleStoreLayouts.add(new MiniPickupStoreLayout()); + vehicleStoreLayouts.add(new TruckStoreLayout()); + } + + public static class CreateVehicleResult { + private Vehicle vehicle; + private VehicleGarage vehicleGarage; + + public CreateVehicleResult(Vehicle vehicle, VehicleGarage vehicleGarage){ + this.vehicle = vehicle; + this.vehicleGarage = vehicleGarage; + } + + public Vehicle getVehicle() { + return vehicle; + } + + public VehicleGarage getVehicleGarage() { + return vehicleGarage; + } + } + + /** + * Create a vehicle at positon, if player is given, he will be the owner + * @param modelId The model id + * @param position The position + * @param heading The heading + * @param player Attach a player to the vehicle, the player will be the owner + */ + public static CreateVehicleResult createVehicle(int modelId, Vector position, double heading, Player player, VehicleGarage vehicleGarage, + boolean isRental) { + try { + Vehicle vehicle = Onset.getServer().createVehicle(position, heading, modelId); + vehicle.disableRespawn(); // Disable the respawn of it + if(vehicleGarage == null) { + vehicle.setLicensePlate(getRandomLicencePlate("C")); + String vehicleUUID = UUID.randomUUID().toString(); + vehicle.setProperty("uuid", vehicleUUID, true); + vehicle.setColor(new Color(Basic.randomNumber(0, 255), Basic.randomNumber(0, 255), Basic.randomNumber(0, 255))); + + // Save the vehicle in garage + vehicleGarage = new VehicleGarage(); + vehicleGarage.setUuid(vehicleUUID); + vehicleGarage.setOwner(WorldManager.getPlayerAccount(player).getId()); + vehicleGarage.setGarageId(-1); + vehicleGarage.setGarageLastId(WorldManager.getGarages().get(0).getId()); + vehicleGarage.setModelId(modelId); + vehicleGarage.setDamage("[0,0,0,0,0,0,0,0]"); + vehicleGarage.setHealth(5000); + vehicleGarage.setRental(isRental); + vehicleGarage.setLicencePlate(vehicle.getLicensePlate()); + vehicleGarage.setColor("#" + Integer.toHexString(vehicle.getColor().getRed()) + Integer.toHexString(vehicle.getColor().getGreen()) + Integer.toHexString(vehicle.getColor().getBlue())); + if(!isRental) VehicleGarageDAO.createVehicleGarage(vehicleGarage); + GarageManager.getVehicleGarages().add(vehicleGarage); + } + else { + vehicleGarage.setRental(isRental); + vehicle.setLicensePlate(vehicleGarage.getLicencePlate()); + vehicle.setProperty("uuid", vehicleGarage.getUuid(), true); + java.awt.Color color = java.awt.Color.decode(vehicleGarage.getColor()); + vehicle.setColor(new Color(color.getRed(), color.getGreen(), color.getBlue())); + } + + vehicle.setProperty("owner", player.getSteamId(), true); + vehicle.setProperty("locked", 0, true); + vehicle.setProperty("fuel", 50, true); + + // Create the key for the player + createKeyForVehicle(vehicle, player); + player.enterVehicle(vehicle); + vehicle.setHeading(heading); + + return new CreateVehicleResult(vehicle, vehicleGarage); + } catch (Exception ex) { + ex.printStackTrace(); + Onset.print("Can't create the vehicle: " + ex.toString()); + return null; + } + } + + /** + * Create a vehicle key for the vehicle in the player inventory + * @param vehicle The vehicle + * @param player The player where the key will be put in + * @return The key item + */ + public static InventoryItem createKeyForVehicle(Vehicle vehicle, Player player) { + String vehicleUUID = vehicle.getPropertyString("uuid"); + InventoryItem keyItem = InventoryManager.addItemToPlayer(player, ItemTemplateEnum.VKEY.id, 1, false); + if(keyItem == null) return null; + keyItem.getExtraProperties().put("vehicle_uuid", vehicleUUID); + InventoryManager.getMainInventory(player).save(); + return keyItem; + } + + /** + * Delete all keys in player inventory for the vehicle + * @param vehicle The vehicle + * @param player The player where delete keys + */ + public static void clearKeysForVehicle(Vehicle vehicle, Player player) { + for(InventoryItem keyItem : InventoryManager.getMainInventory(player).getItemsByType(ItemTemplateEnum.VKEY.id)) { + try { + if(keyItem.getExtraProperties().get("vehicle_uuid").equals(vehicle.getPropertyString("uuid"))) { + InventoryManager.getMainInventory(player).removeItem(keyItem, keyItem.getAmount()); + } + } + catch (Exception ex) {} + } + } + + /** + * The player request to lock the nearest vehicle + * @param player The player + */ + public static void handleVehicleLockRequest(Player player) { + Onset.print("Request lock toogle from player="+player.getSteamId()); + + Account account = WorldManager.getPlayerAccount(player); + Door nearestDoor = WorldManager.getNearestDoor(player.getLocation()); + if(nearestDoor.getLocation().distance(player.getLocation()) < 200) { + House house = HouseManager.getHouseAtLocation(nearestDoor.getLocation()); + if(house != null) { + if(HouseManager.canBuildInHouse(player, house)) { + if(house.isLocked()) { + house.setLocked(false); + UIStateManager.sendNotification(player, ToastTypeEnum.WARN, I18n.t(account.getLang(), "toast.house.doors_unlocked")); + } else { + house.setLocked(true); + for(Door door : house.getLine3D().getDoorsInside()) { + door.close(); + } + UIStateManager.sendNotification(player, ToastTypeEnum.SUCCESS, I18n.t(account.getLang(), "toast.house.doors_locked")); + } + SoundManager.playSound3D("sounds/lock_door.mp3", nearestDoor.getLocation(), 500, 0.8); + return; + } + } + } + + for(Vehicle vehicle : Onset.getServer().getVehicles()) { + if(vehicle.getLocation().distance(player.getLocation()) < 1500) { + tryToogleLockVehicle(player, vehicle); + } + } + } + + /** + * Try to lock/unlock the vehicle if player have the right key + * @param player The player + * @param vehicle The vehicle + */ + public static void tryToogleLockVehicle(Player player, Vehicle vehicle) { + Account account = WorldManager.getPlayerAccount(player); + for(InventoryItem keyItem : InventoryManager.getMainInventory(player).getItemsByType(ItemTemplateEnum.VKEY.id)) { + if(keyItem.getExtraProperties().get("vehicle_uuid").equals(vehicle.getPropertyString("uuid"))) { + if(vehicle.getPropertyInt("locked") == 1) { + UIStateManager.sendNotification(player, ToastTypeEnum.WARN, I18n.t(account.getLang(), + "toast.vehicle.lock_off", vehicle.getLicensePlate())); + vehicle.setProperty("locked", 0, true); + SoundManager.playSound3D("sounds/carUnlock.mp3", vehicle.getLocation(), 2500, 1); + } else { + UIStateManager.sendNotification(player, ToastTypeEnum.WARN, I18n.t(account.getLang(), + "toast.vehicle.lock_on", vehicle.getLicensePlate())); + vehicle.setProperty("locked", 1, true); + SoundManager.playSound3D("sounds/carLock.mp3", vehicle.getLocation(), 2500, 1); + } + blinkVehicleLight(vehicle); + } + } + } + + /** + * Blink lights of the vehicle + * @param vehicle The vehicle + */ + private static void blinkVehicleLight(Vehicle vehicle) { + for(int i=0; i<6; i++){ + int c = i; + Onset.delay(c*200, () -> { + vehicle.setLightOn(c%2==0); + }); + } + } + + /** + * Get a random licence plate + * @return A random licence plate + */ + private static String getRandomLicencePlate(String prefix) { + return prefix + "-" + Basic.randomNumber(1000, 9999); + } + + public static void onPlayerEnterVehicle(Player player, Vehicle vehicle, int seatId) { + if(seatId == 1) { + if(vehicle.getPropertyInt("fuel") > 0) { + vehicle.setEngineOn(true); + } + } + + Account account = WorldManager.getPlayerAccount(player); + // Show waypoints for items in storage + for(WearableWorldObject wearableWorldObject : getVehicleWearableObjects(vehicle)) { + if(wearableWorldObject.getDeliveryPointGoal() == null) continue; + DeliveryPointGoal deliveryPointGoal = wearableWorldObject.getDeliveryPointGoal(); + player.callRemoteEvent("Map:AddWaypoint", I18n.t(account.getLang(), "toast.delivery.delivery_point"), deliveryPointGoal.getWearableWorldObject().getUuid(), + deliveryPointGoal.getPosition().getX(), deliveryPointGoal.getPosition().getY(), + deliveryPointGoal.getPosition().getZ()); + } + } + + public static void onPlayerVehicleExit(Player player, Vehicle vehicle, int seatId) { + if(seatId == 1) vehicle.setEngineOn(false); + + // Remove waypoints for items in storage + for(WearableWorldObject wearableWorldObject : getVehicleWearableObjects(vehicle)) { + if(wearableWorldObject.getDeliveryPointGoal() == null) continue; + DeliveryPointGoal deliveryPointGoal = wearableWorldObject.getDeliveryPointGoal(); + player.callRemoteEvent("Map:RemoveWaypoint", deliveryPointGoal.getWearableWorldObject().getUuid()); + } + } + + public static Vehicle getNearestVehicle(Vector position) { + Vehicle nearestVehicle = null; + for(Vehicle vehicle : Onset.getVehicles()) { + try { + if(nearestVehicle == null) { + nearestVehicle = vehicle; + } + else { + if(vehicle.getLocation().distance(position) < nearestVehicle.getLocation().distance(position)) { + nearestVehicle = vehicle; + } + } + }catch (Exception ex) { + continue; + } + } + return nearestVehicle; + } + + public static boolean canStoreWorldWearableObject(Vehicle vehicle) { + if(vehicle.getModel() == 22 || vehicle.getModel() == 23) + return true; + return false; + } + + public static int getInteractionDistance(Vehicle vehicle) { + if(vehicle.getModel() == 22 || vehicle.getModel() == 23) + return 500; + if(vehicle.getModel() == 9 || vehicle.getModel() == 28) + return 700; + return 400; + } + + + public static boolean storeWorldWearableObject(Vehicle vehicle, WearableWorldObject wearableWorldObject) { + VehicleStoreLayout vehicleStoreLayout = vehicleStoreLayouts.stream() + .filter(x -> x.isAdaptedForModel(vehicle.getModel())).findFirst().orElse(null); + if(vehicleStoreLayout == null) return false; + return vehicleStoreLayout.store(vehicle, wearableWorldObject); + } + + public static ArrayList getVehicleWearableObjects(Vehicle vehicle) { + return new ArrayList<>(JobManager.getWearableWorldObjects().stream() + .filter(x -> x.getVehicleUUID() != null) + .filter(x -> x.getVehicleUUID().equals(vehicle.getPropertyString("uuid"))) + .collect(Collectors.toList())); + } + + public static boolean handleVehicleChestStorageRequest(Player player) { + if(player.getVehicle() != null) return false; + Vehicle vehicle = getNearestVehicle(player.getLocation()); + if(vehicle == null) return false; + if(vehicle.getModel() == 33 || vehicle.getModel() == 34) return false; + if(vehicle.getLocation().distance(player.getLocation()) > getInteractionDistance(vehicle)) return false; + + Account account = WorldManager.getPlayerAccount(player); + try{ + if(vehicle.getPropertyInt("locked") == 1) { + UIStateManager.sendNotification(player, ToastTypeEnum.ERROR, I18n.t(account.getLang(), "action.vehicle.locked")); + return true; + } + if(!UIStateManager.handleUIToogle(player, "vchest")) return true; + } catch (Exception ex) { + return false; + } + for(WearableWorldObject wearableWorldObject : getVehicleWearableObjects(vehicle)) { + try { + player.callRemoteEvent("GlobalUI:DispatchToUI", + new Gson().toJson(new AddVChestItemPayload(wearableWorldObject.getUuid(), wearableWorldObject.getModelId(), ""))); + }catch (Exception ex) { + + } + } + return true; + } + + public static void handleRequestWearFromVehicleChest(Player player, String uuid) { + if(player.getVehicle() != null) return; + Vehicle vehicle = getNearestVehicle(player.getLocation()); + if(vehicle.getLocation().distance(player.getLocation()) > VehicleManager.getInteractionDistance(vehicle)) return; + + Account account = WorldManager.getPlayerAccount(player); + if(vehicle.getPropertyInt("locked") == 1) { + UIStateManager.sendNotification(player, ToastTypeEnum.ERROR, I18n.t(account.getLang(), "action.vehicle.locked")); + return; + } + WearableWorldObject wearableWorldObject = getVehicleWearableObjects(vehicle).stream() + .filter(x -> x.getUuid().equals(uuid)).findFirst().orElse(null); + if(wearableWorldObject == null) return; + UIStateManager.handleUIToogle(player, "vchest"); + if(CharacterManager.getCharacterStateByPlayer(player).getWearableWorldObject() != null) { + UIStateManager.sendNotification(player, ToastTypeEnum.ERROR, I18n.t(account.getLang(), "action.vehicle.wearSomething")); + return; + } + + wearableWorldObject.removeFromVehicle(); + wearableWorldObject.requestWear(player); + } +} diff --git a/src/main/java/fr/yuki/YukiRPFramework/manager/WeaponManager.java b/src/main/java/fr/yuki/yrpf/manager/WeaponManager.java similarity index 88% rename from src/main/java/fr/yuki/YukiRPFramework/manager/WeaponManager.java rename to src/main/java/fr/yuki/yrpf/manager/WeaponManager.java index 7c77dff..b3b7b6b 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/manager/WeaponManager.java +++ b/src/main/java/fr/yuki/yrpf/manager/WeaponManager.java @@ -1,75 +1,71 @@ -package fr.yuki.YukiRPFramework.manager; - -import fr.yuki.YukiRPFramework.enums.ItemTemplateEnum; -import fr.yuki.YukiRPFramework.enums.ToastTypeEnum; -import fr.yuki.YukiRPFramework.i18n.I18n; -import fr.yuki.YukiRPFramework.inventory.Inventory; -import fr.yuki.YukiRPFramework.model.ItemTemplate; -import net.onfirenetwork.onsetjava.Onset; -import net.onfirenetwork.onsetjava.data.Weapon; -import net.onfirenetwork.onsetjava.entity.Player; - -import java.util.ArrayList; -import java.util.HashMap; - -public class WeaponManager { - public static boolean requestEquipWeapon(Player player, int weaponId) { - HashMap weapons = getPlayerWeapons(player); - int slot = -1; - if(weapons.get(1).getModel() == 1) { - slot = 1; - } else if(weapons.get(2).getModel() == 1) { - slot = 2; - } else if(weapons.get(3).getModel() == 1) { - slot = 3; - } - if(slot == -1) return false; - Onset.print("Set weapon slot=" + slot + ", weaponId=" + weaponId); - player.setWeapon(slot, weaponId, 0, true, false); - WorldManager.savePlayer(player); - return true; - } - - public static HashMap getPlayerWeapons(Player player) { - HashMap weapons = new HashMap<>(); - weapons.put(1, player.getWeapon(1)); - weapons.put(2, player.getWeapon(2)); - weapons.put(3, player.getWeapon(3)); - return weapons; - } - - public static boolean fillWeaponWithAmmo(Player player) { - Weapon weapon = player.getWeapon(player.getWeaponSlot()); - if(weapon.getModel() == 1) return false; - ItemTemplate itemTemplate = InventoryManager.getItemTemplates().values().stream() - .filter(x -> x.getWeaponId() == weapon.getModel()).findFirst().orElse(null); - if(itemTemplate == null) return false; - weapon.setAmmo(weapon.getAmmo() + itemTemplate.getAmmoPerRecharge()); - player.setWeapon(player.getWeaponSlot(), weapon.getModel(), weapon.getAmmo(), true, false); - WorldManager.savePlayer(player); - return true; - } - - public static void storeWeapon(Player player) { - Weapon weapon = player.getWeapon(player.getWeaponSlot()); - if(weapon.getModel() == 1) return; - ItemTemplate itemTemplate = InventoryManager.getItemTemplates().values().stream() - .filter(x -> x.getWeaponId() == weapon.getModel()).findFirst().orElse(null); - if(itemTemplate == null) return; - - if(InventoryManager.addItemToPlayer(player, String.valueOf(itemTemplate.getId()), 1, true) == null) return; - int ammoBack = (weapon.getAmmo() - (weapon.getAmmo() % itemTemplate.getAmmoPerRecharge())) / itemTemplate.getAmmoPerRecharge(); - player.setWeapon(player.getWeaponSlot(), 1, 0, true, false); - WorldManager.savePlayer(player); - if(ammoBack == 0) return; - if(InventoryManager.addItemToPlayer(player, ItemTemplateEnum.AMMO.id, ammoBack, false) == null) { - return; - } - } - - public static void clearWeapons(Player player) { - player.setWeapon(1, 1, 0, true, false); - player.setWeapon(2, 1, 0, true, false); - player.setWeapon(3, 1, 0, true, false); - } -} +package fr.yuki.yrpf.manager; + +import fr.yuki.yrpf.enums.ItemTemplateEnum; +import fr.yuki.yrpf.model.ItemTemplate; +import net.onfirenetwork.onsetjava.Onset; +import net.onfirenetwork.onsetjava.data.Weapon; +import net.onfirenetwork.onsetjava.entity.Player; + +import java.util.HashMap; + +public class WeaponManager { + public static boolean requestEquipWeapon(Player player, int weaponId) { + HashMap weapons = getPlayerWeapons(player); + int slot = -1; + if(weapons.get(1).getModel() == 1) { + slot = 1; + } else if(weapons.get(2).getModel() == 1) { + slot = 2; + } else if(weapons.get(3).getModel() == 1) { + slot = 3; + } + if(slot == -1) return false; + Onset.print("Set weapon slot=" + slot + ", weaponId=" + weaponId); + player.setWeapon(slot, weaponId, 0, true, false); + WorldManager.savePlayer(player); + return true; + } + + public static HashMap getPlayerWeapons(Player player) { + HashMap weapons = new HashMap<>(); + weapons.put(1, player.getWeapon(1)); + weapons.put(2, player.getWeapon(2)); + weapons.put(3, player.getWeapon(3)); + return weapons; + } + + public static boolean fillWeaponWithAmmo(Player player) { + Weapon weapon = player.getWeapon(player.getWeaponSlot()); + if(weapon.getModel() == 1) return false; + ItemTemplate itemTemplate = InventoryManager.getItemTemplates().values().stream() + .filter(x -> x.getWeaponId() == weapon.getModel()).findFirst().orElse(null); + if(itemTemplate == null) return false; + weapon.setAmmo(weapon.getAmmo() + itemTemplate.getAmmoPerRecharge()); + player.setWeapon(player.getWeaponSlot(), weapon.getModel(), weapon.getAmmo(), true, false); + WorldManager.savePlayer(player); + return true; + } + + public static void storeWeapon(Player player) { + Weapon weapon = player.getWeapon(player.getWeaponSlot()); + if(weapon.getModel() == 1) return; + ItemTemplate itemTemplate = InventoryManager.getItemTemplates().values().stream() + .filter(x -> x.getWeaponId() == weapon.getModel()).findFirst().orElse(null); + if(itemTemplate == null) return; + + if(InventoryManager.addItemToPlayer(player, String.valueOf(itemTemplate.getId()), 1, true) == null) return; + int ammoBack = (weapon.getAmmo() - (weapon.getAmmo() % itemTemplate.getAmmoPerRecharge())) / itemTemplate.getAmmoPerRecharge(); + player.setWeapon(player.getWeaponSlot(), 1, 0, true, false); + WorldManager.savePlayer(player); + if(ammoBack == 0) return; + if(InventoryManager.addItemToPlayer(player, ItemTemplateEnum.AMMO.id, ammoBack, false) == null) { + return; + } + } + + public static void clearWeapons(Player player) { + player.setWeapon(1, 1, 0, true, false); + player.setWeapon(2, 1, 0, true, false); + player.setWeapon(3, 1, 0, true, false); + } +} diff --git a/src/main/java/fr/yuki/YukiRPFramework/manager/WorldManager.java b/src/main/java/fr/yuki/yrpf/manager/WorldManager.java similarity index 90% rename from src/main/java/fr/yuki/YukiRPFramework/manager/WorldManager.java rename to src/main/java/fr/yuki/yrpf/manager/WorldManager.java index 10d9597..60933ec 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/manager/WorldManager.java +++ b/src/main/java/fr/yuki/yrpf/manager/WorldManager.java @@ -1,28 +1,25 @@ -package fr.yuki.YukiRPFramework.manager; +package fr.yuki.yrpf.manager; import com.google.gson.Gson; -import fr.yuki.YukiRPFramework.character.CharacterJobLevel; -import fr.yuki.YukiRPFramework.character.CharacterLoopAnimation; -import fr.yuki.YukiRPFramework.character.CharacterState; -import fr.yuki.YukiRPFramework.dao.*; -import fr.yuki.YukiRPFramework.enums.ItemTemplateEnum; -import fr.yuki.YukiRPFramework.enums.ToastTypeEnum; -import fr.yuki.YukiRPFramework.i18n.I18n; -import fr.yuki.YukiRPFramework.inventory.Inventory; -import fr.yuki.YukiRPFramework.inventory.InventoryItem; -import fr.yuki.YukiRPFramework.job.DeliveryPointConfig; -import fr.yuki.YukiRPFramework.job.Job; -import fr.yuki.YukiRPFramework.job.ObjectPlacementInstance; -import fr.yuki.YukiRPFramework.job.placementObject.GenericPlacementInstance; -import fr.yuki.YukiRPFramework.modding.Line3D; -import fr.yuki.YukiRPFramework.model.*; -import fr.yuki.YukiRPFramework.net.payload.AddSellerItemPayload; -import fr.yuki.YukiRPFramework.net.payload.AddToastPayload; -import fr.yuki.YukiRPFramework.net.payload.BuySellItemRequestPayload; -import fr.yuki.YukiRPFramework.net.payload.SetWindowStatePayload; -import fr.yuki.YukiRPFramework.ui.UIState; -import fr.yuki.YukiRPFramework.utils.ServerConfig; -import fr.yuki.YukiRPFramework.world.RestrictedZone; +import eu.bebendorf.ajorm.Repo; +import fr.yuki.yrpf.character.CharacterJobLevel; +import fr.yuki.yrpf.character.CharacterLoopAnimation; +import fr.yuki.yrpf.character.CharacterState; +import fr.yuki.yrpf.dao.*; +import fr.yuki.yrpf.enums.ItemTemplateEnum; +import fr.yuki.yrpf.enums.ToastTypeEnum; +import fr.yuki.yrpf.i18n.I18n; +import fr.yuki.yrpf.inventory.Inventory; +import fr.yuki.yrpf.inventory.InventoryItem; +import fr.yuki.yrpf.job.Job; +import fr.yuki.yrpf.job.ObjectPlacementInstance; +import fr.yuki.yrpf.job.placementObject.GenericPlacementInstance; +import fr.yuki.yrpf.model.*; +import fr.yuki.yrpf.net.payload.AddSellerItemPayload; +import fr.yuki.yrpf.net.payload.BuySellItemRequestPayload; +import fr.yuki.yrpf.utils.ServerConfig; +import fr.yuki.yrpf.world.RestrictedZone; +import lombok.Getter; import net.onfirenetwork.onsetjava.Onset; import net.onfirenetwork.onsetjava.data.Location; import net.onfirenetwork.onsetjava.data.Vector; @@ -31,21 +28,27 @@ import java.io.*; import java.sql.SQLException; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.Collections; -import java.util.HashMap; +import java.util.*; public class WorldManager { + @Getter private static ServerConfig serverConfig; - private static HashMap accounts; - private static ArrayList atms; - private static ArrayList garages; - private static ArrayList vehicleSellers; - private static ArrayList groundItems; - private static ArrayList sellers; - private static ArrayList restrictedZones; - private static ArrayList outfitPoints; + @Getter + private static Map accounts; + @Getter + private static List atms; + @Getter + private static List garages; + @Getter + private static List vehicleSellers; + @Getter + private static List groundItems; + @Getter + private static List sellers; + @Getter + private static List restrictedZones; + @Getter + private static List outfitPoints; /** * Init the world manager @@ -57,17 +60,17 @@ public static void init() throws SQLException, IOException { restrictedZones = new ArrayList<>(); // Load atms - atms = ATMDAO.loadATMs(); + atms = Repo.get(ATM.class).all(); spawnATMs(); Onset.print("Loaded " + atms.size() + " atm(s) from the database"); // Load garages - garages = GarageDAO.loadGarages(); + garages = Repo.get(Garage.class).all(); spawnGarages(); Onset.print("Loaded " + garages.size() + " garage(s) from the database"); // Load vehicle sellers - vehicleSellers = VehicleSellerDAO.loadVehicleSellers(); + vehicleSellers = Repo.get(VehicleSeller.class).all(); Onset.print("Loaded " + vehicleSellers.size() + " vehicle seller(s) from the database"); spawnVehicleSellers(); @@ -568,30 +571,6 @@ public static Player getPlayerByPhoneNumber(String phoneNumber) { return null; } - public static ArrayList getAtms() { - return atms; - } - - public static HashMap getAccounts() { - return accounts; - } - - public static ArrayList getGarages() { - return garages; - } - - public static ArrayList getVehicleSellers() { - return vehicleSellers; - } - - public static ServerConfig getServerConfig() { - return serverConfig; - } - - public static ArrayList getGroundItems() { - return groundItems; - } - public static Player getNearestPlayer(Player player) { Player search = null; double currentDistance = 99999; @@ -625,7 +604,4 @@ public static Door getNearestDoor(Vector position) { return search; } - public static ArrayList getRestrictedZones() { - return restrictedZones; - } } diff --git a/src/main/java/fr/yuki/YukiRPFramework/modding/Line3D.java b/src/main/java/fr/yuki/yrpf/modding/Line3D.java similarity index 93% rename from src/main/java/fr/yuki/YukiRPFramework/modding/Line3D.java rename to src/main/java/fr/yuki/yrpf/modding/Line3D.java index 1dafd30..4ac527f 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/modding/Line3D.java +++ b/src/main/java/fr/yuki/yrpf/modding/Line3D.java @@ -1,81 +1,80 @@ -package fr.yuki.YukiRPFramework.modding; - -import net.onfirenetwork.onsetjava.Onset; -import net.onfirenetwork.onsetjava.data.Vector; -import net.onfirenetwork.onsetjava.entity.Door; -import net.onfirenetwork.onsetjava.entity.Player; - -import java.lang.reflect.Array; -import java.util.ArrayList; -import java.util.UUID; - -public class Line3D { - private String id; - private double sX; - private double sY; - private double sZ; - private double eX; - private double eY; - private double eZ; - private int thickness; - - public Line3D(double sX, double sY, double sZ, double eX, double eY, double eZ, int thickness) { - this.id = UUID.randomUUID().toString(); - this.sX = sX; - this.sY = sY; - this.sZ = sZ; - this.eX = eX; - this.eY = eY; - this.eZ = eZ; - this.thickness = thickness; - } - - public void show(Player player) { - player.callRemoteEvent("World:AddLine3D", this.id, this.sX, this.sY, this.sZ, this.eX, this.eY, this.eZ, this.thickness); - } - - public void hide(Player player) { - player.callRemoteEvent("World:DeleteLine3D", this.id); - } - - public boolean isInside(Vector origin) { - //double szMax = this.sZ + height; - //double ezMax = this.eZ + height; - return (origin.getX() < this.sX && origin.getX() > this.eX && origin.getY() < this.sY && origin.getY() > this.eY); - } - - public ArrayList getDoorsInside() { - ArrayList doors = new ArrayList<>(); - for(Door d : Onset.getDoors()) { - if((d.getLocation().getX() < this.sX && d.getLocation().getX() > this.eX && - d.getLocation().getY() < this.sY && d.getLocation().getY() > this.eY)) { - doors.add(d); - } - } - return doors; - } - - public double getsX() { - return sX; - } - - public double getsY() { - return sY; - } - - public double getsZ() { - return sZ; - } - - public double geteX() { - return eX; - } - - public double geteY() { - return eY; - } - - public double geteZ() { - return eZ; - } -} +package fr.yuki.yrpf.modding; + +import net.onfirenetwork.onsetjava.Onset; +import net.onfirenetwork.onsetjava.data.Vector; +import net.onfirenetwork.onsetjava.entity.Door; +import net.onfirenetwork.onsetjava.entity.Player; + +import java.util.ArrayList; +import java.util.UUID; + +public class Line3D { + private String id; + private double sX; + private double sY; + private double sZ; + private double eX; + private double eY; + private double eZ; + private int thickness; + + public Line3D(double sX, double sY, double sZ, double eX, double eY, double eZ, int thickness) { + this.id = UUID.randomUUID().toString(); + this.sX = sX; + this.sY = sY; + this.sZ = sZ; + this.eX = eX; + this.eY = eY; + this.eZ = eZ; + this.thickness = thickness; + } + + public void show(Player player) { + player.callRemoteEvent("World:AddLine3D", this.id, this.sX, this.sY, this.sZ, this.eX, this.eY, this.eZ, this.thickness); + } + + public void hide(Player player) { + player.callRemoteEvent("World:DeleteLine3D", this.id); + } + + public boolean isInside(Vector origin) { + //double szMax = this.sZ + height; + //double ezMax = this.eZ + height; + return (origin.getX() < this.sX && origin.getX() > this.eX && origin.getY() < this.sY && origin.getY() > this.eY); + } + + public ArrayList getDoorsInside() { + ArrayList doors = new ArrayList<>(); + for(Door d : Onset.getDoors()) { + if((d.getLocation().getX() < this.sX && d.getLocation().getX() > this.eX && + d.getLocation().getY() < this.sY && d.getLocation().getY() > this.eY)) { + doors.add(d); + } + } + return doors; + } + + public double getsX() { + return sX; + } + + public double getsY() { + return sY; + } + + public double getsZ() { + return sZ; + } + + public double geteX() { + return eX; + } + + public double geteY() { + return eY; + } + + public double geteZ() { + return eZ; + } +} diff --git a/src/main/java/fr/yuki/YukiRPFramework/modding/LoopSound3D.java b/src/main/java/fr/yuki/yrpf/modding/LoopSound3D.java similarity index 94% rename from src/main/java/fr/yuki/YukiRPFramework/modding/LoopSound3D.java rename to src/main/java/fr/yuki/yrpf/modding/LoopSound3D.java index bcc9f5e..23ebc5d 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/modding/LoopSound3D.java +++ b/src/main/java/fr/yuki/yrpf/modding/LoopSound3D.java @@ -1,63 +1,63 @@ -package fr.yuki.YukiRPFramework.modding; - -import net.onfirenetwork.onsetjava.Onset; -import net.onfirenetwork.onsetjava.data.Vector; -import net.onfirenetwork.onsetjava.entity.WorldObject; - -public class LoopSound3D { - private WorldObject dummyObject; - private String path; - private Vector position; - private int radius; - private double volume; - private int loopInterval; - private boolean isActive; - - public LoopSound3D(String path, Vector position, int radius, double volume, int loopInterval) { - this.path = path; - this.position = position; - this.radius = radius; - this.volume = volume; - this.loopInterval = loopInterval; - this.isActive = false; - } - - public void start() { - this.isActive = true; - this.tickRestart(); - } - - private void createDummy() { - this.dummyObject = Onset.getServer().createObject(new Vector(0, 0, 0), 1); - this.dummyObject.setProperty("ambiantSoundObject", 1, true); - this.dummyObject.setProperty("ambiantSoundName", this.path, true); - this.dummyObject.setProperty("ambiantSoundRadius", radius, true); - this.dummyObject.setProperty("ambiantSoundVolume", volume, true); - this.dummyObject.setLocation(position); - this.dummyObject.setStreamDistance(radius); - } - - private void destroyDummy() { - if(this.dummyObject == null) return; - this.dummyObject.destroy(); - this.dummyObject = null; - } - - public void tickRestart() { - this.destroyDummy(); - this.createDummy(); - Onset.delay(this.loopInterval, () -> { - if(this.dummyObject == null || !this.isActive) return; - this.tickRestart(); - }); - } - - public void stop() { - this.destroyDummy(); - this.isActive = false; - } - - public boolean isActive() { - return isActive; - } -} +package fr.yuki.yrpf.modding; + +import net.onfirenetwork.onsetjava.Onset; +import net.onfirenetwork.onsetjava.data.Vector; +import net.onfirenetwork.onsetjava.entity.WorldObject; + +public class LoopSound3D { + private WorldObject dummyObject; + private String path; + private Vector position; + private int radius; + private double volume; + private int loopInterval; + private boolean isActive; + + public LoopSound3D(String path, Vector position, int radius, double volume, int loopInterval) { + this.path = path; + this.position = position; + this.radius = radius; + this.volume = volume; + this.loopInterval = loopInterval; + this.isActive = false; + } + + public void start() { + this.isActive = true; + this.tickRestart(); + } + + private void createDummy() { + this.dummyObject = Onset.getServer().createObject(new Vector(0, 0, 0), 1); + this.dummyObject.setProperty("ambiantSoundObject", 1, true); + this.dummyObject.setProperty("ambiantSoundName", this.path, true); + this.dummyObject.setProperty("ambiantSoundRadius", radius, true); + this.dummyObject.setProperty("ambiantSoundVolume", volume, true); + this.dummyObject.setLocation(position); + this.dummyObject.setStreamDistance(radius); + } + + private void destroyDummy() { + if(this.dummyObject == null) return; + this.dummyObject.destroy(); + this.dummyObject = null; + } + + public void tickRestart() { + this.destroyDummy(); + this.createDummy(); + Onset.delay(this.loopInterval, () -> { + if(this.dummyObject == null || !this.isActive) return; + this.tickRestart(); + }); + } + + public void stop() { + this.destroyDummy(); + this.isActive = false; + } + + public boolean isActive() { + return isActive; + } +} diff --git a/src/main/java/fr/yuki/YukiRPFramework/modding/ModdingCustomModel.java b/src/main/java/fr/yuki/yrpf/modding/ModdingCustomModel.java similarity index 83% rename from src/main/java/fr/yuki/YukiRPFramework/modding/ModdingCustomModel.java rename to src/main/java/fr/yuki/yrpf/modding/ModdingCustomModel.java index 1efa587..b8e3d5b 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/modding/ModdingCustomModel.java +++ b/src/main/java/fr/yuki/yrpf/modding/ModdingCustomModel.java @@ -1,22 +1,22 @@ -package fr.yuki.YukiRPFramework.modding; - -public class ModdingCustomModel { - private int id; - private String path; - - public int getId() { - return id; - } - - public void setId(int id) { - this.id = id; - } - - public String getPath() { - return path; - } - - public void setPath(String path) { - this.path = path; - } -} +package fr.yuki.yrpf.modding; + +public class ModdingCustomModel { + private int id; + private String path; + + public int getId() { + return id; + } + + public void setId(int id) { + this.id = id; + } + + public String getPath() { + return path; + } + + public void setPath(String path) { + this.path = path; + } +} diff --git a/src/main/java/fr/yuki/YukiRPFramework/modding/ModdingFile.java b/src/main/java/fr/yuki/yrpf/modding/ModdingFile.java similarity index 85% rename from src/main/java/fr/yuki/YukiRPFramework/modding/ModdingFile.java rename to src/main/java/fr/yuki/yrpf/modding/ModdingFile.java index 8deed08..3694c58 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/modding/ModdingFile.java +++ b/src/main/java/fr/yuki/yrpf/modding/ModdingFile.java @@ -1,15 +1,15 @@ -package fr.yuki.YukiRPFramework.modding; - -import java.util.ArrayList; - -public class ModdingFile { - private ArrayList customModels; - - public ArrayList getCustomModels() { - return customModels; - } - - public void setCustomModels(ArrayList customModels) { - this.customModels = customModels; - } -} +package fr.yuki.yrpf.modding; + +import java.util.ArrayList; + +public class ModdingFile { + private ArrayList customModels; + + public ArrayList getCustomModels() { + return customModels; + } + + public void setCustomModels(ArrayList customModels) { + this.customModels = customModels; + } +} diff --git a/src/main/java/fr/yuki/yrpf/model/ATM.java b/src/main/java/fr/yuki/yrpf/model/ATM.java new file mode 100644 index 0000000..8c69c38 --- /dev/null +++ b/src/main/java/fr/yuki/yrpf/model/ATM.java @@ -0,0 +1,30 @@ +package fr.yuki.yrpf.model; + +import eu.bebendorf.ajorm.Model; +import eu.bebendorf.ajorm.annotation.Column; +import eu.bebendorf.ajorm.annotation.Table; +import lombok.Getter; +import lombok.Setter; +import net.onfirenetwork.onsetjava.data.Vector; +import net.onfirenetwork.onsetjava.entity.Pickup; +import net.onfirenetwork.onsetjava.entity.Player; + +@Getter @Setter @Table("tbl_atm") +public class ATM extends Model { + @Column(column = "id_atm") + private int id; + @Column + private float x; + @Column + private float y; + @Column + private float z; + private Pickup pickup; + + public boolean isNear(Player player) { + if(player.getLocation().distance(new Vector(this.x, this.y, this.z)) < 150) { + return true; + } + return false; + } +} diff --git a/src/main/java/fr/yuki/YukiRPFramework/model/Account.java b/src/main/java/fr/yuki/yrpf/model/Account.java similarity index 93% rename from src/main/java/fr/yuki/YukiRPFramework/model/Account.java rename to src/main/java/fr/yuki/yrpf/model/Account.java index db1d14f..7832eb0 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/model/Account.java +++ b/src/main/java/fr/yuki/yrpf/model/Account.java @@ -1,4 +1,4 @@ -package fr.yuki.YukiRPFramework.model; +package fr.yuki.yrpf.model; import com.google.gson.Gson; import com.google.gson.reflect.TypeToken; @@ -6,9 +6,9 @@ import eu.bebendorf.ajorm.annotation.Column; import eu.bebendorf.ajorm.annotation.Dates; import eu.bebendorf.ajorm.annotation.Table; -import fr.yuki.YukiRPFramework.character.CharacterJobLevel; -import fr.yuki.YukiRPFramework.character.CharacterStyle; -import fr.yuki.YukiRPFramework.manager.WeaponManager; +import fr.yuki.yrpf.character.CharacterJobLevel; +import fr.yuki.yrpf.character.CharacterStyle; +import fr.yuki.yrpf.manager.WeaponManager; import lombok.Getter; import lombok.Setter; import net.onfirenetwork.onsetjava.data.Location; @@ -19,7 +19,7 @@ @Dates @Getter @Setter @Table("tbl_account") public class Account extends Model { - @Column + @Column(column = "id_account") private int id; @Column private int adminLevel = 0; diff --git a/src/main/java/fr/yuki/yrpf/model/AccountJobWhitelist.java b/src/main/java/fr/yuki/yrpf/model/AccountJobWhitelist.java new file mode 100644 index 0000000..06e98d4 --- /dev/null +++ b/src/main/java/fr/yuki/yrpf/model/AccountJobWhitelist.java @@ -0,0 +1,19 @@ +package fr.yuki.yrpf.model; + +import eu.bebendorf.ajorm.Model; +import eu.bebendorf.ajorm.annotation.Column; +import eu.bebendorf.ajorm.annotation.Table; +import lombok.Getter; +import lombok.Setter; + +@Getter @Setter @Table("tbl_account_job_whitelist") +public class AccountJobWhitelist extends Model { + @Column(column = "id_account_job_whitelist") + private int id; + @Column(column = "id_account") + private int accountId; + @Column(column = "id_job") + private String jobId; + @Column + private int jobLevel; +} diff --git a/src/main/java/fr/yuki/YukiRPFramework/model/Bag.java b/src/main/java/fr/yuki/yrpf/model/Bag.java similarity index 92% rename from src/main/java/fr/yuki/YukiRPFramework/model/Bag.java rename to src/main/java/fr/yuki/yrpf/model/Bag.java index 9665f40..0523bd8 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/model/Bag.java +++ b/src/main/java/fr/yuki/yrpf/model/Bag.java @@ -1,112 +1,112 @@ -package fr.yuki.YukiRPFramework.model; - -public class Bag { - private int modelId; - private double x; - private double y; - private double z; - private double rx; - private double ry; - private double rz; - private double sx; - private double sy; - private double sz; - private String socket; - private double bonusWeight; - - public int getModelId() { - return modelId; - } - - public void setModelId(int modelId) { - this.modelId = modelId; - } - - public double getX() { - return x; - } - - public void setX(double x) { - this.x = x; - } - - public double getY() { - return y; - } - - public void setY(double y) { - this.y = y; - } - - public double getZ() { - return z; - } - - public void setZ(double z) { - this.z = z; - } - - public double getRx() { - return rx; - } - - public void setRx(double rx) { - this.rx = rx; - } - - public double getRy() { - return ry; - } - - public void setRy(double ry) { - this.ry = ry; - } - - public double getRz() { - return rz; - } - - public void setRz(double rz) { - this.rz = rz; - } - - public double getSx() { - return sx; - } - - public void setSx(double sx) { - this.sx = sx; - } - - public double getSy() { - return sy; - } - - public void setSy(double sy) { - this.sy = sy; - } - - public double getSz() { - return sz; - } - - public void setSz(double sz) { - this.sz = sz; - } - - public String getSocket() { - return socket; - } - - public void setSocket(String socket) { - this.socket = socket; - } - - public double getBonusWeight() { - return bonusWeight; - } - - public void setBonusWeight(double bonusWeight) { - this.bonusWeight = bonusWeight; - } -} +package fr.yuki.yrpf.model; + +public class Bag { + private int modelId; + private double x; + private double y; + private double z; + private double rx; + private double ry; + private double rz; + private double sx; + private double sy; + private double sz; + private String socket; + private double bonusWeight; + + public int getModelId() { + return modelId; + } + + public void setModelId(int modelId) { + this.modelId = modelId; + } + + public double getX() { + return x; + } + + public void setX(double x) { + this.x = x; + } + + public double getY() { + return y; + } + + public void setY(double y) { + this.y = y; + } + + public double getZ() { + return z; + } + + public void setZ(double z) { + this.z = z; + } + + public double getRx() { + return rx; + } + + public void setRx(double rx) { + this.rx = rx; + } + + public double getRy() { + return ry; + } + + public void setRy(double ry) { + this.ry = ry; + } + + public double getRz() { + return rz; + } + + public void setRz(double rz) { + this.rz = rz; + } + + public double getSx() { + return sx; + } + + public void setSx(double sx) { + this.sx = sx; + } + + public double getSy() { + return sy; + } + + public void setSy(double sy) { + this.sy = sy; + } + + public double getSz() { + return sz; + } + + public void setSz(double sz) { + this.sz = sz; + } + + public String getSocket() { + return socket; + } + + public void setSocket(String socket) { + this.socket = socket; + } + + public double getBonusWeight() { + return bonusWeight; + } + + public void setBonusWeight(double bonusWeight) { + this.bonusWeight = bonusWeight; + } +} diff --git a/src/main/java/fr/yuki/yrpf/model/Company.java b/src/main/java/fr/yuki/yrpf/model/Company.java new file mode 100644 index 0000000..85a8d08 --- /dev/null +++ b/src/main/java/fr/yuki/yrpf/model/Company.java @@ -0,0 +1,26 @@ +package fr.yuki.yrpf.model; + +import eu.bebendorf.ajorm.Model; +import eu.bebendorf.ajorm.annotation.Column; +import eu.bebendorf.ajorm.annotation.Table; +import lombok.Getter; +import lombok.Setter; +import net.onfirenetwork.onsetjava.entity.Player; + +@Getter @Setter @Table("tbl_compagny") +public class Company extends Model { + @Column(column = "id_compagny") + private int id; + @Column + private String name; + @Column + private int bankCash = 0; + @Column + private String owner; + @Column + private int maxMember = 5; + + public boolean isOwner(Player player) { + return this.owner.equals(player.getSteamId()); + } +} diff --git a/src/main/java/fr/yuki/yrpf/model/FuelPoint.java b/src/main/java/fr/yuki/yrpf/model/FuelPoint.java new file mode 100644 index 0000000..66929de --- /dev/null +++ b/src/main/java/fr/yuki/yrpf/model/FuelPoint.java @@ -0,0 +1,28 @@ +package fr.yuki.yrpf.model; + +import eu.bebendorf.ajorm.Model; +import eu.bebendorf.ajorm.annotation.Column; +import eu.bebendorf.ajorm.annotation.Table; +import lombok.Getter; +import lombok.Setter; +import net.onfirenetwork.onsetjava.data.Vector; +import net.onfirenetwork.onsetjava.entity.Player; + +@Getter @Setter @Table("tbl_fuel_point") +public class FuelPoint extends Model { + @Column(column = "id_fuel_point") + private int id; + @Column + private double x; + @Column + private double y; + @Column + private double z; + @Column + private int price; + + public boolean isNear(Player player) { + if(player.getLocation().distance(new Vector(this.x, this.y, this.z)) < 200) return true; + return false; + } +} diff --git a/src/main/java/fr/yuki/YukiRPFramework/model/GameMapConfig.java b/src/main/java/fr/yuki/yrpf/model/GameMapConfig.java similarity index 88% rename from src/main/java/fr/yuki/YukiRPFramework/model/GameMapConfig.java rename to src/main/java/fr/yuki/yrpf/model/GameMapConfig.java index 5292973..b3ece96 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/model/GameMapConfig.java +++ b/src/main/java/fr/yuki/yrpf/model/GameMapConfig.java @@ -1,24 +1,24 @@ -package fr.yuki.YukiRPFramework.model; - -import java.util.ArrayList; - -public class GameMapConfig { - private ArrayList markers; - private ArrayList zones; - - public ArrayList getMarkers() { - return markers; - } - - public void setMarkers(ArrayList markers) { - this.markers = markers; - } - - public ArrayList getZones() { - return zones; - } - - public void setZones(ArrayList zones) { - this.zones = zones; - } -} +package fr.yuki.yrpf.model; + +import java.util.ArrayList; + +public class GameMapConfig { + private ArrayList markers; + private ArrayList zones; + + public ArrayList getMarkers() { + return markers; + } + + public void setMarkers(ArrayList markers) { + this.markers = markers; + } + + public ArrayList getZones() { + return zones; + } + + public void setZones(ArrayList zones) { + this.zones = zones; + } +} diff --git a/src/main/java/fr/yuki/YukiRPFramework/model/GameMapMarker.java b/src/main/java/fr/yuki/yrpf/model/GameMapMarker.java similarity index 89% rename from src/main/java/fr/yuki/YukiRPFramework/model/GameMapMarker.java rename to src/main/java/fr/yuki/yrpf/model/GameMapMarker.java index e1e8436..cc8e1df 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/model/GameMapMarker.java +++ b/src/main/java/fr/yuki/yrpf/model/GameMapMarker.java @@ -1,33 +1,33 @@ -package fr.yuki.YukiRPFramework.model; - -import java.util.ArrayList; - -public class GameMapMarker { - private String type; - private String icon; - private ArrayList position; - - public String getType() { - return type; - } - - public void setType(String type) { - this.type = type; - } - - public String getIcon() { - return icon; - } - - public void setIcon(String icon) { - this.icon = icon; - } - - public ArrayList getPosition() { - return position; - } - - public void setPosition(ArrayList position) { - this.position = position; - } -} +package fr.yuki.yrpf.model; + +import java.util.ArrayList; + +public class GameMapMarker { + private String type; + private String icon; + private ArrayList position; + + public String getType() { + return type; + } + + public void setType(String type) { + this.type = type; + } + + public String getIcon() { + return icon; + } + + public void setIcon(String icon) { + this.icon = icon; + } + + public ArrayList getPosition() { + return position; + } + + public void setPosition(ArrayList position) { + this.position = position; + } +} diff --git a/src/main/java/fr/yuki/YukiRPFramework/model/GameMapZone.java b/src/main/java/fr/yuki/yrpf/model/GameMapZone.java similarity index 87% rename from src/main/java/fr/yuki/YukiRPFramework/model/GameMapZone.java rename to src/main/java/fr/yuki/yrpf/model/GameMapZone.java index cf1db74..0225546 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/model/GameMapZone.java +++ b/src/main/java/fr/yuki/yrpf/model/GameMapZone.java @@ -1,24 +1,24 @@ -package fr.yuki.YukiRPFramework.model; - -import java.util.ArrayList; - -public class GameMapZone { - private ArrayList> points; - private String color; - - public ArrayList> getPoints() { - return points; - } - - public void setPoints(ArrayList> points) { - this.points = points; - } - - public String getColor() { - return color; - } - - public void setColor(String color) { - this.color = color; - } -} +package fr.yuki.yrpf.model; + +import java.util.ArrayList; + +public class GameMapZone { + private ArrayList> points; + private String color; + + public ArrayList> getPoints() { + return points; + } + + public void setPoints(ArrayList> points) { + this.points = points; + } + + public String getColor() { + return color; + } + + public void setColor(String color) { + this.color = color; + } +} diff --git a/src/main/java/fr/yuki/yrpf/model/Garage.java b/src/main/java/fr/yuki/yrpf/model/Garage.java new file mode 100644 index 0000000..08e623e --- /dev/null +++ b/src/main/java/fr/yuki/yrpf/model/Garage.java @@ -0,0 +1,32 @@ +package fr.yuki.yrpf.model; + +import eu.bebendorf.ajorm.Model; +import eu.bebendorf.ajorm.annotation.Column; +import eu.bebendorf.ajorm.annotation.Table; +import lombok.Getter; +import lombok.Setter; +import net.onfirenetwork.onsetjava.data.Vector; +import net.onfirenetwork.onsetjava.entity.Player; + +@Getter @Setter @Table("tbl_garage") +public class Garage extends Model { + @Column(column = "id_garage") + private int id; + @Column + private String name; + @Column + private int costToUse; + @Column + private double x; + @Column + private double y; + @Column + private double z; + + public boolean isNear(Player player) { + if(player.getLocation().distance(new Vector(this.x, this.y, this.z)) < 200) { + return true; + } + return false; + } +} diff --git a/src/main/java/fr/yuki/YukiRPFramework/model/GroundItem.java b/src/main/java/fr/yuki/yrpf/model/GroundItem.java similarity index 87% rename from src/main/java/fr/yuki/YukiRPFramework/model/GroundItem.java rename to src/main/java/fr/yuki/yrpf/model/GroundItem.java index e2e36f8..814e1ba 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/model/GroundItem.java +++ b/src/main/java/fr/yuki/yrpf/model/GroundItem.java @@ -1,81 +1,81 @@ -package fr.yuki.YukiRPFramework.model; - -import fr.yuki.YukiRPFramework.inventory.InventoryItem; -import fr.yuki.YukiRPFramework.manager.CharacterManager; -import fr.yuki.YukiRPFramework.manager.InventoryManager; -import fr.yuki.YukiRPFramework.manager.ModdingManager; -import fr.yuki.YukiRPFramework.manager.WorldManager; -import net.onfirenetwork.onsetjava.Onset; -import net.onfirenetwork.onsetjava.data.Vector; -import net.onfirenetwork.onsetjava.entity.Pickup; -import net.onfirenetwork.onsetjava.entity.Player; -import net.onfirenetwork.onsetjava.entity.Text3D; -import net.onfirenetwork.onsetjava.enums.Animation; - -public class GroundItem { - private InventoryItem inventoryItem; - private Vector position; - private int quantity; - private Pickup pickup; - private Text3D text3D; - private boolean isAvailable = true; - - public GroundItem(InventoryItem inventoryItem, int quantity, Vector position) { - this.inventoryItem = inventoryItem; - this.position = position; - this.quantity = quantity; - this.spawn(); - } - - private void spawn() { - this.pickup = Onset.getServer().createPickup(this.position, - ModdingManager.isCustomModelId(this.inventoryItem.getTemplate().getModelId()) ? 1 : this.inventoryItem.getTemplate().getModelId()); - this.pickup.setScale(new Vector(this.inventoryItem.getTemplate().getModelScale(), this.inventoryItem.getTemplate().getModelScale(), - this.inventoryItem.getTemplate().getModelScale())); - this.text3D = Onset.getServer().createText3D("x" + this.quantity + " [" + this.inventoryItem.getTemplate().getName() + "]", - 12, new Vector(this.position.getX(), this.position.getY(), this.position.getZ() + 90), - new Vector(0, 0, 0)); - if(ModdingManager.isCustomModelId(this.inventoryItem.getTemplate().getModelId())) - ModdingManager.assignCustomModel(this.pickup, this.inventoryItem.getTemplate().getModelId()); - } - - public void pickByPlayer(Player player) { - if(!this.isAvailable) return; - this.isAvailable = false; - CharacterManager.setCharacterFreeze(player, true); - player.setAnimation(Animation.PICKUP_LOWER); - if(InventoryManager.getMainInventory(player).addItem(inventoryItem) == null) { - Onset.delay(1000, () -> { - CharacterManager.setCharacterFreeze(player, false); - }); - return; - } - WorldManager.getGroundItems().remove(this); - InventoryManager.getMainInventory(player).save(); - Onset.delay(1000, () -> { - CharacterManager.setCharacterFreeze(player, false); - this.pickup.destroy(); - this.text3D.destroy(); - }); - } - - public void destroy() { - - } - - public boolean isNear(Player player) { - return this.position.distance(player.getLocation()) < 150; - } - - public InventoryItem getInventoryItem() { - return inventoryItem; - } - - public Vector getPosition() { - return position; - } - - public int getQuantity() { - return quantity; - } -} +package fr.yuki.yrpf.model; + +import fr.yuki.yrpf.inventory.InventoryItem; +import fr.yuki.yrpf.manager.CharacterManager; +import fr.yuki.yrpf.manager.InventoryManager; +import fr.yuki.yrpf.manager.ModdingManager; +import fr.yuki.yrpf.manager.WorldManager; +import net.onfirenetwork.onsetjava.Onset; +import net.onfirenetwork.onsetjava.data.Vector; +import net.onfirenetwork.onsetjava.entity.Pickup; +import net.onfirenetwork.onsetjava.entity.Player; +import net.onfirenetwork.onsetjava.entity.Text3D; +import net.onfirenetwork.onsetjava.enums.Animation; + +public class GroundItem { + private InventoryItem inventoryItem; + private Vector position; + private int quantity; + private Pickup pickup; + private Text3D text3D; + private boolean isAvailable = true; + + public GroundItem(InventoryItem inventoryItem, int quantity, Vector position) { + this.inventoryItem = inventoryItem; + this.position = position; + this.quantity = quantity; + this.spawn(); + } + + private void spawn() { + this.pickup = Onset.getServer().createPickup(this.position, + ModdingManager.isCustomModelId(this.inventoryItem.getTemplate().getModelId()) ? 1 : this.inventoryItem.getTemplate().getModelId()); + this.pickup.setScale(new Vector(this.inventoryItem.getTemplate().getModelScale(), this.inventoryItem.getTemplate().getModelScale(), + this.inventoryItem.getTemplate().getModelScale())); + this.text3D = Onset.getServer().createText3D("x" + this.quantity + " [" + this.inventoryItem.getTemplate().getName() + "]", + 12, new Vector(this.position.getX(), this.position.getY(), this.position.getZ() + 90), + new Vector(0, 0, 0)); + if(ModdingManager.isCustomModelId(this.inventoryItem.getTemplate().getModelId())) + ModdingManager.assignCustomModel(this.pickup, this.inventoryItem.getTemplate().getModelId()); + } + + public void pickByPlayer(Player player) { + if(!this.isAvailable) return; + this.isAvailable = false; + CharacterManager.setCharacterFreeze(player, true); + player.setAnimation(Animation.PICKUP_LOWER); + if(InventoryManager.getMainInventory(player).addItem(inventoryItem) == null) { + Onset.delay(1000, () -> { + CharacterManager.setCharacterFreeze(player, false); + }); + return; + } + WorldManager.getGroundItems().remove(this); + InventoryManager.getMainInventory(player).save(); + Onset.delay(1000, () -> { + CharacterManager.setCharacterFreeze(player, false); + this.pickup.destroy(); + this.text3D.destroy(); + }); + } + + public void destroy() { + + } + + public boolean isNear(Player player) { + return this.position.distance(player.getLocation()) < 150; + } + + public InventoryItem getInventoryItem() { + return inventoryItem; + } + + public Vector getPosition() { + return position; + } + + public int getQuantity() { + return quantity; + } +} diff --git a/src/main/java/fr/yuki/YukiRPFramework/model/GrowboxModel.java b/src/main/java/fr/yuki/yrpf/model/GrowboxModel.java similarity index 90% rename from src/main/java/fr/yuki/YukiRPFramework/model/GrowboxModel.java rename to src/main/java/fr/yuki/yrpf/model/GrowboxModel.java index 6244f98..e5e6883 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/model/GrowboxModel.java +++ b/src/main/java/fr/yuki/yrpf/model/GrowboxModel.java @@ -1,67 +1,67 @@ -package fr.yuki.YukiRPFramework.model; - -public class GrowboxModel { - private int id; - private double x; - private double y; - private double z; - private double rx; - private double ry; - private double rz; - - public int getId() { - return id; - } - - public void setId(int id) { - this.id = id; - } - - public double getX() { - return x; - } - - public void setX(double x) { - this.x = x; - } - - public double getY() { - return y; - } - - public void setY(double y) { - this.y = y; - } - - public double getZ() { - return z; - } - - public void setZ(double z) { - this.z = z; - } - - public double getRx() { - return rx; - } - - public void setRx(double rx) { - this.rx = rx; - } - - public double getRy() { - return ry; - } - - public void setRy(double ry) { - this.ry = ry; - } - - public double getRz() { - return rz; - } - - public void setRz(double rz) { - this.rz = rz; - } -} +package fr.yuki.yrpf.model; + +public class GrowboxModel { + private int id; + private double x; + private double y; + private double z; + private double rx; + private double ry; + private double rz; + + public int getId() { + return id; + } + + public void setId(int id) { + this.id = id; + } + + public double getX() { + return x; + } + + public void setX(double x) { + this.x = x; + } + + public double getY() { + return y; + } + + public void setY(double y) { + this.y = y; + } + + public double getZ() { + return z; + } + + public void setZ(double z) { + this.z = z; + } + + public double getRx() { + return rx; + } + + public void setRx(double rx) { + this.rx = rx; + } + + public double getRy() { + return ry; + } + + public void setRy(double ry) { + this.ry = ry; + } + + public double getRz() { + return rz; + } + + public void setRz(double rz) { + this.rz = rz; + } +} diff --git a/src/main/java/fr/yuki/yrpf/model/House.java b/src/main/java/fr/yuki/yrpf/model/House.java new file mode 100644 index 0000000..ccdd8ee --- /dev/null +++ b/src/main/java/fr/yuki/yrpf/model/House.java @@ -0,0 +1,59 @@ +package fr.yuki.yrpf.model; + +import eu.bebendorf.ajorm.Model; +import eu.bebendorf.ajorm.annotation.Column; +import eu.bebendorf.ajorm.annotation.Table; +import fr.yuki.yrpf.modding.Line3D; +import lombok.Getter; +import lombok.Setter; + +import java.util.ArrayList; +import java.util.List; + +@Getter @Setter @Table("tbl_house") +public class House extends Model { + @Column(column = "id_house") + private int id; + @Column(column = "id_account") + private int accountId; + @Column + private int price; + @Column + private String name; + @Column + private double sx; + @Column + private double sy; + @Column + private double sz; + @Column + private double ex; + @Column + private double ey; + @Column + private double ez; + + private boolean locked = true; + private List allowedPlayers = new ArrayList<>(); + private List houseItemObjects = new ArrayList<>(); + + public Line3D getLine3D() { + return new Line3D(this.sx, this.sy, this.sz, this.ex, this.ey, this.ez, 5); + } + + public List getHouseItemObjects() { + return houseItemObjects; + } + + public void setHouseItemObjects(ArrayList houseItemObjects) { + this.houseItemObjects = houseItemObjects; + } + + public List getAllowedPlayers() { + return allowedPlayers; + } + + public void setAllowedPlayers(ArrayList allowedPlayers) { + this.allowedPlayers = allowedPlayers; + } +} diff --git a/src/main/java/fr/yuki/YukiRPFramework/model/HouseItemObject.java b/src/main/java/fr/yuki/yrpf/model/HouseItemObject.java similarity index 87% rename from src/main/java/fr/yuki/YukiRPFramework/model/HouseItemObject.java rename to src/main/java/fr/yuki/yrpf/model/HouseItemObject.java index dcc4176..1b235bc 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/model/HouseItemObject.java +++ b/src/main/java/fr/yuki/yrpf/model/HouseItemObject.java @@ -1,148 +1,148 @@ -package fr.yuki.YukiRPFramework.model; - -import fr.yuki.YukiRPFramework.house.itembehavior.ATMBehavior; -import fr.yuki.YukiRPFramework.house.itembehavior.ItemBehavior; -import fr.yuki.YukiRPFramework.house.itembehavior.RadioBehavior; -import fr.yuki.YukiRPFramework.manager.ModdingManager; -import net.onfirenetwork.onsetjava.Onset; -import net.onfirenetwork.onsetjava.data.Vector; -import net.onfirenetwork.onsetjava.entity.WorldObject; - -public class HouseItemObject { - private int id; - private int modelId; - private int functionId; - private double x; - private double y; - private double z; - private double rx; - private double ry; - private double rz; - private WorldObject worldObject; - private House house; - private ItemBehavior itemBehavior; - - public void spawn() { - this.worldObject = Onset.getServer().createObject(this.getPosition(), this.getModelId()); - if(ModdingManager.isCustomModelId(this.getModelId())) ModdingManager.assignCustomModel(this.worldObject, this.getModelId()); - this.worldObject.setRotation(this.getRotation()); - this.worldObject.setProperty("houseItemId", this.id, true); - this.worldObject.setStreamDistance(2500); - - if(this.functionId != -1) { - switch (this.functionId) { - case 1: // Radio - this.itemBehavior = new RadioBehavior(this); - break; - - case 2: // ATM - this.itemBehavior = new ATMBehavior(this); - break; - } - - if(this.itemBehavior != null) { - this.itemBehavior.onSpawn(); - } - } - } - - public void destroy() { - this.worldObject.destroy(); - - if(this.itemBehavior != null) { - this.itemBehavior.onDestroy(); - } - } - - public int getId() { - return id; - } - - public void setId(int id) { - this.id = id; - } - - public int getModelId() { - return modelId; - } - - public void setModelId(int modelId) { - this.modelId = modelId; - } - - public int getFunctionId() { - return functionId; - } - - public void setFunctionId(int functionId) { - this.functionId = functionId; - } - - public double getX() { - return x; - } - - public void setX(double x) { - this.x = x; - } - - public double getY() { - return y; - } - - public void setY(double y) { - this.y = y; - } - - public double getZ() { - return z; - } - - public void setZ(double z) { - this.z = z; - } - - public double getRx() { - return rx; - } - - public void setRx(double rx) { - this.rx = rx; - } - - public double getRy() { - return ry; - } - - public void setRy(double ry) { - this.ry = ry; - } - - public double getRz() { - return rz; - } - - public void setRz(double rz) { - this.rz = rz; - } - - public WorldObject getWorldObject() { - return worldObject; - } - - public Vector getPosition() { - return new Vector(this.x, this.y, this.z); - } - - public Vector getRotation() { - return new Vector(this.rx, this.ry, this.rz); - } - - public House getHouse() { - return house; - } - - public void setHouse(House house) { - this.house = house; - } -} +package fr.yuki.yrpf.model; + +import fr.yuki.yrpf.house.itembehavior.ATMBehavior; +import fr.yuki.yrpf.house.itembehavior.ItemBehavior; +import fr.yuki.yrpf.house.itembehavior.RadioBehavior; +import fr.yuki.yrpf.manager.ModdingManager; +import net.onfirenetwork.onsetjava.Onset; +import net.onfirenetwork.onsetjava.data.Vector; +import net.onfirenetwork.onsetjava.entity.WorldObject; + +public class HouseItemObject { + private int id; + private int modelId; + private int functionId; + private double x; + private double y; + private double z; + private double rx; + private double ry; + private double rz; + private WorldObject worldObject; + private House house; + private ItemBehavior itemBehavior; + + public void spawn() { + this.worldObject = Onset.getServer().createObject(this.getPosition(), this.getModelId()); + if(ModdingManager.isCustomModelId(this.getModelId())) ModdingManager.assignCustomModel(this.worldObject, this.getModelId()); + this.worldObject.setRotation(this.getRotation()); + this.worldObject.setProperty("houseItemId", this.id, true); + this.worldObject.setStreamDistance(2500); + + if(this.functionId != -1) { + switch (this.functionId) { + case 1: // Radio + this.itemBehavior = new RadioBehavior(this); + break; + + case 2: // ATM + this.itemBehavior = new ATMBehavior(this); + break; + } + + if(this.itemBehavior != null) { + this.itemBehavior.onSpawn(); + } + } + } + + public void destroy() { + this.worldObject.destroy(); + + if(this.itemBehavior != null) { + this.itemBehavior.onDestroy(); + } + } + + public int getId() { + return id; + } + + public void setId(int id) { + this.id = id; + } + + public int getModelId() { + return modelId; + } + + public void setModelId(int modelId) { + this.modelId = modelId; + } + + public int getFunctionId() { + return functionId; + } + + public void setFunctionId(int functionId) { + this.functionId = functionId; + } + + public double getX() { + return x; + } + + public void setX(double x) { + this.x = x; + } + + public double getY() { + return y; + } + + public void setY(double y) { + this.y = y; + } + + public double getZ() { + return z; + } + + public void setZ(double z) { + this.z = z; + } + + public double getRx() { + return rx; + } + + public void setRx(double rx) { + this.rx = rx; + } + + public double getRy() { + return ry; + } + + public void setRy(double ry) { + this.ry = ry; + } + + public double getRz() { + return rz; + } + + public void setRz(double rz) { + this.rz = rz; + } + + public WorldObject getWorldObject() { + return worldObject; + } + + public Vector getPosition() { + return new Vector(this.x, this.y, this.z); + } + + public Vector getRotation() { + return new Vector(this.rx, this.ry, this.rz); + } + + public House getHouse() { + return house; + } + + public void setHouse(House house) { + this.house = house; + } +} diff --git a/src/main/java/fr/yuki/YukiRPFramework/model/ItemShopObject.java b/src/main/java/fr/yuki/yrpf/model/ItemShopObject.java similarity index 88% rename from src/main/java/fr/yuki/YukiRPFramework/model/ItemShopObject.java rename to src/main/java/fr/yuki/yrpf/model/ItemShopObject.java index 3f92269..38215d0 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/model/ItemShopObject.java +++ b/src/main/java/fr/yuki/yrpf/model/ItemShopObject.java @@ -1,31 +1,31 @@ -package fr.yuki.YukiRPFramework.model; - -public class ItemShopObject { - private int modelId; - private int functionId; - private int price; - - public int getModelId() { - return modelId; - } - - public void setModelId(int modelId) { - this.modelId = modelId; - } - - public int getFunctionId() { - return functionId; - } - - public void setFunctionId(int functionId) { - this.functionId = functionId; - } - - public int getPrice() { - return price; - } - - public void setPrice(int price) { - this.price = price; - } -} +package fr.yuki.yrpf.model; + +public class ItemShopObject { + private int modelId; + private int functionId; + private int price; + + public int getModelId() { + return modelId; + } + + public void setModelId(int modelId) { + this.modelId = modelId; + } + + public int getFunctionId() { + return functionId; + } + + public void setFunctionId(int functionId) { + this.functionId = functionId; + } + + public int getPrice() { + return price; + } + + public void setPrice(int price) { + this.price = price; + } +} diff --git a/src/main/java/fr/yuki/YukiRPFramework/model/ItemTemplate.java b/src/main/java/fr/yuki/yrpf/model/ItemTemplate.java similarity index 93% rename from src/main/java/fr/yuki/YukiRPFramework/model/ItemTemplate.java rename to src/main/java/fr/yuki/yrpf/model/ItemTemplate.java index 6cf438e..0cabd05 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/model/ItemTemplate.java +++ b/src/main/java/fr/yuki/yrpf/model/ItemTemplate.java @@ -1,130 +1,130 @@ -package fr.yuki.YukiRPFramework.model; - -public class ItemTemplate { - private int id; - private String name; - private String description; - private float weight; - private String pictureName; - private int itemType; - private int modelId; - private double modelScale; - private int foodValue; - private int drinkValue; - private int weaponId; - private int ammoPerRecharge; - private int maskId; - private int bagId; - - public int getId() { - return id; - } - - public void setId(int id) { - this.id = id; - } - - public String getName() { - return name; - } - - public void setName(String name) { - this.name = name; - } - - public String getDescription() { - return description; - } - - public void setDescription(String description) { - this.description = description; - } - - public float getWeight() { - return weight; - } - - public void setWeight(float weight) { - this.weight = weight; - } - - public String getPictureName() { - return pictureName; - } - - public void setPictureName(String pictureName) { - this.pictureName = pictureName; - } - - public int getItemType() { - return itemType; - } - - public void setItemType(int itemType) { - this.itemType = itemType; - } - - public int getModelId() { - return modelId; - } - - public void setModelId(int modelId) { - this.modelId = modelId; - } - - public double getModelScale() { - return modelScale; - } - - public void setModelScale(double modelScale) { - this.modelScale = modelScale; - } - - public int getFoodValue() { - return foodValue; - } - - public void setFoodValue(int foodValue) { - this.foodValue = foodValue; - } - - public int getDrinkValue() { - return drinkValue; - } - - public void setDrinkValue(int drinkValue) { - this.drinkValue = drinkValue; - } - - public int getWeaponId() { - return weaponId; - } - - public void setWeaponId(int weaponId) { - this.weaponId = weaponId; - } - - public int getAmmoPerRecharge() { - return ammoPerRecharge; - } - - public void setAmmoPerRecharge(int ammoPerRecharge) { - this.ammoPerRecharge = ammoPerRecharge; - } - - public int getMaskId() { - return maskId; - } - - public void setMaskId(int maskId) { - this.maskId = maskId; - } - - public int getBagId() { - return bagId; - } - - public void setBagId(int bagId) { - this.bagId = bagId; - } -} +package fr.yuki.yrpf.model; + +public class ItemTemplate { + private int id; + private String name; + private String description; + private float weight; + private String pictureName; + private int itemType; + private int modelId; + private double modelScale; + private int foodValue; + private int drinkValue; + private int weaponId; + private int ammoPerRecharge; + private int maskId; + private int bagId; + + public int getId() { + return id; + } + + public void setId(int id) { + this.id = id; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getDescription() { + return description; + } + + public void setDescription(String description) { + this.description = description; + } + + public float getWeight() { + return weight; + } + + public void setWeight(float weight) { + this.weight = weight; + } + + public String getPictureName() { + return pictureName; + } + + public void setPictureName(String pictureName) { + this.pictureName = pictureName; + } + + public int getItemType() { + return itemType; + } + + public void setItemType(int itemType) { + this.itemType = itemType; + } + + public int getModelId() { + return modelId; + } + + public void setModelId(int modelId) { + this.modelId = modelId; + } + + public double getModelScale() { + return modelScale; + } + + public void setModelScale(double modelScale) { + this.modelScale = modelScale; + } + + public int getFoodValue() { + return foodValue; + } + + public void setFoodValue(int foodValue) { + this.foodValue = foodValue; + } + + public int getDrinkValue() { + return drinkValue; + } + + public void setDrinkValue(int drinkValue) { + this.drinkValue = drinkValue; + } + + public int getWeaponId() { + return weaponId; + } + + public void setWeaponId(int weaponId) { + this.weaponId = weaponId; + } + + public int getAmmoPerRecharge() { + return ammoPerRecharge; + } + + public void setAmmoPerRecharge(int ammoPerRecharge) { + this.ammoPerRecharge = ammoPerRecharge; + } + + public int getMaskId() { + return maskId; + } + + public void setMaskId(int maskId) { + this.maskId = maskId; + } + + public int getBagId() { + return bagId; + } + + public void setBagId(int bagId) { + this.bagId = bagId; + } +} diff --git a/src/main/java/fr/yuki/YukiRPFramework/model/JobLevel.java b/src/main/java/fr/yuki/yrpf/model/JobLevel.java similarity index 90% rename from src/main/java/fr/yuki/YukiRPFramework/model/JobLevel.java rename to src/main/java/fr/yuki/yrpf/model/JobLevel.java index 70aabbf..3c81b69 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/model/JobLevel.java +++ b/src/main/java/fr/yuki/yrpf/model/JobLevel.java @@ -1,53 +1,53 @@ -package fr.yuki.YukiRPFramework.model; - -public class JobLevel { - private int id; - private String jobId; - private String name; - private int level; - private int expFloor; - - public String getTranslateName() { - return name.toLowerCase().replaceAll(" ", "_"); - } - - public int getId() { - return id; - } - - public void setId(int id) { - this.id = id; - } - - public String getJobId() { - return jobId; - } - - public void setJobId(String jobId) { - this.jobId = jobId; - } - - public String getName() { - return name; - } - - public void setName(String name) { - this.name = name; - } - - public int getLevel() { - return level; - } - - public void setLevel(int level) { - this.level = level; - } - - public int getExpFloor() { - return expFloor; - } - - public void setExpFloor(int expFloor) { - this.expFloor = expFloor; - } -} +package fr.yuki.yrpf.model; + +public class JobLevel { + private int id; + private String jobId; + private String name; + private int level; + private int expFloor; + + public String getTranslateName() { + return name.toLowerCase().replaceAll(" ", "_"); + } + + public int getId() { + return id; + } + + public void setId(int id) { + this.id = id; + } + + public String getJobId() { + return jobId; + } + + public void setJobId(String jobId) { + this.jobId = jobId; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public int getLevel() { + return level; + } + + public void setLevel(int level) { + this.level = level; + } + + public int getExpFloor() { + return expFloor; + } + + public void setExpFloor(int expFloor) { + this.expFloor = expFloor; + } +} diff --git a/src/main/java/fr/yuki/YukiRPFramework/model/JobNPC.java b/src/main/java/fr/yuki/yrpf/model/JobNPC.java similarity index 91% rename from src/main/java/fr/yuki/YukiRPFramework/model/JobNPC.java rename to src/main/java/fr/yuki/yrpf/model/JobNPC.java index d9eb0d6..c15c9a2 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/model/JobNPC.java +++ b/src/main/java/fr/yuki/yrpf/model/JobNPC.java @@ -1,124 +1,124 @@ -package fr.yuki.YukiRPFramework.model; - -import fr.yuki.YukiRPFramework.job.WearableWorldObject; -import net.onfirenetwork.onsetjava.data.Vector; -import net.onfirenetwork.onsetjava.entity.NPC; -import net.onfirenetwork.onsetjava.entity.Player; - -import java.util.ArrayList; - -public class JobNPC { - private int id; - private String jobId; - private String name; - private double x; - private double y; - private double z; - private double h; - private int npcClothing; - private ArrayList buyList; - private ArrayList sellList; - private NPC npc; - - public int getId() { - return id; - } - - public void setId(int id) { - this.id = id; - } - - public String getJobId() { - return jobId; - } - - public void setJobId(String jobId) { - this.jobId = jobId; - } - - public double getX() { - return x; - } - - public void setX(double x) { - this.x = x; - } - - public double getY() { - return y; - } - - public void setY(double y) { - this.y = y; - } - - public double getZ() { - return z; - } - - public void setZ(double z) { - this.z = z; - } - - public ArrayList getBuyList() { - return buyList; - } - - public void setBuyList(ArrayList buyList) { - this.buyList = buyList; - } - - public ArrayList getSellList() { - return sellList; - } - - public void setSellList(ArrayList sellList) { - this.sellList = sellList; - } - - public double getH() { - return h; - } - - public void setH(double h) { - this.h = h; - } - - public int getNpcClothing() { - return npcClothing; - } - - public void setNpcClothing(int npcClothing) { - this.npcClothing = npcClothing; - } - - public JobNPCListItem getBuyItemByWearableItem(WearableWorldObject wearableWorldObject) { - JobNPCListItem jobNPCListItem = null; - for(JobNPCListItem item : this.buyList) { - if(item.getType().toLowerCase().equals("worlditem") && item.getItemId() == wearableWorldObject.getModelId()) { - return item; - } - } - return null; - } - - public boolean isNear(Player player) { - return new Vector(x,y,z).distance(player.getLocation()) < 200; - } - - public NPC getNpc() { - return npc; - } - - public void setNpc(NPC npc) { - this.npc = npc; - } - - public String getName() { - return name; - } - - public void setName(String name) { - this.name = name; - } -} +package fr.yuki.yrpf.model; + +import fr.yuki.yrpf.job.WearableWorldObject; +import net.onfirenetwork.onsetjava.data.Vector; +import net.onfirenetwork.onsetjava.entity.NPC; +import net.onfirenetwork.onsetjava.entity.Player; + +import java.util.ArrayList; + +public class JobNPC { + private int id; + private String jobId; + private String name; + private double x; + private double y; + private double z; + private double h; + private int npcClothing; + private ArrayList buyList; + private ArrayList sellList; + private NPC npc; + + public int getId() { + return id; + } + + public void setId(int id) { + this.id = id; + } + + public String getJobId() { + return jobId; + } + + public void setJobId(String jobId) { + this.jobId = jobId; + } + + public double getX() { + return x; + } + + public void setX(double x) { + this.x = x; + } + + public double getY() { + return y; + } + + public void setY(double y) { + this.y = y; + } + + public double getZ() { + return z; + } + + public void setZ(double z) { + this.z = z; + } + + public ArrayList getBuyList() { + return buyList; + } + + public void setBuyList(ArrayList buyList) { + this.buyList = buyList; + } + + public ArrayList getSellList() { + return sellList; + } + + public void setSellList(ArrayList sellList) { + this.sellList = sellList; + } + + public double getH() { + return h; + } + + public void setH(double h) { + this.h = h; + } + + public int getNpcClothing() { + return npcClothing; + } + + public void setNpcClothing(int npcClothing) { + this.npcClothing = npcClothing; + } + + public JobNPCListItem getBuyItemByWearableItem(WearableWorldObject wearableWorldObject) { + JobNPCListItem jobNPCListItem = null; + for(JobNPCListItem item : this.buyList) { + if(item.getType().toLowerCase().equals("worlditem") && item.getItemId() == wearableWorldObject.getModelId()) { + return item; + } + } + return null; + } + + public boolean isNear(Player player) { + return new Vector(x,y,z).distance(player.getLocation()) < 200; + } + + public NPC getNpc() { + return npc; + } + + public void setNpc(NPC npc) { + this.npc = npc; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } +} diff --git a/src/main/java/fr/yuki/YukiRPFramework/model/JobNPCListItem.java b/src/main/java/fr/yuki/yrpf/model/JobNPCListItem.java similarity index 87% rename from src/main/java/fr/yuki/YukiRPFramework/model/JobNPCListItem.java rename to src/main/java/fr/yuki/yrpf/model/JobNPCListItem.java index 2e8f345..15b5a6e 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/model/JobNPCListItem.java +++ b/src/main/java/fr/yuki/yrpf/model/JobNPCListItem.java @@ -1,31 +1,31 @@ -package fr.yuki.YukiRPFramework.model; - -public class JobNPCListItem { - private int itemId; - private int price; - private String type; - - public int getItemId() { - return itemId; - } - - public void setItemId(int itemId) { - this.itemId = itemId; - } - - public int getPrice() { - return price; - } - - public void setPrice(int price) { - this.price = price; - } - - public String getType() { - return type; - } - - public void setType(String type) { - this.type = type; - } -} +package fr.yuki.yrpf.model; + +public class JobNPCListItem { + private int itemId; + private int price; + private String type; + + public int getItemId() { + return itemId; + } + + public void setItemId(int itemId) { + this.itemId = itemId; + } + + public int getPrice() { + return price; + } + + public void setPrice(int price) { + this.price = price; + } + + public String getType() { + return type; + } + + public void setType(String type) { + this.type = type; + } +} diff --git a/src/main/java/fr/yuki/YukiRPFramework/model/JobOutfit.java b/src/main/java/fr/yuki/yrpf/model/JobOutfit.java similarity index 93% rename from src/main/java/fr/yuki/YukiRPFramework/model/JobOutfit.java rename to src/main/java/fr/yuki/yrpf/model/JobOutfit.java index 5feef08..48f8eff 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/model/JobOutfit.java +++ b/src/main/java/fr/yuki/yrpf/model/JobOutfit.java @@ -1,92 +1,92 @@ -package fr.yuki.YukiRPFramework.model; - -import com.google.gson.Gson; -import com.google.gson.reflect.TypeToken; -import net.onfirenetwork.onsetjava.data.Vector; -import net.onfirenetwork.onsetjava.entity.Player; - -import java.util.ArrayList; - -public class JobOutfit { - private int id; - private String jobId; - private int levelRequired; - private String name; - private String outfit; - private double x; - private double y; - private double z; - - public int getId() { - return id; - } - - public void setId(int id) { - this.id = id; - } - - public String getJobId() { - return jobId; - } - - public void setJobId(String jobId) { - this.jobId = jobId; - } - - public int getLevelRequired() { - return levelRequired; - } - - public void setLevelRequired(int levelRequired) { - this.levelRequired = levelRequired; - } - - public String getName() { - return name; - } - - public void setName(String name) { - this.name = name; - } - - public String getOutfit() { - return outfit; - } - - public void setOutfit(String outfit) { - this.outfit = outfit; - } - - public double getX() { - return x; - } - - public void setX(double x) { - this.x = x; - } - - public double getY() { - return y; - } - - public void setY(double y) { - this.y = y; - } - - public double getZ() { - return z; - } - - public void setZ(double z) { - this.z = z; - } - - public boolean isNear(Player player) { - if(player.getLocation().distance(new Vector(this.x, this.y, this.z)) < 250) return true; - return false; - } - - public ArrayList decodeOutfit() { - return new Gson().fromJson(this.outfit, new TypeToken>(){}.getType()); - } -} +package fr.yuki.yrpf.model; + +import com.google.gson.Gson; +import com.google.gson.reflect.TypeToken; +import net.onfirenetwork.onsetjava.data.Vector; +import net.onfirenetwork.onsetjava.entity.Player; + +import java.util.ArrayList; + +public class JobOutfit { + private int id; + private String jobId; + private int levelRequired; + private String name; + private String outfit; + private double x; + private double y; + private double z; + + public int getId() { + return id; + } + + public void setId(int id) { + this.id = id; + } + + public String getJobId() { + return jobId; + } + + public void setJobId(String jobId) { + this.jobId = jobId; + } + + public int getLevelRequired() { + return levelRequired; + } + + public void setLevelRequired(int levelRequired) { + this.levelRequired = levelRequired; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getOutfit() { + return outfit; + } + + public void setOutfit(String outfit) { + this.outfit = outfit; + } + + public double getX() { + return x; + } + + public void setX(double x) { + this.x = x; + } + + public double getY() { + return y; + } + + public void setY(double y) { + this.y = y; + } + + public double getZ() { + return z; + } + + public void setZ(double z) { + this.z = z; + } + + public boolean isNear(Player player) { + if(player.getLocation().distance(new Vector(this.x, this.y, this.z)) < 250) return true; + return false; + } + + public ArrayList decodeOutfit() { + return new Gson().fromJson(this.outfit, new TypeToken>(){}.getType()); + } +} diff --git a/src/main/java/fr/yuki/YukiRPFramework/model/JobOutfitItem.java b/src/main/java/fr/yuki/yrpf/model/JobOutfitItem.java similarity index 85% rename from src/main/java/fr/yuki/YukiRPFramework/model/JobOutfitItem.java rename to src/main/java/fr/yuki/yrpf/model/JobOutfitItem.java index 114420b..a5f0563 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/model/JobOutfitItem.java +++ b/src/main/java/fr/yuki/yrpf/model/JobOutfitItem.java @@ -1,22 +1,22 @@ -package fr.yuki.YukiRPFramework.model; - -public class JobOutfitItem { - private String type; - private String value; - - public String getType() { - return type; - } - - public void setType(String type) { - this.type = type; - } - - public String getValue() { - return value; - } - - public void setValue(String value) { - this.value = value; - } -} +package fr.yuki.yrpf.model; + +public class JobOutfitItem { + private String type; + private String value; + + public String getType() { + return type; + } + + public void setType(String type) { + this.type = type; + } + + public String getValue() { + return value; + } + + public void setValue(String value) { + this.value = value; + } +} diff --git a/src/main/java/fr/yuki/YukiRPFramework/model/JobTool.java b/src/main/java/fr/yuki/yrpf/model/JobTool.java similarity index 91% rename from src/main/java/fr/yuki/YukiRPFramework/model/JobTool.java rename to src/main/java/fr/yuki/yrpf/model/JobTool.java index 2b9a6f3..db51cda 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/model/JobTool.java +++ b/src/main/java/fr/yuki/yrpf/model/JobTool.java @@ -1,237 +1,237 @@ -package fr.yuki.YukiRPFramework.model; - -import fr.yuki.YukiRPFramework.job.Job; -import fr.yuki.YukiRPFramework.job.tools.*; -import fr.yuki.YukiRPFramework.manager.JobManager; -import fr.yuki.YukiRPFramework.manager.ModdingManager; -import net.onfirenetwork.onsetjava.Onset; -import net.onfirenetwork.onsetjava.data.Vector; -import net.onfirenetwork.onsetjava.entity.Player; -import net.onfirenetwork.onsetjava.entity.Text3D; -import net.onfirenetwork.onsetjava.entity.WorldObject; - -import java.util.UUID; - -public class JobTool { - private String uuid; - private int id; - private int modelId; - private String name; - private String jobType; - private int levelRequired; - private String jobToolType; - private int reward; - private double x; - private double y; - private double z; - private double rx; - private double ry; - private double rz; - private double sx; - private double sy; - private double sz; - private WorldObject worldObject; - private JobToolHandler jobToolHandler; - private Text3D text3d; - - public JobTool() { - this.uuid = UUID.randomUUID().toString(); - } - - public int getModelId() { - return modelId; - } - - public void setModelId(int modelId) { - this.modelId = modelId; - } - - public String getName() { - return name; - } - - public void setName(String name) { - this.name = name; - } - - public String getJobType() { - return jobType; - } - - public void setJobType(String jobType) { - this.jobType = jobType; - } - - public int getLevelRequired() { - return levelRequired; - } - - public void setLevelRequired(int levelRequired) { - this.levelRequired = levelRequired; - } - - public String getJobToolType() { - return jobToolType; - } - - public void setJobToolType(String jobToolType) { - this.jobToolType = jobToolType; - switch (this.jobToolType.toLowerCase()) { - case "sawmill": - this.jobToolHandler = new Sawmill(this); - break; - - case "garbage_bin": - this.jobToolHandler = new GarbageBin(this); - break; - - case "growbox": - this.jobToolHandler = new GrowBox(this); - break; - - case "generator": - this.jobToolHandler = new Generator(this); - break; - } - } - - public double getX() { - return x; - } - - public void setX(double x) { - this.x = x; - } - - public double getY() { - return y; - } - - public void setY(double y) { - this.y = y; - } - - public double getZ() { - return z; - } - - public void setZ(double z) { - this.z = z; - } - - public double getRx() { - return rx; - } - - public void setRx(double rx) { - this.rx = rx; - } - - public double getRy() { - return ry; - } - - public void setRy(double ry) { - this.ry = ry; - } - - public double getRz() { - return rz; - } - - public void setRz(double rz) { - this.rz = rz; - } - - public double getSx() { - return sx; - } - - public void setSx(double sx) { - this.sx = sx; - } - - public double getSy() { - return sy; - } - - public void setSy(double sy) { - this.sy = sy; - } - - public double getSz() { - return sz; - } - - public void setSz(double sz) { - this.sz = sz; - } - - public int getId() { - return id; - } - - public void setId(int id) { - this.id = id; - } - - public WorldObject getWorldObject() { - return worldObject; - } - - public void setWorldObject(WorldObject worldObject) { - this.worldObject = worldObject; - } - - public boolean isNear(Player player) { - return new Vector(this.x, this.y, this.z).distance(player.getLocation()) < 250; - } - - public void spawn(Job job) { - this.worldObject = Onset.getServer().createObject(new Vector(this.x, this.y, this.z), this.modelId); - if(ModdingManager.isCustomModelId(this.modelId)) ModdingManager.assignCustomModel(this.worldObject, this.modelId); - this.worldObject.setRotation(new Vector(this.rx, this.ry, this.rz)); - this.worldObject.setScale(new Vector(this.sx, this.sy, this.sz)); - this.text3d = Onset.getServer().createText3D(this.name + " [Utiliser]", 20, this.x, this.y, this.z + 200, 0 , 0 ,0); - if(this.jobToolHandler != null) { - if(this.jobToolHandler.canBeUse()) { - this.setUsable(); - } - } - } - - public void setUsable() { - this.getWorldObject().setProperty("isJobTool", 1, true); - this.getWorldObject().setProperty("uuid", this.getUuid(), true); - } - - public JobToolHandler getJobToolHandler() { - return jobToolHandler; - } - - public void setJobToolHandler(JobToolHandler jobToolHandler) { - this.jobToolHandler = jobToolHandler; - } - - public int getReward() { - return reward; - } - - public void setReward(int reward) { - this.reward = reward; - } - - public String getUuid() { - return uuid; - } - - public void setUuid(String uuid) { - this.uuid = uuid; - } - - public void destroy() { - this.worldObject.destroy(); - this.text3d.destroy(); - JobManager.getJobTools().remove(this); - } -} +package fr.yuki.yrpf.model; + +import fr.yuki.yrpf.job.Job; +import fr.yuki.yrpf.job.tools.*; +import fr.yuki.yrpf.manager.JobManager; +import fr.yuki.yrpf.manager.ModdingManager; +import net.onfirenetwork.onsetjava.Onset; +import net.onfirenetwork.onsetjava.data.Vector; +import net.onfirenetwork.onsetjava.entity.Player; +import net.onfirenetwork.onsetjava.entity.Text3D; +import net.onfirenetwork.onsetjava.entity.WorldObject; + +import java.util.UUID; + +public class JobTool { + private String uuid; + private int id; + private int modelId; + private String name; + private String jobType; + private int levelRequired; + private String jobToolType; + private int reward; + private double x; + private double y; + private double z; + private double rx; + private double ry; + private double rz; + private double sx; + private double sy; + private double sz; + private WorldObject worldObject; + private JobToolHandler jobToolHandler; + private Text3D text3d; + + public JobTool() { + this.uuid = UUID.randomUUID().toString(); + } + + public int getModelId() { + return modelId; + } + + public void setModelId(int modelId) { + this.modelId = modelId; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getJobType() { + return jobType; + } + + public void setJobType(String jobType) { + this.jobType = jobType; + } + + public int getLevelRequired() { + return levelRequired; + } + + public void setLevelRequired(int levelRequired) { + this.levelRequired = levelRequired; + } + + public String getJobToolType() { + return jobToolType; + } + + public void setJobToolType(String jobToolType) { + this.jobToolType = jobToolType; + switch (this.jobToolType.toLowerCase()) { + case "sawmill": + this.jobToolHandler = new Sawmill(this); + break; + + case "garbage_bin": + this.jobToolHandler = new GarbageBin(this); + break; + + case "growbox": + this.jobToolHandler = new GrowBox(this); + break; + + case "generator": + this.jobToolHandler = new Generator(this); + break; + } + } + + public double getX() { + return x; + } + + public void setX(double x) { + this.x = x; + } + + public double getY() { + return y; + } + + public void setY(double y) { + this.y = y; + } + + public double getZ() { + return z; + } + + public void setZ(double z) { + this.z = z; + } + + public double getRx() { + return rx; + } + + public void setRx(double rx) { + this.rx = rx; + } + + public double getRy() { + return ry; + } + + public void setRy(double ry) { + this.ry = ry; + } + + public double getRz() { + return rz; + } + + public void setRz(double rz) { + this.rz = rz; + } + + public double getSx() { + return sx; + } + + public void setSx(double sx) { + this.sx = sx; + } + + public double getSy() { + return sy; + } + + public void setSy(double sy) { + this.sy = sy; + } + + public double getSz() { + return sz; + } + + public void setSz(double sz) { + this.sz = sz; + } + + public int getId() { + return id; + } + + public void setId(int id) { + this.id = id; + } + + public WorldObject getWorldObject() { + return worldObject; + } + + public void setWorldObject(WorldObject worldObject) { + this.worldObject = worldObject; + } + + public boolean isNear(Player player) { + return new Vector(this.x, this.y, this.z).distance(player.getLocation()) < 250; + } + + public void spawn(Job job) { + this.worldObject = Onset.getServer().createObject(new Vector(this.x, this.y, this.z), this.modelId); + if(ModdingManager.isCustomModelId(this.modelId)) ModdingManager.assignCustomModel(this.worldObject, this.modelId); + this.worldObject.setRotation(new Vector(this.rx, this.ry, this.rz)); + this.worldObject.setScale(new Vector(this.sx, this.sy, this.sz)); + this.text3d = Onset.getServer().createText3D(this.name + " [Utiliser]", 20, this.x, this.y, this.z + 200, 0 , 0 ,0); + if(this.jobToolHandler != null) { + if(this.jobToolHandler.canBeUse()) { + this.setUsable(); + } + } + } + + public void setUsable() { + this.getWorldObject().setProperty("isJobTool", 1, true); + this.getWorldObject().setProperty("uuid", this.getUuid(), true); + } + + public JobToolHandler getJobToolHandler() { + return jobToolHandler; + } + + public void setJobToolHandler(JobToolHandler jobToolHandler) { + this.jobToolHandler = jobToolHandler; + } + + public int getReward() { + return reward; + } + + public void setReward(int reward) { + this.reward = reward; + } + + public String getUuid() { + return uuid; + } + + public void setUuid(String uuid) { + this.uuid = uuid; + } + + public void destroy() { + this.worldObject.destroy(); + this.text3d.destroy(); + JobManager.getJobTools().remove(this); + } +} diff --git a/src/main/java/fr/yuki/YukiRPFramework/model/JobVehicleRental.java b/src/main/java/fr/yuki/yrpf/model/JobVehicleRental.java similarity index 93% rename from src/main/java/fr/yuki/YukiRPFramework/model/JobVehicleRental.java rename to src/main/java/fr/yuki/yrpf/model/JobVehicleRental.java index d48a646..e9082e1 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/model/JobVehicleRental.java +++ b/src/main/java/fr/yuki/yrpf/model/JobVehicleRental.java @@ -1,128 +1,128 @@ -package fr.yuki.YukiRPFramework.model; - -import net.onfirenetwork.onsetjava.data.Vector; -import net.onfirenetwork.onsetjava.entity.Player; - -public class JobVehicleRental { - private int id; - private String jobId; - private int levelRequired; - private String name; - private int vehicleModelId; - private int cost; - private double x; - private double y; - private double z; - private double spawnX; - private double spawnY; - private double spawnZ; - private String color; - - public int getId() { - return id; - } - - public void setId(int id) { - this.id = id; - } - - public String getJobId() { - return jobId; - } - - public void setJobId(String jobId) { - this.jobId = jobId; - } - - public int getVehicleModelId() { - return vehicleModelId; - } - - public void setVehicleModelId(int vehicleModelId) { - this.vehicleModelId = vehicleModelId; - } - - public int getCost() { - return cost; - } - - public void setCost(int cost) { - this.cost = cost; - } - - public String getName() { - return name; - } - - public void setName(String name) { - this.name = name; - } - - public double getX() { - return x; - } - - public void setX(double x) { - this.x = x; - } - - public double getY() { - return y; - } - - public void setY(double y) { - this.y = y; - } - - public double getZ() { - return z; - } - - public void setZ(double z) { - this.z = z; - } - - public double getSpawnX() { - return spawnX; - } - - public void setSpawnX(double spawnX) { - this.spawnX = spawnX; - } - - public double getSpawnY() { - return spawnY; - } - - public void setSpawnY(double spawnY) { - this.spawnY = spawnY; - } - - public double getSpawnZ() { - return spawnZ; - } - - public void setSpawnZ(double spawnZ) { - this.spawnZ = spawnZ; - } - - public boolean isNear(Player player) { - return new Vector(this.x, this.y, this.z).distance(player.getLocation()) < 350; - } - - public int getLevelRequired() { - return levelRequired; - } - - public void setLevelRequired(int levelRequired) { - this.levelRequired = levelRequired; - } - - public String getColor() { - return color; - } - - public void setColor(String color) { - this.color = color; - } -} +package fr.yuki.yrpf.model; + +import net.onfirenetwork.onsetjava.data.Vector; +import net.onfirenetwork.onsetjava.entity.Player; + +public class JobVehicleRental { + private int id; + private String jobId; + private int levelRequired; + private String name; + private int vehicleModelId; + private int cost; + private double x; + private double y; + private double z; + private double spawnX; + private double spawnY; + private double spawnZ; + private String color; + + public int getId() { + return id; + } + + public void setId(int id) { + this.id = id; + } + + public String getJobId() { + return jobId; + } + + public void setJobId(String jobId) { + this.jobId = jobId; + } + + public int getVehicleModelId() { + return vehicleModelId; + } + + public void setVehicleModelId(int vehicleModelId) { + this.vehicleModelId = vehicleModelId; + } + + public int getCost() { + return cost; + } + + public void setCost(int cost) { + this.cost = cost; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public double getX() { + return x; + } + + public void setX(double x) { + this.x = x; + } + + public double getY() { + return y; + } + + public void setY(double y) { + this.y = y; + } + + public double getZ() { + return z; + } + + public void setZ(double z) { + this.z = z; + } + + public double getSpawnX() { + return spawnX; + } + + public void setSpawnX(double spawnX) { + this.spawnX = spawnX; + } + + public double getSpawnY() { + return spawnY; + } + + public void setSpawnY(double spawnY) { + this.spawnY = spawnY; + } + + public double getSpawnZ() { + return spawnZ; + } + + public void setSpawnZ(double spawnZ) { + this.spawnZ = spawnZ; + } + + public boolean isNear(Player player) { + return new Vector(this.x, this.y, this.z).distance(player.getLocation()) < 350; + } + + public int getLevelRequired() { + return levelRequired; + } + + public void setLevelRequired(int levelRequired) { + this.levelRequired = levelRequired; + } + + public String getColor() { + return color; + } + + public void setColor(String color) { + this.color = color; + } +} diff --git a/src/main/java/fr/yuki/YukiRPFramework/model/Mask.java b/src/main/java/fr/yuki/yrpf/model/Mask.java similarity index 91% rename from src/main/java/fr/yuki/YukiRPFramework/model/Mask.java rename to src/main/java/fr/yuki/yrpf/model/Mask.java index 3f1fcfe..fd15972 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/model/Mask.java +++ b/src/main/java/fr/yuki/yrpf/model/Mask.java @@ -1,103 +1,103 @@ -package fr.yuki.YukiRPFramework.model; - -public class Mask { - private int modelId; - private double x; - private double y; - private double z; - private double rx; - private double ry; - private double rz; - private double sx; - private double sy; - private double sz; - private String socket; - - public int getModelId() { - return modelId; - } - - public void setModelId(int modelId) { - this.modelId = modelId; - } - - public double getX() { - return x; - } - - public void setX(double x) { - this.x = x; - } - - public double getY() { - return y; - } - - public void setY(double y) { - this.y = y; - } - - public double getZ() { - return z; - } - - public void setZ(double z) { - this.z = z; - } - - public double getRx() { - return rx; - } - - public void setRx(double rx) { - this.rx = rx; - } - - public double getRy() { - return ry; - } - - public void setRy(double ry) { - this.ry = ry; - } - - public double getRz() { - return rz; - } - - public void setRz(double rz) { - this.rz = rz; - } - - public double getSx() { - return sx; - } - - public void setSx(double sx) { - this.sx = sx; - } - - public double getSy() { - return sy; - } - - public void setSy(double sy) { - this.sy = sy; - } - - public double getSz() { - return sz; - } - - public void setSz(double sz) { - this.sz = sz; - } - - public String getSocket() { - return socket; - } - - public void setSocket(String socket) { - this.socket = socket; - } -} +package fr.yuki.yrpf.model; + +public class Mask { + private int modelId; + private double x; + private double y; + private double z; + private double rx; + private double ry; + private double rz; + private double sx; + private double sy; + private double sz; + private String socket; + + public int getModelId() { + return modelId; + } + + public void setModelId(int modelId) { + this.modelId = modelId; + } + + public double getX() { + return x; + } + + public void setX(double x) { + this.x = x; + } + + public double getY() { + return y; + } + + public void setY(double y) { + this.y = y; + } + + public double getZ() { + return z; + } + + public void setZ(double z) { + this.z = z; + } + + public double getRx() { + return rx; + } + + public void setRx(double rx) { + this.rx = rx; + } + + public double getRy() { + return ry; + } + + public void setRy(double ry) { + this.ry = ry; + } + + public double getRz() { + return rz; + } + + public void setRz(double rz) { + this.rz = rz; + } + + public double getSx() { + return sx; + } + + public void setSx(double sx) { + this.sx = sx; + } + + public double getSy() { + return sy; + } + + public void setSy(double sy) { + this.sy = sy; + } + + public double getSz() { + return sz; + } + + public void setSz(double sz) { + this.sz = sz; + } + + public String getSocket() { + return socket; + } + + public void setSocket(String socket) { + this.socket = socket; + } +} diff --git a/src/main/java/fr/yuki/YukiRPFramework/model/OutfitPoint.java b/src/main/java/fr/yuki/yrpf/model/OutfitPoint.java similarity index 90% rename from src/main/java/fr/yuki/YukiRPFramework/model/OutfitPoint.java rename to src/main/java/fr/yuki/yrpf/model/OutfitPoint.java index 92b01ab..ec5e939 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/model/OutfitPoint.java +++ b/src/main/java/fr/yuki/yrpf/model/OutfitPoint.java @@ -1,50 +1,50 @@ -package fr.yuki.YukiRPFramework.model; - -import net.onfirenetwork.onsetjava.data.Vector; -import net.onfirenetwork.onsetjava.entity.Player; - -public class OutfitPoint { - private int id; - private double x; - private double y; - private double z; - - public int getId() { - return id; - } - - public void setId(int id) { - this.id = id; - } - - public double getX() { - return x; - } - - public void setX(double x) { - this.x = x; - } - - public double getY() { - return y; - } - - public void setY(double y) { - this.y = y; - } - - public double getZ() { - return z; - } - - public void setZ(double z) { - this.z = z; - } - - public boolean isNear(Player player) { - if(player.getLocation().distance(new Vector(this.x, this.y, this.z)) < 250) { - return true; - } - return false; - } -} +package fr.yuki.yrpf.model; + +import net.onfirenetwork.onsetjava.data.Vector; +import net.onfirenetwork.onsetjava.entity.Player; + +public class OutfitPoint { + private int id; + private double x; + private double y; + private double z; + + public int getId() { + return id; + } + + public void setId(int id) { + this.id = id; + } + + public double getX() { + return x; + } + + public void setX(double x) { + this.x = x; + } + + public double getY() { + return y; + } + + public void setY(double y) { + this.y = y; + } + + public double getZ() { + return z; + } + + public void setZ(double z) { + this.z = z; + } + + public boolean isNear(Player player) { + if(player.getLocation().distance(new Vector(this.x, this.y, this.z)) < 250) { + return true; + } + return false; + } +} diff --git a/src/main/java/fr/yuki/YukiRPFramework/model/PhoneContact.java b/src/main/java/fr/yuki/yrpf/model/PhoneContact.java similarity index 89% rename from src/main/java/fr/yuki/YukiRPFramework/model/PhoneContact.java rename to src/main/java/fr/yuki/yrpf/model/PhoneContact.java index 3c78da7..09df9d5 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/model/PhoneContact.java +++ b/src/main/java/fr/yuki/yrpf/model/PhoneContact.java @@ -1,40 +1,40 @@ -package fr.yuki.YukiRPFramework.model; - -public class PhoneContact { - private int id; - private int accountId; - private String name; - private String number; - - public int getId() { - return id; - } - - public void setId(int id) { - this.id = id; - } - - public int getAccountId() { - return accountId; - } - - public void setAccountId(int accountId) { - this.accountId = accountId; - } - - public String getName() { - return name; - } - - public void setName(String name) { - this.name = name; - } - - public String getNumber() { - return number; - } - - public void setNumber(String number) { - this.number = number; - } -} +package fr.yuki.yrpf.model; + +public class PhoneContact { + private int id; + private int accountId; + private String name; + private String number; + + public int getId() { + return id; + } + + public void setId(int id) { + this.id = id; + } + + public int getAccountId() { + return accountId; + } + + public void setAccountId(int accountId) { + this.accountId = accountId; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getNumber() { + return number; + } + + public void setNumber(String number) { + this.number = number; + } +} diff --git a/src/main/java/fr/yuki/YukiRPFramework/model/SellListItem.java b/src/main/java/fr/yuki/yrpf/model/SellListItem.java similarity index 89% rename from src/main/java/fr/yuki/YukiRPFramework/model/SellListItem.java rename to src/main/java/fr/yuki/yrpf/model/SellListItem.java index b088c71..6c0bb54 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/model/SellListItem.java +++ b/src/main/java/fr/yuki/yrpf/model/SellListItem.java @@ -1,40 +1,40 @@ -package fr.yuki.YukiRPFramework.model; - -public class SellListItem { - private int modelId; - private int price; - private String name; - private String description; - - public int getModelId() { - return modelId; - } - - public void setModelId(int modelId) { - this.modelId = modelId; - } - - public int getPrice() { - return price; - } - - public void setPrice(int price) { - this.price = price; - } - - public String getName() { - return name; - } - - public void setName(String name) { - this.name = name; - } - - public String getDescription() { - return description; - } - - public void setDescription(String description) { - this.description = description; - } -} +package fr.yuki.yrpf.model; + +public class SellListItem { + private int modelId; + private int price; + private String name; + private String description; + + public int getModelId() { + return modelId; + } + + public void setModelId(int modelId) { + this.modelId = modelId; + } + + public int getPrice() { + return price; + } + + public void setPrice(int price) { + this.price = price; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getDescription() { + return description; + } + + public void setDescription(String description) { + this.description = description; + } +} diff --git a/src/main/java/fr/yuki/YukiRPFramework/model/Seller.java b/src/main/java/fr/yuki/yrpf/model/Seller.java similarity index 93% rename from src/main/java/fr/yuki/YukiRPFramework/model/Seller.java rename to src/main/java/fr/yuki/yrpf/model/Seller.java index f3b8c9d..de0b39c 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/model/Seller.java +++ b/src/main/java/fr/yuki/yrpf/model/Seller.java @@ -1,123 +1,123 @@ -package fr.yuki.YukiRPFramework.model; - -import com.google.gson.Gson; -import com.google.gson.reflect.TypeToken; -import net.onfirenetwork.onsetjava.data.Vector; -import net.onfirenetwork.onsetjava.entity.NPC; -import net.onfirenetwork.onsetjava.entity.Player; - -import java.util.ArrayList; - -public class Seller { - private int id; - private String name; - private double x; - private double y; - private double z; - private double h; - private int npcClothing; - private String itemList; - private String jobRequired; - private int jobLevelRequired; - private NPC npc; - - public ArrayList decodeItems() { - return new Gson().fromJson(this.itemList, - new TypeToken>(){}.getType()); - } - - public int getId() { - return id; - } - - public void setId(int id) { - this.id = id; - } - - public String getName() { - return name; - } - - public void setName(String name) { - this.name = name; - } - - public double getX() { - return x; - } - - public void setX(double x) { - this.x = x; - } - - public double getY() { - return y; - } - - public void setY(double y) { - this.y = y; - } - - public double getZ() { - return z; - } - - public void setZ(double z) { - this.z = z; - } - - public double getH() { - return h; - } - - public void setH(double h) { - this.h = h; - } - - public int getNpcClothing() { - return npcClothing; - } - - public void setNpcClothing(int npcClothing) { - this.npcClothing = npcClothing; - } - - public String getItemList() { - return itemList; - } - - public void setItemList(String itemList) { - this.itemList = itemList; - } - - public NPC getNpc() { - return npc; - } - - public void setNpc(NPC npc) { - this.npc = npc; - } - - public String getJobRequired() { - return jobRequired; - } - - public void setJobRequired(String jobRequired) { - this.jobRequired = jobRequired; - } - - public int getJobLevelRequired() { - return jobLevelRequired; - } - - public void setJobLevelRequired(int jobLevelRequired) { - this.jobLevelRequired = jobLevelRequired; - } - - public boolean isNear(Player player) { - if(player.getLocation().distance(new Vector(this.x, this.y, this.z)) < 250) { - return true; - } - return false; - } -} +package fr.yuki.yrpf.model; + +import com.google.gson.Gson; +import com.google.gson.reflect.TypeToken; +import net.onfirenetwork.onsetjava.data.Vector; +import net.onfirenetwork.onsetjava.entity.NPC; +import net.onfirenetwork.onsetjava.entity.Player; + +import java.util.ArrayList; + +public class Seller { + private int id; + private String name; + private double x; + private double y; + private double z; + private double h; + private int npcClothing; + private String itemList; + private String jobRequired; + private int jobLevelRequired; + private NPC npc; + + public ArrayList decodeItems() { + return new Gson().fromJson(this.itemList, + new TypeToken>(){}.getType()); + } + + public int getId() { + return id; + } + + public void setId(int id) { + this.id = id; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public double getX() { + return x; + } + + public void setX(double x) { + this.x = x; + } + + public double getY() { + return y; + } + + public void setY(double y) { + this.y = y; + } + + public double getZ() { + return z; + } + + public void setZ(double z) { + this.z = z; + } + + public double getH() { + return h; + } + + public void setH(double h) { + this.h = h; + } + + public int getNpcClothing() { + return npcClothing; + } + + public void setNpcClothing(int npcClothing) { + this.npcClothing = npcClothing; + } + + public String getItemList() { + return itemList; + } + + public void setItemList(String itemList) { + this.itemList = itemList; + } + + public NPC getNpc() { + return npc; + } + + public void setNpc(NPC npc) { + this.npc = npc; + } + + public String getJobRequired() { + return jobRequired; + } + + public void setJobRequired(String jobRequired) { + this.jobRequired = jobRequired; + } + + public int getJobLevelRequired() { + return jobLevelRequired; + } + + public void setJobLevelRequired(int jobLevelRequired) { + this.jobLevelRequired = jobLevelRequired; + } + + public boolean isNear(Player player) { + if(player.getLocation().distance(new Vector(this.x, this.y, this.z)) < 250) { + return true; + } + return false; + } +} diff --git a/src/main/java/fr/yuki/YukiRPFramework/model/SellerItem.java b/src/main/java/fr/yuki/yrpf/model/SellerItem.java similarity index 83% rename from src/main/java/fr/yuki/YukiRPFramework/model/SellerItem.java rename to src/main/java/fr/yuki/yrpf/model/SellerItem.java index a1f7ad0..0c9736f 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/model/SellerItem.java +++ b/src/main/java/fr/yuki/yrpf/model/SellerItem.java @@ -1,22 +1,22 @@ -package fr.yuki.YukiRPFramework.model; - -public class SellerItem { - private int id; - private int price; - - public int getId() { - return id; - } - - public void setId(int id) { - this.id = id; - } - - public int getPrice() { - return price; - } - - public void setPrice(int price) { - this.price = price; - } -} +package fr.yuki.yrpf.model; + +public class SellerItem { + private int id; + private int price; + + public int getId() { + return id; + } + + public void setId(int id) { + this.id = id; + } + + public int getPrice() { + return price; + } + + public void setPrice(int price) { + this.price = price; + } +} diff --git a/src/main/java/fr/yuki/YukiRPFramework/model/VehicleGarage.java b/src/main/java/fr/yuki/yrpf/model/VehicleGarage.java similarity index 92% rename from src/main/java/fr/yuki/YukiRPFramework/model/VehicleGarage.java rename to src/main/java/fr/yuki/yrpf/model/VehicleGarage.java index 8366f7f..c0a7899 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/model/VehicleGarage.java +++ b/src/main/java/fr/yuki/yrpf/model/VehicleGarage.java @@ -1,174 +1,173 @@ -package fr.yuki.YukiRPFramework.model; - -import com.google.gson.Gson; -import com.google.gson.reflect.TypeToken; -import fr.yuki.YukiRPFramework.dao.VehicleGarageDAO; -import net.onfirenetwork.onsetjava.Onset; -import net.onfirenetwork.onsetjava.entity.Vehicle; - -import java.sql.SQLException; -import java.util.ArrayList; -import java.util.Date; - -public class VehicleGarage { - private int vehicleGarageId; - private String uuid; - private int owner; - private int garageId; - private int garageLastId; - private int modelId; - private String damage; - private double health; - private String licencePlate; - private String color; - private Date createdAt; - private Date updateAt; - private boolean isRental; - - public int getVehicleGarageId() { - return vehicleGarageId; - } - - public void setVehicleGarageId(int vehicleGarageId) { - this.vehicleGarageId = vehicleGarageId; - } - - public int getGarageId() { - return garageId; - } - - public void setGarageId(int garageId) { - this.garageId = garageId; - } - - public int getGarageLastId() { - return garageLastId; - } - - public void setGarageLastId(int garageLastId) { - this.garageLastId = garageLastId; - } - - public int getModelId() { - return modelId; - } - - public void setModelId(int modelId) { - this.modelId = modelId; - } - - public String getDamage() { - return damage; - } - - public void setDamage(String damage) { - this.damage = damage; - } - - public String getLicencePlate() { - return licencePlate; - } - - public void setLicencePlate(String licencePlate) { - this.licencePlate = licencePlate; - } - - public String getColor() { - return color; - } - - public void setColor(String color) { - this.color = color; - } - - public Date getCreatedAt() { - return createdAt; - } - - public void setCreatedAt(Date createdAt) { - this.createdAt = createdAt; - } - - public Date getUpdateAt() { - return updateAt; - } - - public void setUpdateAt(Date updateAt) { - this.updateAt = updateAt; - } - - public String getUuid() { - return uuid; - } - - public void setUuid(String uuid) { - this.uuid = uuid; - } - - public int getOwner() { - return owner; - } - - public void setOwner(int owner) { - this.owner = owner; - } - - public void save() { - try { - if(!isRental) VehicleGarageDAO.saveVehicleGarage(this); - } catch (Exception ex) { - Onset.print("Can't save vehicle: " + ex.toString()); - } - } - - public boolean isRental() { - return isRental; - } - - public void setRental(boolean rental) { - isRental = rental; - } - - public void destroy() { - for(Vehicle vehicle : Onset.getVehicles()) { - if(vehicle.getPropertyString("uuid").equals(this.getUuid())) { - vehicle.destroy(); - return; - } - } - } - - public Vehicle getVehicle() { - for(Vehicle vehicle : Onset.getVehicles()) { - if(vehicle.getPropertyString("uuid").equals(this.getUuid())) { - return vehicle; - } - } - return null; - } - - public void applyDamages(Vehicle vehicle) { - ArrayList damages = new Gson().fromJson(this.damage, new TypeToken>(){}.getType()); - for(int i = 0; i < damages.size(); i++) { - vehicle.setDamage(i + 1, damages.get(i)); - } - vehicle.setHealth(this.health); - } - - public void computeDamages(Vehicle vehicle) { - this.health = vehicle.getHealth(); - ArrayList damages = new ArrayList<>(); - for(int i = 0; i < 8; i++) { - damages.add(vehicle.getDamage(i + 1)); - } - this.damage = new Gson().toJson(damages); - } - - public double getHealth() { - return health; - } - - public void setHealth(double health) { - this.health = health; - } -} +package fr.yuki.yrpf.model; + +import com.google.gson.Gson; +import com.google.gson.reflect.TypeToken; +import fr.yuki.yrpf.dao.VehicleGarageDAO; +import net.onfirenetwork.onsetjava.Onset; +import net.onfirenetwork.onsetjava.entity.Vehicle; + +import java.util.ArrayList; +import java.util.Date; + +public class VehicleGarage { + private int vehicleGarageId; + private String uuid; + private int owner; + private int garageId; + private int garageLastId; + private int modelId; + private String damage; + private double health; + private String licencePlate; + private String color; + private Date createdAt; + private Date updateAt; + private boolean isRental; + + public int getVehicleGarageId() { + return vehicleGarageId; + } + + public void setVehicleGarageId(int vehicleGarageId) { + this.vehicleGarageId = vehicleGarageId; + } + + public int getGarageId() { + return garageId; + } + + public void setGarageId(int garageId) { + this.garageId = garageId; + } + + public int getGarageLastId() { + return garageLastId; + } + + public void setGarageLastId(int garageLastId) { + this.garageLastId = garageLastId; + } + + public int getModelId() { + return modelId; + } + + public void setModelId(int modelId) { + this.modelId = modelId; + } + + public String getDamage() { + return damage; + } + + public void setDamage(String damage) { + this.damage = damage; + } + + public String getLicencePlate() { + return licencePlate; + } + + public void setLicencePlate(String licencePlate) { + this.licencePlate = licencePlate; + } + + public String getColor() { + return color; + } + + public void setColor(String color) { + this.color = color; + } + + public Date getCreatedAt() { + return createdAt; + } + + public void setCreatedAt(Date createdAt) { + this.createdAt = createdAt; + } + + public Date getUpdateAt() { + return updateAt; + } + + public void setUpdateAt(Date updateAt) { + this.updateAt = updateAt; + } + + public String getUuid() { + return uuid; + } + + public void setUuid(String uuid) { + this.uuid = uuid; + } + + public int getOwner() { + return owner; + } + + public void setOwner(int owner) { + this.owner = owner; + } + + public void save() { + try { + if(!isRental) VehicleGarageDAO.saveVehicleGarage(this); + } catch (Exception ex) { + Onset.print("Can't save vehicle: " + ex.toString()); + } + } + + public boolean isRental() { + return isRental; + } + + public void setRental(boolean rental) { + isRental = rental; + } + + public void destroy() { + for(Vehicle vehicle : Onset.getVehicles()) { + if(vehicle.getPropertyString("uuid").equals(this.getUuid())) { + vehicle.destroy(); + return; + } + } + } + + public Vehicle getVehicle() { + for(Vehicle vehicle : Onset.getVehicles()) { + if(vehicle.getPropertyString("uuid").equals(this.getUuid())) { + return vehicle; + } + } + return null; + } + + public void applyDamages(Vehicle vehicle) { + ArrayList damages = new Gson().fromJson(this.damage, new TypeToken>(){}.getType()); + for(int i = 0; i < damages.size(); i++) { + vehicle.setDamage(i + 1, damages.get(i)); + } + vehicle.setHealth(this.health); + } + + public void computeDamages(Vehicle vehicle) { + this.health = vehicle.getHealth(); + ArrayList damages = new ArrayList<>(); + for(int i = 0; i < 8; i++) { + damages.add(vehicle.getDamage(i + 1)); + } + this.damage = new Gson().toJson(damages); + } + + public double getHealth() { + return health; + } + + public void setHealth(double health) { + this.health = health; + } +} diff --git a/src/main/java/fr/yuki/yrpf/model/VehicleSeller.java b/src/main/java/fr/yuki/yrpf/model/VehicleSeller.java new file mode 100644 index 0000000..848acef --- /dev/null +++ b/src/main/java/fr/yuki/yrpf/model/VehicleSeller.java @@ -0,0 +1,72 @@ +package fr.yuki.yrpf.model; + +import com.google.gson.Gson; +import com.google.gson.reflect.TypeToken; +import eu.bebendorf.ajorm.Model; +import eu.bebendorf.ajorm.annotation.Column; +import eu.bebendorf.ajorm.annotation.Table; +import lombok.Getter; +import lombok.Setter; +import net.onfirenetwork.onsetjava.data.Location; +import net.onfirenetwork.onsetjava.data.Vector; +import net.onfirenetwork.onsetjava.entity.Player; + +import java.util.ArrayList; +import java.util.List; + +@Getter @Setter @Table("tbl_vehicle_seller") +public class VehicleSeller extends Model { + @Column(column = "id_vehicle_seller") + private int id; + @Column + private String name; + @Column + private int npcClothing; + @Column + private double x; + @Column + private double y; + @Column + private double z; + @Column + private double h; + @Column + private double sX; + @Column + private double sY; + @Column + private double sZ; + @Column + private double sH; + @Column(size = 0) + private String sellList; + private List sellListCache; + + public Location getLocation(){ + return new Location(x, y, z, h); + } + + public Location getSpawnLocation(){ + return new Location(sX, sY, sZ, sH); + } + + public List getSellList(){ + if(sellListCache == null){ + sellListCache = new Gson().fromJson(sellList, + new TypeToken>(){}.getType()); + } + return sellListCache; + } + + public void setSellList(List sellList) { + this.sellList = new Gson().toJson(sellList); + sellListCache = sellList; + } + + public boolean isNear(Player player) { + if(player.getLocation().distance(new Vector(this.x, this.y, this.z)) < 250) { + return true; + } + return false; + } +} diff --git a/src/main/java/fr/yuki/YukiRPFramework/net/payload/AddCharacterJobPayload.java b/src/main/java/fr/yuki/yrpf/net/payload/AddCharacterJobPayload.java similarity index 84% rename from src/main/java/fr/yuki/YukiRPFramework/net/payload/AddCharacterJobPayload.java rename to src/main/java/fr/yuki/yrpf/net/payload/AddCharacterJobPayload.java index c53ebc8..e266687 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/net/payload/AddCharacterJobPayload.java +++ b/src/main/java/fr/yuki/yrpf/net/payload/AddCharacterJobPayload.java @@ -1,39 +1,39 @@ -package fr.yuki.YukiRPFramework.net.payload; - -import fr.yuki.YukiRPFramework.character.CharacterJobLevel; - -public class AddCharacterJobPayload { - private String type; - private String jobId; - private int xp; - private int level; - private String levelName; - - public AddCharacterJobPayload(CharacterJobLevel characterJobLevel) { - this.type = "ADD_CHARACTERJOB_ITEM"; - this.jobId = characterJobLevel.getJobId(); - this.xp = characterJobLevel.getExp(); - this.level = characterJobLevel.getJobLevel().getLevel(); - this.levelName = characterJobLevel.getJobLevel().getName(); - } - - public String getType() { - return type; - } - - public String getJobId() { - return jobId; - } - - public int getXp() { - return xp; - } - - public int getLevel() { - return level; - } - - public String getLevelName() { - return levelName; - } -} +package fr.yuki.yrpf.net.payload; + +import fr.yuki.yrpf.character.CharacterJobLevel; + +public class AddCharacterJobPayload { + private String type; + private String jobId; + private int xp; + private int level; + private String levelName; + + public AddCharacterJobPayload(CharacterJobLevel characterJobLevel) { + this.type = "ADD_CHARACTERJOB_ITEM"; + this.jobId = characterJobLevel.getJobId(); + this.xp = characterJobLevel.getExp(); + this.level = characterJobLevel.getJobLevel().getLevel(); + this.levelName = characterJobLevel.getJobLevel().getName(); + } + + public String getType() { + return type; + } + + public String getJobId() { + return jobId; + } + + public int getXp() { + return xp; + } + + public int getLevel() { + return level; + } + + public String getLevelName() { + return levelName; + } +} diff --git a/src/main/java/fr/yuki/YukiRPFramework/net/payload/AddClientContactPayload.java b/src/main/java/fr/yuki/yrpf/net/payload/AddClientContactPayload.java similarity index 87% rename from src/main/java/fr/yuki/YukiRPFramework/net/payload/AddClientContactPayload.java rename to src/main/java/fr/yuki/yrpf/net/payload/AddClientContactPayload.java index e745420..a0ce658 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/net/payload/AddClientContactPayload.java +++ b/src/main/java/fr/yuki/yrpf/net/payload/AddClientContactPayload.java @@ -1,32 +1,32 @@ -package fr.yuki.YukiRPFramework.net.payload; - -public class AddClientContactPayload { - private String type; - - private int id; - private String name; - private String number; - - public AddClientContactPayload(int id, String name, String number) { - this.type = "ADD_CONTACT"; - this.id = id; - this.name = name; - this.number = number; - } - - public String getType() { - return type; - } - - public int getId() { - return id; - } - - public String getName() { - return name; - } - - public String getNumber() { - return number; - } -} +package fr.yuki.yrpf.net.payload; + +public class AddClientContactPayload { + private String type; + + private int id; + private String name; + private String number; + + public AddClientContactPayload(int id, String name, String number) { + this.type = "ADD_CONTACT"; + this.id = id; + this.name = name; + this.number = number; + } + + public String getType() { + return type; + } + + public int getId() { + return id; + } + + public String getName() { + return name; + } + + public String getNumber() { + return number; + } +} diff --git a/src/main/java/fr/yuki/YukiRPFramework/net/payload/AddCompagnyEmployeePayload.java b/src/main/java/fr/yuki/yrpf/net/payload/AddCompagnyEmployeePayload.java similarity index 89% rename from src/main/java/fr/yuki/YukiRPFramework/net/payload/AddCompagnyEmployeePayload.java rename to src/main/java/fr/yuki/yrpf/net/payload/AddCompagnyEmployeePayload.java index 21e44d0..01d2c0c 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/net/payload/AddCompagnyEmployeePayload.java +++ b/src/main/java/fr/yuki/yrpf/net/payload/AddCompagnyEmployeePayload.java @@ -1,37 +1,37 @@ -package fr.yuki.YukiRPFramework.net.payload; - -public class AddCompagnyEmployeePayload { - private String type; - private String steamid; - private String name; - private int rank; - private boolean online; - - public AddCompagnyEmployeePayload(String steamid, String name, int rank, boolean online) { - this.type = "ADD_COMPAGNY_EMPLOYEE"; - this.steamid = steamid; - this.name = name; - this.rank = rank; - this.online = online; - } - - public String getType() { - return type; - } - - public String getSteamid() { - return steamid; - } - - public String getName() { - return name; - } - - public int getRank() { - return rank; - } - - public boolean isOnline() { - return online; - } -} +package fr.yuki.yrpf.net.payload; + +public class AddCompagnyEmployeePayload { + private String type; + private String steamid; + private String name; + private int rank; + private boolean online; + + public AddCompagnyEmployeePayload(String steamid, String name, int rank, boolean online) { + this.type = "ADD_COMPAGNY_EMPLOYEE"; + this.steamid = steamid; + this.name = name; + this.rank = rank; + this.online = online; + } + + public String getType() { + return type; + } + + public String getSteamid() { + return steamid; + } + + public String getName() { + return name; + } + + public int getRank() { + return rank; + } + + public boolean isOnline() { + return online; + } +} diff --git a/src/main/java/fr/yuki/YukiRPFramework/net/payload/AddGameMapMarkerPayload.java b/src/main/java/fr/yuki/yrpf/net/payload/AddGameMapMarkerPayload.java similarity index 75% rename from src/main/java/fr/yuki/YukiRPFramework/net/payload/AddGameMapMarkerPayload.java rename to src/main/java/fr/yuki/yrpf/net/payload/AddGameMapMarkerPayload.java index 4975d86..2683600 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/net/payload/AddGameMapMarkerPayload.java +++ b/src/main/java/fr/yuki/yrpf/net/payload/AddGameMapMarkerPayload.java @@ -1,21 +1,21 @@ -package fr.yuki.YukiRPFramework.net.payload; - -import fr.yuki.YukiRPFramework.model.GameMapMarker; - -public class AddGameMapMarkerPayload { - private String type; - private GameMapMarker marker; - - public AddGameMapMarkerPayload(GameMapMarker marker) { - this.marker = marker; - this.type = "GAMEMAP_ADD_MARKER"; - } - - public String getType() { - return type; - } - - public GameMapMarker getMarker() { - return marker; - } -} +package fr.yuki.yrpf.net.payload; + +import fr.yuki.yrpf.model.GameMapMarker; + +public class AddGameMapMarkerPayload { + private String type; + private GameMapMarker marker; + + public AddGameMapMarkerPayload(GameMapMarker marker) { + this.marker = marker; + this.type = "GAMEMAP_ADD_MARKER"; + } + + public String getType() { + return type; + } + + public GameMapMarker getMarker() { + return marker; + } +} diff --git a/src/main/java/fr/yuki/YukiRPFramework/net/payload/AddGameMapZonePayload.java b/src/main/java/fr/yuki/yrpf/net/payload/AddGameMapZonePayload.java similarity index 66% rename from src/main/java/fr/yuki/YukiRPFramework/net/payload/AddGameMapZonePayload.java rename to src/main/java/fr/yuki/yrpf/net/payload/AddGameMapZonePayload.java index 1d3a8ad..5e371dc 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/net/payload/AddGameMapZonePayload.java +++ b/src/main/java/fr/yuki/yrpf/net/payload/AddGameMapZonePayload.java @@ -1,22 +1,21 @@ -package fr.yuki.YukiRPFramework.net.payload; - -import fr.yuki.YukiRPFramework.model.GameMapMarker; -import fr.yuki.YukiRPFramework.model.GameMapZone; - -public class AddGameMapZonePayload { - private String type; - private GameMapZone zone; - - public AddGameMapZonePayload(GameMapZone zone) { - this.zone = zone; - this.type = "GAMEMAP_ADD_ZONE"; - } - - public String getType() { - return type; - } - - public GameMapZone getZone() { - return zone; - } -} +package fr.yuki.yrpf.net.payload; + +import fr.yuki.yrpf.model.GameMapZone; + +public class AddGameMapZonePayload { + private String type; + private GameMapZone zone; + + public AddGameMapZonePayload(GameMapZone zone) { + this.zone = zone; + this.type = "GAMEMAP_ADD_ZONE"; + } + + public String getType() { + return type; + } + + public GameMapZone getZone() { + return zone; + } +} diff --git a/src/main/java/fr/yuki/YukiRPFramework/net/payload/AddGenericMenuItemPayload.java b/src/main/java/fr/yuki/yrpf/net/payload/AddGenericMenuItemPayload.java similarity index 87% rename from src/main/java/fr/yuki/YukiRPFramework/net/payload/AddGenericMenuItemPayload.java rename to src/main/java/fr/yuki/yrpf/net/payload/AddGenericMenuItemPayload.java index c5a699e..82de432 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/net/payload/AddGenericMenuItemPayload.java +++ b/src/main/java/fr/yuki/yrpf/net/payload/AddGenericMenuItemPayload.java @@ -1,25 +1,25 @@ -package fr.yuki.YukiRPFramework.net.payload; - -public class AddGenericMenuItemPayload { - private String type; - private String text; - private String action; - - public AddGenericMenuItemPayload(String text, String action) { - this.type = "ADD_GENERIC_MENU_ITEM"; - this.text = text; - this.action = action; - } - - public String getType() { - return type; - } - - public String getText() { - return text; - } - - public String getAction() { - return action; - } -} +package fr.yuki.yrpf.net.payload; + +public class AddGenericMenuItemPayload { + private String type; + private String text; + private String action; + + public AddGenericMenuItemPayload(String text, String action) { + this.type = "ADD_GENERIC_MENU_ITEM"; + this.text = text; + this.action = action; + } + + public String getType() { + return type; + } + + public String getText() { + return text; + } + + public String getAction() { + return action; + } +} diff --git a/src/main/java/fr/yuki/YukiRPFramework/net/payload/AddGrowboxMenuItemPayload.java b/src/main/java/fr/yuki/yrpf/net/payload/AddGrowboxMenuItemPayload.java similarity index 89% rename from src/main/java/fr/yuki/YukiRPFramework/net/payload/AddGrowboxMenuItemPayload.java rename to src/main/java/fr/yuki/yrpf/net/payload/AddGrowboxMenuItemPayload.java index 373b035..424096d 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/net/payload/AddGrowboxMenuItemPayload.java +++ b/src/main/java/fr/yuki/yrpf/net/payload/AddGrowboxMenuItemPayload.java @@ -1,39 +1,39 @@ -package fr.yuki.YukiRPFramework.net.payload; - -public class AddGrowboxMenuItemPayload { - private String type; - private String id; - private int itemId; - private int water; - private int state; - private boolean seed; - - public AddGrowboxMenuItemPayload(String id, int itemId, int water, int state, boolean seed) { - this.id = id; - this.itemId = itemId; - this.water = water; - this.state = state; - this.seed = seed; - this.type = "ADD_GROWBOXMENU_ITEM"; - } - - public String getType() { - return type; - } - - public String getId() { - return id; - } - - public int getWater() { - return water; - } - - public int getState() { - return state; - } - - public boolean isSeed() { - return seed; - } -} +package fr.yuki.yrpf.net.payload; + +public class AddGrowboxMenuItemPayload { + private String type; + private String id; + private int itemId; + private int water; + private int state; + private boolean seed; + + public AddGrowboxMenuItemPayload(String id, int itemId, int water, int state, boolean seed) { + this.id = id; + this.itemId = itemId; + this.water = water; + this.state = state; + this.seed = seed; + this.type = "ADD_GROWBOXMENU_ITEM"; + } + + public String getType() { + return type; + } + + public String getId() { + return id; + } + + public int getWater() { + return water; + } + + public int getState() { + return state; + } + + public boolean isSeed() { + return seed; + } +} diff --git a/src/main/java/fr/yuki/YukiRPFramework/net/payload/AddItemInventoryPayload.java b/src/main/java/fr/yuki/yrpf/net/payload/AddItemInventoryPayload.java similarity index 88% rename from src/main/java/fr/yuki/YukiRPFramework/net/payload/AddItemInventoryPayload.java rename to src/main/java/fr/yuki/yrpf/net/payload/AddItemInventoryPayload.java index b060785..bbac97f 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/net/payload/AddItemInventoryPayload.java +++ b/src/main/java/fr/yuki/yrpf/net/payload/AddItemInventoryPayload.java @@ -1,52 +1,52 @@ -package fr.yuki.YukiRPFramework.net.payload; - -import fr.yuki.YukiRPFramework.inventory.InventoryItem; - -public class AddItemInventoryPayload { - public class InventoryItemPayload { - private String id; - private int quantity; - private String itemId; - private String name; - - public InventoryItemPayload(String id, int quantity, String itemId, String name) { - this.id = id; - this.quantity = quantity; - this.itemId = itemId; - this.name = name; - } - - public int getQuantity() { - return quantity; - } - - public String getItemId() { - return itemId; - } - - public String getId() { - return id; - } - - public String getName() { - return name; - } - } - - private String type; - private InventoryItemPayload item; - - public AddItemInventoryPayload(InventoryItem inventoryItem) { - this.type = "ADD_ITEM_INVENTORY"; - this.item = new InventoryItemPayload(inventoryItem.getId(), inventoryItem.getAmount(), - inventoryItem.getTemplateId(), inventoryItem.getTemplate().getName()); - } - - public String getType() { - return type; - } - - public InventoryItemPayload getItem() { - return item; - } -} +package fr.yuki.yrpf.net.payload; + +import fr.yuki.yrpf.inventory.InventoryItem; + +public class AddItemInventoryPayload { + public class InventoryItemPayload { + private String id; + private int quantity; + private String itemId; + private String name; + + public InventoryItemPayload(String id, int quantity, String itemId, String name) { + this.id = id; + this.quantity = quantity; + this.itemId = itemId; + this.name = name; + } + + public int getQuantity() { + return quantity; + } + + public String getItemId() { + return itemId; + } + + public String getId() { + return id; + } + + public String getName() { + return name; + } + } + + private String type; + private InventoryItemPayload item; + + public AddItemInventoryPayload(InventoryItem inventoryItem) { + this.type = "ADD_ITEM_INVENTORY"; + this.item = new InventoryItemPayload(inventoryItem.getId(), inventoryItem.getAmount(), + inventoryItem.getTemplateId(), inventoryItem.getTemplate().getName()); + } + + public String getType() { + return type; + } + + public InventoryItemPayload getItem() { + return item; + } +} diff --git a/src/main/java/fr/yuki/YukiRPFramework/net/payload/AddPhoneConversationPayload.java b/src/main/java/fr/yuki/yrpf/net/payload/AddPhoneConversationPayload.java similarity index 88% rename from src/main/java/fr/yuki/YukiRPFramework/net/payload/AddPhoneConversationPayload.java rename to src/main/java/fr/yuki/yrpf/net/payload/AddPhoneConversationPayload.java index a6f3efe..3d2cbcf 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/net/payload/AddPhoneConversationPayload.java +++ b/src/main/java/fr/yuki/yrpf/net/payload/AddPhoneConversationPayload.java @@ -1,25 +1,25 @@ -package fr.yuki.YukiRPFramework.net.payload; - -public class AddPhoneConversationPayload { - private String number; - private String lastMessage; - private String type; - - public AddPhoneConversationPayload(String number, String lastMessage) { - this.number = number; - this.lastMessage = lastMessage; - this.type = "ADD_PHONE_CONVERSATIONS"; - } - - public String getNumber() { - return number; - } - - public String getLastMessage() { - return lastMessage; - } - - public String getType() { - return type; - } -} +package fr.yuki.yrpf.net.payload; + +public class AddPhoneConversationPayload { + private String number; + private String lastMessage; + private String type; + + public AddPhoneConversationPayload(String number, String lastMessage) { + this.number = number; + this.lastMessage = lastMessage; + this.type = "ADD_PHONE_CONVERSATIONS"; + } + + public String getNumber() { + return number; + } + + public String getLastMessage() { + return lastMessage; + } + + public String getType() { + return type; + } +} diff --git a/src/main/java/fr/yuki/YukiRPFramework/net/payload/AddPhoneMessagePayload.java b/src/main/java/fr/yuki/yrpf/net/payload/AddPhoneMessagePayload.java similarity index 89% rename from src/main/java/fr/yuki/YukiRPFramework/net/payload/AddPhoneMessagePayload.java rename to src/main/java/fr/yuki/yrpf/net/payload/AddPhoneMessagePayload.java index a6af7c2..026d825 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/net/payload/AddPhoneMessagePayload.java +++ b/src/main/java/fr/yuki/yrpf/net/payload/AddPhoneMessagePayload.java @@ -1,32 +1,32 @@ -package fr.yuki.YukiRPFramework.net.payload; - -public class AddPhoneMessagePayload { - private String type; - private int messageType; - private String fromNumber; - private String message; - - public AddPhoneMessagePayload(int messageType, String fromNumber, String message) { - this.messageType = messageType; - this.fromNumber = fromNumber; - this.message = message; - - this.type = "ADD_PHONE_MESSAGE"; - } - - public String getType() { - return type; - } - - public int getMessageType() { - return messageType; - } - - public String getFromNumber() { - return fromNumber; - } - - public String getMessage() { - return message; - } -} +package fr.yuki.yrpf.net.payload; + +public class AddPhoneMessagePayload { + private String type; + private int messageType; + private String fromNumber; + private String message; + + public AddPhoneMessagePayload(int messageType, String fromNumber, String message) { + this.messageType = messageType; + this.fromNumber = fromNumber; + this.message = message; + + this.type = "ADD_PHONE_MESSAGE"; + } + + public String getType() { + return type; + } + + public int getMessageType() { + return messageType; + } + + public String getFromNumber() { + return fromNumber; + } + + public String getMessage() { + return message; + } +} diff --git a/src/main/java/fr/yuki/YukiRPFramework/net/payload/AddPhoneUrgencyPayload.java b/src/main/java/fr/yuki/yrpf/net/payload/AddPhoneUrgencyPayload.java similarity index 91% rename from src/main/java/fr/yuki/YukiRPFramework/net/payload/AddPhoneUrgencyPayload.java rename to src/main/java/fr/yuki/yrpf/net/payload/AddPhoneUrgencyPayload.java index e9f004f..7afaa36 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/net/payload/AddPhoneUrgencyPayload.java +++ b/src/main/java/fr/yuki/yrpf/net/payload/AddPhoneUrgencyPayload.java @@ -1,55 +1,55 @@ -package fr.yuki.YukiRPFramework.net.payload; - -public class AddPhoneUrgencyPayload { - private final int id; - private final String from; - private final String text; - private final String service; - private final double x; - private final double y; - private final double z; - private String type; - - public AddPhoneUrgencyPayload(int id, String from, String text, String service, double x, double y, double z) { - this.type = "ADD_PHONE_URGENCY"; - this.id = id; - this.from = from; - this.text = text; - this.service = service; - this.x = x; - this.y = y; - this.z = z; - } - - public String getType() { - return type; - } - - public int getId() { - return id; - } - - public String getFrom() { - return from; - } - - public String getText() { - return text; - } - - public String getService() { - return service; - } - - public double getX() { - return x; - } - - public double getY() { - return y; - } - - public double getZ() { - return z; - } -} +package fr.yuki.yrpf.net.payload; + +public class AddPhoneUrgencyPayload { + private final int id; + private final String from; + private final String text; + private final String service; + private final double x; + private final double y; + private final double z; + private String type; + + public AddPhoneUrgencyPayload(int id, String from, String text, String service, double x, double y, double z) { + this.type = "ADD_PHONE_URGENCY"; + this.id = id; + this.from = from; + this.text = text; + this.service = service; + this.x = x; + this.y = y; + this.z = z; + } + + public String getType() { + return type; + } + + public int getId() { + return id; + } + + public String getFrom() { + return from; + } + + public String getText() { + return text; + } + + public String getService() { + return service; + } + + public double getX() { + return x; + } + + public double getY() { + return y; + } + + public double getZ() { + return z; + } +} diff --git a/src/main/java/fr/yuki/YukiRPFramework/net/payload/AddSellerItemPayload.java b/src/main/java/fr/yuki/yrpf/net/payload/AddSellerItemPayload.java similarity index 87% rename from src/main/java/fr/yuki/YukiRPFramework/net/payload/AddSellerItemPayload.java rename to src/main/java/fr/yuki/yrpf/net/payload/AddSellerItemPayload.java index b33ff52..c842c53 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/net/payload/AddSellerItemPayload.java +++ b/src/main/java/fr/yuki/yrpf/net/payload/AddSellerItemPayload.java @@ -1,31 +1,31 @@ -package fr.yuki.YukiRPFramework.net.payload; - -public class AddSellerItemPayload { - private String type; - private String id; - private String name; - private int price; - - public AddSellerItemPayload(String id, String name, int price) { - this.type = "ADD_SELLER_ITEM"; - this.id = id; - this.name = name; - this.price = price; - } - - public String getType() { - return type; - } - - public String getId() { - return id; - } - - public String getName() { - return name; - } - - public int getPrice() { - return price; - } -} +package fr.yuki.yrpf.net.payload; + +public class AddSellerItemPayload { + private String type; + private String id; + private String name; + private int price; + + public AddSellerItemPayload(String id, String name, int price) { + this.type = "ADD_SELLER_ITEM"; + this.id = id; + this.name = name; + this.price = price; + } + + public String getType() { + return type; + } + + public String getId() { + return id; + } + + public String getName() { + return name; + } + + public int getPrice() { + return price; + } +} diff --git a/src/main/java/fr/yuki/YukiRPFramework/net/payload/AddToastPayload.java b/src/main/java/fr/yuki/yrpf/net/payload/AddToastPayload.java similarity index 87% rename from src/main/java/fr/yuki/YukiRPFramework/net/payload/AddToastPayload.java rename to src/main/java/fr/yuki/yrpf/net/payload/AddToastPayload.java index 86d273e..6b44ceb 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/net/payload/AddToastPayload.java +++ b/src/main/java/fr/yuki/yrpf/net/payload/AddToastPayload.java @@ -1,25 +1,25 @@ -package fr.yuki.YukiRPFramework.net.payload; - -public class AddToastPayload { - private String type; - private String notifType; - private String message; - - public AddToastPayload(String notifType, String message) { - this.notifType = notifType; - this.message = message; - this.type = "ADD_TOAST"; - } - - public String getType() { - return type; - } - - public String getNotifType() { - return notifType; - } - - public String getMessage() { - return message; - } -} +package fr.yuki.yrpf.net.payload; + +public class AddToastPayload { + private String type; + private String notifType; + private String message; + + public AddToastPayload(String notifType, String message) { + this.notifType = notifType; + this.message = message; + this.type = "ADD_TOAST"; + } + + public String getType() { + return type; + } + + public String getNotifType() { + return notifType; + } + + public String getMessage() { + return message; + } +} diff --git a/src/main/java/fr/yuki/YukiRPFramework/net/payload/AddVChestItemPayload.java b/src/main/java/fr/yuki/yrpf/net/payload/AddVChestItemPayload.java similarity index 88% rename from src/main/java/fr/yuki/YukiRPFramework/net/payload/AddVChestItemPayload.java rename to src/main/java/fr/yuki/yrpf/net/payload/AddVChestItemPayload.java index 43b6fac..376980a 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/net/payload/AddVChestItemPayload.java +++ b/src/main/java/fr/yuki/yrpf/net/payload/AddVChestItemPayload.java @@ -1,31 +1,31 @@ -package fr.yuki.YukiRPFramework.net.payload; - -public class AddVChestItemPayload { - private String type; - private String uuid; - private int modelId; - private String name; - - public AddVChestItemPayload(String uuid, int modelId, String name) { - this.uuid = uuid; - this.modelId = modelId; - this.name = name; - this.type = "ADD_VCHEST_ITEM"; - } - - public String getType() { - return type; - } - - public String getUuid() { - return uuid; - } - - public int getModelId() { - return modelId; - } - - public String getName() { - return name; - } -} +package fr.yuki.yrpf.net.payload; + +public class AddVChestItemPayload { + private String type; + private String uuid; + private int modelId; + private String name; + + public AddVChestItemPayload(String uuid, int modelId, String name) { + this.uuid = uuid; + this.modelId = modelId; + this.name = name; + this.type = "ADD_VCHEST_ITEM"; + } + + public String getType() { + return type; + } + + public String getUuid() { + return uuid; + } + + public int getModelId() { + return modelId; + } + + public String getName() { + return name; + } +} diff --git a/src/main/java/fr/yuki/YukiRPFramework/net/payload/AddVSellerVehiclePayload.java b/src/main/java/fr/yuki/yrpf/net/payload/AddVSellerVehiclePayload.java similarity index 90% rename from src/main/java/fr/yuki/YukiRPFramework/net/payload/AddVSellerVehiclePayload.java rename to src/main/java/fr/yuki/yrpf/net/payload/AddVSellerVehiclePayload.java index 3015cbf..91d2a0f 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/net/payload/AddVSellerVehiclePayload.java +++ b/src/main/java/fr/yuki/yrpf/net/payload/AddVSellerVehiclePayload.java @@ -1,37 +1,37 @@ -package fr.yuki.YukiRPFramework.net.payload; - -public class AddVSellerVehiclePayload { - private String type; - private int modelId; - private int price; - private String name; - private String description; - - public AddVSellerVehiclePayload(int modelId, int price, String name, String description) { - this.modelId = modelId; - this.price = price; - this.name = name; - this.description = description; - this.type = "ADD_VSELLER_VEHICLE"; - } - - public String getType() { - return type; - } - - public int getModelId() { - return modelId; - } - - public int getPrice() { - return price; - } - - public String getName() { - return name; - } - - public String getDescription() { - return description; - } -} +package fr.yuki.yrpf.net.payload; + +public class AddVSellerVehiclePayload { + private String type; + private int modelId; + private int price; + private String name; + private String description; + + public AddVSellerVehiclePayload(int modelId, int price, String name, String description) { + this.modelId = modelId; + this.price = price; + this.name = name; + this.description = description; + this.type = "ADD_VSELLER_VEHICLE"; + } + + public String getType() { + return type; + } + + public int getModelId() { + return modelId; + } + + public int getPrice() { + return price; + } + + public String getName() { + return name; + } + + public String getDescription() { + return description; + } +} diff --git a/src/main/java/fr/yuki/YukiRPFramework/net/payload/AddVehicleGaragePayload.java b/src/main/java/fr/yuki/yrpf/net/payload/AddVehicleGaragePayload.java similarity index 89% rename from src/main/java/fr/yuki/YukiRPFramework/net/payload/AddVehicleGaragePayload.java rename to src/main/java/fr/yuki/yrpf/net/payload/AddVehicleGaragePayload.java index 7934f61..e4fef82 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/net/payload/AddVehicleGaragePayload.java +++ b/src/main/java/fr/yuki/yrpf/net/payload/AddVehicleGaragePayload.java @@ -1,37 +1,37 @@ -package fr.yuki.YukiRPFramework.net.payload; - -public class AddVehicleGaragePayload { - private String type; - private int modelId; - private String uuid; - private String color; - private String plate; - - public AddVehicleGaragePayload(int modelId, String uuid, String color, String plate) { - this.modelId = modelId; - this.uuid = uuid; - this.color = color; - this.plate = plate; - this.type = "ADD_GARAGE_VEHICLE"; - } - - public String getType() { - return type; - } - - public int getModelId() { - return modelId; - } - - public String getUuid() { - return uuid; - } - - public String getColor() { - return color; - } - - public String getPlate() { - return plate; - } -} +package fr.yuki.yrpf.net.payload; + +public class AddVehicleGaragePayload { + private String type; + private int modelId; + private String uuid; + private String color; + private String plate; + + public AddVehicleGaragePayload(int modelId, String uuid, String color, String plate) { + this.modelId = modelId; + this.uuid = uuid; + this.color = color; + this.plate = plate; + this.type = "ADD_GARAGE_VEHICLE"; + } + + public String getType() { + return type; + } + + public int getModelId() { + return modelId; + } + + public String getUuid() { + return uuid; + } + + public String getColor() { + return color; + } + + public String getPlate() { + return plate; + } +} diff --git a/src/main/java/fr/yuki/YukiRPFramework/net/payload/AddXpBarItemPayload.java b/src/main/java/fr/yuki/yrpf/net/payload/AddXpBarItemPayload.java similarity index 83% rename from src/main/java/fr/yuki/YukiRPFramework/net/payload/AddXpBarItemPayload.java rename to src/main/java/fr/yuki/yrpf/net/payload/AddXpBarItemPayload.java index dc53ed3..63fce78 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/net/payload/AddXpBarItemPayload.java +++ b/src/main/java/fr/yuki/yrpf/net/payload/AddXpBarItemPayload.java @@ -1,19 +1,19 @@ -package fr.yuki.YukiRPFramework.net.payload; - -public class AddXpBarItemPayload { - private String type; - private String text; - - public AddXpBarItemPayload(String text) { - this.text = text; - this.type = "ADD_XPBAR_ITEM"; - } - - public String getType() { - return type; - } - - public String getText() { - return text; - } -} +package fr.yuki.yrpf.net.payload; + +public class AddXpBarItemPayload { + private String type; + private String text; + + public AddXpBarItemPayload(String text) { + this.text = text; + this.type = "ADD_XPBAR_ITEM"; + } + + public String getType() { + return type; + } + + public String getText() { + return text; + } +} diff --git a/src/main/java/fr/yuki/YukiRPFramework/net/payload/BuySellItemRequestPayload.java b/src/main/java/fr/yuki/yrpf/net/payload/BuySellItemRequestPayload.java similarity index 84% rename from src/main/java/fr/yuki/YukiRPFramework/net/payload/BuySellItemRequestPayload.java rename to src/main/java/fr/yuki/yrpf/net/payload/BuySellItemRequestPayload.java index ab5699c..0ddb588 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/net/payload/BuySellItemRequestPayload.java +++ b/src/main/java/fr/yuki/yrpf/net/payload/BuySellItemRequestPayload.java @@ -1,22 +1,22 @@ -package fr.yuki.YukiRPFramework.net.payload; - -public class BuySellItemRequestPayload { - private String id; - private int quantity; - - public String getId() { - return id; - } - - public void setId(String id) { - this.id = id; - } - - public int getQuantity() { - return quantity; - } - - public void setQuantity(int quantity) { - this.quantity = quantity; - } -} +package fr.yuki.yrpf.net.payload; + +public class BuySellItemRequestPayload { + private String id; + private int quantity; + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public int getQuantity() { + return quantity; + } + + public void setQuantity(int quantity) { + this.quantity = quantity; + } +} diff --git a/src/main/java/fr/yuki/YukiRPFramework/net/payload/ClearCompagnyEmployeesPayload.java b/src/main/java/fr/yuki/yrpf/net/payload/ClearCompagnyEmployeesPayload.java similarity index 79% rename from src/main/java/fr/yuki/YukiRPFramework/net/payload/ClearCompagnyEmployeesPayload.java rename to src/main/java/fr/yuki/yrpf/net/payload/ClearCompagnyEmployeesPayload.java index 4c9f623..2d95ca2 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/net/payload/ClearCompagnyEmployeesPayload.java +++ b/src/main/java/fr/yuki/yrpf/net/payload/ClearCompagnyEmployeesPayload.java @@ -1,13 +1,13 @@ -package fr.yuki.YukiRPFramework.net.payload; - -public class ClearCompagnyEmployeesPayload { - private String type; - - public ClearCompagnyEmployeesPayload() { - this.type = "CLEAR_COMPAGNY_EMPLOYEES"; - } - - public String getType() { - return type; - } -} +package fr.yuki.yrpf.net.payload; + +public class ClearCompagnyEmployeesPayload { + private String type; + + public ClearCompagnyEmployeesPayload() { + this.type = "CLEAR_COMPAGNY_EMPLOYEES"; + } + + public String getType() { + return type; + } +} diff --git a/src/main/java/fr/yuki/YukiRPFramework/net/payload/ClearGenericMenuPayload.java b/src/main/java/fr/yuki/yrpf/net/payload/ClearGenericMenuPayload.java similarity index 78% rename from src/main/java/fr/yuki/YukiRPFramework/net/payload/ClearGenericMenuPayload.java rename to src/main/java/fr/yuki/yrpf/net/payload/ClearGenericMenuPayload.java index 55250a0..8982ec7 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/net/payload/ClearGenericMenuPayload.java +++ b/src/main/java/fr/yuki/yrpf/net/payload/ClearGenericMenuPayload.java @@ -1,13 +1,13 @@ -package fr.yuki.YukiRPFramework.net.payload; - -public class ClearGenericMenuPayload { - private String type; - - public ClearGenericMenuPayload() { - this.type = "CLEAR_GENERIC_MENU"; - } - - public String getType() { - return type; - } -} +package fr.yuki.yrpf.net.payload; + +public class ClearGenericMenuPayload { + private String type; + + public ClearGenericMenuPayload() { + this.type = "CLEAR_GENERIC_MENU"; + } + + public String getType() { + return type; + } +} diff --git a/src/main/java/fr/yuki/YukiRPFramework/net/payload/ClearPhoneUrgencyPayload.java b/src/main/java/fr/yuki/yrpf/net/payload/ClearPhoneUrgencyPayload.java similarity index 78% rename from src/main/java/fr/yuki/YukiRPFramework/net/payload/ClearPhoneUrgencyPayload.java rename to src/main/java/fr/yuki/yrpf/net/payload/ClearPhoneUrgencyPayload.java index 0819ebc..3aa7b57 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/net/payload/ClearPhoneUrgencyPayload.java +++ b/src/main/java/fr/yuki/yrpf/net/payload/ClearPhoneUrgencyPayload.java @@ -1,13 +1,13 @@ -package fr.yuki.YukiRPFramework.net.payload; - -public class ClearPhoneUrgencyPayload { - private String type; - - public ClearPhoneUrgencyPayload() { - this.type = "CLEAR_PHONE_URGENCY"; - } - - public String getType() { - return type; - } -} +package fr.yuki.yrpf.net.payload; + +public class ClearPhoneUrgencyPayload { + private String type; + + public ClearPhoneUrgencyPayload() { + this.type = "CLEAR_PHONE_URGENCY"; + } + + public String getType() { + return type; + } +} diff --git a/src/main/java/fr/yuki/YukiRPFramework/net/payload/GrowboxFillWaterPotPayload.java b/src/main/java/fr/yuki/yrpf/net/payload/GrowboxFillWaterPotPayload.java similarity index 85% rename from src/main/java/fr/yuki/YukiRPFramework/net/payload/GrowboxFillWaterPotPayload.java rename to src/main/java/fr/yuki/yrpf/net/payload/GrowboxFillWaterPotPayload.java index 33540fc..5ddea79 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/net/payload/GrowboxFillWaterPotPayload.java +++ b/src/main/java/fr/yuki/yrpf/net/payload/GrowboxFillWaterPotPayload.java @@ -1,22 +1,22 @@ -package fr.yuki.YukiRPFramework.net.payload; - -public class GrowboxFillWaterPotPayload { - private String growboxId; - private String potId; - - public String getGrowboxId() { - return growboxId; - } - - public void setGrowboxId(String growboxId) { - this.growboxId = growboxId; - } - - public String getPotId() { - return potId; - } - - public void setPotId(String potId) { - this.potId = potId; - } -} +package fr.yuki.yrpf.net.payload; + +public class GrowboxFillWaterPotPayload { + private String growboxId; + private String potId; + + public String getGrowboxId() { + return growboxId; + } + + public void setGrowboxId(String growboxId) { + this.growboxId = growboxId; + } + + public String getPotId() { + return potId; + } + + public void setPotId(String potId) { + this.potId = potId; + } +} diff --git a/src/main/java/fr/yuki/YukiRPFramework/net/payload/PhoneAddContactPayload.java b/src/main/java/fr/yuki/yrpf/net/payload/PhoneAddContactPayload.java similarity index 84% rename from src/main/java/fr/yuki/YukiRPFramework/net/payload/PhoneAddContactPayload.java rename to src/main/java/fr/yuki/yrpf/net/payload/PhoneAddContactPayload.java index f88a0a5..ac49014 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/net/payload/PhoneAddContactPayload.java +++ b/src/main/java/fr/yuki/yrpf/net/payload/PhoneAddContactPayload.java @@ -1,22 +1,22 @@ -package fr.yuki.YukiRPFramework.net.payload; - -public class PhoneAddContactPayload { - private String name; - private String number; - - public String getName() { - return name; - } - - public void setName(String name) { - this.name = name; - } - - public String getNumber() { - return number; - } - - public void setNumber(String number) { - this.number = number; - } -} +package fr.yuki.yrpf.net.payload; + +public class PhoneAddContactPayload { + private String name; + private String number; + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getNumber() { + return number; + } + + public void setNumber(String number) { + this.number = number; + } +} diff --git a/src/main/java/fr/yuki/YukiRPFramework/net/payload/RemoteItemInventoryPayload.java b/src/main/java/fr/yuki/yrpf/net/payload/RemoteItemInventoryPayload.java similarity index 81% rename from src/main/java/fr/yuki/YukiRPFramework/net/payload/RemoteItemInventoryPayload.java rename to src/main/java/fr/yuki/yrpf/net/payload/RemoteItemInventoryPayload.java index 563aed4..6c43314 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/net/payload/RemoteItemInventoryPayload.java +++ b/src/main/java/fr/yuki/yrpf/net/payload/RemoteItemInventoryPayload.java @@ -1,16 +1,16 @@ -package fr.yuki.YukiRPFramework.net.payload; - -public class RemoteItemInventoryPayload { - private String type; - private String id; - - public RemoteItemInventoryPayload(String id) { - this.id = id; - this.type = "REMOVE_ITEM_INVENTORY"; - - } - - public String getId() { - return id; - } -} +package fr.yuki.yrpf.net.payload; + +public class RemoteItemInventoryPayload { + private String type; + private String id; + + public RemoteItemInventoryPayload(String id) { + this.id = id; + this.type = "REMOVE_ITEM_INVENTORY"; + + } + + public String getId() { + return id; + } +} diff --git a/src/main/java/fr/yuki/YukiRPFramework/net/payload/RequestBuyVehiclePayload.java b/src/main/java/fr/yuki/yrpf/net/payload/RequestBuyVehiclePayload.java similarity index 86% rename from src/main/java/fr/yuki/YukiRPFramework/net/payload/RequestBuyVehiclePayload.java rename to src/main/java/fr/yuki/yrpf/net/payload/RequestBuyVehiclePayload.java index 0769edb..2c1fce3 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/net/payload/RequestBuyVehiclePayload.java +++ b/src/main/java/fr/yuki/yrpf/net/payload/RequestBuyVehiclePayload.java @@ -1,28 +1,28 @@ -package fr.yuki.YukiRPFramework.net.payload; - -import java.awt.*; - -public class RequestBuyVehiclePayload { - private int modelId; - private String color; - - public int getModelId() { - return modelId; - } - - public void setModelId(int modelId) { - this.modelId = modelId; - } - - public String getColor() { - return color; - } - - public void setColor(String color) { - this.color = color; - } - - public Color getAWTColor() { - return Color.decode(this.color); - } -} +package fr.yuki.yrpf.net.payload; + +import java.awt.*; + +public class RequestBuyVehiclePayload { + private int modelId; + private String color; + + public int getModelId() { + return modelId; + } + + public void setModelId(int modelId) { + this.modelId = modelId; + } + + public String getColor() { + return color; + } + + public void setColor(String color) { + this.color = color; + } + + public Color getAWTColor() { + return Color.decode(this.color); + } +} diff --git a/src/main/java/fr/yuki/YukiRPFramework/net/payload/RequestInventoryContentPayload.java b/src/main/java/fr/yuki/yrpf/net/payload/RequestInventoryContentPayload.java similarity index 77% rename from src/main/java/fr/yuki/YukiRPFramework/net/payload/RequestInventoryContentPayload.java rename to src/main/java/fr/yuki/yrpf/net/payload/RequestInventoryContentPayload.java index ea9c1bc..e6f9f68 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/net/payload/RequestInventoryContentPayload.java +++ b/src/main/java/fr/yuki/yrpf/net/payload/RequestInventoryContentPayload.java @@ -1,13 +1,13 @@ -package fr.yuki.YukiRPFramework.net.payload; - -public class RequestInventoryContentPayload { - private String type; - - public String getType() { - return type; - } - - public void setType(String type) { - this.type = type; - } -} +package fr.yuki.yrpf.net.payload; + +public class RequestInventoryContentPayload { + private String type; + + public String getType() { + return type; + } + + public void setType(String type) { + this.type = type; + } +} diff --git a/src/main/java/fr/yuki/YukiRPFramework/net/payload/RequestPhoneSendMessagePayload.java b/src/main/java/fr/yuki/yrpf/net/payload/RequestPhoneSendMessagePayload.java similarity index 85% rename from src/main/java/fr/yuki/YukiRPFramework/net/payload/RequestPhoneSendMessagePayload.java rename to src/main/java/fr/yuki/yrpf/net/payload/RequestPhoneSendMessagePayload.java index 381966d..59109f7 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/net/payload/RequestPhoneSendMessagePayload.java +++ b/src/main/java/fr/yuki/yrpf/net/payload/RequestPhoneSendMessagePayload.java @@ -1,22 +1,22 @@ -package fr.yuki.YukiRPFramework.net.payload; - -public class RequestPhoneSendMessagePayload { - private String number; - private String message; - - public String getNumber() { - return number; - } - - public void setNumber(String number) { - this.number = number; - } - - public String getMessage() { - return message; - } - - public void setMessage(String message) { - this.message = message; - } -} +package fr.yuki.yrpf.net.payload; + +public class RequestPhoneSendMessagePayload { + private String number; + private String message; + + public String getNumber() { + return number; + } + + public void setNumber(String number) { + this.number = number; + } + + public String getMessage() { + return message; + } + + public void setMessage(String message) { + this.message = message; + } +} diff --git a/src/main/java/fr/yuki/YukiRPFramework/net/payload/RequestThrowItemPayload.java b/src/main/java/fr/yuki/yrpf/net/payload/RequestThrowItemPayload.java similarity index 84% rename from src/main/java/fr/yuki/YukiRPFramework/net/payload/RequestThrowItemPayload.java rename to src/main/java/fr/yuki/yrpf/net/payload/RequestThrowItemPayload.java index 9912938..9db67ec 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/net/payload/RequestThrowItemPayload.java +++ b/src/main/java/fr/yuki/yrpf/net/payload/RequestThrowItemPayload.java @@ -1,22 +1,22 @@ -package fr.yuki.YukiRPFramework.net.payload; - -public class RequestThrowItemPayload { - private String id; - private int quantity; - - public String getId() { - return id; - } - - public void setId(String id) { - this.id = id; - } - - public int getQuantity() { - return quantity; - } - - public void setQuantity(int quantity) { - this.quantity = quantity; - } -} +package fr.yuki.yrpf.net.payload; + +public class RequestThrowItemPayload { + private String id; + private int quantity; + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public int getQuantity() { + return quantity; + } + + public void setQuantity(int quantity) { + this.quantity = quantity; + } +} diff --git a/src/main/java/fr/yuki/YukiRPFramework/net/payload/RequestUseItemPayload.java b/src/main/java/fr/yuki/yrpf/net/payload/RequestUseItemPayload.java similarity index 75% rename from src/main/java/fr/yuki/YukiRPFramework/net/payload/RequestUseItemPayload.java rename to src/main/java/fr/yuki/yrpf/net/payload/RequestUseItemPayload.java index b2ee4f0..a5d4f79 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/net/payload/RequestUseItemPayload.java +++ b/src/main/java/fr/yuki/yrpf/net/payload/RequestUseItemPayload.java @@ -1,13 +1,13 @@ -package fr.yuki.YukiRPFramework.net.payload; - -public class RequestUseItemPayload { - private String id; - - public String getId() { - return id; - } - - public void setId(String id) { - this.id = id; - } -} +package fr.yuki.yrpf.net.payload; + +public class RequestUseItemPayload { + private String id; + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } +} diff --git a/src/main/java/fr/yuki/YukiRPFramework/net/payload/ResetVehicleGaragePayload.java b/src/main/java/fr/yuki/yrpf/net/payload/ResetVehicleGaragePayload.java similarity index 79% rename from src/main/java/fr/yuki/YukiRPFramework/net/payload/ResetVehicleGaragePayload.java rename to src/main/java/fr/yuki/yrpf/net/payload/ResetVehicleGaragePayload.java index b93f5d7..060e1b9 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/net/payload/ResetVehicleGaragePayload.java +++ b/src/main/java/fr/yuki/yrpf/net/payload/ResetVehicleGaragePayload.java @@ -1,13 +1,13 @@ -package fr.yuki.YukiRPFramework.net.payload; - -public class ResetVehicleGaragePayload { - private String type; - - public ResetVehicleGaragePayload() { - this.type = "RESET_GARAGE_VEHICLE"; - } - - public String getType() { - return type; - } -} +package fr.yuki.yrpf.net.payload; + +public class ResetVehicleGaragePayload { + private String type; + + public ResetVehicleGaragePayload() { + this.type = "RESET_GARAGE_VEHICLE"; + } + + public String getType() { + return type; + } +} diff --git a/src/main/java/fr/yuki/YukiRPFramework/net/payload/SetBankCashAmount.java b/src/main/java/fr/yuki/yrpf/net/payload/SetBankCashAmount.java similarity index 87% rename from src/main/java/fr/yuki/YukiRPFramework/net/payload/SetBankCashAmount.java rename to src/main/java/fr/yuki/yrpf/net/payload/SetBankCashAmount.java index a6f964c..7eaefe9 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/net/payload/SetBankCashAmount.java +++ b/src/main/java/fr/yuki/yrpf/net/payload/SetBankCashAmount.java @@ -1,25 +1,25 @@ -package fr.yuki.YukiRPFramework.net.payload; - -public class SetBankCashAmount { - private String type; - private int amount; - private int cashAmount; - - public SetBankCashAmount(int amount, int cashAmount) { - this.type = "SET_BANK_CASH_AMOUNT"; - this.amount = amount; - this.cashAmount = cashAmount; - } - - public String getType() { - return type; - } - - public int getAmount() { - return amount; - } - - public int getCashAmount() { - return cashAmount; - } -} +package fr.yuki.yrpf.net.payload; + +public class SetBankCashAmount { + private String type; + private int amount; + private int cashAmount; + + public SetBankCashAmount(int amount, int cashAmount) { + this.type = "SET_BANK_CASH_AMOUNT"; + this.amount = amount; + this.cashAmount = cashAmount; + } + + public String getType() { + return type; + } + + public int getAmount() { + return amount; + } + + public int getCashAmount() { + return cashAmount; + } +} diff --git a/src/main/java/fr/yuki/YukiRPFramework/net/payload/SetCompagnyPayload.java b/src/main/java/fr/yuki/yrpf/net/payload/SetCompagnyPayload.java similarity index 89% rename from src/main/java/fr/yuki/YukiRPFramework/net/payload/SetCompagnyPayload.java rename to src/main/java/fr/yuki/yrpf/net/payload/SetCompagnyPayload.java index 4f7d40a..ad33e39 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/net/payload/SetCompagnyPayload.java +++ b/src/main/java/fr/yuki/yrpf/net/payload/SetCompagnyPayload.java @@ -1,37 +1,37 @@ -package fr.yuki.YukiRPFramework.net.payload; - -public class SetCompagnyPayload { - private String type; - private int id; - private String name; - private int myrank; - private int bankCash; - - public SetCompagnyPayload(int id, String name, int myrank, int bankCash) { - this.type = "SET_COMPAGNY"; - this.id = id; - this.name = name; - this.myrank = myrank; - this.bankCash = bankCash; - } - - public String getType() { - return type; - } - - public int getId() { - return id; - } - - public String getName() { - return name; - } - - public int getMyrank() { - return myrank; - } - - public int getBankCash() { - return bankCash; - } -} +package fr.yuki.yrpf.net.payload; + +public class SetCompagnyPayload { + private String type; + private int id; + private String name; + private int myrank; + private int bankCash; + + public SetCompagnyPayload(int id, String name, int myrank, int bankCash) { + this.type = "SET_COMPAGNY"; + this.id = id; + this.name = name; + this.myrank = myrank; + this.bankCash = bankCash; + } + + public String getType() { + return type; + } + + public int getId() { + return id; + } + + public String getName() { + return name; + } + + public int getMyrank() { + return myrank; + } + + public int getBankCash() { + return bankCash; + } +} diff --git a/src/main/java/fr/yuki/YukiRPFramework/net/payload/SetFoodPayload.java b/src/main/java/fr/yuki/yrpf/net/payload/SetFoodPayload.java similarity index 87% rename from src/main/java/fr/yuki/YukiRPFramework/net/payload/SetFoodPayload.java rename to src/main/java/fr/yuki/yrpf/net/payload/SetFoodPayload.java index 45ef620..6cda340 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/net/payload/SetFoodPayload.java +++ b/src/main/java/fr/yuki/yrpf/net/payload/SetFoodPayload.java @@ -1,25 +1,25 @@ -package fr.yuki.YukiRPFramework.net.payload; - -public class SetFoodPayload { - private String type; - private int foodState; - private int drinkState; - - public SetFoodPayload(int foodState, int drinkState) { - this.foodState = foodState; - this.drinkState = drinkState; - this.type = "SET_FOOD"; - } - - public String getType() { - return type; - } - - public int getFoodState() { - return foodState; - } - - public int getDrinkState() { - return drinkState; - } -} +package fr.yuki.yrpf.net.payload; + +public class SetFoodPayload { + private String type; + private int foodState; + private int drinkState; + + public SetFoodPayload(int foodState, int drinkState) { + this.foodState = foodState; + this.drinkState = drinkState; + this.type = "SET_FOOD"; + } + + public String getType() { + return type; + } + + public int getFoodState() { + return foodState; + } + + public int getDrinkState() { + return drinkState; + } +} diff --git a/src/main/java/fr/yuki/YukiRPFramework/net/payload/SetGrowboxPayload.java b/src/main/java/fr/yuki/yrpf/net/payload/SetGrowboxPayload.java similarity index 82% rename from src/main/java/fr/yuki/YukiRPFramework/net/payload/SetGrowboxPayload.java rename to src/main/java/fr/yuki/yrpf/net/payload/SetGrowboxPayload.java index 7259d00..100f885 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/net/payload/SetGrowboxPayload.java +++ b/src/main/java/fr/yuki/yrpf/net/payload/SetGrowboxPayload.java @@ -1,19 +1,19 @@ -package fr.yuki.YukiRPFramework.net.payload; - -public class SetGrowboxPayload { - private String type; - private String id; - - public SetGrowboxPayload(String id) { - this.id = id; - this.type = "SET_GROWBOX"; - } - - public String getType() { - return type; - } - - public String getId() { - return id; - } -} +package fr.yuki.yrpf.net.payload; + +public class SetGrowboxPayload { + private String type; + private String id; + + public SetGrowboxPayload(String id) { + this.id = id; + this.type = "SET_GROWBOX"; + } + + public String getType() { + return type; + } + + public String getId() { + return id; + } +} diff --git a/src/main/java/fr/yuki/YukiRPFramework/net/payload/SetHouseInfosPayload.java b/src/main/java/fr/yuki/yrpf/net/payload/SetHouseInfosPayload.java similarity index 87% rename from src/main/java/fr/yuki/YukiRPFramework/net/payload/SetHouseInfosPayload.java rename to src/main/java/fr/yuki/yrpf/net/payload/SetHouseInfosPayload.java index 568a8a0..dd3c7a5 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/net/payload/SetHouseInfosPayload.java +++ b/src/main/java/fr/yuki/yrpf/net/payload/SetHouseInfosPayload.java @@ -1,25 +1,25 @@ -package fr.yuki.YukiRPFramework.net.payload; - -public class SetHouseInfosPayload { - private String type; - private int housePrice; - private String houseName; - - public SetHouseInfosPayload(int housePrice, String houseName) { - this.housePrice = housePrice; - this.houseName = houseName; - this.type = "SET_HOUSE_INFOS"; - } - - public String getType() { - return type; - } - - public int getHousePrice() { - return housePrice; - } - - public String getHouseName() { - return houseName; - } -} +package fr.yuki.yrpf.net.payload; + +public class SetHouseInfosPayload { + private String type; + private int housePrice; + private String houseName; + + public SetHouseInfosPayload(int housePrice, String houseName) { + this.housePrice = housePrice; + this.houseName = houseName; + this.type = "SET_HOUSE_INFOS"; + } + + public String getType() { + return type; + } + + public int getHousePrice() { + return housePrice; + } + + public String getHouseName() { + return houseName; + } +} diff --git a/src/main/java/fr/yuki/YukiRPFramework/net/payload/SetLangPayload.java b/src/main/java/fr/yuki/yrpf/net/payload/SetLangPayload.java similarity index 82% rename from src/main/java/fr/yuki/YukiRPFramework/net/payload/SetLangPayload.java rename to src/main/java/fr/yuki/yrpf/net/payload/SetLangPayload.java index 09ccc7e..c7dbb35 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/net/payload/SetLangPayload.java +++ b/src/main/java/fr/yuki/yrpf/net/payload/SetLangPayload.java @@ -1,19 +1,19 @@ -package fr.yuki.YukiRPFramework.net.payload; - -public class SetLangPayload { - private String type; - private String lang; - - public SetLangPayload(String lang) { - this.type = "SET_LANG"; - this.lang = lang; - } - - public String getType() { - return type; - } - - public String getLang() { - return lang; - } -} +package fr.yuki.yrpf.net.payload; + +public class SetLangPayload { + private String type; + private String lang; + + public SetLangPayload(String lang) { + this.type = "SET_LANG"; + this.lang = lang; + } + + public String getType() { + return type; + } + + public String getLang() { + return lang; + } +} diff --git a/src/main/java/fr/yuki/YukiRPFramework/net/payload/SetPhoneCallStatePayload.java b/src/main/java/fr/yuki/yrpf/net/payload/SetPhoneCallStatePayload.java similarity index 88% rename from src/main/java/fr/yuki/YukiRPFramework/net/payload/SetPhoneCallStatePayload.java rename to src/main/java/fr/yuki/yrpf/net/payload/SetPhoneCallStatePayload.java index 97131eb..680a82c 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/net/payload/SetPhoneCallStatePayload.java +++ b/src/main/java/fr/yuki/yrpf/net/payload/SetPhoneCallStatePayload.java @@ -1,25 +1,25 @@ -package fr.yuki.YukiRPFramework.net.payload; - -public class SetPhoneCallStatePayload { - private String type; - private int inCallState; - private String inCallWith; - - public SetPhoneCallStatePayload(int inCallState, String inCallWith) { - this.type = "SET_PHONE_CALL_STATE"; - this.inCallState = inCallState; - this.inCallWith = inCallWith; - } - - public String getType() { - return type; - } - - public int getInCallState() { - return inCallState; - } - - public String getInCallWith() { - return inCallWith; - } -} +package fr.yuki.yrpf.net.payload; + +public class SetPhoneCallStatePayload { + private String type; + private int inCallState; + private String inCallWith; + + public SetPhoneCallStatePayload(int inCallState, String inCallWith) { + this.type = "SET_PHONE_CALL_STATE"; + this.inCallState = inCallState; + this.inCallWith = inCallWith; + } + + public String getType() { + return type; + } + + public int getInCallState() { + return inCallState; + } + + public String getInCallWith() { + return inCallWith; + } +} diff --git a/src/main/java/fr/yuki/YukiRPFramework/net/payload/SetPhoneNumberPayload.java b/src/main/java/fr/yuki/yrpf/net/payload/SetPhoneNumberPayload.java similarity index 85% rename from src/main/java/fr/yuki/YukiRPFramework/net/payload/SetPhoneNumberPayload.java rename to src/main/java/fr/yuki/yrpf/net/payload/SetPhoneNumberPayload.java index b08e697..e646718 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/net/payload/SetPhoneNumberPayload.java +++ b/src/main/java/fr/yuki/yrpf/net/payload/SetPhoneNumberPayload.java @@ -1,19 +1,19 @@ -package fr.yuki.YukiRPFramework.net.payload; - -public class SetPhoneNumberPayload { - private final String type; - private String phoneNumber; - - public SetPhoneNumberPayload(String phoneNumber) { - this.type = "SET_PHONE_NUMBER"; - this.phoneNumber = phoneNumber; - } - - public String getPhoneNumber() { - return phoneNumber; - } - - public String getType() { - return type; - } -} +package fr.yuki.yrpf.net.payload; + +public class SetPhoneNumberPayload { + private final String type; + private String phoneNumber; + + public SetPhoneNumberPayload(String phoneNumber) { + this.type = "SET_PHONE_NUMBER"; + this.phoneNumber = phoneNumber; + } + + public String getPhoneNumber() { + return phoneNumber; + } + + public String getType() { + return type; + } +} diff --git a/src/main/java/fr/yuki/YukiRPFramework/net/payload/SetWindowStatePayload.java b/src/main/java/fr/yuki/yrpf/net/payload/SetWindowStatePayload.java similarity index 88% rename from src/main/java/fr/yuki/YukiRPFramework/net/payload/SetWindowStatePayload.java rename to src/main/java/fr/yuki/yrpf/net/payload/SetWindowStatePayload.java index 6aa211d..a056722 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/net/payload/SetWindowStatePayload.java +++ b/src/main/java/fr/yuki/yrpf/net/payload/SetWindowStatePayload.java @@ -1,25 +1,25 @@ -package fr.yuki.YukiRPFramework.net.payload; - -public class SetWindowStatePayload { - private String type; - private String windowType; - private boolean windowState; - - public SetWindowStatePayload(String windowType, boolean windowState) { - this.type = "SET_WINDOW_STATE"; - this.windowType = windowType; - this.windowState = windowState; - } - - public String getType() { - return type; - } - - public String getWindowType() { - return windowType; - } - - public boolean isWindowState() { - return windowState; - } -} +package fr.yuki.yrpf.net.payload; + +public class SetWindowStatePayload { + private String type; + private String windowType; + private boolean windowState; + + public SetWindowStatePayload(String windowType, boolean windowState) { + this.type = "SET_WINDOW_STATE"; + this.windowType = windowType; + this.windowState = windowState; + } + + public String getType() { + return type; + } + + public String getWindowType() { + return windowType; + } + + public boolean isWindowState() { + return windowState; + } +} diff --git a/src/main/java/fr/yuki/YukiRPFramework/net/payload/SolveUrgencyPayload.java b/src/main/java/fr/yuki/yrpf/net/payload/SolveUrgencyPayload.java similarity index 83% rename from src/main/java/fr/yuki/YukiRPFramework/net/payload/SolveUrgencyPayload.java rename to src/main/java/fr/yuki/yrpf/net/payload/SolveUrgencyPayload.java index 5e00c24..1331cd7 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/net/payload/SolveUrgencyPayload.java +++ b/src/main/java/fr/yuki/yrpf/net/payload/SolveUrgencyPayload.java @@ -1,22 +1,22 @@ -package fr.yuki.YukiRPFramework.net.payload; - -public class SolveUrgencyPayload { - private String service; - private int id; - - public String getService() { - return service; - } - - public void setService(String service) { - this.service = service; - } - - public int getId() { - return id; - } - - public void setId(int id) { - this.id = id; - } -} +package fr.yuki.yrpf.net.payload; + +public class SolveUrgencyPayload { + private String service; + private int id; + + public String getService() { + return service; + } + + public void setService(String service) { + this.service = service; + } + + public int getId() { + return id; + } + + public void setId(int id) { + this.id = id; + } +} diff --git a/src/main/java/fr/yuki/YukiRPFramework/net/payload/StartPhoneCallTimerPayload.java b/src/main/java/fr/yuki/yrpf/net/payload/StartPhoneCallTimerPayload.java similarity index 79% rename from src/main/java/fr/yuki/YukiRPFramework/net/payload/StartPhoneCallTimerPayload.java rename to src/main/java/fr/yuki/yrpf/net/payload/StartPhoneCallTimerPayload.java index 0b6fe74..26bd144 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/net/payload/StartPhoneCallTimerPayload.java +++ b/src/main/java/fr/yuki/yrpf/net/payload/StartPhoneCallTimerPayload.java @@ -1,13 +1,13 @@ -package fr.yuki.YukiRPFramework.net.payload; - -public class StartPhoneCallTimerPayload { - private String type; - - public StartPhoneCallTimerPayload() { - this.type = "START_PHONE_CALL_TIMER"; - } - - public String getType() { - return type; - } -} +package fr.yuki.yrpf.net.payload; + +public class StartPhoneCallTimerPayload { + private String type; + + public StartPhoneCallTimerPayload() { + this.type = "START_PHONE_CALL_TIMER"; + } + + public String getType() { + return type; + } +} diff --git a/src/main/java/fr/yuki/YukiRPFramework/net/payload/StyleSavePartPayload.java b/src/main/java/fr/yuki/yrpf/net/payload/StyleSavePartPayload.java similarity index 85% rename from src/main/java/fr/yuki/YukiRPFramework/net/payload/StyleSavePartPayload.java rename to src/main/java/fr/yuki/yrpf/net/payload/StyleSavePartPayload.java index 5db860c..1507873 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/net/payload/StyleSavePartPayload.java +++ b/src/main/java/fr/yuki/yrpf/net/payload/StyleSavePartPayload.java @@ -1,22 +1,22 @@ -package fr.yuki.YukiRPFramework.net.payload; - -public class StyleSavePartPayload { - private String partType; - private String value; - - public String getPartType() { - return partType; - } - - public void setPartType(String partType) { - this.partType = partType; - } - - public String getValue() { - return value; - } - - public void setValue(String value) { - this.value = value; - } -} +package fr.yuki.yrpf.net.payload; + +public class StyleSavePartPayload { + private String partType; + private String value; + + public String getPartType() { + return partType; + } + + public void setPartType(String partType) { + this.partType = partType; + } + + public String getValue() { + return value; + } + + public void setValue(String value) { + this.value = value; + } +} diff --git a/src/main/java/fr/yuki/YukiRPFramework/net/payload/UpdateInventoryWeightPayload.java b/src/main/java/fr/yuki/yrpf/net/payload/UpdateInventoryWeightPayload.java similarity index 88% rename from src/main/java/fr/yuki/YukiRPFramework/net/payload/UpdateInventoryWeightPayload.java rename to src/main/java/fr/yuki/yrpf/net/payload/UpdateInventoryWeightPayload.java index fd0b8ba..375bbde 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/net/payload/UpdateInventoryWeightPayload.java +++ b/src/main/java/fr/yuki/yrpf/net/payload/UpdateInventoryWeightPayload.java @@ -1,25 +1,25 @@ -package fr.yuki.YukiRPFramework.net.payload; - -public class UpdateInventoryWeightPayload { - private String type; - private float currentWeight; - private float maxWeight; - - public UpdateInventoryWeightPayload(float currentWeight, float maxWeight) { - this.type = "UPDATE_INVENTORY_WEIGHT"; - this.currentWeight = currentWeight; - this.maxWeight = maxWeight; - } - - public String getType() { - return type; - } - - public float getCurrentWeight() { - return currentWeight; - } - - public float getMaxWeight() { - return maxWeight; - } -} +package fr.yuki.yrpf.net.payload; + +public class UpdateInventoryWeightPayload { + private String type; + private float currentWeight; + private float maxWeight; + + public UpdateInventoryWeightPayload(float currentWeight, float maxWeight) { + this.type = "UPDATE_INVENTORY_WEIGHT"; + this.currentWeight = currentWeight; + this.maxWeight = maxWeight; + } + + public String getType() { + return type; + } + + public float getCurrentWeight() { + return currentWeight; + } + + public float getMaxWeight() { + return maxWeight; + } +} diff --git a/src/main/java/fr/yuki/YukiRPFramework/net/payload/UpdateItemInventoryPayload.java b/src/main/java/fr/yuki/yrpf/net/payload/UpdateItemInventoryPayload.java similarity index 87% rename from src/main/java/fr/yuki/YukiRPFramework/net/payload/UpdateItemInventoryPayload.java rename to src/main/java/fr/yuki/yrpf/net/payload/UpdateItemInventoryPayload.java index abc5cd7..3cecc09 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/net/payload/UpdateItemInventoryPayload.java +++ b/src/main/java/fr/yuki/yrpf/net/payload/UpdateItemInventoryPayload.java @@ -1,45 +1,45 @@ -package fr.yuki.YukiRPFramework.net.payload; - -import fr.yuki.YukiRPFramework.inventory.InventoryItem; - -public class UpdateItemInventoryPayload { - public class InventoryItemPayload { - private String id; - private int quantity; - private String itemId; - - public InventoryItemPayload(String id, int quantity, String itemId) { - this.id = id; - this.quantity = quantity; - this.itemId = itemId; - } - - public int getQuantity() { - return quantity; - } - - public String getItemId() { - return itemId; - } - - public String getId() { - return id; - } - } - - private String type; - private InventoryItemPayload item; - - public UpdateItemInventoryPayload(InventoryItem inventoryItem) { - this.type = "UPDATE_ITEM_INVENTORY"; - this.item = new InventoryItemPayload(inventoryItem.getId(), inventoryItem.getAmount(), inventoryItem.getTemplateId()); - } - - public String getType() { - return type; - } - - public InventoryItemPayload getItem() { - return item; - } -} +package fr.yuki.yrpf.net.payload; + +import fr.yuki.yrpf.inventory.InventoryItem; + +public class UpdateItemInventoryPayload { + public class InventoryItemPayload { + private String id; + private int quantity; + private String itemId; + + public InventoryItemPayload(String id, int quantity, String itemId) { + this.id = id; + this.quantity = quantity; + this.itemId = itemId; + } + + public int getQuantity() { + return quantity; + } + + public String getItemId() { + return itemId; + } + + public String getId() { + return id; + } + } + + private String type; + private InventoryItemPayload item; + + public UpdateItemInventoryPayload(InventoryItem inventoryItem) { + this.type = "UPDATE_ITEM_INVENTORY"; + this.item = new InventoryItemPayload(inventoryItem.getId(), inventoryItem.getAmount(), inventoryItem.getTemplateId()); + } + + public String getType() { + return type; + } + + public InventoryItemPayload getItem() { + return item; + } +} diff --git a/src/main/java/fr/yuki/YukiRPFramework/net/payload/UrgencyRequestPayload.java b/src/main/java/fr/yuki/yrpf/net/payload/UrgencyRequestPayload.java similarity index 84% rename from src/main/java/fr/yuki/YukiRPFramework/net/payload/UrgencyRequestPayload.java rename to src/main/java/fr/yuki/yrpf/net/payload/UrgencyRequestPayload.java index 74828e0..54df22a 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/net/payload/UrgencyRequestPayload.java +++ b/src/main/java/fr/yuki/yrpf/net/payload/UrgencyRequestPayload.java @@ -1,22 +1,22 @@ -package fr.yuki.YukiRPFramework.net.payload; - -public class UrgencyRequestPayload { - private String service; - private String text; - - public String getService() { - return service; - } - - public void setService(String service) { - this.service = service; - } - - public String getText() { - return text; - } - - public void setText(String text) { - this.text = text; - } -} +package fr.yuki.yrpf.net.payload; + +public class UrgencyRequestPayload { + private String service; + private String text; + + public String getService() { + return service; + } + + public void setService(String service) { + this.service = service; + } + + public String getText() { + return text; + } + + public void setText(String text) { + this.text = text; + } +} diff --git a/src/main/java/fr/yuki/YukiRPFramework/phone/PhoneCall.java b/src/main/java/fr/yuki/yrpf/phone/PhoneCall.java similarity index 87% rename from src/main/java/fr/yuki/YukiRPFramework/phone/PhoneCall.java rename to src/main/java/fr/yuki/yrpf/phone/PhoneCall.java index c94bf2c..7b9bca8 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/phone/PhoneCall.java +++ b/src/main/java/fr/yuki/yrpf/phone/PhoneCall.java @@ -1,115 +1,114 @@ -package fr.yuki.YukiRPFramework.phone; - -import com.google.gson.Gson; -import fr.yuki.YukiRPFramework.character.CharacterState; -import fr.yuki.YukiRPFramework.manager.CharacterManager; -import fr.yuki.YukiRPFramework.manager.SoundManager; -import fr.yuki.YukiRPFramework.manager.WorldManager; -import fr.yuki.YukiRPFramework.model.Account; -import fr.yuki.YukiRPFramework.net.payload.SetHouseInfosPayload; -import fr.yuki.YukiRPFramework.net.payload.SetPhoneCallStatePayload; -import fr.yuki.YukiRPFramework.net.payload.StartPhoneCallTimerPayload; -import net.onfirenetwork.onsetjava.Onset; -import net.onfirenetwork.onsetjava.entity.Player; -import net.onfirenetwork.onsetjava.enums.Animation; - -public class PhoneCall { - public static int CURRENT_CALL_ID = 1000; - - private int id; - private Player caller; - private Player receiver; - private int state = 1; - - public PhoneCall(Player caller, Player receiver) { - this.id = CURRENT_CALL_ID; - CURRENT_CALL_ID++; - this.caller = caller; - this.receiver = receiver; - } - - public boolean isCaller(Player player) { - return this.caller.getId() == player.getId(); - } - - public void displayCall() { - // Start the call - this.caller.callRemoteEvent("GlobalUI:DispatchToUI", new Gson().toJson(new StartPhoneCallTimerPayload())); - this.receiver.callRemoteEvent("GlobalUI:DispatchToUI", new Gson().toJson(new StartPhoneCallTimerPayload())); - - // Display state - if(state == 1) { // Pending - Account receiverAccount = WorldManager.getPlayerAccount(receiver); - Account callerAccount = WorldManager.getPlayerAccount(caller); - - this.caller.callRemoteEvent("GlobalUI:DispatchToUI", new Gson().toJson(new SetPhoneCallStatePayload(1, - receiverAccount.getPhoneNumber()))); - this.receiver.callRemoteEvent("GlobalUI:DispatchToUI", new Gson().toJson(new SetPhoneCallStatePayload(2, - callerAccount.getPhoneNumber()))); - - SoundManager.playSound2D(this.receiver, "ringtone", "sounds/ringtone.mp3", 0.2); - SoundManager.playSound2D(this.caller, "beep", "sounds/calling_beep.mp3", 0.2); - } - } - - public void begin() { - this.caller.setVoiceChannel(this.id, true); - this.receiver.setVoiceChannel(this.id, true); - Onset.print("Voice channel set to id: " + this.id); - - Account receiverAccount = WorldManager.getPlayerAccount(receiver); - Account callerAccount = WorldManager.getPlayerAccount(caller); - this.state = 2; - this.caller.callRemoteEvent("GlobalUI:DispatchToUI", new Gson().toJson(new SetPhoneCallStatePayload(3, - receiverAccount.getPhoneNumber()))); - this.receiver.callRemoteEvent("GlobalUI:DispatchToUI", new Gson().toJson(new SetPhoneCallStatePayload(3, - callerAccount.getPhoneNumber()))); - - this.caller.setAnimation(Animation.PHONE_TALKING01); - this.receiver.setAnimation(Animation.PHONE_TALKING01); - - SoundManager.stopSound2D(this.receiver, "ringtone"); - SoundManager.stopSound2D(this.caller, "beep"); - } - - public void end() { - if(this.state == 1) { // Pending - this.caller.callRemoteEvent("GlobalUI:DispatchToUI", new Gson().toJson(new SetPhoneCallStatePayload(-1, - ""))); - this.receiver.callRemoteEvent("GlobalUI:DispatchToUI", new Gson().toJson(new SetPhoneCallStatePayload(-1, - ""))); - - SoundManager.playSound2D(this.receiver, "call_end", "sounds/call_end.mp3", 0.2); - SoundManager.playSound2D(this.caller, "call_end", "sounds/call_end.mp3", 0.2); - - - SoundManager.stopSound2D(this.receiver, "ringtone"); - SoundManager.stopSound2D(this.caller, "beep"); - } else if(this.state == 2) { // In call - this.caller.callRemoteEvent("GlobalUI:DispatchToUI", new Gson().toJson(new SetPhoneCallStatePayload(-1, - ""))); - this.receiver.callRemoteEvent("GlobalUI:DispatchToUI", new Gson().toJson(new SetPhoneCallStatePayload(-1, - ""))); - this.caller.setVoiceChannel(this.id, false); - this.receiver.setVoiceChannel(this.id, false); - SoundManager.playSound2D(this.receiver, "call_end", "sounds/call_end.mp3", 0.2); - SoundManager.playSound2D(this.caller, "call_end", "sounds/call_end.mp3", 0.2); - } - - CharacterState callerState = CharacterManager.getCharacterStateByPlayer(this.caller); - CharacterState receiverState = CharacterManager.getCharacterStateByPlayer(this.receiver); - callerState.setCurrentPhoneCall(null); - receiverState.setCurrentPhoneCall(null); - - this.caller.setAnimation(Animation.PHONE_PUTAWAY); - this.receiver.setAnimation(Animation.PHONE_PUTAWAY); - } - - public Player getCaller() { - return caller; - } - - public Player getReceiver() { - return receiver; - } -} +package fr.yuki.yrpf.phone; + +import com.google.gson.Gson; +import fr.yuki.yrpf.character.CharacterState; +import fr.yuki.yrpf.manager.CharacterManager; +import fr.yuki.yrpf.manager.SoundManager; +import fr.yuki.yrpf.manager.WorldManager; +import fr.yuki.yrpf.model.Account; +import fr.yuki.yrpf.net.payload.SetPhoneCallStatePayload; +import fr.yuki.yrpf.net.payload.StartPhoneCallTimerPayload; +import net.onfirenetwork.onsetjava.Onset; +import net.onfirenetwork.onsetjava.entity.Player; +import net.onfirenetwork.onsetjava.enums.Animation; + +public class PhoneCall { + public static int CURRENT_CALL_ID = 1000; + + private int id; + private Player caller; + private Player receiver; + private int state = 1; + + public PhoneCall(Player caller, Player receiver) { + this.id = CURRENT_CALL_ID; + CURRENT_CALL_ID++; + this.caller = caller; + this.receiver = receiver; + } + + public boolean isCaller(Player player) { + return this.caller.getId() == player.getId(); + } + + public void displayCall() { + // Start the call + this.caller.callRemoteEvent("GlobalUI:DispatchToUI", new Gson().toJson(new StartPhoneCallTimerPayload())); + this.receiver.callRemoteEvent("GlobalUI:DispatchToUI", new Gson().toJson(new StartPhoneCallTimerPayload())); + + // Display state + if(state == 1) { // Pending + Account receiverAccount = WorldManager.getPlayerAccount(receiver); + Account callerAccount = WorldManager.getPlayerAccount(caller); + + this.caller.callRemoteEvent("GlobalUI:DispatchToUI", new Gson().toJson(new SetPhoneCallStatePayload(1, + receiverAccount.getPhoneNumber()))); + this.receiver.callRemoteEvent("GlobalUI:DispatchToUI", new Gson().toJson(new SetPhoneCallStatePayload(2, + callerAccount.getPhoneNumber()))); + + SoundManager.playSound2D(this.receiver, "ringtone", "sounds/ringtone.mp3", 0.2); + SoundManager.playSound2D(this.caller, "beep", "sounds/calling_beep.mp3", 0.2); + } + } + + public void begin() { + this.caller.setVoiceChannel(this.id, true); + this.receiver.setVoiceChannel(this.id, true); + Onset.print("Voice channel set to id: " + this.id); + + Account receiverAccount = WorldManager.getPlayerAccount(receiver); + Account callerAccount = WorldManager.getPlayerAccount(caller); + this.state = 2; + this.caller.callRemoteEvent("GlobalUI:DispatchToUI", new Gson().toJson(new SetPhoneCallStatePayload(3, + receiverAccount.getPhoneNumber()))); + this.receiver.callRemoteEvent("GlobalUI:DispatchToUI", new Gson().toJson(new SetPhoneCallStatePayload(3, + callerAccount.getPhoneNumber()))); + + this.caller.setAnimation(Animation.PHONE_TALKING01); + this.receiver.setAnimation(Animation.PHONE_TALKING01); + + SoundManager.stopSound2D(this.receiver, "ringtone"); + SoundManager.stopSound2D(this.caller, "beep"); + } + + public void end() { + if(this.state == 1) { // Pending + this.caller.callRemoteEvent("GlobalUI:DispatchToUI", new Gson().toJson(new SetPhoneCallStatePayload(-1, + ""))); + this.receiver.callRemoteEvent("GlobalUI:DispatchToUI", new Gson().toJson(new SetPhoneCallStatePayload(-1, + ""))); + + SoundManager.playSound2D(this.receiver, "call_end", "sounds/call_end.mp3", 0.2); + SoundManager.playSound2D(this.caller, "call_end", "sounds/call_end.mp3", 0.2); + + + SoundManager.stopSound2D(this.receiver, "ringtone"); + SoundManager.stopSound2D(this.caller, "beep"); + } else if(this.state == 2) { // In call + this.caller.callRemoteEvent("GlobalUI:DispatchToUI", new Gson().toJson(new SetPhoneCallStatePayload(-1, + ""))); + this.receiver.callRemoteEvent("GlobalUI:DispatchToUI", new Gson().toJson(new SetPhoneCallStatePayload(-1, + ""))); + this.caller.setVoiceChannel(this.id, false); + this.receiver.setVoiceChannel(this.id, false); + SoundManager.playSound2D(this.receiver, "call_end", "sounds/call_end.mp3", 0.2); + SoundManager.playSound2D(this.caller, "call_end", "sounds/call_end.mp3", 0.2); + } + + CharacterState callerState = CharacterManager.getCharacterStateByPlayer(this.caller); + CharacterState receiverState = CharacterManager.getCharacterStateByPlayer(this.receiver); + callerState.setCurrentPhoneCall(null); + receiverState.setCurrentPhoneCall(null); + + this.caller.setAnimation(Animation.PHONE_PUTAWAY); + this.receiver.setAnimation(Animation.PHONE_PUTAWAY); + } + + public Player getCaller() { + return caller; + } + + public Player getReceiver() { + return receiver; + } +} diff --git a/src/main/java/fr/yuki/YukiRPFramework/phone/PhoneMessage.java b/src/main/java/fr/yuki/yrpf/phone/PhoneMessage.java similarity index 90% rename from src/main/java/fr/yuki/YukiRPFramework/phone/PhoneMessage.java rename to src/main/java/fr/yuki/yrpf/phone/PhoneMessage.java index 3ff22f5..b4173ea 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/phone/PhoneMessage.java +++ b/src/main/java/fr/yuki/yrpf/phone/PhoneMessage.java @@ -1,40 +1,40 @@ -package fr.yuki.YukiRPFramework.phone; - -public class PhoneMessage { - private String fromNumber; - private String toNumber; - private String message; - private int messageType; - - public String getFromNumber() { - return fromNumber; - } - - public void setFromNumber(String fromNumber) { - this.fromNumber = fromNumber; - } - - public String getToNumber() { - return toNumber; - } - - public void setToNumber(String toNumber) { - this.toNumber = toNumber; - } - - public String getMessage() { - return message; - } - - public void setMessage(String message) { - this.message = message; - } - - public int getMessageType() { - return messageType; - } - - public void setMessageType(int messageType) { - this.messageType = messageType; - } -} +package fr.yuki.yrpf.phone; + +public class PhoneMessage { + private String fromNumber; + private String toNumber; + private String message; + private int messageType; + + public String getFromNumber() { + return fromNumber; + } + + public void setFromNumber(String fromNumber) { + this.fromNumber = fromNumber; + } + + public String getToNumber() { + return toNumber; + } + + public void setToNumber(String toNumber) { + this.toNumber = toNumber; + } + + public String getMessage() { + return message; + } + + public void setMessage(String message) { + this.message = message; + } + + public int getMessageType() { + return messageType; + } + + public void setMessageType(int messageType) { + this.messageType = messageType; + } +} diff --git a/src/main/java/fr/yuki/YukiRPFramework/phone/UrgencyPhoneMessage.java b/src/main/java/fr/yuki/yrpf/phone/UrgencyPhoneMessage.java similarity index 89% rename from src/main/java/fr/yuki/YukiRPFramework/phone/UrgencyPhoneMessage.java rename to src/main/java/fr/yuki/yrpf/phone/UrgencyPhoneMessage.java index d36b880..e28e46f 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/phone/UrgencyPhoneMessage.java +++ b/src/main/java/fr/yuki/yrpf/phone/UrgencyPhoneMessage.java @@ -1,33 +1,33 @@ -package fr.yuki.YukiRPFramework.phone; - -import net.onfirenetwork.onsetjava.data.Vector; - -public class UrgencyPhoneMessage extends PhoneMessage { - private int id; - private String service; - private Vector position; - - public int getId() { - return id; - } - - public void setId(int id) { - this.id = id; - } - - public String getService() { - return service; - } - - public void setService(String service) { - this.service = service; - } - - public Vector getPosition() { - return position; - } - - public void setPosition(Vector position) { - this.position = position; - } -} +package fr.yuki.yrpf.phone; + +import net.onfirenetwork.onsetjava.data.Vector; + +public class UrgencyPhoneMessage extends PhoneMessage { + private int id; + private String service; + private Vector position; + + public int getId() { + return id; + } + + public void setId(int id) { + this.id = id; + } + + public String getService() { + return service; + } + + public void setService(String service) { + this.service = service; + } + + public Vector getPosition() { + return position; + } + + public void setPosition(Vector position) { + this.position = position; + } +} diff --git a/src/main/java/fr/yuki/YukiRPFramework/tebex/TebexAPI.java b/src/main/java/fr/yuki/yrpf/tebex/TebexAPI.java similarity index 89% rename from src/main/java/fr/yuki/YukiRPFramework/tebex/TebexAPI.java rename to src/main/java/fr/yuki/yrpf/tebex/TebexAPI.java index 504293e..31bc7f5 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/tebex/TebexAPI.java +++ b/src/main/java/fr/yuki/yrpf/tebex/TebexAPI.java @@ -1,88 +1,86 @@ -package fr.yuki.YukiRPFramework.tebex; - -import com.google.gson.FieldNamingPolicy; -import com.google.gson.Gson; -import com.google.gson.GsonBuilder; -import fr.yuki.YukiRPFramework.tebex.responses.Command; -import fr.yuki.YukiRPFramework.tebex.responses.TebexCommandQueue; -import fr.yuki.YukiRPFramework.tebex.responses.TebexInformationResponse; -import net.onfirenetwork.onsetjava.Onset; -import sun.net.www.http.HttpClient; - -import java.io.BufferedReader; -import java.io.IOException; -import java.io.InputStreamReader; -import java.net.HttpURLConnection; -import java.net.MalformedURLException; -import java.net.URL; - -public class TebexAPI { - private String secretKey; - private String baseUrl = "https://plugin.tebex.io"; - - public TebexAPI(String secretKey) throws Exception { - this.secretKey = secretKey; - TebexInformationResponse tebexInformationResponse = this.verifySecret(); - if(tebexInformationResponse == null) { - throw new Exception("Can't initialize TebexAPI"); - } - Onset.print("Tebex account is " + tebexInformationResponse.getAccount().getName() + " with currency " + tebexInformationResponse.getAccount().getCurrency().getSymbol()); - } - - private HttpURLConnection getTebexRequest(String path, String method) throws IOException { - HttpURLConnection con = (HttpURLConnection) new URL(this.baseUrl + path).openConnection(); - con.setRequestMethod(method); - con.setRequestProperty("X-Tebex-Secret", this.secretKey); - con.setRequestProperty("user-agent", "Onset Server"); - return con; - } - - private String readyBody(HttpURLConnection con) throws IOException { - BufferedReader in = new BufferedReader( - new InputStreamReader(con.getInputStream())); - String inputLine; - StringBuffer response = new StringBuffer(); - - while ((inputLine = in.readLine()) != null) { - response.append(inputLine); - } - in.close(); - return response.toString(); - } - - private TebexInformationResponse verifySecret() throws IOException { - HttpURLConnection request = this.getTebexRequest("/information", "GET"); - try { - int responseCode = request.getResponseCode(); - String body = this.readyBody(request); - Gson gson = new GsonBuilder().setFieldNamingPolicy(FieldNamingPolicy.LOWER_CASE_WITH_UNDERSCORES).create(); - return gson.fromJson(body, TebexInformationResponse.class); - } catch (IOException e) { - e.printStackTrace(); - return null; - } - } - - public TebexCommandQueue getCommandQueues() throws IOException { - HttpURLConnection request = this.getTebexRequest("/queue/offline-commands", "GET"); - try { - int responseCode = request.getResponseCode(); - String body = this.readyBody(request); - Gson gson = new GsonBuilder().setFieldNamingPolicy(FieldNamingPolicy.LOWER_CASE_WITH_UNDERSCORES).create(); - return gson.fromJson(body, TebexCommandQueue.class); - } catch (IOException e) { - e.printStackTrace(); - return null; - } - } - - public void deleteCommand(Command command) throws IOException { - HttpURLConnection request = this.getTebexRequest("/queue?ids[]=" + command.getID(), "DELETE"); - try { - int responseCode = request.getResponseCode(); - String body = this.readyBody(request); - } catch (IOException e) { - e.printStackTrace(); - } - } -} +package fr.yuki.yrpf.tebex; + +import com.google.gson.FieldNamingPolicy; +import com.google.gson.Gson; +import com.google.gson.GsonBuilder; +import fr.yuki.yrpf.tebex.responses.Command; +import fr.yuki.yrpf.tebex.responses.TebexCommandQueue; +import fr.yuki.yrpf.tebex.responses.TebexInformationResponse; +import net.onfirenetwork.onsetjava.Onset; + +import java.io.BufferedReader; +import java.io.IOException; +import java.io.InputStreamReader; +import java.net.HttpURLConnection; +import java.net.URL; + +public class TebexAPI { + private String secretKey; + private String baseUrl = "https://plugin.tebex.io"; + + public TebexAPI(String secretKey) throws Exception { + this.secretKey = secretKey; + TebexInformationResponse tebexInformationResponse = this.verifySecret(); + if(tebexInformationResponse == null) { + throw new Exception("Can't initialize TebexAPI"); + } + Onset.print("Tebex account is " + tebexInformationResponse.getAccount().getName() + " with currency " + tebexInformationResponse.getAccount().getCurrency().getSymbol()); + } + + private HttpURLConnection getTebexRequest(String path, String method) throws IOException { + HttpURLConnection con = (HttpURLConnection) new URL(this.baseUrl + path).openConnection(); + con.setRequestMethod(method); + con.setRequestProperty("X-Tebex-Secret", this.secretKey); + con.setRequestProperty("user-agent", "Onset Server"); + return con; + } + + private String readyBody(HttpURLConnection con) throws IOException { + BufferedReader in = new BufferedReader( + new InputStreamReader(con.getInputStream())); + String inputLine; + StringBuffer response = new StringBuffer(); + + while ((inputLine = in.readLine()) != null) { + response.append(inputLine); + } + in.close(); + return response.toString(); + } + + private TebexInformationResponse verifySecret() throws IOException { + HttpURLConnection request = this.getTebexRequest("/information", "GET"); + try { + int responseCode = request.getResponseCode(); + String body = this.readyBody(request); + Gson gson = new GsonBuilder().setFieldNamingPolicy(FieldNamingPolicy.LOWER_CASE_WITH_UNDERSCORES).create(); + return gson.fromJson(body, TebexInformationResponse.class); + } catch (IOException e) { + e.printStackTrace(); + return null; + } + } + + public TebexCommandQueue getCommandQueues() throws IOException { + HttpURLConnection request = this.getTebexRequest("/queue/offline-commands", "GET"); + try { + int responseCode = request.getResponseCode(); + String body = this.readyBody(request); + Gson gson = new GsonBuilder().setFieldNamingPolicy(FieldNamingPolicy.LOWER_CASE_WITH_UNDERSCORES).create(); + return gson.fromJson(body, TebexCommandQueue.class); + } catch (IOException e) { + e.printStackTrace(); + return null; + } + } + + public void deleteCommand(Command command) throws IOException { + HttpURLConnection request = this.getTebexRequest("/queue?ids[]=" + command.getID(), "DELETE"); + try { + int responseCode = request.getResponseCode(); + String body = this.readyBody(request); + } catch (IOException e) { + e.printStackTrace(); + } + } +} diff --git a/src/main/java/fr/yuki/YukiRPFramework/tebex/responses/Account.java b/src/main/java/fr/yuki/yrpf/tebex/responses/Account.java similarity index 92% rename from src/main/java/fr/yuki/YukiRPFramework/tebex/responses/Account.java rename to src/main/java/fr/yuki/yrpf/tebex/responses/Account.java index 211c84e..c63e946 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/tebex/responses/Account.java +++ b/src/main/java/fr/yuki/yrpf/tebex/responses/Account.java @@ -1,33 +1,33 @@ -package fr.yuki.YukiRPFramework.tebex.responses; - - -public class Account { - private long id; - private String domain; - private String name; - private Currency currency; - private boolean onlineMode; - private String gameType; - private boolean logEvents; - - public long getID() { return id; } - public void setID(long value) { this.id = value; } - - public String getDomain() { return domain; } - public void setDomain(String value) { this.domain = value; } - - public String getName() { return name; } - public void setName(String value) { this.name = value; } - - public Currency getCurrency() { return currency; } - public void setCurrency(Currency value) { this.currency = value; } - - public boolean getOnlineMode() { return onlineMode; } - public void setOnlineMode(boolean value) { this.onlineMode = value; } - - public String getGameType() { return gameType; } - public void setGameType(String value) { this.gameType = value; } - - public boolean getLogEvents() { return logEvents; } - public void setLogEvents(boolean value) { this.logEvents = value; } +package fr.yuki.yrpf.tebex.responses; + + +public class Account { + private long id; + private String domain; + private String name; + private Currency currency; + private boolean onlineMode; + private String gameType; + private boolean logEvents; + + public long getID() { return id; } + public void setID(long value) { this.id = value; } + + public String getDomain() { return domain; } + public void setDomain(String value) { this.domain = value; } + + public String getName() { return name; } + public void setName(String value) { this.name = value; } + + public Currency getCurrency() { return currency; } + public void setCurrency(Currency value) { this.currency = value; } + + public boolean getOnlineMode() { return onlineMode; } + public void setOnlineMode(boolean value) { this.onlineMode = value; } + + public String getGameType() { return gameType; } + public void setGameType(String value) { this.gameType = value; } + + public boolean getLogEvents() { return logEvents; } + public void setLogEvents(boolean value) { this.logEvents = value; } } \ No newline at end of file diff --git a/src/main/java/fr/yuki/YukiRPFramework/tebex/responses/Command.java b/src/main/java/fr/yuki/yrpf/tebex/responses/Command.java similarity index 92% rename from src/main/java/fr/yuki/YukiRPFramework/tebex/responses/Command.java rename to src/main/java/fr/yuki/yrpf/tebex/responses/Command.java index 0d24ef0..635521f 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/tebex/responses/Command.java +++ b/src/main/java/fr/yuki/yrpf/tebex/responses/Command.java @@ -1,28 +1,28 @@ -package fr.yuki.YukiRPFramework.tebex.responses; - -public class Command { - private long id; - private String command; - private long payment; - private long commandPackage; - private Conditions conditions; - private TebexPlayer player; - - public long getID() { return id; } - public void setID(long value) { this.id = value; } - - public String getCommand() { return command; } - public void setCommand(String value) { this.command = value; } - - public long getPayment() { return payment; } - public void setPayment(long value) { this.payment = value; } - - public long getCommandPackage() { return commandPackage; } - public void setCommandPackage(long value) { this.commandPackage = value; } - - public Conditions getConditions() { return conditions; } - public void setConditions(Conditions value) { this.conditions = value; } - - public TebexPlayer getPlayer() { return player; } - public void setPlayer(TebexPlayer value) { this.player = value; } +package fr.yuki.yrpf.tebex.responses; + +public class Command { + private long id; + private String command; + private long payment; + private long commandPackage; + private Conditions conditions; + private TebexPlayer player; + + public long getID() { return id; } + public void setID(long value) { this.id = value; } + + public String getCommand() { return command; } + public void setCommand(String value) { this.command = value; } + + public long getPayment() { return payment; } + public void setPayment(long value) { this.payment = value; } + + public long getCommandPackage() { return commandPackage; } + public void setCommandPackage(long value) { this.commandPackage = value; } + + public Conditions getConditions() { return conditions; } + public void setConditions(Conditions value) { this.conditions = value; } + + public TebexPlayer getPlayer() { return player; } + public void setPlayer(TebexPlayer value) { this.player = value; } } \ No newline at end of file diff --git a/src/main/java/fr/yuki/YukiRPFramework/tebex/responses/Conditions.java b/src/main/java/fr/yuki/yrpf/tebex/responses/Conditions.java similarity index 73% rename from src/main/java/fr/yuki/YukiRPFramework/tebex/responses/Conditions.java rename to src/main/java/fr/yuki/yrpf/tebex/responses/Conditions.java index bab7e54..f54b008 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/tebex/responses/Conditions.java +++ b/src/main/java/fr/yuki/yrpf/tebex/responses/Conditions.java @@ -1,8 +1,8 @@ -package fr.yuki.YukiRPFramework.tebex.responses; - -public class Conditions { - private long delay; - - public long getDelay() { return delay; } - public void setDelay(long value) { this.delay = value; } +package fr.yuki.yrpf.tebex.responses; + +public class Conditions { + private long delay; + + public long getDelay() { return delay; } + public void setDelay(long value) { this.delay = value; } } \ No newline at end of file diff --git a/src/main/java/fr/yuki/YukiRPFramework/tebex/responses/Currency.java b/src/main/java/fr/yuki/yrpf/tebex/responses/Currency.java similarity index 84% rename from src/main/java/fr/yuki/YukiRPFramework/tebex/responses/Currency.java rename to src/main/java/fr/yuki/yrpf/tebex/responses/Currency.java index fb8d187..3803f3a 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/tebex/responses/Currency.java +++ b/src/main/java/fr/yuki/yrpf/tebex/responses/Currency.java @@ -1,12 +1,12 @@ -package fr.yuki.YukiRPFramework.tebex.responses; - -public class Currency { - private String iso4217; - private String symbol; - - public String getIso4217() { return iso4217; } - public void setIso4217(String value) { this.iso4217 = value; } - - public String getSymbol() { return symbol; } - public void setSymbol(String value) { this.symbol = value; } +package fr.yuki.yrpf.tebex.responses; + +public class Currency { + private String iso4217; + private String symbol; + + public String getIso4217() { return iso4217; } + public void setIso4217(String value) { this.iso4217 = value; } + + public String getSymbol() { return symbol; } + public void setSymbol(String value) { this.symbol = value; } } \ No newline at end of file diff --git a/src/main/java/fr/yuki/YukiRPFramework/tebex/responses/PlayerMeta.java b/src/main/java/fr/yuki/yrpf/tebex/responses/PlayerMeta.java similarity index 88% rename from src/main/java/fr/yuki/YukiRPFramework/tebex/responses/PlayerMeta.java rename to src/main/java/fr/yuki/yrpf/tebex/responses/PlayerMeta.java index 84a02dd..e0ee56c 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/tebex/responses/PlayerMeta.java +++ b/src/main/java/fr/yuki/yrpf/tebex/responses/PlayerMeta.java @@ -1,16 +1,16 @@ -package fr.yuki.YukiRPFramework.tebex.responses; - -public class PlayerMeta { - private String avatar; - private String avatarfull; - private String steamID; - - public String getAvatar() { return avatar; } - public void setAvatar(String value) { this.avatar = value; } - - public String getAvatarfull() { return avatarfull; } - public void setAvatarfull(String value) { this.avatarfull = value; } - - public String getSteamID() { return steamID; } - public void setSteamID(String value) { this.steamID = value; } +package fr.yuki.yrpf.tebex.responses; + +public class PlayerMeta { + private String avatar; + private String avatarfull; + private String steamID; + + public String getAvatar() { return avatar; } + public void setAvatar(String value) { this.avatar = value; } + + public String getAvatarfull() { return avatarfull; } + public void setAvatarfull(String value) { this.avatarfull = value; } + + public String getSteamID() { return steamID; } + public void setSteamID(String value) { this.steamID = value; } } \ No newline at end of file diff --git a/src/main/java/fr/yuki/YukiRPFramework/tebex/responses/Server.java b/src/main/java/fr/yuki/yrpf/tebex/responses/Server.java similarity index 81% rename from src/main/java/fr/yuki/YukiRPFramework/tebex/responses/Server.java rename to src/main/java/fr/yuki/yrpf/tebex/responses/Server.java index 3f08897..3d1339a 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/tebex/responses/Server.java +++ b/src/main/java/fr/yuki/yrpf/tebex/responses/Server.java @@ -1,12 +1,12 @@ -package fr.yuki.YukiRPFramework.tebex.responses; - -public class Server { - private long id; - private String name; - - public long getID() { return id; } - public void setID(long value) { this.id = value; } - - public String getName() { return name; } - public void setName(String value) { this.name = value; } +package fr.yuki.yrpf.tebex.responses; + +public class Server { + private long id; + private String name; + + public long getID() { return id; } + public void setID(long value) { this.id = value; } + + public String getName() { return name; } + public void setName(String value) { this.name = value; } } \ No newline at end of file diff --git a/src/main/java/fr/yuki/YukiRPFramework/tebex/responses/TebexCommandQueue.java b/src/main/java/fr/yuki/yrpf/tebex/responses/TebexCommandQueue.java similarity index 85% rename from src/main/java/fr/yuki/YukiRPFramework/tebex/responses/TebexCommandQueue.java rename to src/main/java/fr/yuki/yrpf/tebex/responses/TebexCommandQueue.java index 25fc28a..441bc8a 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/tebex/responses/TebexCommandQueue.java +++ b/src/main/java/fr/yuki/yrpf/tebex/responses/TebexCommandQueue.java @@ -1,12 +1,12 @@ -package fr.yuki.YukiRPFramework.tebex.responses; - -public class TebexCommandQueue { - private TebexCommandQueueMeta meta; - private Command[] commands; - - public TebexCommandQueueMeta getMeta() { return meta; } - public void setMeta(TebexCommandQueueMeta value) { this.meta = value; } - - public Command[] getCommands() { return commands; } - public void setCommands(Command[] value) { this.commands = value; } -} +package fr.yuki.yrpf.tebex.responses; + +public class TebexCommandQueue { + private TebexCommandQueueMeta meta; + private Command[] commands; + + public TebexCommandQueueMeta getMeta() { return meta; } + public void setMeta(TebexCommandQueueMeta value) { this.meta = value; } + + public Command[] getCommands() { return commands; } + public void setCommands(Command[] value) { this.commands = value; } +} diff --git a/src/main/java/fr/yuki/YukiRPFramework/tebex/responses/TebexCommandQueueMeta.java b/src/main/java/fr/yuki/yrpf/tebex/responses/TebexCommandQueueMeta.java similarity index 77% rename from src/main/java/fr/yuki/YukiRPFramework/tebex/responses/TebexCommandQueueMeta.java rename to src/main/java/fr/yuki/yrpf/tebex/responses/TebexCommandQueueMeta.java index c42a024..1997c0a 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/tebex/responses/TebexCommandQueueMeta.java +++ b/src/main/java/fr/yuki/yrpf/tebex/responses/TebexCommandQueueMeta.java @@ -1,8 +1,8 @@ -package fr.yuki.YukiRPFramework.tebex.responses; - -public class TebexCommandQueueMeta { - private boolean limited; - - public boolean getLimited() { return limited; } - public void setLimited(boolean value) { this.limited = value; } +package fr.yuki.yrpf.tebex.responses; + +public class TebexCommandQueueMeta { + private boolean limited; + + public boolean getLimited() { return limited; } + public void setLimited(boolean value) { this.limited = value; } } \ No newline at end of file diff --git a/src/main/java/fr/yuki/YukiRPFramework/tebex/responses/TebexInformationResponse.java b/src/main/java/fr/yuki/yrpf/tebex/responses/TebexInformationResponse.java similarity index 84% rename from src/main/java/fr/yuki/YukiRPFramework/tebex/responses/TebexInformationResponse.java rename to src/main/java/fr/yuki/yrpf/tebex/responses/TebexInformationResponse.java index b5b2cfe..131c2f2 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/tebex/responses/TebexInformationResponse.java +++ b/src/main/java/fr/yuki/yrpf/tebex/responses/TebexInformationResponse.java @@ -1,12 +1,12 @@ -package fr.yuki.YukiRPFramework.tebex.responses; - -public class TebexInformationResponse { - private Account account; - private Server server; - - public Account getAccount() { return account; } - public void setAccount(Account value) { this.account = value; } - - public Server getServer() { return server; } - public void setServer(Server value) { this.server = value; } -} +package fr.yuki.yrpf.tebex.responses; + +public class TebexInformationResponse { + private Account account; + private Server server; + + public Account getAccount() { return account; } + public void setAccount(Account value) { this.account = value; } + + public Server getServer() { return server; } + public void setServer(Server value) { this.server = value; } +} diff --git a/src/main/java/fr/yuki/YukiRPFramework/tebex/responses/TebexPlayer.java b/src/main/java/fr/yuki/yrpf/tebex/responses/TebexPlayer.java similarity index 89% rename from src/main/java/fr/yuki/YukiRPFramework/tebex/responses/TebexPlayer.java rename to src/main/java/fr/yuki/yrpf/tebex/responses/TebexPlayer.java index 417bc4e..991bb46 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/tebex/responses/TebexPlayer.java +++ b/src/main/java/fr/yuki/yrpf/tebex/responses/TebexPlayer.java @@ -1,20 +1,20 @@ -package fr.yuki.YukiRPFramework.tebex.responses; - -public class TebexPlayer { - private String id; - private String name; - private String uuid; - private PlayerMeta meta; - - public String getID() { return id; } - public void setID(String value) { this.id = value; } - - public String getName() { return name; } - public void setName(String value) { this.name = value; } - - public String getUUID() { return uuid; } - public void setUUID(String value) { this.uuid = value; } - - public PlayerMeta getMeta() { return meta; } - public void setMeta(PlayerMeta value) { this.meta = value; } +package fr.yuki.yrpf.tebex.responses; + +public class TebexPlayer { + private String id; + private String name; + private String uuid; + private PlayerMeta meta; + + public String getID() { return id; } + public void setID(String value) { this.id = value; } + + public String getName() { return name; } + public void setName(String value) { this.name = value; } + + public String getUUID() { return uuid; } + public void setUUID(String value) { this.uuid = value; } + + public PlayerMeta getMeta() { return meta; } + public void setMeta(PlayerMeta value) { this.meta = value; } } \ No newline at end of file diff --git a/src/main/java/fr/yuki/YukiRPFramework/ui/GenericMenu.java b/src/main/java/fr/yuki/yrpf/ui/GenericMenu.java similarity index 82% rename from src/main/java/fr/yuki/YukiRPFramework/ui/GenericMenu.java rename to src/main/java/fr/yuki/yrpf/ui/GenericMenu.java index 687b8d1..d6f2814 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/ui/GenericMenu.java +++ b/src/main/java/fr/yuki/yrpf/ui/GenericMenu.java @@ -1,42 +1,42 @@ -package fr.yuki.YukiRPFramework.ui; - -import com.google.gson.Gson; -import fr.yuki.YukiRPFramework.manager.UIStateManager; -import fr.yuki.YukiRPFramework.net.payload.AddGenericMenuItemPayload; -import fr.yuki.YukiRPFramework.net.payload.ClearGenericMenuPayload; -import net.onfirenetwork.onsetjava.entity.Player; - -import java.util.ArrayList; - -public class GenericMenu { - private Player player; - private ArrayList items; - - public GenericMenu(Player player) { - this.player = player; - this.items = new ArrayList<>(); - } - - public void show() { - if(!UIStateManager.handleUIToogle(player, "genericMenu")) - UIStateManager.handleUIToogle(player, "genericMenu"); - player.callRemoteEvent("GlobalUI:DispatchToUI", new Gson().toJson(new ClearGenericMenuPayload())); - for(GenericMenuItem menuItem : this.items) { - player.callRemoteEvent("GlobalUI:DispatchToUI", new Gson().toJson - (new AddGenericMenuItemPayload(menuItem.getText(), menuItem.getAction()))); - } - } - - public void addCloseItem() { - this.getItems().add(new GenericMenuItem("Fermer", "window.CallEvent(\"RemoteCallInterface\", \"GenericMenu:Dismiss\");")); - } - - public void hide() { - if(UIStateManager.handleUIToogle(player, "genericMenu")) - UIStateManager.handleUIToogle(player, "genericMenu"); - } - - public ArrayList getItems() { - return items; - } -} +package fr.yuki.yrpf.ui; + +import com.google.gson.Gson; +import fr.yuki.yrpf.manager.UIStateManager; +import fr.yuki.yrpf.net.payload.AddGenericMenuItemPayload; +import fr.yuki.yrpf.net.payload.ClearGenericMenuPayload; +import net.onfirenetwork.onsetjava.entity.Player; + +import java.util.ArrayList; + +public class GenericMenu { + private Player player; + private ArrayList items; + + public GenericMenu(Player player) { + this.player = player; + this.items = new ArrayList<>(); + } + + public void show() { + if(!UIStateManager.handleUIToogle(player, "genericMenu")) + UIStateManager.handleUIToogle(player, "genericMenu"); + player.callRemoteEvent("GlobalUI:DispatchToUI", new Gson().toJson(new ClearGenericMenuPayload())); + for(GenericMenuItem menuItem : this.items) { + player.callRemoteEvent("GlobalUI:DispatchToUI", new Gson().toJson + (new AddGenericMenuItemPayload(menuItem.getText(), menuItem.getAction()))); + } + } + + public void addCloseItem() { + this.getItems().add(new GenericMenuItem("Fermer", "window.CallEvent(\"RemoteCallInterface\", \"GenericMenu:Dismiss\");")); + } + + public void hide() { + if(UIStateManager.handleUIToogle(player, "genericMenu")) + UIStateManager.handleUIToogle(player, "genericMenu"); + } + + public ArrayList getItems() { + return items; + } +} diff --git a/src/main/java/fr/yuki/YukiRPFramework/ui/GenericMenuItem.java b/src/main/java/fr/yuki/yrpf/ui/GenericMenuItem.java similarity index 85% rename from src/main/java/fr/yuki/YukiRPFramework/ui/GenericMenuItem.java rename to src/main/java/fr/yuki/yrpf/ui/GenericMenuItem.java index b2d8567..baae9da 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/ui/GenericMenuItem.java +++ b/src/main/java/fr/yuki/yrpf/ui/GenericMenuItem.java @@ -1,19 +1,19 @@ -package fr.yuki.YukiRPFramework.ui; - -public class GenericMenuItem { - private String text; - private String action; - - public GenericMenuItem(String text, String action) { - this.text = text; - this.action = action; - } - - public String getText() { - return text; - } - - public String getAction() { - return action; - } -} +package fr.yuki.yrpf.ui; + +public class GenericMenuItem { + private String text; + private String action; + + public GenericMenuItem(String text, String action) { + this.text = text; + this.action = action; + } + + public String getText() { + return text; + } + + public String getAction() { + return action; + } +} diff --git a/src/main/java/fr/yuki/YukiRPFramework/ui/UIState.java b/src/main/java/fr/yuki/yrpf/ui/UIState.java similarity index 94% rename from src/main/java/fr/yuki/YukiRPFramework/ui/UIState.java rename to src/main/java/fr/yuki/yrpf/ui/UIState.java index 3178b20..4d315cf 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/ui/UIState.java +++ b/src/main/java/fr/yuki/yrpf/ui/UIState.java @@ -1,148 +1,148 @@ -package fr.yuki.YukiRPFramework.ui; - -public class UIState { - private boolean inventory = false; - private boolean atm = false; - private boolean garage = false; - private boolean vseller = false; - private boolean customCharacter = false; - private boolean vchest = false; - private boolean bigmap = false; - private boolean death = false; - private boolean characterJob = false; - private boolean seller = false; - private boolean statewindow = false; - private boolean growboxmenu = false; - private boolean phone = false; - private boolean houseBuy = false; - private boolean genericMenu = false; - private boolean customOutfit = false; - - public boolean isInventory() { - return inventory; - } - - public void setInventory(boolean inventory) { - this.inventory = inventory; - } - - public boolean isAtm() { - return atm; - } - - public void setAtm(boolean atm) { - this.atm = atm; - } - - public boolean isGarage() { - return garage; - } - - public void setGarage(boolean garage) { - this.garage = garage; - } - - public boolean isVseller() { - return vseller; - } - - public void setVseller(boolean vseller) { - this.vseller = vseller; - } - - public boolean isCustomCharacter() { - return customCharacter; - } - - public void setCustomCharacter(boolean customCharacter) { - this.customCharacter = customCharacter; - } - - public boolean isVchest() { - return vchest; - } - - public void setVchest(boolean vchest) { - this.vchest = vchest; - } - - public boolean isBigmap() { - return bigmap; - } - - public void setBigmap(boolean bigmap) { - this.bigmap = bigmap; - } - - public boolean isDeath() { - return death; - } - - public void setDeath(boolean death) { - this.death = death; - } - - public boolean isCharacterJob() { - return characterJob; - } - - public void setCharacterJob(boolean characterJob) { - this.characterJob = characterJob; - } - - public boolean isSeller() { - return seller; - } - - public void setSeller(boolean seller) { - this.seller = seller; - } - - public boolean isStatewindow() { - return statewindow; - } - - public void setStatewindow(boolean statewindow) { - this.statewindow = statewindow; - } - - public boolean isGrowboxmenu() { - return growboxmenu; - } - - public void setGrowboxmenu(boolean growboxmenu) { - this.growboxmenu = growboxmenu; - } - - public boolean isPhone() { - return phone; - } - - public void setPhone(boolean phone) { - this.phone = phone; - } - - public boolean isHouseBuy() { - return houseBuy; - } - - public void setHouseBuy(boolean houseBuy) { - this.houseBuy = houseBuy; - } - - public boolean isGenericMenu() { - return genericMenu; - } - - public void setGenericMenu(boolean genericMenu) { - this.genericMenu = genericMenu; - } - - public boolean isCustomOutfit() { - return customOutfit; - } - - public void setCustomOutfit(boolean customOutfit) { - this.customOutfit = customOutfit; - } -} +package fr.yuki.yrpf.ui; + +public class UIState { + private boolean inventory = false; + private boolean atm = false; + private boolean garage = false; + private boolean vseller = false; + private boolean customCharacter = false; + private boolean vchest = false; + private boolean bigmap = false; + private boolean death = false; + private boolean characterJob = false; + private boolean seller = false; + private boolean statewindow = false; + private boolean growboxmenu = false; + private boolean phone = false; + private boolean houseBuy = false; + private boolean genericMenu = false; + private boolean customOutfit = false; + + public boolean isInventory() { + return inventory; + } + + public void setInventory(boolean inventory) { + this.inventory = inventory; + } + + public boolean isAtm() { + return atm; + } + + public void setAtm(boolean atm) { + this.atm = atm; + } + + public boolean isGarage() { + return garage; + } + + public void setGarage(boolean garage) { + this.garage = garage; + } + + public boolean isVseller() { + return vseller; + } + + public void setVseller(boolean vseller) { + this.vseller = vseller; + } + + public boolean isCustomCharacter() { + return customCharacter; + } + + public void setCustomCharacter(boolean customCharacter) { + this.customCharacter = customCharacter; + } + + public boolean isVchest() { + return vchest; + } + + public void setVchest(boolean vchest) { + this.vchest = vchest; + } + + public boolean isBigmap() { + return bigmap; + } + + public void setBigmap(boolean bigmap) { + this.bigmap = bigmap; + } + + public boolean isDeath() { + return death; + } + + public void setDeath(boolean death) { + this.death = death; + } + + public boolean isCharacterJob() { + return characterJob; + } + + public void setCharacterJob(boolean characterJob) { + this.characterJob = characterJob; + } + + public boolean isSeller() { + return seller; + } + + public void setSeller(boolean seller) { + this.seller = seller; + } + + public boolean isStatewindow() { + return statewindow; + } + + public void setStatewindow(boolean statewindow) { + this.statewindow = statewindow; + } + + public boolean isGrowboxmenu() { + return growboxmenu; + } + + public void setGrowboxmenu(boolean growboxmenu) { + this.growboxmenu = growboxmenu; + } + + public boolean isPhone() { + return phone; + } + + public void setPhone(boolean phone) { + this.phone = phone; + } + + public boolean isHouseBuy() { + return houseBuy; + } + + public void setHouseBuy(boolean houseBuy) { + this.houseBuy = houseBuy; + } + + public boolean isGenericMenu() { + return genericMenu; + } + + public void setGenericMenu(boolean genericMenu) { + this.genericMenu = genericMenu; + } + + public boolean isCustomOutfit() { + return customOutfit; + } + + public void setCustomOutfit(boolean customOutfit) { + this.customOutfit = customOutfit; + } +} diff --git a/src/main/java/fr/yuki/YukiRPFramework/utils/Basic.java b/src/main/java/fr/yuki/yrpf/utils/Basic.java similarity index 75% rename from src/main/java/fr/yuki/YukiRPFramework/utils/Basic.java rename to src/main/java/fr/yuki/yrpf/utils/Basic.java index e4e6c38..be73266 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/utils/Basic.java +++ b/src/main/java/fr/yuki/yrpf/utils/Basic.java @@ -1,7 +1,7 @@ -package fr.yuki.YukiRPFramework.utils; - -public class Basic { - public static int randomNumber(int min, int max) { - return (int)(Math.random() * (max+1-min)) + min; - } -} +package fr.yuki.yrpf.utils; + +public class Basic { + public static int randomNumber(int min, int max) { + return (int)(Math.random() * (max+1-min)) + min; + } +} diff --git a/src/main/java/fr/yuki/YukiRPFramework/utils/ServerConfig.java b/src/main/java/fr/yuki/yrpf/utils/ServerConfig.java similarity index 94% rename from src/main/java/fr/yuki/YukiRPFramework/utils/ServerConfig.java rename to src/main/java/fr/yuki/yrpf/utils/ServerConfig.java index 080ede7..5b11419 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/utils/ServerConfig.java +++ b/src/main/java/fr/yuki/yrpf/utils/ServerConfig.java @@ -1,184 +1,184 @@ -package fr.yuki.YukiRPFramework.utils; - -public class ServerConfig { - private double deathRespawnX; - private double deathRespawnY; - private double deathRespawnZ; - private double deathRespawnH; - private int deathRespawnDelay; - private double spawnPointX; - private double spawnPointY; - private double spawnPointZ; - private double spawnPointH; - private int xpRate; - private String sqlHost; - private String sqlUsername; - private String sqlPassword; - private String sqlDb; - private String langPath; - private String serverLanguage; - private String tebexSecretKey; - private int timePerHour; - private int startHour; - private String welcomeMessage; - - public double getDeathRespawnX() { - return deathRespawnX; - } - - public void setDeathRespawnX(double deathRespawnX) { - this.deathRespawnX = deathRespawnX; - } - - public double getDeathRespawnY() { - return deathRespawnY; - } - - public void setDeathRespawnY(double deathRespawnY) { - this.deathRespawnY = deathRespawnY; - } - - public double getDeathRespawnZ() { - return deathRespawnZ; - } - - public void setDeathRespawnZ(double deathRespawnZ) { - this.deathRespawnZ = deathRespawnZ; - } - - public double getDeathRespawnH() { - return deathRespawnH; - } - - public void setDeathRespawnH(double deathRespawnH) { - this.deathRespawnH = deathRespawnH; - } - - public int getDeathRespawnDelay() { - return deathRespawnDelay; - } - - public void setDeathRespawnDelay(int deathRespawnDelay) { - this.deathRespawnDelay = deathRespawnDelay; - } - - public int getXpRate() { - return xpRate; - } - - public void setXpRate(int xpRate) { - this.xpRate = xpRate; - } - - public String getSqlHost() { - return sqlHost; - } - - public void setSqlHost(String sqlHost) { - this.sqlHost = sqlHost; - } - - public String getSqlUsername() { - return sqlUsername; - } - - public void setSqlUsername(String sqlUsername) { - this.sqlUsername = sqlUsername; - } - - public String getSqlDb() { - return sqlDb; - } - - public void setSqlDb(String sqlDb) { - this.sqlDb = sqlDb; - } - - public String getSqlPassword() { - return sqlPassword; - } - - public void setSqlPassword(String sqlPassword) { - this.sqlPassword = sqlPassword; - } - - public double getSpawnPointX() { - return spawnPointX; - } - - public void setSpawnPointX(double spawnPointX) { - this.spawnPointX = spawnPointX; - } - - public double getSpawnPointY() { - return spawnPointY; - } - - public void setSpawnPointY(double spawnPointY) { - this.spawnPointY = spawnPointY; - } - - public double getSpawnPointZ() { - return spawnPointZ; - } - - public void setSpawnPointZ(double spawnPointZ) { - this.spawnPointZ = spawnPointZ; - } - - public double getSpawnPointH() { - return spawnPointH; - } - - public void setSpawnPointH(double spawnPointH) { - this.spawnPointH = spawnPointH; - } - - public String getLangPath() { - return langPath; - } - - public void setLangPath(String langPath) { - this.langPath = langPath; - } - - public String getServerLanguage() { - return serverLanguage; - } - - public void setServerLanguage(String serverLanguage) { - this.serverLanguage = serverLanguage; - } - - public String getTebexSecretKey() { - return tebexSecretKey; - } - - public void setTebexSecretKey(String tebexSecretKey) { - this.tebexSecretKey = tebexSecretKey; - } - - public int getTimePerHour() { - return timePerHour; - } - - public void setTimePerHour(int timePerHour) { - this.timePerHour = timePerHour; - } - - public int getStartHour() { - return startHour; - } - - public void setStartHour(int startHour) { - this.startHour = startHour; - } - - public String getWelcomeMessage() { - return welcomeMessage; - } - - public void setWelcomeMessage(String welcomeMessage) { - this.welcomeMessage = welcomeMessage; - } -} +package fr.yuki.yrpf.utils; + +public class ServerConfig { + private double deathRespawnX; + private double deathRespawnY; + private double deathRespawnZ; + private double deathRespawnH; + private int deathRespawnDelay; + private double spawnPointX; + private double spawnPointY; + private double spawnPointZ; + private double spawnPointH; + private int xpRate; + private String sqlHost; + private String sqlUsername; + private String sqlPassword; + private String sqlDb; + private String langPath; + private String serverLanguage; + private String tebexSecretKey; + private int timePerHour; + private int startHour; + private String welcomeMessage; + + public double getDeathRespawnX() { + return deathRespawnX; + } + + public void setDeathRespawnX(double deathRespawnX) { + this.deathRespawnX = deathRespawnX; + } + + public double getDeathRespawnY() { + return deathRespawnY; + } + + public void setDeathRespawnY(double deathRespawnY) { + this.deathRespawnY = deathRespawnY; + } + + public double getDeathRespawnZ() { + return deathRespawnZ; + } + + public void setDeathRespawnZ(double deathRespawnZ) { + this.deathRespawnZ = deathRespawnZ; + } + + public double getDeathRespawnH() { + return deathRespawnH; + } + + public void setDeathRespawnH(double deathRespawnH) { + this.deathRespawnH = deathRespawnH; + } + + public int getDeathRespawnDelay() { + return deathRespawnDelay; + } + + public void setDeathRespawnDelay(int deathRespawnDelay) { + this.deathRespawnDelay = deathRespawnDelay; + } + + public int getXpRate() { + return xpRate; + } + + public void setXpRate(int xpRate) { + this.xpRate = xpRate; + } + + public String getSqlHost() { + return sqlHost; + } + + public void setSqlHost(String sqlHost) { + this.sqlHost = sqlHost; + } + + public String getSqlUsername() { + return sqlUsername; + } + + public void setSqlUsername(String sqlUsername) { + this.sqlUsername = sqlUsername; + } + + public String getSqlDb() { + return sqlDb; + } + + public void setSqlDb(String sqlDb) { + this.sqlDb = sqlDb; + } + + public String getSqlPassword() { + return sqlPassword; + } + + public void setSqlPassword(String sqlPassword) { + this.sqlPassword = sqlPassword; + } + + public double getSpawnPointX() { + return spawnPointX; + } + + public void setSpawnPointX(double spawnPointX) { + this.spawnPointX = spawnPointX; + } + + public double getSpawnPointY() { + return spawnPointY; + } + + public void setSpawnPointY(double spawnPointY) { + this.spawnPointY = spawnPointY; + } + + public double getSpawnPointZ() { + return spawnPointZ; + } + + public void setSpawnPointZ(double spawnPointZ) { + this.spawnPointZ = spawnPointZ; + } + + public double getSpawnPointH() { + return spawnPointH; + } + + public void setSpawnPointH(double spawnPointH) { + this.spawnPointH = spawnPointH; + } + + public String getLangPath() { + return langPath; + } + + public void setLangPath(String langPath) { + this.langPath = langPath; + } + + public String getServerLanguage() { + return serverLanguage; + } + + public void setServerLanguage(String serverLanguage) { + this.serverLanguage = serverLanguage; + } + + public String getTebexSecretKey() { + return tebexSecretKey; + } + + public void setTebexSecretKey(String tebexSecretKey) { + this.tebexSecretKey = tebexSecretKey; + } + + public int getTimePerHour() { + return timePerHour; + } + + public void setTimePerHour(int timePerHour) { + this.timePerHour = timePerHour; + } + + public int getStartHour() { + return startHour; + } + + public void setStartHour(int startHour) { + this.startHour = startHour; + } + + public String getWelcomeMessage() { + return welcomeMessage; + } + + public void setWelcomeMessage(String welcomeMessage) { + this.welcomeMessage = welcomeMessage; + } +} diff --git a/src/main/java/fr/yuki/YukiRPFramework/vehicle/storeLayout/GarbageTruckStoreLayout.java b/src/main/java/fr/yuki/yrpf/vehicle/storeLayout/GarbageTruckStoreLayout.java similarity index 88% rename from src/main/java/fr/yuki/YukiRPFramework/vehicle/storeLayout/GarbageTruckStoreLayout.java rename to src/main/java/fr/yuki/yrpf/vehicle/storeLayout/GarbageTruckStoreLayout.java index 1dc4f67..7961294 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/vehicle/storeLayout/GarbageTruckStoreLayout.java +++ b/src/main/java/fr/yuki/yrpf/vehicle/storeLayout/GarbageTruckStoreLayout.java @@ -1,50 +1,49 @@ -package fr.yuki.YukiRPFramework.vehicle.storeLayout; - -import fr.yuki.YukiRPFramework.job.WearableWorldObject; -import fr.yuki.YukiRPFramework.job.harvest.Garbage; -import net.onfirenetwork.onsetjava.Onset; -import net.onfirenetwork.onsetjava.data.Vector; - -import java.util.ArrayList; -import java.util.HashMap; - -public class GarbageTruckStoreLayout extends VehicleStoreLayout { - private HashMap> layoutTransforms; - - public GarbageTruckStoreLayout() { - this.layoutTransforms = new HashMap<>(); - - ArrayList garbageTransform = new ArrayList<>(); - for(int i = 0; i < 20; i++) { - garbageTransform.add(new StoreLayoutTransform(i, new Vector(0,0,100), new Vector(0,0,0), new Vector(1,1,1))); - } - - this.layoutTransforms.put(514, garbageTransform); - } - - @Override - public boolean isAdaptedForModel(int modelId) { - return modelId == 9; - } - - @Override - public StoreLayoutTransform getStoreTransform(int index, WearableWorldObject wearableWorldObject) { - if(!this.layoutTransforms.containsKey(wearableWorldObject.getModelId())) return null; - if(this.layoutTransforms.get(wearableWorldObject.getModelId()).size() <= index){ - Onset.print("Can't find a store layout transform for model="+wearableWorldObject.getModelId()); - return null; - } - return this.layoutTransforms.get(wearableWorldObject.getModelId()).get(index); - } - - @Override - public int maxStorageQuantity() { - return 20; - } - - @Override - public int maxLayoutSlot(int modelId) { - if(!this.layoutTransforms.containsKey(modelId)) return 0; - return this.layoutTransforms.get(modelId).size(); - } -} +package fr.yuki.yrpf.vehicle.storeLayout; + +import fr.yuki.yrpf.job.WearableWorldObject; +import net.onfirenetwork.onsetjava.Onset; +import net.onfirenetwork.onsetjava.data.Vector; + +import java.util.ArrayList; +import java.util.HashMap; + +public class GarbageTruckStoreLayout extends VehicleStoreLayout { + private HashMap> layoutTransforms; + + public GarbageTruckStoreLayout() { + this.layoutTransforms = new HashMap<>(); + + ArrayList garbageTransform = new ArrayList<>(); + for(int i = 0; i < 20; i++) { + garbageTransform.add(new StoreLayoutTransform(i, new Vector(0,0,100), new Vector(0,0,0), new Vector(1,1,1))); + } + + this.layoutTransforms.put(514, garbageTransform); + } + + @Override + public boolean isAdaptedForModel(int modelId) { + return modelId == 9; + } + + @Override + public StoreLayoutTransform getStoreTransform(int index, WearableWorldObject wearableWorldObject) { + if(!this.layoutTransforms.containsKey(wearableWorldObject.getModelId())) return null; + if(this.layoutTransforms.get(wearableWorldObject.getModelId()).size() <= index){ + Onset.print("Can't find a store layout transform for model="+wearableWorldObject.getModelId()); + return null; + } + return this.layoutTransforms.get(wearableWorldObject.getModelId()).get(index); + } + + @Override + public int maxStorageQuantity() { + return 20; + } + + @Override + public int maxLayoutSlot(int modelId) { + if(!this.layoutTransforms.containsKey(modelId)) return 0; + return this.layoutTransforms.get(modelId).size(); + } +} diff --git a/src/main/java/fr/yuki/YukiRPFramework/vehicle/storeLayout/MiniPickupStoreLayout.java b/src/main/java/fr/yuki/yrpf/vehicle/storeLayout/MiniPickupStoreLayout.java similarity index 94% rename from src/main/java/fr/yuki/YukiRPFramework/vehicle/storeLayout/MiniPickupStoreLayout.java rename to src/main/java/fr/yuki/yrpf/vehicle/storeLayout/MiniPickupStoreLayout.java index 3f0de43..a85dbfa 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/vehicle/storeLayout/MiniPickupStoreLayout.java +++ b/src/main/java/fr/yuki/yrpf/vehicle/storeLayout/MiniPickupStoreLayout.java @@ -1,59 +1,59 @@ -package fr.yuki.YukiRPFramework.vehicle.storeLayout; - -import fr.yuki.YukiRPFramework.job.WearableWorldObject; -import net.onfirenetwork.onsetjava.Onset; -import net.onfirenetwork.onsetjava.data.Vector; - -import java.util.ArrayList; -import java.util.HashMap; - -public class MiniPickupStoreLayout extends VehicleStoreLayout { - private HashMap> layoutTransforms; - - public MiniPickupStoreLayout() { - this.layoutTransforms = new HashMap<>(); - - ArrayList packageTransform = new ArrayList<>(); - packageTransform.add(new StoreLayoutTransform(0, new Vector(-80,40,70), new Vector(0,90,0), new Vector(1,1,1))); - packageTransform.add(new StoreLayoutTransform(1, new Vector(-80,-30,70), new Vector(0,90,0), new Vector(1,1,1))); - packageTransform.add(new StoreLayoutTransform(2, new Vector(-185,-30,70), new Vector(0,90,0), new Vector(1,1,1))); - packageTransform.add(new StoreLayoutTransform(3, new Vector(-185,40,70), new Vector(0,90,0), new Vector(1,1,1))); - this.layoutTransforms.put(508, packageTransform); - - ArrayList oreTransform = new ArrayList<>(); - oreTransform.add(new StoreLayoutTransform(0, new Vector(-80,40,70), new Vector(0,90,0), new Vector(0.60,0.60,0.60))); - oreTransform.add(new StoreLayoutTransform(1, new Vector(-80,-30,70), new Vector(0,90,0), new Vector(0.60,0.60,0.60))); - oreTransform.add(new StoreLayoutTransform(2, new Vector(-185,-30,70), new Vector(0,90,0), new Vector(0.60,0.60,0.60))); - oreTransform.add(new StoreLayoutTransform(3, new Vector(-185,40,70), new Vector(0,90,0), new Vector(0.60,0.60,0.60))); - oreTransform.add(new StoreLayoutTransform(4, new Vector(-120,40,110), new Vector(0,90,0), new Vector(0.60,0.60,0.60))); - oreTransform.add(new StoreLayoutTransform(5, new Vector(-120,-30,110), new Vector(0,90,0), new Vector(0.60,0.60,0.60))); - oreTransform.add(new StoreLayoutTransform(6, new Vector(-160,0,115), new Vector(0,90,0), new Vector(0.60,0.60,0.60))); - this.layoutTransforms.put(156, oreTransform); - } - - @Override - public boolean isAdaptedForModel(int modelId) { - return modelId == 27; - } - - @Override - public StoreLayoutTransform getStoreTransform(int index, WearableWorldObject wearableWorldObject) { - if(!this.layoutTransforms.containsKey(wearableWorldObject.getModelId())) return null; - if(this.layoutTransforms.get(wearableWorldObject.getModelId()).size() <= index){ - Onset.print("Can't find a store layout transform for model="+wearableWorldObject.getModelId()); - return null; - } - return this.layoutTransforms.get(wearableWorldObject.getModelId()).get(index); - } - - @Override - public int maxStorageQuantity() { - return 7; - } - - @Override - public int maxLayoutSlot(int modelId) { - if(!this.layoutTransforms.containsKey(modelId)) return 0; - return this.layoutTransforms.get(modelId).size(); - } -} +package fr.yuki.yrpf.vehicle.storeLayout; + +import fr.yuki.yrpf.job.WearableWorldObject; +import net.onfirenetwork.onsetjava.Onset; +import net.onfirenetwork.onsetjava.data.Vector; + +import java.util.ArrayList; +import java.util.HashMap; + +public class MiniPickupStoreLayout extends VehicleStoreLayout { + private HashMap> layoutTransforms; + + public MiniPickupStoreLayout() { + this.layoutTransforms = new HashMap<>(); + + ArrayList packageTransform = new ArrayList<>(); + packageTransform.add(new StoreLayoutTransform(0, new Vector(-80,40,70), new Vector(0,90,0), new Vector(1,1,1))); + packageTransform.add(new StoreLayoutTransform(1, new Vector(-80,-30,70), new Vector(0,90,0), new Vector(1,1,1))); + packageTransform.add(new StoreLayoutTransform(2, new Vector(-185,-30,70), new Vector(0,90,0), new Vector(1,1,1))); + packageTransform.add(new StoreLayoutTransform(3, new Vector(-185,40,70), new Vector(0,90,0), new Vector(1,1,1))); + this.layoutTransforms.put(508, packageTransform); + + ArrayList oreTransform = new ArrayList<>(); + oreTransform.add(new StoreLayoutTransform(0, new Vector(-80,40,70), new Vector(0,90,0), new Vector(0.60,0.60,0.60))); + oreTransform.add(new StoreLayoutTransform(1, new Vector(-80,-30,70), new Vector(0,90,0), new Vector(0.60,0.60,0.60))); + oreTransform.add(new StoreLayoutTransform(2, new Vector(-185,-30,70), new Vector(0,90,0), new Vector(0.60,0.60,0.60))); + oreTransform.add(new StoreLayoutTransform(3, new Vector(-185,40,70), new Vector(0,90,0), new Vector(0.60,0.60,0.60))); + oreTransform.add(new StoreLayoutTransform(4, new Vector(-120,40,110), new Vector(0,90,0), new Vector(0.60,0.60,0.60))); + oreTransform.add(new StoreLayoutTransform(5, new Vector(-120,-30,110), new Vector(0,90,0), new Vector(0.60,0.60,0.60))); + oreTransform.add(new StoreLayoutTransform(6, new Vector(-160,0,115), new Vector(0,90,0), new Vector(0.60,0.60,0.60))); + this.layoutTransforms.put(156, oreTransform); + } + + @Override + public boolean isAdaptedForModel(int modelId) { + return modelId == 27; + } + + @Override + public StoreLayoutTransform getStoreTransform(int index, WearableWorldObject wearableWorldObject) { + if(!this.layoutTransforms.containsKey(wearableWorldObject.getModelId())) return null; + if(this.layoutTransforms.get(wearableWorldObject.getModelId()).size() <= index){ + Onset.print("Can't find a store layout transform for model="+wearableWorldObject.getModelId()); + return null; + } + return this.layoutTransforms.get(wearableWorldObject.getModelId()).get(index); + } + + @Override + public int maxStorageQuantity() { + return 7; + } + + @Override + public int maxLayoutSlot(int modelId) { + if(!this.layoutTransforms.containsKey(modelId)) return 0; + return this.layoutTransforms.get(modelId).size(); + } +} diff --git a/src/main/java/fr/yuki/YukiRPFramework/vehicle/storeLayout/MiniTruckStoreLayout.java b/src/main/java/fr/yuki/yrpf/vehicle/storeLayout/MiniTruckStoreLayout.java similarity index 94% rename from src/main/java/fr/yuki/YukiRPFramework/vehicle/storeLayout/MiniTruckStoreLayout.java rename to src/main/java/fr/yuki/yrpf/vehicle/storeLayout/MiniTruckStoreLayout.java index 269cd70..d7e8af8 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/vehicle/storeLayout/MiniTruckStoreLayout.java +++ b/src/main/java/fr/yuki/yrpf/vehicle/storeLayout/MiniTruckStoreLayout.java @@ -1,61 +1,61 @@ -package fr.yuki.YukiRPFramework.vehicle.storeLayout; - -import fr.yuki.YukiRPFramework.job.WearableWorldObject; -import net.onfirenetwork.onsetjava.Onset; -import net.onfirenetwork.onsetjava.data.Vector; - -import java.util.ArrayList; -import java.util.HashMap; - -public class MiniTruckStoreLayout extends VehicleStoreLayout { - private HashMap> layoutTransforms; - - public MiniTruckStoreLayout() { - this.layoutTransforms = new HashMap<>(); - - ArrayList logTransform = new ArrayList<>(); - logTransform.add(new StoreLayoutTransform(0, new Vector(-170,-50,100), new Vector(0,90,0), new Vector(1,1,1))); - logTransform.add(new StoreLayoutTransform(1, new Vector(-170,10,100), new Vector(0,90,0), new Vector(1,1,1))); - logTransform.add(new StoreLayoutTransform(2, new Vector(-170,60,100), new Vector(0,90,0), new Vector(1,1,1))); - logTransform.add(new StoreLayoutTransform(3, new Vector(-170,-30,140), new Vector(0,90,0), new Vector(1,1,1))); - logTransform.add(new StoreLayoutTransform(4, new Vector(-170,30,140), new Vector(0,90,0), new Vector(1,1,1))); - logTransform.add(new StoreLayoutTransform(5, new Vector(-170,0,180), new Vector(0,90,0), new Vector(1,1,1))); - this.layoutTransforms.put(50001, logTransform); - - ArrayList plankTransform = new ArrayList<>(); - plankTransform.add(new StoreLayoutTransform(0, new Vector(-170,-50,100), new Vector(0,90,0), new Vector(0.5,0.5,0.5))); - plankTransform.add(new StoreLayoutTransform(1, new Vector(-170,10,100), new Vector(0,90,0), new Vector(0.5,0.5,0.5))); - plankTransform.add(new StoreLayoutTransform(2, new Vector(-170,60,100), new Vector(0,90,0), new Vector(0.5,0.5,0.5))); - plankTransform.add(new StoreLayoutTransform(3, new Vector(-170,-30,100), new Vector(0,90,0), new Vector(0.5,0.5,0.5))); - plankTransform.add(new StoreLayoutTransform(4, new Vector(-170,30,100), new Vector(0,90,0), new Vector(0.5,0.5,0.5))); - plankTransform.add(new StoreLayoutTransform(5, new Vector(-170,0,120), new Vector(0,90,0), new Vector(0.5,0.5,0.5))); - this.layoutTransforms.put(1574, plankTransform); - } - - @Override - public boolean isAdaptedForModel(int modelId) { - if(modelId == 22 || modelId == 23) return true; - return false; - } - - @Override - public StoreLayoutTransform getStoreTransform(int index, WearableWorldObject wearableWorldObject) { - if(!this.layoutTransforms.containsKey(wearableWorldObject.getModelId())) return null; - if(this.layoutTransforms.get(wearableWorldObject.getModelId()).size() <= index){ - Onset.print("Can't find a store layout transform for model="+wearableWorldObject.getModelId()); - return null; - } - return this.layoutTransforms.get(wearableWorldObject.getModelId()).get(index); - } - - @Override - public int maxStorageQuantity() { - return 6; - } - - @Override - public int maxLayoutSlot(int modelId) { - if(!this.layoutTransforms.containsKey(modelId)) return 0; - return this.layoutTransforms.get(modelId).size(); - } -} +package fr.yuki.yrpf.vehicle.storeLayout; + +import fr.yuki.yrpf.job.WearableWorldObject; +import net.onfirenetwork.onsetjava.Onset; +import net.onfirenetwork.onsetjava.data.Vector; + +import java.util.ArrayList; +import java.util.HashMap; + +public class MiniTruckStoreLayout extends VehicleStoreLayout { + private HashMap> layoutTransforms; + + public MiniTruckStoreLayout() { + this.layoutTransforms = new HashMap<>(); + + ArrayList logTransform = new ArrayList<>(); + logTransform.add(new StoreLayoutTransform(0, new Vector(-170,-50,100), new Vector(0,90,0), new Vector(1,1,1))); + logTransform.add(new StoreLayoutTransform(1, new Vector(-170,10,100), new Vector(0,90,0), new Vector(1,1,1))); + logTransform.add(new StoreLayoutTransform(2, new Vector(-170,60,100), new Vector(0,90,0), new Vector(1,1,1))); + logTransform.add(new StoreLayoutTransform(3, new Vector(-170,-30,140), new Vector(0,90,0), new Vector(1,1,1))); + logTransform.add(new StoreLayoutTransform(4, new Vector(-170,30,140), new Vector(0,90,0), new Vector(1,1,1))); + logTransform.add(new StoreLayoutTransform(5, new Vector(-170,0,180), new Vector(0,90,0), new Vector(1,1,1))); + this.layoutTransforms.put(50001, logTransform); + + ArrayList plankTransform = new ArrayList<>(); + plankTransform.add(new StoreLayoutTransform(0, new Vector(-170,-50,100), new Vector(0,90,0), new Vector(0.5,0.5,0.5))); + plankTransform.add(new StoreLayoutTransform(1, new Vector(-170,10,100), new Vector(0,90,0), new Vector(0.5,0.5,0.5))); + plankTransform.add(new StoreLayoutTransform(2, new Vector(-170,60,100), new Vector(0,90,0), new Vector(0.5,0.5,0.5))); + plankTransform.add(new StoreLayoutTransform(3, new Vector(-170,-30,100), new Vector(0,90,0), new Vector(0.5,0.5,0.5))); + plankTransform.add(new StoreLayoutTransform(4, new Vector(-170,30,100), new Vector(0,90,0), new Vector(0.5,0.5,0.5))); + plankTransform.add(new StoreLayoutTransform(5, new Vector(-170,0,120), new Vector(0,90,0), new Vector(0.5,0.5,0.5))); + this.layoutTransforms.put(1574, plankTransform); + } + + @Override + public boolean isAdaptedForModel(int modelId) { + if(modelId == 22 || modelId == 23) return true; + return false; + } + + @Override + public StoreLayoutTransform getStoreTransform(int index, WearableWorldObject wearableWorldObject) { + if(!this.layoutTransforms.containsKey(wearableWorldObject.getModelId())) return null; + if(this.layoutTransforms.get(wearableWorldObject.getModelId()).size() <= index){ + Onset.print("Can't find a store layout transform for model="+wearableWorldObject.getModelId()); + return null; + } + return this.layoutTransforms.get(wearableWorldObject.getModelId()).get(index); + } + + @Override + public int maxStorageQuantity() { + return 6; + } + + @Override + public int maxLayoutSlot(int modelId) { + if(!this.layoutTransforms.containsKey(modelId)) return 0; + return this.layoutTransforms.get(modelId).size(); + } +} diff --git a/src/main/java/fr/yuki/YukiRPFramework/vehicle/storeLayout/StoreLayoutTransform.java b/src/main/java/fr/yuki/yrpf/vehicle/storeLayout/StoreLayoutTransform.java similarity index 89% rename from src/main/java/fr/yuki/YukiRPFramework/vehicle/storeLayout/StoreLayoutTransform.java rename to src/main/java/fr/yuki/yrpf/vehicle/storeLayout/StoreLayoutTransform.java index 5ab66ff..47c430a 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/vehicle/storeLayout/StoreLayoutTransform.java +++ b/src/main/java/fr/yuki/yrpf/vehicle/storeLayout/StoreLayoutTransform.java @@ -1,37 +1,37 @@ -package fr.yuki.YukiRPFramework.vehicle.storeLayout; - -import net.onfirenetwork.onsetjava.data.Vector; - -public class StoreLayoutTransform { - private int index; - private Vector position; - private Vector rotation; - private Vector scale; - - public StoreLayoutTransform(int index, Vector position, Vector rotation, Vector scale) { - this.index = index; - this.position = position; - this.rotation = rotation; - this.scale = scale; - } - - public Vector getPosition() { - return position; - } - - public Vector getRotation() { - return rotation; - } - - public Vector getScale() { - return scale; - } - - public int getIndex() { - return index; - } - - public void setIndex(int index) { - this.index = index; - } -} +package fr.yuki.yrpf.vehicle.storeLayout; + +import net.onfirenetwork.onsetjava.data.Vector; + +public class StoreLayoutTransform { + private int index; + private Vector position; + private Vector rotation; + private Vector scale; + + public StoreLayoutTransform(int index, Vector position, Vector rotation, Vector scale) { + this.index = index; + this.position = position; + this.rotation = rotation; + this.scale = scale; + } + + public Vector getPosition() { + return position; + } + + public Vector getRotation() { + return rotation; + } + + public Vector getScale() { + return scale; + } + + public int getIndex() { + return index; + } + + public void setIndex(int index) { + this.index = index; + } +} diff --git a/src/main/java/fr/yuki/YukiRPFramework/vehicle/storeLayout/TruckStoreLayout.java b/src/main/java/fr/yuki/yrpf/vehicle/storeLayout/TruckStoreLayout.java similarity index 91% rename from src/main/java/fr/yuki/YukiRPFramework/vehicle/storeLayout/TruckStoreLayout.java rename to src/main/java/fr/yuki/yrpf/vehicle/storeLayout/TruckStoreLayout.java index 3ecebdf..682b02e 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/vehicle/storeLayout/TruckStoreLayout.java +++ b/src/main/java/fr/yuki/yrpf/vehicle/storeLayout/TruckStoreLayout.java @@ -1,48 +1,48 @@ -package fr.yuki.YukiRPFramework.vehicle.storeLayout; - -import fr.yuki.YukiRPFramework.job.WearableWorldObject; -import net.onfirenetwork.onsetjava.Onset; -import net.onfirenetwork.onsetjava.data.Vector; - -import java.util.ArrayList; -import java.util.HashMap; - -public class TruckStoreLayout extends VehicleStoreLayout { - private HashMap> layoutTransforms; - - public TruckStoreLayout() { - this.layoutTransforms = new HashMap<>(); - - ArrayList packageTransform = new ArrayList<>(); - for(int i = 0; i < 15; i++) { - packageTransform.add(new StoreLayoutTransform(i, new Vector(0,0,150), new Vector(0,0,0), new Vector(1,1,1))); - } - - this.layoutTransforms.put(508, packageTransform); - } - @Override - public boolean isAdaptedForModel(int modelId) { - return modelId == 28; - } - - @Override - public StoreLayoutTransform getStoreTransform(int index, WearableWorldObject wearableWorldObject) { - if(!this.layoutTransforms.containsKey(wearableWorldObject.getModelId())) return null; - if(this.layoutTransforms.get(wearableWorldObject.getModelId()).size() <= index){ - Onset.print("Can't find a store layout transform for model="+wearableWorldObject.getModelId()); - return null; - } - return this.layoutTransforms.get(wearableWorldObject.getModelId()).get(index); - } - - @Override - public int maxStorageQuantity() { - return 15; - } - - @Override - public int maxLayoutSlot(int modelId) { - if(!this.layoutTransforms.containsKey(modelId)) return 0; - return this.layoutTransforms.get(modelId).size(); - } -} +package fr.yuki.yrpf.vehicle.storeLayout; + +import fr.yuki.yrpf.job.WearableWorldObject; +import net.onfirenetwork.onsetjava.Onset; +import net.onfirenetwork.onsetjava.data.Vector; + +import java.util.ArrayList; +import java.util.HashMap; + +public class TruckStoreLayout extends VehicleStoreLayout { + private HashMap> layoutTransforms; + + public TruckStoreLayout() { + this.layoutTransforms = new HashMap<>(); + + ArrayList packageTransform = new ArrayList<>(); + for(int i = 0; i < 15; i++) { + packageTransform.add(new StoreLayoutTransform(i, new Vector(0,0,150), new Vector(0,0,0), new Vector(1,1,1))); + } + + this.layoutTransforms.put(508, packageTransform); + } + @Override + public boolean isAdaptedForModel(int modelId) { + return modelId == 28; + } + + @Override + public StoreLayoutTransform getStoreTransform(int index, WearableWorldObject wearableWorldObject) { + if(!this.layoutTransforms.containsKey(wearableWorldObject.getModelId())) return null; + if(this.layoutTransforms.get(wearableWorldObject.getModelId()).size() <= index){ + Onset.print("Can't find a store layout transform for model="+wearableWorldObject.getModelId()); + return null; + } + return this.layoutTransforms.get(wearableWorldObject.getModelId()).get(index); + } + + @Override + public int maxStorageQuantity() { + return 15; + } + + @Override + public int maxLayoutSlot(int modelId) { + if(!this.layoutTransforms.containsKey(modelId)) return 0; + return this.layoutTransforms.get(modelId).size(); + } +} diff --git a/src/main/java/fr/yuki/YukiRPFramework/vehicle/storeLayout/VehicleStoreLayout.java b/src/main/java/fr/yuki/yrpf/vehicle/storeLayout/VehicleStoreLayout.java similarity index 88% rename from src/main/java/fr/yuki/YukiRPFramework/vehicle/storeLayout/VehicleStoreLayout.java rename to src/main/java/fr/yuki/yrpf/vehicle/storeLayout/VehicleStoreLayout.java index 872af29..495991b 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/vehicle/storeLayout/VehicleStoreLayout.java +++ b/src/main/java/fr/yuki/yrpf/vehicle/storeLayout/VehicleStoreLayout.java @@ -1,37 +1,37 @@ -package fr.yuki.YukiRPFramework.vehicle.storeLayout; - -import fr.yuki.YukiRPFramework.job.WearableWorldObject; -import fr.yuki.YukiRPFramework.manager.VehicleManager; -import net.onfirenetwork.onsetjava.entity.Vehicle; - -import java.util.ArrayList; - -public abstract class VehicleStoreLayout { - public abstract boolean isAdaptedForModel(int modelId); - public abstract StoreLayoutTransform getStoreTransform(int index, WearableWorldObject wearableWorldObject); - public abstract int maxStorageQuantity(); - public abstract int maxLayoutSlot(int modelId); - - public boolean store(Vehicle vehicle, WearableWorldObject wearableWorldObject) { - ArrayList wearableWorldObjectsChest = VehicleManager.getVehicleWearableObjects(vehicle); - if(wearableWorldObjectsChest.size() + 1 > this.maxStorageQuantity()) return false; - if(wearableWorldObjectsChest.size() + 1 > this.maxLayoutSlot(wearableWorldObject.getModelId())) return false; - - // Find a free slot - int index = 0; - for(int i = 0; i < maxLayoutSlot(wearableWorldObject.getModelId()); i++) { - int finalI = i; - boolean hasItemOnThisSlot = wearableWorldObjectsChest.stream().filter(x -> x.getVehicleStorageLayoutIndex() == finalI) - .findFirst().orElse(null) != null; - if(!hasItemOnThisSlot) { - index = i; - break; - } - } - - StoreLayoutTransform storeLayoutTransform = this.getStoreTransform(index, wearableWorldObject); - if(storeLayoutTransform == null) return false; - wearableWorldObject.storeInVehicle(vehicle, storeLayoutTransform); - return true; - } -} +package fr.yuki.yrpf.vehicle.storeLayout; + +import fr.yuki.yrpf.job.WearableWorldObject; +import fr.yuki.yrpf.manager.VehicleManager; +import net.onfirenetwork.onsetjava.entity.Vehicle; + +import java.util.ArrayList; + +public abstract class VehicleStoreLayout { + public abstract boolean isAdaptedForModel(int modelId); + public abstract StoreLayoutTransform getStoreTransform(int index, WearableWorldObject wearableWorldObject); + public abstract int maxStorageQuantity(); + public abstract int maxLayoutSlot(int modelId); + + public boolean store(Vehicle vehicle, WearableWorldObject wearableWorldObject) { + ArrayList wearableWorldObjectsChest = VehicleManager.getVehicleWearableObjects(vehicle); + if(wearableWorldObjectsChest.size() + 1 > this.maxStorageQuantity()) return false; + if(wearableWorldObjectsChest.size() + 1 > this.maxLayoutSlot(wearableWorldObject.getModelId())) return false; + + // Find a free slot + int index = 0; + for(int i = 0; i < maxLayoutSlot(wearableWorldObject.getModelId()); i++) { + int finalI = i; + boolean hasItemOnThisSlot = wearableWorldObjectsChest.stream().filter(x -> x.getVehicleStorageLayoutIndex() == finalI) + .findFirst().orElse(null) != null; + if(!hasItemOnThisSlot) { + index = i; + break; + } + } + + StoreLayoutTransform storeLayoutTransform = this.getStoreTransform(index, wearableWorldObject); + if(storeLayoutTransform == null) return false; + wearableWorldObject.storeInVehicle(vehicle, storeLayoutTransform); + return true; + } +} diff --git a/src/main/java/fr/yuki/YukiRPFramework/world/RestrictedZone.java b/src/main/java/fr/yuki/yrpf/world/RestrictedZone.java similarity index 72% rename from src/main/java/fr/yuki/YukiRPFramework/world/RestrictedZone.java rename to src/main/java/fr/yuki/yrpf/world/RestrictedZone.java index c866fb7..a17dc09 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/world/RestrictedZone.java +++ b/src/main/java/fr/yuki/yrpf/world/RestrictedZone.java @@ -1,40 +1,38 @@ -package fr.yuki.YukiRPFramework.world; - -import fr.yuki.YukiRPFramework.manager.AccountManager; -import fr.yuki.YukiRPFramework.manager.JobManager; -import fr.yuki.YukiRPFramework.manager.WorldManager; -import fr.yuki.YukiRPFramework.modding.Line3D; -import fr.yuki.YukiRPFramework.model.Account; -import fr.yuki.YukiRPFramework.model.AccountJobWhitelist; -import net.onfirenetwork.onsetjava.Onset; -import net.onfirenetwork.onsetjava.entity.Door; -import net.onfirenetwork.onsetjava.entity.Player; - -public class RestrictedZone { - private Line3D line3D; - private String jobRestriction; - - public RestrictedZone(Line3D line3D, String jobRestriction) { - this.line3D = line3D; - this.jobRestriction = jobRestriction; - } - - public boolean canInteractWithDoor(Player player, Door door) { - // Check if the door is inside the zone - if(this.line3D.getDoorsInside().stream().filter(x -> x.getId() == door.getId()).findFirst().orElse(null) == null) { - return true; - } - - // Check job for this door - Account account = WorldManager.getPlayerAccount(player); - AccountJobWhitelist accountJobWhitelist = AccountManager.getAccountJobWhitelists().stream() - .filter(x -> x.getAccountId() == account.getId() && x.getJobId().equals(this.jobRestriction)) - .findFirst().orElse(null); - //TODO: Add job level requirement - if(accountJobWhitelist == null) { // The player doesnt have the job - return false; - } - - return true; - } -} +package fr.yuki.yrpf.world; + +import fr.yuki.yrpf.manager.AccountManager; +import fr.yuki.yrpf.manager.WorldManager; +import fr.yuki.yrpf.modding.Line3D; +import fr.yuki.yrpf.model.Account; +import fr.yuki.yrpf.model.AccountJobWhitelist; +import net.onfirenetwork.onsetjava.entity.Door; +import net.onfirenetwork.onsetjava.entity.Player; + +public class RestrictedZone { + private Line3D line3D; + private String jobRestriction; + + public RestrictedZone(Line3D line3D, String jobRestriction) { + this.line3D = line3D; + this.jobRestriction = jobRestriction; + } + + public boolean canInteractWithDoor(Player player, Door door) { + // Check if the door is inside the zone + if(this.line3D.getDoorsInside().stream().filter(x -> x.getId() == door.getId()).findFirst().orElse(null) == null) { + return true; + } + + // Check job for this door + Account account = WorldManager.getPlayerAccount(player); + AccountJobWhitelist accountJobWhitelist = AccountManager.getAccountJobWhitelists().stream() + .filter(x -> x.getAccountId() == account.getId() && x.getJobId().equals(this.jobRestriction)) + .findFirst().orElse(null); + //TODO: Add job level requirement + if(accountJobWhitelist == null) { // The player doesnt have the job + return false; + } + + return true; + } +} From 737275b67a467551b99354d76105eeeedf9b24e5 Mon Sep 17 00:00:00 2001 From: JanHolger Date: Wed, 8 Jul 2020 03:18:32 +0200 Subject: [PATCH 5/5] Did a lot more refactoring, all models are now ORM based --- src/main/java/fr/yuki/yrpf/Database.java | 30 ++-- .../fr/yuki/yrpf/YukiRPFrameworkPlugin.java | 4 +- .../java/fr/yuki/yrpf/dao/GrowboxDAO.java | 59 ------ .../java/fr/yuki/yrpf/dao/HouseItemDAO.java | 57 ------ .../java/fr/yuki/yrpf/dao/InventoryDAO.java | 89 --------- .../fr/yuki/yrpf/dao/ItemTemplateDAO.java | 36 ---- .../java/fr/yuki/yrpf/dao/JobLevelDAO.java | 29 --- src/main/java/fr/yuki/yrpf/dao/JobNPCDAO.java | 39 ---- .../java/fr/yuki/yrpf/dao/JobOutfitDAO.java | 31 ---- .../java/fr/yuki/yrpf/dao/JobToolDAO.java | 40 ----- .../fr/yuki/yrpf/dao/JobVehicleRentalDAO.java | 36 ---- .../java/fr/yuki/yrpf/dao/OutfitPointDAO.java | 27 --- .../fr/yuki/yrpf/dao/PhoneContactDAO.java | 48 ----- src/main/java/fr/yuki/yrpf/dao/SellerDAO.java | 36 ---- .../fr/yuki/yrpf/dao/VehicleGarageDAO.java | 79 -------- .../fr/yuki/yrpf/enums/ItemTemplateEnum.java | 2 +- src/main/java/fr/yuki/yrpf/enums/JobEnum.java | 21 +-- .../fr/yuki/yrpf/enums/ToastTypeEnum.java | 2 +- .../fr/yuki/yrpf/inventory/Inventory.java | 103 +++-------- .../java/fr/yuki/yrpf/job/DeliveryJob.java | 2 +- src/main/java/fr/yuki/yrpf/job/EMSJob.java | 2 +- src/main/java/fr/yuki/yrpf/job/FisherJob.java | 2 +- .../java/fr/yuki/yrpf/job/GarbageJob.java | 2 +- .../java/fr/yuki/yrpf/job/LumberjackJob.java | 2 +- src/main/java/fr/yuki/yrpf/job/MinerJob.java | 2 +- src/main/java/fr/yuki/yrpf/job/PoliceJob.java | 2 +- .../fr/yuki/yrpf/job/WearableWorldObject.java | 4 +- src/main/java/fr/yuki/yrpf/job/WeedJob.java | 2 +- .../GeneratorDeliveryPackage.java | 12 +- .../GenericDeliveryPackage.java | 18 +- .../GrowBoxDeliveryPackage.java | 23 +-- .../fr/yuki/yrpf/job/tools/GarbageBin.java | 2 +- .../java/fr/yuki/yrpf/job/tools/GrowBox.java | 10 +- .../java/fr/yuki/yrpf/job/tools/Sawmill.java | 4 +- .../fr/yuki/yrpf/manager/GarageManager.java | 15 +- .../fr/yuki/yrpf/manager/GrowboxManager.java | 19 +- .../fr/yuki/yrpf/manager/HouseManager.java | 5 +- .../yuki/yrpf/manager/InventoryManager.java | 23 ++- .../java/fr/yuki/yrpf/manager/JobManager.java | 80 ++++----- .../fr/yuki/yrpf/manager/PhoneManager.java | 16 +- .../fr/yuki/yrpf/manager/VehicleManager.java | 3 +- .../fr/yuki/yrpf/manager/WorldManager.java | 7 +- .../java/fr/yuki/yrpf/model/GrowboxModel.java | 72 ++------ .../fr/yuki/yrpf/model/HouseItemObject.java | 102 +++-------- .../java/fr/yuki/yrpf/model/ItemTemplate.java | 135 +++----------- .../java/fr/yuki/yrpf/model/JobLevel.java | 54 ++---- src/main/java/fr/yuki/yrpf/model/JobNPC.java | 126 +++++-------- .../java/fr/yuki/yrpf/model/JobOutfit.java | 83 ++------- src/main/java/fr/yuki/yrpf/model/JobTool.java | 169 ++++-------------- .../fr/yuki/yrpf/model/JobVehicleRental.java | 125 +++---------- .../java/fr/yuki/yrpf/model/OutfitPoint.java | 44 ++--- .../java/fr/yuki/yrpf/model/PhoneContact.java | 45 ++--- src/main/java/fr/yuki/yrpf/model/Seller.java | 107 ++--------- .../fr/yuki/yrpf/model/VehicleGarage.java | 138 +++----------- 54 files changed, 417 insertions(+), 1808 deletions(-) delete mode 100644 src/main/java/fr/yuki/yrpf/dao/GrowboxDAO.java delete mode 100644 src/main/java/fr/yuki/yrpf/dao/HouseItemDAO.java delete mode 100644 src/main/java/fr/yuki/yrpf/dao/InventoryDAO.java delete mode 100644 src/main/java/fr/yuki/yrpf/dao/ItemTemplateDAO.java delete mode 100644 src/main/java/fr/yuki/yrpf/dao/JobLevelDAO.java delete mode 100644 src/main/java/fr/yuki/yrpf/dao/JobNPCDAO.java delete mode 100644 src/main/java/fr/yuki/yrpf/dao/JobOutfitDAO.java delete mode 100644 src/main/java/fr/yuki/yrpf/dao/JobToolDAO.java delete mode 100644 src/main/java/fr/yuki/yrpf/dao/JobVehicleRentalDAO.java delete mode 100644 src/main/java/fr/yuki/yrpf/dao/OutfitPointDAO.java delete mode 100644 src/main/java/fr/yuki/yrpf/dao/PhoneContactDAO.java delete mode 100644 src/main/java/fr/yuki/yrpf/dao/SellerDAO.java delete mode 100644 src/main/java/fr/yuki/yrpf/dao/VehicleGarageDAO.java diff --git a/src/main/java/fr/yuki/yrpf/Database.java b/src/main/java/fr/yuki/yrpf/Database.java index ecd570b..b1ec60a 100644 --- a/src/main/java/fr/yuki/yrpf/Database.java +++ b/src/main/java/fr/yuki/yrpf/Database.java @@ -4,29 +4,30 @@ import eu.bebendorf.ajorm.AJORMConfig; import eu.bebendorf.ajorm.wrapper.MySQL; import eu.bebendorf.ajorm.wrapper.SQL; +import fr.yuki.yrpf.inventory.Inventory; import fr.yuki.yrpf.manager.WorldManager; import fr.yuki.yrpf.model.*; import fr.yuki.yrpf.utils.ServerConfig; import net.onfirenetwork.onsetjava.Onset; -import java.sql.Connection; -import java.sql.DriverManager; - public class Database { - private static Connection connection; + private static SQL sql; + public static SQL getRaw() { + return sql; + } + /** * Initialize the connection with the database */ public static void init() { try { ServerConfig serverConfig = WorldManager.getServerConfig(); - connection = DriverManager.getConnection("jdbc:mysql://" + serverConfig.getSqlHost() + "/" + serverConfig.getSqlDb() + "?autoReconnect=true", - serverConfig.getSqlUsername(), serverConfig.getSqlPassword()); sql = new MySQL(serverConfig.getSqlHost(), 3306, serverConfig.getSqlDb(), serverConfig.getSqlUsername(), serverConfig.getSqlPassword()); AJORMConfig config = new AJORMConfig() .setDefaultSize(255); + // @Yuki you can optionally add .migrate() behind the register calls to enable migration AJORM.register(Account.class, sql, config); AJORM.register(ATM.class, sql, config); AJORM.register(AccountJobWhitelist.class, sql, config); @@ -34,14 +35,23 @@ public static void init() { AJORM.register(VehicleSeller.class, sql, config); AJORM.register(Garage.class, sql, config); AJORM.register(House.class, sql, config); + AJORM.register(HouseItemObject.class, sql, config); AJORM.register(FuelPoint.class, sql, config); + AJORM.register(Seller.class, sql, config); + AJORM.register(PhoneContact.class, sql, config); + AJORM.register(VehicleGarage.class, sql, config); + AJORM.register(Inventory.class, sql, config); + AJORM.register(JobNPC.class, sql, config); + AJORM.register(JobLevel.class, sql, config); + AJORM.register(ItemTemplate.class, sql, config); + AJORM.register(OutfitPoint.class, sql, config); + AJORM.register(GrowboxModel.class, sql, config); + AJORM.register(JobTool.class, sql, config); + AJORM.register(JobVehicleRental.class, sql, config); + AJORM.register(JobOutfit.class, sql, config); Onset.print("Connected to the database with success"); } catch (Exception e) { Onset.print("Error with database connection: " + e.toString()); } } - - public static Connection getConnection() { - return connection; - } } diff --git a/src/main/java/fr/yuki/yrpf/YukiRPFrameworkPlugin.java b/src/main/java/fr/yuki/yrpf/YukiRPFrameworkPlugin.java index e493d53..f2e3f32 100644 --- a/src/main/java/fr/yuki/yrpf/YukiRPFrameworkPlugin.java +++ b/src/main/java/fr/yuki/yrpf/YukiRPFrameworkPlugin.java @@ -6,7 +6,6 @@ import fr.yuki.yrpf.luaapi.LuaAPIManager; import fr.yuki.yrpf.character.CharacterState; import fr.yuki.yrpf.commands.*; -import fr.yuki.yrpf.dao.InventoryDAO; import fr.yuki.yrpf.enums.ToastTypeEnum; import fr.yuki.yrpf.i18n.I18n; import fr.yuki.yrpf.inventory.Inventory; @@ -201,7 +200,8 @@ public void onJoin(PlayerSteamAuthEvent evt) { serverConfig.getSpawnPointY(), serverConfig.getSpawnPointZ(), serverConfig.getSpawnPointH())); // Create the default inventory for character - Inventory inventory = InventoryDAO.createInventory(); + Inventory inventory = new Inventory(); + inventory.save(); Onset.print("Inventory created id=" + inventory.getId()); inventory.setInventoryType(1); inventory.setCharacterId(account.getId()); diff --git a/src/main/java/fr/yuki/yrpf/dao/GrowboxDAO.java b/src/main/java/fr/yuki/yrpf/dao/GrowboxDAO.java deleted file mode 100644 index 45a285d..0000000 --- a/src/main/java/fr/yuki/yrpf/dao/GrowboxDAO.java +++ /dev/null @@ -1,59 +0,0 @@ -package fr.yuki.yrpf.dao; - -import fr.yuki.yrpf.Database; -import fr.yuki.yrpf.model.GrowboxModel; - -import java.sql.PreparedStatement; -import java.sql.ResultSet; -import java.sql.SQLException; -import java.sql.Statement; -import java.util.ArrayList; - -public class GrowboxDAO { - public static ArrayList loadGrowbox() throws SQLException { - ArrayList growboxs = new ArrayList<>(); - PreparedStatement preparedStatement = Database.getConnection().prepareStatement("SELECT * FROM tbl_growbox"); - ResultSet resultSet = preparedStatement.executeQuery(); - while(resultSet.next()) { - GrowboxModel growboxModel = new GrowboxModel(); - growboxModel.setId(resultSet.getInt("id_growbox")); - growboxModel.setX(resultSet.getFloat("x")); - growboxModel.setY(resultSet.getFloat("y")); - growboxModel.setZ(resultSet.getFloat("z")); - growboxModel.setRx(resultSet.getFloat("rx")); - growboxModel.setRy(resultSet.getFloat("ry")); - growboxModel.setRz(resultSet.getFloat("rz")); - growboxs.add(growboxModel); - } - return growboxs; - } - - public static void insertGrowbox(GrowboxModel growboxModel) throws SQLException { - // Execute the query - PreparedStatement preparedStatement = Database.getConnection() - .prepareStatement("INSERT INTO tbl_growbox " + - "(x, y, z, rx, ry, rz) VALUES " + - "(?,?,?,?,?,?)", Statement.RETURN_GENERATED_KEYS); - - preparedStatement.setDouble(1, growboxModel.getX()); - preparedStatement.setDouble(2, growboxModel.getY()); - preparedStatement.setDouble(3, growboxModel.getZ()); - preparedStatement.setDouble(4, growboxModel.getRx()); - preparedStatement.setDouble(5, growboxModel.getRy()); - preparedStatement.setDouble(6, growboxModel.getRz()); - preparedStatement.executeUpdate(); - - ResultSet returnId = preparedStatement.getGeneratedKeys(); - if(returnId.next()) { - growboxModel.setId(returnId.getInt(1)); - } - returnId.close(); - } - - public static void deleteGrowbox(GrowboxModel growboxModel) throws SQLException { - PreparedStatement preparedStatement = Database.getConnection().prepareStatement("DELETE FROM tbl_growbox WHERE id_growbox=?"); - preparedStatement.setInt(1, growboxModel.getId()); - preparedStatement.executeUpdate(); - preparedStatement.close(); - } -} diff --git a/src/main/java/fr/yuki/yrpf/dao/HouseItemDAO.java b/src/main/java/fr/yuki/yrpf/dao/HouseItemDAO.java deleted file mode 100644 index 91ba374..0000000 --- a/src/main/java/fr/yuki/yrpf/dao/HouseItemDAO.java +++ /dev/null @@ -1,57 +0,0 @@ -package fr.yuki.yrpf.dao; - -import fr.yuki.yrpf.Database; -import fr.yuki.yrpf.model.HouseItemObject; - -import java.sql.*; -import java.util.ArrayList; - -public class HouseItemDAO { - public static ArrayList loadHouseItems() throws SQLException { - ArrayList houseItemObjects = new ArrayList<>(); - PreparedStatement preparedStatement = Database.getConnection().prepareStatement("SELECT * FROM tbl_house_item"); - ResultSet resultSet = preparedStatement.executeQuery(); - while(resultSet.next()) { - HouseItemObject houseItemObject = new HouseItemObject(); - houseItemObject.setId(resultSet.getInt("id_house_item")); - houseItemObject.setModelId(resultSet.getInt("model_id")); - houseItemObject.setFunctionId(resultSet.getInt("function_id")); - houseItemObject.setX(resultSet.getDouble("x")); - houseItemObject.setY(resultSet.getDouble("y")); - houseItemObject.setZ(resultSet.getDouble("z")); - houseItemObject.setRx(resultSet.getDouble("rx")); - houseItemObject.setRy(resultSet.getDouble("ry")); - houseItemObject.setRz(resultSet.getDouble("rz")); - houseItemObjects.add(houseItemObject); - } - return houseItemObjects; - } - - public static void insertHouseItem(HouseItemObject houseItemObject) throws SQLException { - PreparedStatement preparedStatement = Database.getConnection() - .prepareStatement("INSERT INTO tbl_house_item " + - "(model_id, function_id, id_house, x, y, z, rx, ry, rz) VALUES " + - "(?,?,?,?,?,?,?,?,?)", Statement.RETURN_GENERATED_KEYS); - preparedStatement.setInt(1, houseItemObject.getModelId()); - preparedStatement.setInt(2, houseItemObject.getFunctionId()); - preparedStatement.setInt(3, houseItemObject.getHouse().getId()); - preparedStatement.setDouble(4, houseItemObject.getX()); - preparedStatement.setDouble(5, houseItemObject.getY()); - preparedStatement.setDouble(6, houseItemObject.getZ()); - preparedStatement.setDouble(7, houseItemObject.getRx()); - preparedStatement.setDouble(8, houseItemObject.getRy()); - preparedStatement.setDouble(9, houseItemObject.getRz()); - preparedStatement.executeUpdate(); - - ResultSet returnId = preparedStatement.getGeneratedKeys(); - if(returnId.next()) { - houseItemObject.setId(returnId.getInt(1)); - } - } - - public static void deleteHouseItem(HouseItemObject houseItemObject) throws SQLException { - PreparedStatement preparedStatement = Database.getConnection().prepareStatement("DELETE FROM tbl_house_item WHERE id_house_item=?"); - preparedStatement.setInt(1, houseItemObject.getId()); - preparedStatement.executeUpdate(); - } -} diff --git a/src/main/java/fr/yuki/yrpf/dao/InventoryDAO.java b/src/main/java/fr/yuki/yrpf/dao/InventoryDAO.java deleted file mode 100644 index 0a0d8ad..0000000 --- a/src/main/java/fr/yuki/yrpf/dao/InventoryDAO.java +++ /dev/null @@ -1,89 +0,0 @@ -package fr.yuki.yrpf.dao; - -import fr.yuki.yrpf.Database; -import fr.yuki.yrpf.inventory.Inventory; - -import java.sql.PreparedStatement; -import java.sql.ResultSet; -import java.sql.SQLException; -import java.sql.Statement; -import java.util.HashMap; - -public class InventoryDAO { - - /** - * Create a new inventory empty - * @return The inventory - */ - public static Inventory createInventory() throws SQLException { - // Create the object - Inventory inventory = new Inventory(); - inventory.setInventoryType(-1); - inventory.setInventoryItemType(-1); - inventory.setCharacterId(-1); - inventory.setVehicleId(-1); - inventory.setContent("[]"); - - // Insert the inventory - PreparedStatement preparedStatement = Database.getConnection() - .prepareStatement("INSERT INTO tbl_inventory " + - "(inventory_type, inventory_item_type, character_id, vehicle_id, content) VALUES " + - "(?,?,?,?,?)", Statement.RETURN_GENERATED_KEYS); - preparedStatement.setInt(1, inventory.getInventoryType()); - preparedStatement.setInt(2, inventory.getInventoryItemType()); - preparedStatement.setInt(3, inventory.getCharacterId()); - preparedStatement.setInt(4, inventory.getVehicleId()); - preparedStatement.setString(5, inventory.getContent()); - preparedStatement.executeUpdate(); - - ResultSet returnId = preparedStatement.getGeneratedKeys(); - if(returnId.next()) { - inventory.setId(returnId.getInt(1)); - } else { - return null; - } - returnId.close(); - preparedStatement.close(); - return inventory; - } - - /** - * Update the inventory in the database - * @param inventory The inventory - * @throws SQLException The error - */ - public static void updateInventory(Inventory inventory) throws SQLException { - PreparedStatement preparedStatement = Database.getConnection() - .prepareStatement("UPDATE tbl_inventory SET inventory_type=?, inventory_item_type=?, " + - "character_id=?, vehicle_id=?, content=? WHERE id_inventory=?"); - preparedStatement.setInt(1, inventory.getInventoryType()); - preparedStatement.setInt(2, inventory.getInventoryItemType()); - preparedStatement.setInt(3, inventory.getCharacterId()); - preparedStatement.setInt(4, inventory.getVehicleId()); - preparedStatement.setString(5, inventory.getContent()); - preparedStatement.setInt(6, inventory.getId()); - preparedStatement.execute(); - - preparedStatement.close(); - } - - public static HashMap loadInventories() throws SQLException { - HashMap inventoryHashMap = new HashMap(); - PreparedStatement preparedStatement = Database.getConnection().prepareStatement("SELECT * FROM tbl_inventory"); - ResultSet resultSet = preparedStatement.executeQuery(); - while(resultSet.next()) { - Inventory inventory = new Inventory(); - inventory.setId(resultSet.getInt("id_inventory")); - inventory.setInventoryType(resultSet.getInt("inventory_type")); - inventory.setInventoryType(resultSet.getInt("inventory_item_type")); - inventory.setCharacterId(resultSet.getInt("character_id")); - inventory.setVehicleId(resultSet.getInt("vehicle_id")); - inventory.setContent(resultSet.getString("content")); - inventory.parseContent(); - inventoryHashMap.put(inventory.getId(), inventory); - } - resultSet.close(); - preparedStatement.close(); - return inventoryHashMap; - } -} diff --git a/src/main/java/fr/yuki/yrpf/dao/ItemTemplateDAO.java b/src/main/java/fr/yuki/yrpf/dao/ItemTemplateDAO.java deleted file mode 100644 index 38d6fa9..0000000 --- a/src/main/java/fr/yuki/yrpf/dao/ItemTemplateDAO.java +++ /dev/null @@ -1,36 +0,0 @@ -package fr.yuki.yrpf.dao; - -import fr.yuki.yrpf.Database; -import fr.yuki.yrpf.model.ItemTemplate; - -import java.sql.PreparedStatement; -import java.sql.ResultSet; -import java.sql.SQLException; -import java.util.HashMap; - -public class ItemTemplateDAO { - public static HashMap getItemTemplates() throws SQLException { - HashMap itemTemplateHashMap = new HashMap(); - PreparedStatement preparedStatement = Database.getConnection().prepareStatement("SELECT * FROM tbl_item_template"); - ResultSet resultSet = preparedStatement.executeQuery(); - while(resultSet.next()) { - ItemTemplate itemTemplate = new ItemTemplate(); - itemTemplate.setId(resultSet.getInt("id_item_template")); - itemTemplate.setName(resultSet.getString("name")); - itemTemplate.setDescription(resultSet.getString("description")); - itemTemplate.setWeight(resultSet.getFloat("weight")); - itemTemplate.setPictureName(resultSet.getString("picture_name")); - itemTemplate.setItemType(resultSet.getInt("item_type")); - itemTemplate.setModelId(resultSet.getInt("model_id")); - itemTemplate.setModelScale(resultSet.getDouble("model_scale")); - itemTemplate.setFoodValue(resultSet.getInt("food_value")); - itemTemplate.setDrinkValue(resultSet.getInt("drink_value")); - itemTemplate.setWeaponId(resultSet.getInt("id_weapon")); - itemTemplate.setAmmoPerRecharge(resultSet.getInt("ammo_per_recharge")); - itemTemplate.setMaskId(resultSet.getInt("id_mask")); - itemTemplate.setBagId(resultSet.getInt("id_bag")); - itemTemplateHashMap.put(itemTemplate.getId(), itemTemplate); - } - return itemTemplateHashMap; - } -} diff --git a/src/main/java/fr/yuki/yrpf/dao/JobLevelDAO.java b/src/main/java/fr/yuki/yrpf/dao/JobLevelDAO.java deleted file mode 100644 index 5b001c0..0000000 --- a/src/main/java/fr/yuki/yrpf/dao/JobLevelDAO.java +++ /dev/null @@ -1,29 +0,0 @@ -package fr.yuki.yrpf.dao; - -import fr.yuki.yrpf.Database; -import fr.yuki.yrpf.model.JobLevel; - -import java.sql.PreparedStatement; -import java.sql.ResultSet; -import java.sql.SQLException; -import java.util.ArrayList; - -public class JobLevelDAO { - public static ArrayList loadJobLevels() throws SQLException { - ArrayList jobLevels = new ArrayList<>(); - PreparedStatement preparedStatement = Database.getConnection().prepareStatement("SELECT * FROM tbl_job_level"); - ResultSet resultSet = preparedStatement.executeQuery(); - while(resultSet.next()) { - JobLevel jobLevel = new JobLevel(); - - jobLevel.setId(resultSet.getInt("id_job_level")); - jobLevel.setJobId(resultSet.getString("id_job")); - jobLevel.setName(resultSet.getString("name")); - jobLevel.setLevel(resultSet.getInt("level")); - jobLevel.setExpFloor(resultSet.getInt("exp_floor")); - - jobLevels.add(jobLevel); - } - return jobLevels; - } -} diff --git a/src/main/java/fr/yuki/yrpf/dao/JobNPCDAO.java b/src/main/java/fr/yuki/yrpf/dao/JobNPCDAO.java deleted file mode 100644 index f492561..0000000 --- a/src/main/java/fr/yuki/yrpf/dao/JobNPCDAO.java +++ /dev/null @@ -1,39 +0,0 @@ -package fr.yuki.yrpf.dao; - -import com.google.gson.Gson; -import com.google.gson.reflect.TypeToken; -import fr.yuki.yrpf.Database; -import fr.yuki.yrpf.model.JobNPC; -import fr.yuki.yrpf.model.JobNPCListItem; - -import java.sql.PreparedStatement; -import java.sql.ResultSet; -import java.sql.SQLException; -import java.util.ArrayList; - -public class JobNPCDAO { - public static ArrayList loadJobNPCS() throws SQLException { - ArrayList jobNPCS = new ArrayList<>(); - PreparedStatement preparedStatement = Database.getConnection().prepareStatement("SELECT * FROM tbl_job_npc"); - ResultSet resultSet = preparedStatement.executeQuery(); - while(resultSet.next()) { - JobNPC jobNPC = new JobNPC(); - - jobNPC.setId(resultSet.getInt("id_job_npc")); - jobNPC.setJobId(resultSet.getString("id_job")); - jobNPC.setName(resultSet.getString("name")); - jobNPC.setX(resultSet.getDouble("x")); - jobNPC.setY(resultSet.getDouble("y")); - jobNPC.setZ(resultSet.getDouble("z")); - jobNPC.setH(resultSet.getDouble("h")); - jobNPC.setNpcClothing(resultSet.getInt("npc_clothing")); - jobNPC.setBuyList(new Gson().fromJson(resultSet.getString("buy_list"), - new TypeToken>(){}.getType())); - jobNPC.setSellList(new Gson().fromJson(resultSet.getString("sell_list"), - new TypeToken>(){}.getType())); - - jobNPCS.add(jobNPC); - } - return jobNPCS; - } -} diff --git a/src/main/java/fr/yuki/yrpf/dao/JobOutfitDAO.java b/src/main/java/fr/yuki/yrpf/dao/JobOutfitDAO.java deleted file mode 100644 index f6faf04..0000000 --- a/src/main/java/fr/yuki/yrpf/dao/JobOutfitDAO.java +++ /dev/null @@ -1,31 +0,0 @@ -package fr.yuki.yrpf.dao; - -import fr.yuki.yrpf.Database; -import fr.yuki.yrpf.model.JobOutfit; - -import java.sql.PreparedStatement; -import java.sql.ResultSet; -import java.sql.SQLException; -import java.util.ArrayList; - -public class JobOutfitDAO { - public static ArrayList loadJobOutfits() throws SQLException { - ArrayList jobOutfits = new ArrayList<>(); - PreparedStatement preparedStatement = Database.getConnection().prepareStatement("SELECT * FROM tbl_job_outfit"); - ResultSet resultSet = preparedStatement.executeQuery(); - while(resultSet.next()) { - JobOutfit jobOutfit = new JobOutfit(); - jobOutfit.setId(resultSet.getInt("id_job_outfit")); - jobOutfit.setJobId(resultSet.getString("id_job")); - jobOutfit.setLevelRequired(resultSet.getInt("level_required")); - jobOutfit.setName(resultSet.getString("name")); - jobOutfit.setOutfit(resultSet.getString("outfit")); - jobOutfit.setX(resultSet.getDouble("x")); - jobOutfit.setY(resultSet.getDouble("y")); - jobOutfit.setZ(resultSet.getDouble("z")); - - jobOutfits.add(jobOutfit); - } - return jobOutfits; - } -} diff --git a/src/main/java/fr/yuki/yrpf/dao/JobToolDAO.java b/src/main/java/fr/yuki/yrpf/dao/JobToolDAO.java deleted file mode 100644 index 33ae109..0000000 --- a/src/main/java/fr/yuki/yrpf/dao/JobToolDAO.java +++ /dev/null @@ -1,40 +0,0 @@ -package fr.yuki.yrpf.dao; - -import fr.yuki.yrpf.Database; -import fr.yuki.yrpf.model.JobTool; - -import java.sql.PreparedStatement; -import java.sql.ResultSet; -import java.sql.SQLException; -import java.util.ArrayList; - -public class JobToolDAO { - public static ArrayList loadJobTools() throws SQLException { - ArrayList jobTools = new ArrayList<>(); - PreparedStatement preparedStatement = Database.getConnection().prepareStatement("SELECT * FROM tbl_job_tool"); - ResultSet resultSet = preparedStatement.executeQuery(); - while(resultSet.next()) { - JobTool jobTool = new JobTool(); - - jobTool.setId(resultSet.getInt("id_job_tool")); - jobTool.setModelId(resultSet.getInt("model_id")); - jobTool.setName(resultSet.getString("name")); - jobTool.setJobType(resultSet.getString("job_type")); - jobTool.setLevelRequired(resultSet.getInt("level_required")); - jobTool.setJobToolType(resultSet.getString("job_tool_type")); - jobTool.setReward(resultSet.getInt("reward")); - jobTool.setX(resultSet.getDouble("x")); - jobTool.setY(resultSet.getDouble("y")); - jobTool.setZ(resultSet.getDouble("z")); - jobTool.setRx(resultSet.getDouble("r_x")); - jobTool.setRy(resultSet.getDouble("r_y")); - jobTool.setRz(resultSet.getDouble("r_z")); - jobTool.setSx(resultSet.getDouble("s_x")); - jobTool.setSy(resultSet.getDouble("s_y")); - jobTool.setSz(resultSet.getDouble("s_z")); - - jobTools.add(jobTool); - } - return jobTools; - } -} diff --git a/src/main/java/fr/yuki/yrpf/dao/JobVehicleRentalDAO.java b/src/main/java/fr/yuki/yrpf/dao/JobVehicleRentalDAO.java deleted file mode 100644 index e062700..0000000 --- a/src/main/java/fr/yuki/yrpf/dao/JobVehicleRentalDAO.java +++ /dev/null @@ -1,36 +0,0 @@ -package fr.yuki.yrpf.dao; - -import fr.yuki.yrpf.Database; -import fr.yuki.yrpf.model.JobVehicleRental; - -import java.sql.PreparedStatement; -import java.sql.ResultSet; -import java.sql.SQLException; -import java.util.ArrayList; - -public class JobVehicleRentalDAO { - public static ArrayList loadJobVehicleRental() throws SQLException { - ArrayList jobVehicleRentals = new ArrayList<>(); - PreparedStatement preparedStatement = Database.getConnection().prepareStatement("SELECT * FROM tbl_job_vehicle_rental"); - ResultSet resultSet = preparedStatement.executeQuery(); - while(resultSet.next()) { - JobVehicleRental jobVehicleRental = new JobVehicleRental(); - - jobVehicleRental.setId(resultSet.getInt("id_job_vehicle_rental")); - jobVehicleRental.setJobId(resultSet.getString("id_job")); - jobVehicleRental.setLevelRequired(resultSet.getInt("level_required")); - jobVehicleRental.setName(resultSet.getString("name")); - jobVehicleRental.setVehicleModelId(resultSet.getInt("vehicle_model_id")); - jobVehicleRental.setCost(resultSet.getInt("cost")); - jobVehicleRental.setX(resultSet.getDouble("x")); - jobVehicleRental.setY(resultSet.getDouble("y")); - jobVehicleRental.setZ(resultSet.getDouble("z")); - jobVehicleRental.setSpawnX(resultSet.getDouble("spawn_x")); - jobVehicleRental.setSpawnY(resultSet.getDouble("spawn_y")); - jobVehicleRental.setSpawnZ(resultSet.getDouble("spawn_z")); - jobVehicleRental.setColor(resultSet.getString("color")); - jobVehicleRentals.add(jobVehicleRental); - } - return jobVehicleRentals; - } -} diff --git a/src/main/java/fr/yuki/yrpf/dao/OutfitPointDAO.java b/src/main/java/fr/yuki/yrpf/dao/OutfitPointDAO.java deleted file mode 100644 index 68f33fe..0000000 --- a/src/main/java/fr/yuki/yrpf/dao/OutfitPointDAO.java +++ /dev/null @@ -1,27 +0,0 @@ -package fr.yuki.yrpf.dao; - -import fr.yuki.yrpf.Database; -import fr.yuki.yrpf.model.OutfitPoint; - -import java.sql.PreparedStatement; -import java.sql.ResultSet; -import java.sql.SQLException; -import java.util.ArrayList; - -public class OutfitPointDAO { - public static ArrayList loadOutfitPoint() throws SQLException { - ArrayList outfitPoints = new ArrayList<>(); - PreparedStatement preparedStatement = Database.getConnection().prepareStatement("SELECT * FROM tbl_outfit_point"); - ResultSet resultSet = preparedStatement.executeQuery(); - while(resultSet.next()) { - OutfitPoint outfitPoint = new OutfitPoint(); - outfitPoint.setId(resultSet.getInt("id_outfit_point")); - outfitPoint.setX(resultSet.getDouble("x")); - outfitPoint.setY(resultSet.getDouble("y")); - outfitPoint.setZ(resultSet.getDouble("z")); - - outfitPoints.add(outfitPoint); - } - return outfitPoints; - } -} diff --git a/src/main/java/fr/yuki/yrpf/dao/PhoneContactDAO.java b/src/main/java/fr/yuki/yrpf/dao/PhoneContactDAO.java deleted file mode 100644 index 2baa011..0000000 --- a/src/main/java/fr/yuki/yrpf/dao/PhoneContactDAO.java +++ /dev/null @@ -1,48 +0,0 @@ -package fr.yuki.yrpf.dao; - -import fr.yuki.yrpf.Database; -import fr.yuki.yrpf.model.PhoneContact; - -import java.sql.PreparedStatement; -import java.sql.ResultSet; -import java.sql.SQLException; -import java.sql.Statement; -import java.util.ArrayList; - -public class PhoneContactDAO { - public static ArrayList loadPhoneContacts() throws SQLException { - ArrayList phoneContacts = new ArrayList<>(); - PreparedStatement preparedStatement = Database.getConnection().prepareStatement("SELECT * FROM tbl_phone_contact"); - ResultSet resultSet = preparedStatement.executeQuery(); - while(resultSet.next()) { - PhoneContact phoneContact = new PhoneContact(); - phoneContact.setId(resultSet.getInt("id_phone_contact")); - phoneContact.setAccountId(resultSet.getInt("id_account")); - phoneContact.setName(resultSet.getString("name")); - phoneContact.setNumber(resultSet.getString("phone_number")); - - phoneContacts.add(phoneContact); - } - return phoneContacts; - } - - public static void insertPhoneContact(PhoneContact phoneContact) throws SQLException { - // Execute the query - PreparedStatement preparedStatement = Database.getConnection() - .prepareStatement("INSERT INTO tbl_phone_contact " + - "(id_account, name, phone_number) VALUES " + - "(?,?,?)", Statement.RETURN_GENERATED_KEYS); - - preparedStatement.setInt(1, phoneContact.getAccountId()); - preparedStatement.setString(2, phoneContact.getName()); - preparedStatement.setString(3, phoneContact.getNumber()); - preparedStatement.executeUpdate(); - - ResultSet returnId = preparedStatement.getGeneratedKeys(); - if(returnId.next()) { - phoneContact.setId(returnId.getInt(1)); - } - returnId.close(); - preparedStatement.close(); - } -} diff --git a/src/main/java/fr/yuki/yrpf/dao/SellerDAO.java b/src/main/java/fr/yuki/yrpf/dao/SellerDAO.java deleted file mode 100644 index 275fd4c..0000000 --- a/src/main/java/fr/yuki/yrpf/dao/SellerDAO.java +++ /dev/null @@ -1,36 +0,0 @@ -package fr.yuki.yrpf.dao; - -import fr.yuki.yrpf.Database; -import fr.yuki.yrpf.model.Seller; - -import java.sql.PreparedStatement; -import java.sql.ResultSet; -import java.sql.SQLException; -import java.util.ArrayList; - -public class SellerDAO { - public static ArrayList loadSellers() throws SQLException { - ArrayList sellers = new ArrayList<>(); - PreparedStatement preparedStatement = Database.getConnection().prepareStatement("SELECT * FROM tbl_seller"); - ResultSet resultSet = preparedStatement.executeQuery(); - while(resultSet.next()) { - Seller seller = new Seller(); - - seller.setId(resultSet.getInt("id_seller")); - seller.setName(resultSet.getString("name")); - seller.setX(resultSet.getDouble("x")); - seller.setY(resultSet.getDouble("y")); - seller.setZ(resultSet.getDouble("z")); - seller.setH(resultSet.getDouble("h")); - seller.setNpcClothing(resultSet.getInt("npc_clothing")); - seller.setItemList(resultSet.getString("item_list")); - seller.setJobRequired(resultSet.getString("job_required")); - seller.setJobLevelRequired(resultSet.getInt("job_level_required")); - - sellers.add(seller); - } - preparedStatement.close(); - resultSet.close(); - return sellers; - } -} diff --git a/src/main/java/fr/yuki/yrpf/dao/VehicleGarageDAO.java b/src/main/java/fr/yuki/yrpf/dao/VehicleGarageDAO.java deleted file mode 100644 index 48686c2..0000000 --- a/src/main/java/fr/yuki/yrpf/dao/VehicleGarageDAO.java +++ /dev/null @@ -1,79 +0,0 @@ -package fr.yuki.yrpf.dao; - -import fr.yuki.yrpf.Database; -import fr.yuki.yrpf.model.VehicleGarage; - -import java.sql.*; -import java.util.ArrayList; - -public class VehicleGarageDAO { - public static VehicleGarage createVehicleGarage(VehicleGarage vehicleGarage) throws SQLException { - PreparedStatement preparedStatement = Database.getConnection() - .prepareStatement("INSERT INTO tbl_vehicle_garage " + - "(id_garage, id_last_garage, id_model, damage, licence_plate, color, created_at, updated_at, uuid, owner, health) VALUES " + - "(?,?,?,?,?,?,?,?,?,?,?)", Statement.RETURN_GENERATED_KEYS); - preparedStatement.setInt(1, vehicleGarage.getGarageId()); - preparedStatement.setInt(2, vehicleGarage.getGarageLastId()); - preparedStatement.setInt(3, vehicleGarage.getModelId()); - preparedStatement.setString(4, vehicleGarage.getDamage()); - preparedStatement.setString(5, vehicleGarage.getLicencePlate()); - preparedStatement.setString(6, vehicleGarage.getColor()); - preparedStatement.setDate(7, new Date(new java.util.Date().getTime())); - preparedStatement.setDate(8, new Date(new java.util.Date().getTime())); - preparedStatement.setString(9, vehicleGarage.getUuid()); - preparedStatement.setInt(10, vehicleGarage.getOwner()); - preparedStatement.setDouble(11, vehicleGarage.getHealth()); - preparedStatement.executeUpdate(); - - ResultSet returnId = preparedStatement.getGeneratedKeys(); - if(returnId.next()) { - vehicleGarage.setVehicleGarageId(returnId.getInt(1)); - } else { - return null; - } - returnId.close(); - preparedStatement.close(); - return vehicleGarage; - } - - public static ArrayList loadVehiclesGarage() throws SQLException { - ArrayList vehicleGarages = new ArrayList<>(); - PreparedStatement preparedStatement = Database.getConnection().prepareStatement("SELECT * FROM tbl_vehicle_garage"); - ResultSet resultSet = preparedStatement.executeQuery(); - while(resultSet.next()) { - VehicleGarage vehicleGarage = new VehicleGarage(); - - vehicleGarage.setVehicleGarageId(resultSet.getInt("id_vehicle_garage")); - vehicleGarage.setOwner(resultSet.getInt("owner")); - vehicleGarage.setUuid(resultSet.getString("uuid")); - vehicleGarage.setGarageId(resultSet.getInt("id_garage")); - vehicleGarage.setGarageLastId(resultSet.getInt("id_last_garage")); - vehicleGarage.setModelId(resultSet.getInt("id_model")); - vehicleGarage.setDamage(resultSet.getString("damage")); - vehicleGarage.setHealth(resultSet.getDouble("health")); - vehicleGarage.setLicencePlate(resultSet.getString("licence_plate")); - vehicleGarage.setColor(resultSet.getString("color")); - vehicleGarage.setCreatedAt(resultSet.getDate("created_at")); - vehicleGarage.setUpdateAt(resultSet.getDate("updated_at")); - - vehicleGarages.add(vehicleGarage); - } - preparedStatement.close(); - resultSet.close(); - return vehicleGarages; - } - - public static void saveVehicleGarage(VehicleGarage vehicleGarage) throws SQLException { - PreparedStatement preparedStatement = Database.getConnection() - .prepareStatement("UPDATE tbl_vehicle_garage SET id_garage=?, id_last_garage=?, color=?, licence_plate=?, damage=?, health=? WHERE id_vehicle_garage=?"); - preparedStatement.setInt(1, vehicleGarage.getGarageId()); - preparedStatement.setInt(2, vehicleGarage.getGarageLastId()); - preparedStatement.setString(3, vehicleGarage.getColor()); - preparedStatement.setString(4, vehicleGarage.getLicencePlate()); - preparedStatement.setString(5, vehicleGarage.getDamage()); - preparedStatement.setDouble(6, vehicleGarage.getHealth()); - preparedStatement.setInt(7, vehicleGarage.getVehicleGarageId()); - preparedStatement.execute(); - preparedStatement.close(); - } -} diff --git a/src/main/java/fr/yuki/yrpf/enums/ItemTemplateEnum.java b/src/main/java/fr/yuki/yrpf/enums/ItemTemplateEnum.java index 1c62521..91266e0 100644 --- a/src/main/java/fr/yuki/yrpf/enums/ItemTemplateEnum.java +++ b/src/main/java/fr/yuki/yrpf/enums/ItemTemplateEnum.java @@ -30,7 +30,7 @@ public enum ItemTemplateEnum { public final String id; - private ItemTemplateEnum(String id) { + ItemTemplateEnum(String id) { this.id = id; } } diff --git a/src/main/java/fr/yuki/yrpf/enums/JobEnum.java b/src/main/java/fr/yuki/yrpf/enums/JobEnum.java index c94e137..e33671c 100644 --- a/src/main/java/fr/yuki/yrpf/enums/JobEnum.java +++ b/src/main/java/fr/yuki/yrpf/enums/JobEnum.java @@ -1,17 +1,12 @@ package fr.yuki.yrpf.enums; public enum JobEnum { - LUMBERJACK("LUMBERJACK"), - DELIVERY("DELIVERY"), - MINER("MINER"), - FISHER("FISHER"), - POLICE("POLICE"), - WEED("WEED"), - GARBAGE("GARBAGE"), - EMS("EMS"); - - public final String type; - private JobEnum(String type) { - this.type = type; - } + LUMBERJACK, + DELIVERY, + MINER, + FISHER, + POLICE, + WEED, + GARBAGE, + EMS } diff --git a/src/main/java/fr/yuki/yrpf/enums/ToastTypeEnum.java b/src/main/java/fr/yuki/yrpf/enums/ToastTypeEnum.java index 39b3865..53366d1 100644 --- a/src/main/java/fr/yuki/yrpf/enums/ToastTypeEnum.java +++ b/src/main/java/fr/yuki/yrpf/enums/ToastTypeEnum.java @@ -9,7 +9,7 @@ public enum ToastTypeEnum { public final String type; - private ToastTypeEnum(String type) { + ToastTypeEnum(String type) { this.type = type; } } diff --git a/src/main/java/fr/yuki/yrpf/inventory/Inventory.java b/src/main/java/fr/yuki/yrpf/inventory/Inventory.java index 47bf010..5a4112c 100644 --- a/src/main/java/fr/yuki/yrpf/inventory/Inventory.java +++ b/src/main/java/fr/yuki/yrpf/inventory/Inventory.java @@ -2,8 +2,10 @@ import com.google.gson.Gson; import com.google.gson.reflect.TypeToken; +import eu.bebendorf.ajorm.Model; +import eu.bebendorf.ajorm.annotation.Column; +import eu.bebendorf.ajorm.annotation.Table; import fr.yuki.yrpf.character.CharacterState; -import fr.yuki.yrpf.dao.InventoryDAO; import fr.yuki.yrpf.enums.ItemTemplateEnum; import fr.yuki.yrpf.enums.ToastTypeEnum; import fr.yuki.yrpf.i18n.I18n; @@ -17,24 +19,30 @@ import fr.yuki.yrpf.net.payload.RemoteItemInventoryPayload; import fr.yuki.yrpf.net.payload.UpdateInventoryWeightPayload; import fr.yuki.yrpf.net.payload.UpdateItemInventoryPayload; -import net.onfirenetwork.onsetjava.Onset; +import lombok.Getter; +import lombok.Setter; import net.onfirenetwork.onsetjava.entity.Player; import java.util.ArrayList; +import java.util.List; import java.util.stream.Collectors; -public class Inventory { +@Getter @Setter @Table("tbl_inventory") +public class Inventory extends Model { + @Column(column = "id_inventory") private int id; - private int inventoryType; - private int inventoryItemType; - private int characterId; - private int vehicleId; - private String content; - private ArrayList inventoryItems; - - public Inventory() { - this.inventoryItems = new ArrayList(); - } + @Column + private int inventoryType = -1; + @Column + private int inventoryItemType = -1; + @Column + private int characterId = -1; + @Column + private int vehicleId = -1; + @Column(size = 0) + private String content = "[]"; + + private ArrayList inventoryItems = new ArrayList<>(); /** * Try to add the inventory item to the inventory, return a existing item if its stacked @@ -103,13 +111,9 @@ public void updateItemPlayerView(InventoryItem inventoryItem) { * Compute the content and save it into the database */ public void save() { - try { - if(this.getId() <= 0) return; - this.content = new Gson().toJson(this.inventoryItems); - InventoryDAO.updateInventory(this); - } catch (Exception ex) { - Onset.print("Can't save the inventory: " + ex.toString()); - } + if(this.getId() < 0) return; + this.content = new Gson().toJson(this.inventoryItems); + super.save(); } /** @@ -186,7 +190,7 @@ public InventoryItem getItem(String id) { return this.inventoryItems.stream().filter(x -> x.getId().equals(id)).findFirst().orElse(null); } - public ArrayList getItemsByType(String type) { + public List getItemsByType(String type) { return new ArrayList<>(this.inventoryItems.stream().filter(x -> x.getTemplateId().equals(type)).collect(Collectors.toList())); } @@ -235,62 +239,7 @@ public void updateWeightView() { } public void throwItem(InventoryItem item, int quantity) { - - } - - public int getId() { - return id; - } - - public void setId(int id) { - this.id = id; - } - - public int getInventoryType() { - return inventoryType; - } - - public void setInventoryType(int inventoryType) { - this.inventoryType = inventoryType; - } - - public int getInventoryItemType() { - return inventoryItemType; - } - - public void setInventoryItemType(int inventoryItemType) { - this.inventoryItemType = inventoryItemType; + // TODO } - public int getCharacterId() { - return characterId; - } - - public void setCharacterId(int characterId) { - this.characterId = characterId; - } - - public int getVehicleId() { - return vehicleId; - } - - public void setVehicleId(int vehicleId) { - this.vehicleId = vehicleId; - } - - public String getContent() { - return content; - } - - public void setContent(String content) { - this.content = content; - } - - public ArrayList getInventoryItems() { - return inventoryItems; - } - - public void setInventoryItems(ArrayList inventoryItems) { - this.inventoryItems = inventoryItems; - } } diff --git a/src/main/java/fr/yuki/yrpf/job/DeliveryJob.java b/src/main/java/fr/yuki/yrpf/job/DeliveryJob.java index 225d4c7..4ccbc4f 100644 --- a/src/main/java/fr/yuki/yrpf/job/DeliveryJob.java +++ b/src/main/java/fr/yuki/yrpf/job/DeliveryJob.java @@ -20,7 +20,7 @@ public DeliveryJob() { @Override public String getJobType() { - return JobEnum.DELIVERY.type; + return JobEnum.DELIVERY.name(); } @Override diff --git a/src/main/java/fr/yuki/yrpf/job/EMSJob.java b/src/main/java/fr/yuki/yrpf/job/EMSJob.java index f85295e..0eebde4 100644 --- a/src/main/java/fr/yuki/yrpf/job/EMSJob.java +++ b/src/main/java/fr/yuki/yrpf/job/EMSJob.java @@ -17,7 +17,7 @@ public EMSJob() { @Override public String getJobType() { - return JobEnum.EMS.type; + return JobEnum.EMS.name(); } @Override diff --git a/src/main/java/fr/yuki/yrpf/job/FisherJob.java b/src/main/java/fr/yuki/yrpf/job/FisherJob.java index aeee338..efc455c 100644 --- a/src/main/java/fr/yuki/yrpf/job/FisherJob.java +++ b/src/main/java/fr/yuki/yrpf/job/FisherJob.java @@ -23,7 +23,7 @@ public FisherJob() { @Override public String getJobType() { - return JobEnum.FISHER.type; + return JobEnum.FISHER.name(); } @Override diff --git a/src/main/java/fr/yuki/yrpf/job/GarbageJob.java b/src/main/java/fr/yuki/yrpf/job/GarbageJob.java index a87cf96..6269bd7 100644 --- a/src/main/java/fr/yuki/yrpf/job/GarbageJob.java +++ b/src/main/java/fr/yuki/yrpf/job/GarbageJob.java @@ -20,7 +20,7 @@ public GarbageJob() { @Override public String getJobType() { - return JobEnum.GARBAGE.type; + return JobEnum.GARBAGE.name(); } @Override diff --git a/src/main/java/fr/yuki/yrpf/job/LumberjackJob.java b/src/main/java/fr/yuki/yrpf/job/LumberjackJob.java index e992c3b..7e81a9c 100644 --- a/src/main/java/fr/yuki/yrpf/job/LumberjackJob.java +++ b/src/main/java/fr/yuki/yrpf/job/LumberjackJob.java @@ -29,7 +29,7 @@ private static void spawnNpc() { @Override public String getJobType() { - return JobEnum.LUMBERJACK.type; + return JobEnum.LUMBERJACK.name(); } @Override diff --git a/src/main/java/fr/yuki/yrpf/job/MinerJob.java b/src/main/java/fr/yuki/yrpf/job/MinerJob.java index f1171ef..6232d5f 100644 --- a/src/main/java/fr/yuki/yrpf/job/MinerJob.java +++ b/src/main/java/fr/yuki/yrpf/job/MinerJob.java @@ -23,7 +23,7 @@ public MinerJob() { @Override public String getJobType() { - return JobEnum.MINER.type; + return JobEnum.MINER.name(); } @Override diff --git a/src/main/java/fr/yuki/yrpf/job/PoliceJob.java b/src/main/java/fr/yuki/yrpf/job/PoliceJob.java index 25d0459..1133073 100644 --- a/src/main/java/fr/yuki/yrpf/job/PoliceJob.java +++ b/src/main/java/fr/yuki/yrpf/job/PoliceJob.java @@ -16,7 +16,7 @@ public PoliceJob() { @Override public String getJobType() { - return JobEnum.POLICE.type; + return JobEnum.POLICE.name(); } @Override diff --git a/src/main/java/fr/yuki/yrpf/job/WearableWorldObject.java b/src/main/java/fr/yuki/yrpf/job/WearableWorldObject.java index 4696ad8..45d0b0c 100644 --- a/src/main/java/fr/yuki/yrpf/job/WearableWorldObject.java +++ b/src/main/java/fr/yuki/yrpf/job/WearableWorldObject.java @@ -129,13 +129,13 @@ public void requestUnwear(Player player, boolean delete) { if(deliveryPointGoal != null) { if(deliveryPointGoal.isNear(player)) { ArrayList characterJobLevels = account.decodeCharacterJob(); - CharacterJobLevel characterJobLevel = characterJobLevels.stream().filter(x -> x.getJobId().equals(JobEnum.DELIVERY.type)).findFirst().orElse(null); + CharacterJobLevel characterJobLevel = characterJobLevels.stream().filter(x -> x.getJobId().equals(JobEnum.DELIVERY.name())).findFirst().orElse(null); int rewardPerDistance = (int)Math.floor(((originPosition.distance(player.getLocation()) / 1000) / 2.5)); InventoryManager.addItemToPlayer(player, ItemTemplateEnum.CASH.id, rewardPerDistance, false); SoundManager.playSound3D("sounds/cash_register.mp3", player.getLocation(), 200, 1); delete = true; - JobManager.addExp(player, JobEnum.DELIVERY.type, 15); + JobManager.addExp(player, JobEnum.DELIVERY.name(), 15); UIStateManager.sendNotification(player, ToastTypeEnum.SUCCESS, I18n.t(account.getLang(), "toast.delivery.shipped", String.valueOf(rewardPerDistance), String.valueOf(Math.floor(originPosition.distance(player.getLocation()) / 100)))); } diff --git a/src/main/java/fr/yuki/yrpf/job/WeedJob.java b/src/main/java/fr/yuki/yrpf/job/WeedJob.java index 4d45a16..22d3d19 100644 --- a/src/main/java/fr/yuki/yrpf/job/WeedJob.java +++ b/src/main/java/fr/yuki/yrpf/job/WeedJob.java @@ -31,7 +31,7 @@ private void createDealerBoat() { @Override public String getJobType() { - return JobEnum.WEED.type; + return JobEnum.WEED.name(); } @Override diff --git a/src/main/java/fr/yuki/yrpf/job/deliveryPackage/GeneratorDeliveryPackage.java b/src/main/java/fr/yuki/yrpf/job/deliveryPackage/GeneratorDeliveryPackage.java index 98eef74..41207f5 100644 --- a/src/main/java/fr/yuki/yrpf/job/deliveryPackage/GeneratorDeliveryPackage.java +++ b/src/main/java/fr/yuki/yrpf/job/deliveryPackage/GeneratorDeliveryPackage.java @@ -40,12 +40,12 @@ public void onDelivered() { jobTool.setX(this.position.getX()); jobTool.setY(this.position.getY()); jobTool.setZ(this.position.getZ()); - jobTool.setRx(this.rotation.getX()); - jobTool.setRy(this.rotation.getY()); - jobTool.setRz(this.rotation.getZ()); - jobTool.setSx(1); - jobTool.setSy(1); - jobTool.setSz(1); + jobTool.setRX(this.rotation.getX()); + jobTool.setRY(this.rotation.getY()); + jobTool.setRZ(this.rotation.getZ()); + jobTool.setSX(1); + jobTool.setSY(1); + jobTool.setSZ(1); jobTool.setJobToolType("GENERATOR"); JobManager.getJobTools().add(jobTool); jobTool.spawn(JobManager.getJobs().get(JobEnum.WEED)); diff --git a/src/main/java/fr/yuki/yrpf/job/deliveryPackage/GenericDeliveryPackage.java b/src/main/java/fr/yuki/yrpf/job/deliveryPackage/GenericDeliveryPackage.java index c6822cd..d2d0511 100644 --- a/src/main/java/fr/yuki/yrpf/job/deliveryPackage/GenericDeliveryPackage.java +++ b/src/main/java/fr/yuki/yrpf/job/deliveryPackage/GenericDeliveryPackage.java @@ -1,16 +1,12 @@ package fr.yuki.yrpf.job.deliveryPackage; -import fr.yuki.yrpf.dao.HouseItemDAO; import fr.yuki.yrpf.manager.HouseManager; import fr.yuki.yrpf.model.House; import fr.yuki.yrpf.model.HouseItemObject; import fr.yuki.yrpf.model.ItemShopObject; -import net.onfirenetwork.onsetjava.Onset; import net.onfirenetwork.onsetjava.data.Vector; import net.onfirenetwork.onsetjava.entity.Player; -import java.sql.SQLException; - public class GenericDeliveryPackage extends DeliveryPackage { private int modelId; @@ -43,21 +39,13 @@ public void onDelivered() { houseItemObject.setId(-1); houseItemObject.setModelId(this.modelId); houseItemObject.setFunctionId(itemShopObject == null ? -1 : itemShopObject.getFunctionId()); - houseItemObject.setX(this.position.getX()); - houseItemObject.setY(this.position.getY()); - houseItemObject.setZ(this.position.getZ()); - houseItemObject.setRx(this.rotation.getX()); - houseItemObject.setRy(this.rotation.getY()); - houseItemObject.setRz(this.rotation.getZ()); + houseItemObject.setPosition(position); + houseItemObject.setRotation(rotation); House house = HouseManager.getHouseAtLocation(this.position); house.getHouseItemObjects().add(houseItemObject); houseItemObject.setHouse(house); - try { - HouseItemDAO.insertHouseItem(houseItemObject); - } catch (SQLException ex) { - Onset.print("Can't insert the house item: " + ex.toString()); - } + houseItemObject.save(); houseItemObject.spawn(); } diff --git a/src/main/java/fr/yuki/yrpf/job/deliveryPackage/GrowBoxDeliveryPackage.java b/src/main/java/fr/yuki/yrpf/job/deliveryPackage/GrowBoxDeliveryPackage.java index 7eb715b..957101d 100644 --- a/src/main/java/fr/yuki/yrpf/job/deliveryPackage/GrowBoxDeliveryPackage.java +++ b/src/main/java/fr/yuki/yrpf/job/deliveryPackage/GrowBoxDeliveryPackage.java @@ -1,6 +1,5 @@ package fr.yuki.yrpf.job.deliveryPackage; -import fr.yuki.yrpf.dao.GrowboxDAO; import fr.yuki.yrpf.enums.JobEnum; import fr.yuki.yrpf.job.tools.GrowBox; import fr.yuki.yrpf.manager.JobManager; @@ -9,8 +8,6 @@ import net.onfirenetwork.onsetjava.data.Vector; import net.onfirenetwork.onsetjava.entity.Player; -import java.sql.SQLException; - public class GrowBoxDeliveryPackage extends DeliveryPackage { public GrowBoxDeliveryPackage(Player player, Vector position, Vector rotation) { super(player, position, rotation); @@ -45,15 +42,15 @@ public void onDelivered() { jobTool.setX(this.position.getX()); jobTool.setY(this.position.getY()); jobTool.setZ(this.position.getZ()); - jobTool.setRx(this.rotation.getX()); - jobTool.setRy(this.rotation.getY()); - jobTool.setRz(this.rotation.getZ()); - jobTool.setSx(1); - jobTool.setSy(1); - jobTool.setSz(1); + jobTool.setRX(this.rotation.getX()); + jobTool.setRY(this.rotation.getY()); + jobTool.setRZ(this.rotation.getZ()); + jobTool.setSX(1); + jobTool.setSY(1); + jobTool.setSZ(1); jobTool.setJobToolType("GROWBOX"); JobManager.getJobTools().add(jobTool); - jobTool.spawn(JobManager.getJobs().get(JobEnum.WEED)); + jobTool.spawn(JobManager.getJobs().get(JobEnum.WEED.name())); // Insert new growbox GrowBox growBox = (GrowBox)jobTool.getJobToolHandler(); @@ -65,10 +62,6 @@ public void onDelivered() { growboxModel.setRy(this.rotation.getY()); growboxModel.setRz(this.rotation.getZ()); growBox.setGrowboxModel(growboxModel); - try { - GrowboxDAO.insertGrowbox(growboxModel); - } catch (SQLException throwables) { - throwables.printStackTrace(); - } + growboxModel.save(); } } diff --git a/src/main/java/fr/yuki/yrpf/job/tools/GarbageBin.java b/src/main/java/fr/yuki/yrpf/job/tools/GarbageBin.java index 1efba31..aa1581d 100644 --- a/src/main/java/fr/yuki/yrpf/job/tools/GarbageBin.java +++ b/src/main/java/fr/yuki/yrpf/job/tools/GarbageBin.java @@ -26,7 +26,7 @@ public boolean canInteract(Player player) { @Override public boolean onUnwear(Player player, WearableWorldObject wearableWorldObject) { - JobManager.addExp(player, JobEnum.GARBAGE.type, 20); + JobManager.addExp(player, JobEnum.GARBAGE.name(), 20); int reward = this.jobTool.getReward(); if(JobManager.getJobLevelForPlayer(player, this.jobTool.getJobType()) == 2) { diff --git a/src/main/java/fr/yuki/yrpf/job/tools/GrowBox.java b/src/main/java/fr/yuki/yrpf/job/tools/GrowBox.java index e9c591f..4ab7fbd 100644 --- a/src/main/java/fr/yuki/yrpf/job/tools/GrowBox.java +++ b/src/main/java/fr/yuki/yrpf/job/tools/GrowBox.java @@ -2,7 +2,6 @@ import com.google.gson.Gson; import fr.yuki.yrpf.character.CharacterState; -import fr.yuki.yrpf.dao.GrowboxDAO; import fr.yuki.yrpf.enums.ItemTemplateEnum; import fr.yuki.yrpf.enums.JobEnum; import fr.yuki.yrpf.enums.ToastTypeEnum; @@ -23,7 +22,6 @@ import net.onfirenetwork.onsetjava.data.Vector; import net.onfirenetwork.onsetjava.entity.Player; -import java.sql.SQLException; import java.util.ArrayList; public class GrowBox implements JobToolHandler { @@ -120,11 +118,7 @@ public void destroy(Player player) { // Destroy growbox this.jobTool.destroy(); - try { - GrowboxDAO.deleteGrowbox(this.growboxModel); - } catch (SQLException throwables) { - throwables.printStackTrace(); - } + this.growboxModel.delete(); } public boolean addPot(Player player, WearableWorldObject wearableWorldObject) { @@ -179,7 +173,7 @@ public void fillPotSeed(Player player, String potId) { inventory.removeItem(seedItem, 1); player.callRemoteEvent("GlobalUI:DispatchToUI", new Gson().toJson(new AddGrowboxMenuItemPayload(pot.getUuid(), 554, pot.getWater(), pot.getState(), pot.isSeed()))); - JobManager.addExp(player, JobEnum.WEED.type, 15); + JobManager.addExp(player, JobEnum.WEED.name(), 15); } public void harvestPot(Player player, String potId) { diff --git a/src/main/java/fr/yuki/yrpf/job/tools/Sawmill.java b/src/main/java/fr/yuki/yrpf/job/tools/Sawmill.java index 8623aeb..eca8a8b 100644 --- a/src/main/java/fr/yuki/yrpf/job/tools/Sawmill.java +++ b/src/main/java/fr/yuki/yrpf/job/tools/Sawmill.java @@ -47,7 +47,7 @@ public boolean onUnwear(Player player, WearableWorldObject wearableWorldObject) if(ModdingManager.isCustomModelId(wearableWorldObject.getModelId())) ModdingManager.assignCustomModel(worldObject, wearableWorldObject.getModelId()); SoundManager.playSound3D("sounds/saw_mill_cut.mp3", player.getLocation(), 1000, 0.8); - JobManager.addExp(player, JobEnum.LUMBERJACK.type, 20); + JobManager.addExp(player, JobEnum.LUMBERJACK.name(), 20); worldObject.attach(this.jobTool.getWorldObject(), new Vector(0, 0,160), new Vector(0, 0, 0), ""); Onset.delay(8000, () -> { worldObject.destroy(); @@ -68,7 +68,7 @@ public boolean onUnwear(Player player, WearableWorldObject wearableWorldObject) public boolean hasLevelRequired(Player player) { Account account = WorldManager.getPlayerAccount(player); ArrayList characterJobLevels = account.decodeCharacterJob(); - CharacterJobLevel characterJobLevel = characterJobLevels.stream().filter(x -> x.getJobId().equals(JobEnum.LUMBERJACK.type)) + CharacterJobLevel characterJobLevel = characterJobLevels.stream().filter(x -> x.getJobId().equals(JobEnum.LUMBERJACK.name())) .findFirst().orElse(null); if(characterJobLevel == null) return false; if(characterJobLevel.getJobLevel().getLevel() < 2) return false; diff --git a/src/main/java/fr/yuki/yrpf/manager/GarageManager.java b/src/main/java/fr/yuki/yrpf/manager/GarageManager.java index e004aa7..fe101e4 100644 --- a/src/main/java/fr/yuki/yrpf/manager/GarageManager.java +++ b/src/main/java/fr/yuki/yrpf/manager/GarageManager.java @@ -1,13 +1,14 @@ package fr.yuki.yrpf.manager; import com.google.gson.Gson; -import fr.yuki.yrpf.dao.VehicleGarageDAO; +import eu.bebendorf.ajorm.Repo; import fr.yuki.yrpf.enums.ItemTemplateEnum; import fr.yuki.yrpf.enums.ToastTypeEnum; import fr.yuki.yrpf.i18n.I18n; import fr.yuki.yrpf.inventory.Inventory; import fr.yuki.yrpf.model.*; import fr.yuki.yrpf.net.payload.*; +import lombok.Getter; import net.onfirenetwork.onsetjava.Onset; import net.onfirenetwork.onsetjava.data.Color; import net.onfirenetwork.onsetjava.data.Vector; @@ -16,20 +17,22 @@ import java.sql.SQLException; import java.util.ArrayList; +import java.util.List; import java.util.stream.Collectors; public class GarageManager { - private static ArrayList vehicleGarages; + @Getter + private static List vehicleGarages; public static void init() throws SQLException { - vehicleGarages = VehicleGarageDAO.loadVehiclesGarage(); + vehicleGarages = Repo.get(VehicleGarage.class).all(); Onset.print("Loaded " + vehicleGarages.size() + " vehicle(s) from the database"); // Reset last garage to vehicle for(VehicleGarage vehicleGarage : vehicleGarages) { vehicleGarage.setGarageId(vehicleGarage.getGarageLastId()); - VehicleGarageDAO.saveVehicleGarage(vehicleGarage); + vehicleGarage.save(); } } @@ -176,10 +179,6 @@ public static void handleRequestVehicle(Player player, String vehicleUuid) { vehicleGarage.save(); } - public static ArrayList getVehicleGarages() { - return vehicleGarages; - } - public static boolean handleVSellerInteract(Player player) { for(VehicleSeller vehicleSeller : WorldManager.getVehicleSellers()) { if(vehicleSeller.isNear(player)) { diff --git a/src/main/java/fr/yuki/yrpf/manager/GrowboxManager.java b/src/main/java/fr/yuki/yrpf/manager/GrowboxManager.java index 5a1e818..0f30e36 100644 --- a/src/main/java/fr/yuki/yrpf/manager/GrowboxManager.java +++ b/src/main/java/fr/yuki/yrpf/manager/GrowboxManager.java @@ -1,6 +1,6 @@ package fr.yuki.yrpf.manager; -import fr.yuki.yrpf.dao.GrowboxDAO; +import eu.bebendorf.ajorm.Repo; import fr.yuki.yrpf.enums.JobEnum; import fr.yuki.yrpf.job.tools.Generator; import fr.yuki.yrpf.job.tools.GrowBox; @@ -11,13 +11,12 @@ import net.onfirenetwork.onsetjava.data.Vector; import net.onfirenetwork.onsetjava.entity.Player; -import java.sql.SQLException; import java.util.stream.Collectors; public class GrowboxManager { - public static void init() throws SQLException { + public static void init() { // Load growboxes - for(GrowboxModel growboxModel : GrowboxDAO.loadGrowbox()) { + for(GrowboxModel growboxModel : Repo.get(GrowboxModel.class).all()) { JobTool jobTool = new JobTool(); jobTool.setId(-1); jobTool.setModelId(50007); @@ -28,12 +27,12 @@ public static void init() throws SQLException { jobTool.setX(growboxModel.getX()); jobTool.setY(growboxModel.getY()); jobTool.setZ(growboxModel.getZ()); - jobTool.setRx(growboxModel.getRx()); - jobTool.setRy(growboxModel.getRy()); - jobTool.setRz(growboxModel.getRz()); - jobTool.setSx(1); - jobTool.setSy(1); - jobTool.setSz(1); + jobTool.setRX(growboxModel.getRx()); + jobTool.setRY(growboxModel.getRy()); + jobTool.setRY(growboxModel.getRz()); + jobTool.setSX(1); + jobTool.setSY(1); + jobTool.setSZ(1); jobTool.setJobToolType("GROWBOX"); ((GrowBox)jobTool.getJobToolHandler()).setGrowboxModel(growboxModel); JobManager.getJobTools().add(jobTool); diff --git a/src/main/java/fr/yuki/yrpf/manager/HouseManager.java b/src/main/java/fr/yuki/yrpf/manager/HouseManager.java index 75d3f66..8ccff5e 100644 --- a/src/main/java/fr/yuki/yrpf/manager/HouseManager.java +++ b/src/main/java/fr/yuki/yrpf/manager/HouseManager.java @@ -4,7 +4,6 @@ import com.google.gson.reflect.TypeToken; import eu.bebendorf.ajorm.Repo; import fr.yuki.yrpf.character.CharacterState; -import fr.yuki.yrpf.dao.HouseItemDAO; import fr.yuki.yrpf.enums.ItemTemplateEnum; import fr.yuki.yrpf.enums.ToastTypeEnum; import fr.yuki.yrpf.i18n.I18n; @@ -49,8 +48,8 @@ private static void loadItemsShop() { } } - public static void spawnHouseItems() throws SQLException { - for(HouseItemObject houseItemObject : HouseItemDAO.loadHouseItems()) { + public static void spawnHouseItems() { + for(HouseItemObject houseItemObject : Repo.get(HouseItemObject.class).all()) { House house = getHouseAtLocation(houseItemObject.getPosition()); if(house == null) { Onset.print("Can't find the house for item: " + houseItemObject.getId()); diff --git a/src/main/java/fr/yuki/yrpf/manager/InventoryManager.java b/src/main/java/fr/yuki/yrpf/manager/InventoryManager.java index 3a8e463..bd4f0f0 100644 --- a/src/main/java/fr/yuki/yrpf/manager/InventoryManager.java +++ b/src/main/java/fr/yuki/yrpf/manager/InventoryManager.java @@ -1,8 +1,7 @@ package fr.yuki.yrpf.manager; import com.google.gson.Gson; -import fr.yuki.yrpf.dao.InventoryDAO; -import fr.yuki.yrpf.dao.ItemTemplateDAO; +import eu.bebendorf.ajorm.Repo; import fr.yuki.yrpf.enums.ToastTypeEnum; import fr.yuki.yrpf.i18n.I18n; import fr.yuki.yrpf.inventory.Inventory; @@ -14,6 +13,7 @@ import fr.yuki.yrpf.net.payload.RequestInventoryContentPayload; import fr.yuki.yrpf.net.payload.RequestThrowItemPayload; import fr.yuki.yrpf.utils.Basic; +import lombok.Getter; import net.onfirenetwork.onsetjava.Onset; import net.onfirenetwork.onsetjava.data.Vector; import net.onfirenetwork.onsetjava.entity.Player; @@ -22,14 +22,18 @@ import java.util.*; public class InventoryManager { - private static HashMap itemTemplates; - private static HashMap inventories; + @Getter + private static Map itemTemplates; + @Getter + private static Map inventories; public static void init() throws SQLException { - itemTemplates = ItemTemplateDAO.getItemTemplates(); + itemTemplates = new HashMap<>(); + Repo.get(ItemTemplate.class).all().forEach(it -> itemTemplates.put(it.getId(), it)); Onset.print("Loaded " + itemTemplates.size() + " item template(s) from the database"); - inventories = InventoryDAO.loadInventories(); + inventories = new HashMap<>(); + Repo.get(Inventory.class).all().forEach(it -> inventories.put(it.getId(), it)); Onset.print("Loaded " + inventories.size() + " inventorie(s) from the database"); } @@ -150,11 +154,4 @@ public static void handleThrowItem(Player player, RequestThrowItemPayload payloa inventory.updateWeightView(); } - public static HashMap getItemTemplates() { - return itemTemplates; - } - - public static HashMap getInventories() { - return inventories; - } } diff --git a/src/main/java/fr/yuki/yrpf/manager/JobManager.java b/src/main/java/fr/yuki/yrpf/manager/JobManager.java index b067ecb..4e848d4 100644 --- a/src/main/java/fr/yuki/yrpf/manager/JobManager.java +++ b/src/main/java/fr/yuki/yrpf/manager/JobManager.java @@ -1,10 +1,10 @@ package fr.yuki.yrpf.manager; import com.google.gson.Gson; +import eu.bebendorf.ajorm.Repo; import fr.yuki.yrpf.character.CharacterJobLevel; import fr.yuki.yrpf.character.CharacterState; import fr.yuki.yrpf.character.CharacterStyle; -import fr.yuki.yrpf.dao.*; import fr.yuki.yrpf.enums.ItemTemplateEnum; import fr.yuki.yrpf.enums.JobEnum; import fr.yuki.yrpf.enums.ToastTypeEnum; @@ -15,6 +15,7 @@ import fr.yuki.yrpf.model.*; import fr.yuki.yrpf.net.payload.AddCharacterJobPayload; import fr.yuki.yrpf.net.payload.AddXpBarItemPayload; +import lombok.Getter; import net.onfirenetwork.onsetjava.Onset; import net.onfirenetwork.onsetjava.data.Color; import net.onfirenetwork.onsetjava.data.Vector; @@ -31,43 +32,51 @@ import java.util.stream.Collectors; public class JobManager { - private static LinkedHashMap jobs; - private static ArrayList wearableWorldObjects; - private static ArrayList jobNPCS; - private static ArrayList jobTools; - private static ArrayList jobLevels; - private static ArrayList jobVehicleRentals; + @Getter + private static Map jobs; + @Getter + private static List wearableWorldObjects; + @Getter + private static List jobNPCS; + @Getter + private static List jobTools; + @Getter + private static List jobLevels; + @Getter + private static List jobVehicleRentals; + @Getter private static DeliveryPointConfig deliveryPointConfig; - private static ArrayList jobOutfits; + @Getter + private static List jobOutfits; public static void init() throws SQLException, IOException { - jobNPCS = JobNPCDAO.loadJobNPCS(); + jobNPCS = Repo.get(JobNPC.class).all(); Onset.print("Loaded " + jobNPCS.size() + " job npc(s) from the database"); - jobOutfits = JobOutfitDAO.loadJobOutfits(); + jobOutfits = Repo.get(JobOutfit.class).all(); Onset.print("Loaded " + jobOutfits.size() + " job outfit(s) from the database"); - jobTools = JobToolDAO.loadJobTools(); + jobTools = Repo.get(JobTool.class).all(); Onset.print("Loaded " + jobTools.size() + " job tool(s) from the database"); - jobLevels = JobLevelDAO.loadJobLevels(); + jobLevels = Repo.get(JobLevel.class).all(); Onset.print("Loaded " + jobLevels.size() + " job level(s) from the database"); - jobVehicleRentals = JobVehicleRentalDAO.loadJobVehicleRental(); + jobVehicleRentals = Repo.get(JobVehicleRental.class).all(); Onset.print("Loaded " + jobVehicleRentals.size() + " job vehicle(s) from the database"); loadDeliveryPoints(); wearableWorldObjects = new ArrayList<>(); jobs = new LinkedHashMap<>(); - jobs.put(JobEnum.LUMBERJACK.type, new LumberjackJob()); - jobs.put(JobEnum.GARBAGE.type, new GarbageJob()); - jobs.put(JobEnum.DELIVERY.type, new DeliveryJob()); - jobs.put(JobEnum.MINER.type, new MinerJob()); - jobs.put(JobEnum.FISHER.type, new FisherJob()); - jobs.put(JobEnum.POLICE.type, new PoliceJob()); - jobs.put(JobEnum.WEED.type, new WeedJob()); - jobs.put(JobEnum.EMS.type, new EMSJob()); + jobs.put(JobEnum.LUMBERJACK.name(), new LumberjackJob()); + jobs.put(JobEnum.GARBAGE.name(), new GarbageJob()); + jobs.put(JobEnum.DELIVERY.name(), new DeliveryJob()); + jobs.put(JobEnum.MINER.name(), new MinerJob()); + jobs.put(JobEnum.FISHER.name(), new FisherJob()); + jobs.put(JobEnum.POLICE.name(), new PoliceJob()); + jobs.put(JobEnum.WEED.name(), new WeedJob()); + jobs.put(JobEnum.EMS.name(), new EMSJob()); spawnJobOutfitsPoint(); spawnVehicleRentalSpawns(); @@ -472,7 +481,7 @@ public static ArrayList getWhitelistedPlayersForJob(JobEnum jobEnum) { try { Account account = WorldManager.getPlayerAccount(player); AccountJobWhitelist accountJobWhitelist = AccountManager.getAccountJobWhitelists().stream() - .filter(x -> x.getAccountId() == account.getId() && x.getJobId().equals(jobEnum.type)) + .filter(x -> x.getAccountId() == account.getId() && x.getJobId().equals(jobEnum.name())) .findFirst().orElse(null); if(accountJobWhitelist != null) { players.add(player); @@ -503,31 +512,4 @@ public static JobTool getNearbyJobTool(Player player) { return null; } - public static LinkedHashMap getJobs() { - return jobs; - } - - public static ArrayList getWearableWorldObjects() { - return wearableWorldObjects; - } - - public static ArrayList getJobNPCS() { - return jobNPCS; - } - - public static ArrayList getJobTools() { - return jobTools; - } - - public static ArrayList getJobLevels() { - return jobLevels; - } - - public static ArrayList getJobVehicleRentals() { - return jobVehicleRentals; - } - - public static DeliveryPointConfig getDeliveryPointConfig() { - return deliveryPointConfig; - } } diff --git a/src/main/java/fr/yuki/yrpf/manager/PhoneManager.java b/src/main/java/fr/yuki/yrpf/manager/PhoneManager.java index 74e49b5..7a56510 100644 --- a/src/main/java/fr/yuki/yrpf/manager/PhoneManager.java +++ b/src/main/java/fr/yuki/yrpf/manager/PhoneManager.java @@ -1,9 +1,9 @@ package fr.yuki.yrpf.manager; import com.google.gson.Gson; +import eu.bebendorf.ajorm.Repo; import fr.yuki.yrpf.character.CharacterState; import fr.yuki.yrpf.character.CharacterToolAnimation; -import fr.yuki.yrpf.dao.PhoneContactDAO; import fr.yuki.yrpf.enums.JobEnum; import fr.yuki.yrpf.enums.ToastTypeEnum; import fr.yuki.yrpf.i18n.I18n; @@ -24,14 +24,14 @@ import java.util.stream.Collectors; public class PhoneManager { - private static ArrayList phoneContacts; - private static ArrayList phoneMessages; - private static HashMap> urgencyMessages; + private static List phoneContacts; + private static List phoneMessages; + private static Map> urgencyMessages; private static int urgencyPhoneMessageCurrentId = 1; public static void init() throws SQLException { - phoneContacts = PhoneContactDAO.loadPhoneContacts(); + phoneContacts = Repo.get(PhoneContact.class).all(); Onset.print("Loaded " + phoneContacts.size() + " phone contact(s) from the database"); phoneMessages = new ArrayList<>(); @@ -67,7 +67,7 @@ public static void handleAddPhoneContact(Player player, PhoneAddContactPayload p phoneContact.setName(payload.getName()); phoneContact.setNumber(payload.getNumber()); phoneContact.setAccountId(account.getId()); - PhoneContactDAO.insertPhoneContact(phoneContact); + phoneContact.save(); phoneContacts.add(phoneContact); Onset.print("Phone contact created"); } @@ -291,10 +291,10 @@ public static ArrayList getConversationsWithNumber(String number) private static void refreshUrgencyMessages(Player player) { Account account = WorldManager.getPlayerAccount(player); boolean isPolice = AccountManager.getAccountJobWhitelists().stream() - .filter(x -> x.getAccountId() == account.getId() && x.getJobId().equals(JobEnum.POLICE.type)) + .filter(x -> x.getAccountId() == account.getId() && x.getJobId().equals(JobEnum.POLICE.name())) .findFirst().orElse(null) != null; boolean isEMS = AccountManager.getAccountJobWhitelists().stream() - .filter(x -> x.getAccountId() == account.getId() && x.getJobId().equals(JobEnum.EMS.type)) + .filter(x -> x.getAccountId() == account.getId() && x.getJobId().equals(JobEnum.EMS.name())) .findFirst().orElse(null) != null; ArrayList urgencyPhoneMessages = new ArrayList<>(); diff --git a/src/main/java/fr/yuki/yrpf/manager/VehicleManager.java b/src/main/java/fr/yuki/yrpf/manager/VehicleManager.java index 0dd3ed3..b027020 100644 --- a/src/main/java/fr/yuki/yrpf/manager/VehicleManager.java +++ b/src/main/java/fr/yuki/yrpf/manager/VehicleManager.java @@ -1,7 +1,6 @@ package fr.yuki.yrpf.manager; import com.google.gson.Gson; -import fr.yuki.yrpf.dao.VehicleGarageDAO; import fr.yuki.yrpf.enums.ItemTemplateEnum; import fr.yuki.yrpf.enums.ToastTypeEnum; import fr.yuki.yrpf.i18n.I18n; @@ -85,7 +84,7 @@ public static CreateVehicleResult createVehicle(int modelId, Vector position, do vehicleGarage.setRental(isRental); vehicleGarage.setLicencePlate(vehicle.getLicensePlate()); vehicleGarage.setColor("#" + Integer.toHexString(vehicle.getColor().getRed()) + Integer.toHexString(vehicle.getColor().getGreen()) + Integer.toHexString(vehicle.getColor().getBlue())); - if(!isRental) VehicleGarageDAO.createVehicleGarage(vehicleGarage); + vehicleGarage.save(); GarageManager.getVehicleGarages().add(vehicleGarage); } else { diff --git a/src/main/java/fr/yuki/yrpf/manager/WorldManager.java b/src/main/java/fr/yuki/yrpf/manager/WorldManager.java index 60933ec..8fc8a32 100644 --- a/src/main/java/fr/yuki/yrpf/manager/WorldManager.java +++ b/src/main/java/fr/yuki/yrpf/manager/WorldManager.java @@ -5,7 +5,6 @@ import fr.yuki.yrpf.character.CharacterJobLevel; import fr.yuki.yrpf.character.CharacterLoopAnimation; import fr.yuki.yrpf.character.CharacterState; -import fr.yuki.yrpf.dao.*; import fr.yuki.yrpf.enums.ItemTemplateEnum; import fr.yuki.yrpf.enums.ToastTypeEnum; import fr.yuki.yrpf.i18n.I18n; @@ -75,12 +74,12 @@ public static void init() throws SQLException, IOException { spawnVehicleSellers(); // Load sellers - sellers = SellerDAO.loadSellers(); + sellers = Repo.get(Seller.class).all(); Onset.print("Loaded " + sellers.size() + " seller(s) from the database"); spawnSellers(); // Load outfit points - outfitPoints = OutfitPointDAO.loadOutfitPoint(); + outfitPoints = Repo.get(OutfitPoint.class).all(); Onset.print("Loaded " + outfitPoints.size() + " outfit point(s) from the database"); spawnOutfitPoints(); } @@ -489,7 +488,7 @@ public static void handleEditExistingPlacement(Player player, int houseItemId) t if(houseItemObject == null) return; houseItemObject.destroy(); - HouseItemDAO.deleteHouseItem(houseItemObject); + houseItemObject.delete(); ObjectPlacementInstance objectPlacementInstance = new GenericPlacementInstance(houseItemObject.getPosition(), houseItemObject.getModelId(), 0); diff --git a/src/main/java/fr/yuki/yrpf/model/GrowboxModel.java b/src/main/java/fr/yuki/yrpf/model/GrowboxModel.java index e5e6883..cdd3fc1 100644 --- a/src/main/java/fr/yuki/yrpf/model/GrowboxModel.java +++ b/src/main/java/fr/yuki/yrpf/model/GrowboxModel.java @@ -1,67 +1,25 @@ package fr.yuki.yrpf.model; -public class GrowboxModel { +import eu.bebendorf.ajorm.Model; +import eu.bebendorf.ajorm.annotation.Column; +import eu.bebendorf.ajorm.annotation.Table; +import lombok.Getter; +import lombok.Setter; + +@Getter @Setter @Table("tbl_growbox") +public class GrowboxModel extends Model { + @Column(column = "id_growbox") private int id; + @Column private double x; + @Column private double y; + @Column private double z; + @Column private double rx; + @Column private double ry; + @Column private double rz; - - public int getId() { - return id; - } - - public void setId(int id) { - this.id = id; - } - - public double getX() { - return x; - } - - public void setX(double x) { - this.x = x; - } - - public double getY() { - return y; - } - - public void setY(double y) { - this.y = y; - } - - public double getZ() { - return z; - } - - public void setZ(double z) { - this.z = z; - } - - public double getRx() { - return rx; - } - - public void setRx(double rx) { - this.rx = rx; - } - - public double getRy() { - return ry; - } - - public void setRy(double ry) { - this.ry = ry; - } - - public double getRz() { - return rz; - } - - public void setRz(double rz) { - this.rz = rz; - } } diff --git a/src/main/java/fr/yuki/yrpf/model/HouseItemObject.java b/src/main/java/fr/yuki/yrpf/model/HouseItemObject.java index 1b235bc..bbe4d10 100644 --- a/src/main/java/fr/yuki/yrpf/model/HouseItemObject.java +++ b/src/main/java/fr/yuki/yrpf/model/HouseItemObject.java @@ -1,23 +1,39 @@ package fr.yuki.yrpf.model; +import eu.bebendorf.ajorm.Model; +import eu.bebendorf.ajorm.annotation.Column; +import eu.bebendorf.ajorm.annotation.Table; import fr.yuki.yrpf.house.itembehavior.ATMBehavior; import fr.yuki.yrpf.house.itembehavior.ItemBehavior; import fr.yuki.yrpf.house.itembehavior.RadioBehavior; import fr.yuki.yrpf.manager.ModdingManager; +import lombok.Getter; +import lombok.Setter; import net.onfirenetwork.onsetjava.Onset; import net.onfirenetwork.onsetjava.data.Vector; import net.onfirenetwork.onsetjava.entity.WorldObject; -public class HouseItemObject { +@Getter @Setter @Table("tbl_house_item") +public class HouseItemObject extends Model { + @Column(column = "id_house_item") private int id; + @Column private int modelId; + @Column private int functionId; + @Column private double x; + @Column private double y; + @Column private double z; + @Column private double rx; + @Column private double ry; + @Column private double rz; + private WorldObject worldObject; private House house; private ItemBehavior itemBehavior; @@ -54,78 +70,6 @@ public void destroy() { } } - public int getId() { - return id; - } - - public void setId(int id) { - this.id = id; - } - - public int getModelId() { - return modelId; - } - - public void setModelId(int modelId) { - this.modelId = modelId; - } - - public int getFunctionId() { - return functionId; - } - - public void setFunctionId(int functionId) { - this.functionId = functionId; - } - - public double getX() { - return x; - } - - public void setX(double x) { - this.x = x; - } - - public double getY() { - return y; - } - - public void setY(double y) { - this.y = y; - } - - public double getZ() { - return z; - } - - public void setZ(double z) { - this.z = z; - } - - public double getRx() { - return rx; - } - - public void setRx(double rx) { - this.rx = rx; - } - - public double getRy() { - return ry; - } - - public void setRy(double ry) { - this.ry = ry; - } - - public double getRz() { - return rz; - } - - public void setRz(double rz) { - this.rz = rz; - } - public WorldObject getWorldObject() { return worldObject; } @@ -138,6 +82,18 @@ public Vector getRotation() { return new Vector(this.rx, this.ry, this.rz); } + public void setPosition(Vector position){ + x = position.getX(); + y = position.getY(); + z = position.getZ(); + } + + public void setRotation(Vector rotation){ + rx = rotation.getX(); + ry = rotation.getY(); + rz = rotation.getZ(); + } + public House getHouse() { return house; } diff --git a/src/main/java/fr/yuki/yrpf/model/ItemTemplate.java b/src/main/java/fr/yuki/yrpf/model/ItemTemplate.java index 0cabd05..af7019b 100644 --- a/src/main/java/fr/yuki/yrpf/model/ItemTemplate.java +++ b/src/main/java/fr/yuki/yrpf/model/ItemTemplate.java @@ -1,130 +1,39 @@ package fr.yuki.yrpf.model; -public class ItemTemplate { +import eu.bebendorf.ajorm.Model; +import eu.bebendorf.ajorm.annotation.Column; +import eu.bebendorf.ajorm.annotation.Table; +import lombok.Getter; +import lombok.Setter; + +@Getter @Setter @Table("tbl_item_template") +public class ItemTemplate extends Model { + @Column(column = "id_item_template") private int id; + @Column private String name; + @Column private String description; + @Column private float weight; + @Column private String pictureName; + @Column private int itemType; + @Column private int modelId; + @Column private double modelScale; + @Column private int foodValue; + @Column private int drinkValue; + @Column(column = "id_weapon") private int weaponId; + @Column private int ammoPerRecharge; + @Column(column = "id_mask") private int maskId; + @Column(column = "id_bag") private int bagId; - - public int getId() { - return id; - } - - public void setId(int id) { - this.id = id; - } - - public String getName() { - return name; - } - - public void setName(String name) { - this.name = name; - } - - public String getDescription() { - return description; - } - - public void setDescription(String description) { - this.description = description; - } - - public float getWeight() { - return weight; - } - - public void setWeight(float weight) { - this.weight = weight; - } - - public String getPictureName() { - return pictureName; - } - - public void setPictureName(String pictureName) { - this.pictureName = pictureName; - } - - public int getItemType() { - return itemType; - } - - public void setItemType(int itemType) { - this.itemType = itemType; - } - - public int getModelId() { - return modelId; - } - - public void setModelId(int modelId) { - this.modelId = modelId; - } - - public double getModelScale() { - return modelScale; - } - - public void setModelScale(double modelScale) { - this.modelScale = modelScale; - } - - public int getFoodValue() { - return foodValue; - } - - public void setFoodValue(int foodValue) { - this.foodValue = foodValue; - } - - public int getDrinkValue() { - return drinkValue; - } - - public void setDrinkValue(int drinkValue) { - this.drinkValue = drinkValue; - } - - public int getWeaponId() { - return weaponId; - } - - public void setWeaponId(int weaponId) { - this.weaponId = weaponId; - } - - public int getAmmoPerRecharge() { - return ammoPerRecharge; - } - - public void setAmmoPerRecharge(int ammoPerRecharge) { - this.ammoPerRecharge = ammoPerRecharge; - } - - public int getMaskId() { - return maskId; - } - - public void setMaskId(int maskId) { - this.maskId = maskId; - } - - public int getBagId() { - return bagId; - } - - public void setBagId(int bagId) { - this.bagId = bagId; - } } diff --git a/src/main/java/fr/yuki/yrpf/model/JobLevel.java b/src/main/java/fr/yuki/yrpf/model/JobLevel.java index 3c81b69..4627ced 100644 --- a/src/main/java/fr/yuki/yrpf/model/JobLevel.java +++ b/src/main/java/fr/yuki/yrpf/model/JobLevel.java @@ -1,53 +1,25 @@ package fr.yuki.yrpf.model; -public class JobLevel { +import eu.bebendorf.ajorm.Model; +import eu.bebendorf.ajorm.annotation.Column; +import eu.bebendorf.ajorm.annotation.Table; +import lombok.Getter; +import lombok.Setter; + +@Getter @Setter @Table("tbl_job_level") +public class JobLevel extends Model { + @Column(column = "id_job_level") private int id; + @Column(column = "id_job") private String jobId; + @Column private String name; + @Column private int level; + @Column private int expFloor; public String getTranslateName() { return name.toLowerCase().replaceAll(" ", "_"); } - - public int getId() { - return id; - } - - public void setId(int id) { - this.id = id; - } - - public String getJobId() { - return jobId; - } - - public void setJobId(String jobId) { - this.jobId = jobId; - } - - public String getName() { - return name; - } - - public void setName(String name) { - this.name = name; - } - - public int getLevel() { - return level; - } - - public void setLevel(int level) { - this.level = level; - } - - public int getExpFloor() { - return expFloor; - } - - public void setExpFloor(int expFloor) { - this.expFloor = expFloor; - } } diff --git a/src/main/java/fr/yuki/yrpf/model/JobNPC.java b/src/main/java/fr/yuki/yrpf/model/JobNPC.java index c15c9a2..8c9f58b 100644 --- a/src/main/java/fr/yuki/yrpf/model/JobNPC.java +++ b/src/main/java/fr/yuki/yrpf/model/JobNPC.java @@ -1,100 +1,74 @@ package fr.yuki.yrpf.model; +import com.google.gson.Gson; +import com.google.gson.reflect.TypeToken; +import eu.bebendorf.ajorm.Model; +import eu.bebendorf.ajorm.annotation.Column; +import eu.bebendorf.ajorm.annotation.Table; import fr.yuki.yrpf.job.WearableWorldObject; +import lombok.Getter; +import lombok.Setter; import net.onfirenetwork.onsetjava.data.Vector; import net.onfirenetwork.onsetjava.entity.NPC; import net.onfirenetwork.onsetjava.entity.Player; import java.util.ArrayList; +import java.util.List; -public class JobNPC { +@Getter @Setter @Table("tbl_job_npc") +public class JobNPC extends Model { + @Column(column = "id_job_npc") private int id; + @Column(column = "id_job") private String jobId; + @Column private String name; + @Column private double x; + @Column private double y; + @Column private double z; + @Column private double h; + @Column private int npcClothing; - private ArrayList buyList; - private ArrayList sellList; - private NPC npc; - - public int getId() { - return id; - } - - public void setId(int id) { - this.id = id; - } - - public String getJobId() { - return jobId; - } - - public void setJobId(String jobId) { - this.jobId = jobId; - } - - public double getX() { - return x; - } - - public void setX(double x) { - this.x = x; - } - - public double getY() { - return y; - } + @Column(size = 0) + private String buyList; + @Column(size = 0) + private String sellList; - public void setY(double y) { - this.y = y; - } - - public double getZ() { - return z; - } - - public void setZ(double z) { - this.z = z; - } - - public ArrayList getBuyList() { - return buyList; - } - - public void setBuyList(ArrayList buyList) { - this.buyList = buyList; - } - - public ArrayList getSellList() { - return sellList; - } - - public void setSellList(ArrayList sellList) { - this.sellList = sellList; - } + private List buyListCache; + private List sellListCache; + private NPC npc; - public double getH() { - return h; + public List getBuyList() { + if(buyListCache == null){ + buyListCache = new Gson().fromJson(buyList, new TypeToken>(){}.getType()); + } + return buyListCache; } - public void setH(double h) { - this.h = h; + public void setBuyList(List buyList) { + this.buyList = new Gson().toJson(buyList); + buyListCache = buyList; } - public int getNpcClothing() { - return npcClothing; + public List getSellList() { + if(sellListCache == null){ + sellListCache = new Gson().fromJson(sellList, new TypeToken>(){}.getType()); + } + return sellListCache; } - public void setNpcClothing(int npcClothing) { - this.npcClothing = npcClothing; + public void setSellList(List sellList) { + this.sellList = new Gson().toJson(sellList); + sellListCache = sellList; } public JobNPCListItem getBuyItemByWearableItem(WearableWorldObject wearableWorldObject) { JobNPCListItem jobNPCListItem = null; - for(JobNPCListItem item : this.buyList) { + for(JobNPCListItem item : getBuyList()) { if(item.getType().toLowerCase().equals("worlditem") && item.getItemId() == wearableWorldObject.getModelId()) { return item; } @@ -105,20 +79,4 @@ public JobNPCListItem getBuyItemByWearableItem(WearableWorldObject wearableWorld public boolean isNear(Player player) { return new Vector(x,y,z).distance(player.getLocation()) < 200; } - - public NPC getNpc() { - return npc; - } - - public void setNpc(NPC npc) { - this.npc = npc; - } - - public String getName() { - return name; - } - - public void setName(String name) { - this.name = name; - } } diff --git a/src/main/java/fr/yuki/yrpf/model/JobOutfit.java b/src/main/java/fr/yuki/yrpf/model/JobOutfit.java index 48f8eff..71f5a56 100644 --- a/src/main/java/fr/yuki/yrpf/model/JobOutfit.java +++ b/src/main/java/fr/yuki/yrpf/model/JobOutfit.java @@ -2,91 +2,42 @@ import com.google.gson.Gson; import com.google.gson.reflect.TypeToken; +import eu.bebendorf.ajorm.Model; +import eu.bebendorf.ajorm.annotation.Column; +import eu.bebendorf.ajorm.annotation.Table; +import lombok.Getter; +import lombok.Setter; import net.onfirenetwork.onsetjava.data.Vector; import net.onfirenetwork.onsetjava.entity.Player; import java.util.ArrayList; +import java.util.List; -public class JobOutfit { +@Getter @Setter @Table("tbl_job_outfit") +public class JobOutfit extends Model { + @Column(column = "id_job_outfit") private int id; + @Column(column = "id_job") private String jobId; + @Column private int levelRequired; + @Column private String name; + @Column private String outfit; + @Column private double x; + @Column private double y; + @Column private double z; - public int getId() { - return id; - } - - public void setId(int id) { - this.id = id; - } - - public String getJobId() { - return jobId; - } - - public void setJobId(String jobId) { - this.jobId = jobId; - } - - public int getLevelRequired() { - return levelRequired; - } - - public void setLevelRequired(int levelRequired) { - this.levelRequired = levelRequired; - } - - public String getName() { - return name; - } - - public void setName(String name) { - this.name = name; - } - - public String getOutfit() { - return outfit; - } - - public void setOutfit(String outfit) { - this.outfit = outfit; - } - - public double getX() { - return x; - } - - public void setX(double x) { - this.x = x; - } - - public double getY() { - return y; - } - - public void setY(double y) { - this.y = y; - } - - public double getZ() { - return z; - } - - public void setZ(double z) { - this.z = z; - } - public boolean isNear(Player player) { if(player.getLocation().distance(new Vector(this.x, this.y, this.z)) < 250) return true; return false; } - public ArrayList decodeOutfit() { + public List decodeOutfit() { return new Gson().fromJson(this.outfit, new TypeToken>(){}.getType()); } } diff --git a/src/main/java/fr/yuki/yrpf/model/JobTool.java b/src/main/java/fr/yuki/yrpf/model/JobTool.java index db51cda..a762172 100644 --- a/src/main/java/fr/yuki/yrpf/model/JobTool.java +++ b/src/main/java/fr/yuki/yrpf/model/JobTool.java @@ -1,9 +1,14 @@ package fr.yuki.yrpf.model; +import eu.bebendorf.ajorm.Model; +import eu.bebendorf.ajorm.annotation.Column; +import eu.bebendorf.ajorm.annotation.Table; import fr.yuki.yrpf.job.Job; import fr.yuki.yrpf.job.tools.*; import fr.yuki.yrpf.manager.JobManager; import fr.yuki.yrpf.manager.ModdingManager; +import lombok.Getter; +import lombok.Setter; import net.onfirenetwork.onsetjava.Onset; import net.onfirenetwork.onsetjava.data.Vector; import net.onfirenetwork.onsetjava.entity.Player; @@ -12,24 +17,42 @@ import java.util.UUID; -public class JobTool { +@Getter @Setter @Table("tbl_job_tool") +public class JobTool extends Model { private String uuid; + @Column(column = "id_job_tool") private int id; + @Column private int modelId; + @Column private String name; + @Column private String jobType; + @Column private int levelRequired; + @Column private String jobToolType; + @Column private int reward; + @Column private double x; + @Column private double y; + @Column private double z; - private double rx; - private double ry; - private double rz; - private double sx; - private double sy; - private double sz; + @Column + private double rX; + @Column + private double rY; + @Column + private double rZ; + @Column + private double sX; + @Column + private double sY; + @Column + private double sZ; + private WorldObject worldObject; private JobToolHandler jobToolHandler; private Text3D text3d; @@ -38,38 +61,6 @@ public JobTool() { this.uuid = UUID.randomUUID().toString(); } - public int getModelId() { - return modelId; - } - - public void setModelId(int modelId) { - this.modelId = modelId; - } - - public String getName() { - return name; - } - - public void setName(String name) { - this.name = name; - } - - public String getJobType() { - return jobType; - } - - public void setJobType(String jobType) { - this.jobType = jobType; - } - - public int getLevelRequired() { - return levelRequired; - } - - public void setLevelRequired(int levelRequired) { - this.levelRequired = levelRequired; - } - public String getJobToolType() { return jobToolType; } @@ -95,86 +86,6 @@ public void setJobToolType(String jobToolType) { } } - public double getX() { - return x; - } - - public void setX(double x) { - this.x = x; - } - - public double getY() { - return y; - } - - public void setY(double y) { - this.y = y; - } - - public double getZ() { - return z; - } - - public void setZ(double z) { - this.z = z; - } - - public double getRx() { - return rx; - } - - public void setRx(double rx) { - this.rx = rx; - } - - public double getRy() { - return ry; - } - - public void setRy(double ry) { - this.ry = ry; - } - - public double getRz() { - return rz; - } - - public void setRz(double rz) { - this.rz = rz; - } - - public double getSx() { - return sx; - } - - public void setSx(double sx) { - this.sx = sx; - } - - public double getSy() { - return sy; - } - - public void setSy(double sy) { - this.sy = sy; - } - - public double getSz() { - return sz; - } - - public void setSz(double sz) { - this.sz = sz; - } - - public int getId() { - return id; - } - - public void setId(int id) { - this.id = id; - } - public WorldObject getWorldObject() { return worldObject; } @@ -190,8 +101,8 @@ public boolean isNear(Player player) { public void spawn(Job job) { this.worldObject = Onset.getServer().createObject(new Vector(this.x, this.y, this.z), this.modelId); if(ModdingManager.isCustomModelId(this.modelId)) ModdingManager.assignCustomModel(this.worldObject, this.modelId); - this.worldObject.setRotation(new Vector(this.rx, this.ry, this.rz)); - this.worldObject.setScale(new Vector(this.sx, this.sy, this.sz)); + this.worldObject.setRotation(new Vector(this.rX, this.rY, this.rZ)); + this.worldObject.setScale(new Vector(this.sX, this.sY, this.sZ)); this.text3d = Onset.getServer().createText3D(this.name + " [Utiliser]", 20, this.x, this.y, this.z + 200, 0 , 0 ,0); if(this.jobToolHandler != null) { if(this.jobToolHandler.canBeUse()) { @@ -213,22 +124,6 @@ public void setJobToolHandler(JobToolHandler jobToolHandler) { this.jobToolHandler = jobToolHandler; } - public int getReward() { - return reward; - } - - public void setReward(int reward) { - this.reward = reward; - } - - public String getUuid() { - return uuid; - } - - public void setUuid(String uuid) { - this.uuid = uuid; - } - public void destroy() { this.worldObject.destroy(); this.text3d.destroy(); diff --git a/src/main/java/fr/yuki/yrpf/model/JobVehicleRental.java b/src/main/java/fr/yuki/yrpf/model/JobVehicleRental.java index e9082e1..c3a218f 100644 --- a/src/main/java/fr/yuki/yrpf/model/JobVehicleRental.java +++ b/src/main/java/fr/yuki/yrpf/model/JobVehicleRental.java @@ -1,128 +1,43 @@ package fr.yuki.yrpf.model; +import eu.bebendorf.ajorm.Model; +import eu.bebendorf.ajorm.annotation.Column; +import eu.bebendorf.ajorm.annotation.Table; +import lombok.Getter; +import lombok.Setter; import net.onfirenetwork.onsetjava.data.Vector; import net.onfirenetwork.onsetjava.entity.Player; -public class JobVehicleRental { +@Getter @Setter @Table("tbl_job_vehicle_rental") +public class JobVehicleRental extends Model { + @Column(column = "id_job_vehicle_rental") private int id; + @Column(column = "id_job") private String jobId; + @Column private int levelRequired; + @Column private String name; + @Column private int vehicleModelId; + @Column private int cost; + @Column private double x; + @Column private double y; + @Column private double z; + @Column private double spawnX; + @Column private double spawnY; + @Column private double spawnZ; + @Column private String color; - public int getId() { - return id; - } - - public void setId(int id) { - this.id = id; - } - - public String getJobId() { - return jobId; - } - - public void setJobId(String jobId) { - this.jobId = jobId; - } - - public int getVehicleModelId() { - return vehicleModelId; - } - - public void setVehicleModelId(int vehicleModelId) { - this.vehicleModelId = vehicleModelId; - } - - public int getCost() { - return cost; - } - - public void setCost(int cost) { - this.cost = cost; - } - - public String getName() { - return name; - } - - public void setName(String name) { - this.name = name; - } - - public double getX() { - return x; - } - - public void setX(double x) { - this.x = x; - } - - public double getY() { - return y; - } - - public void setY(double y) { - this.y = y; - } - - public double getZ() { - return z; - } - - public void setZ(double z) { - this.z = z; - } - - public double getSpawnX() { - return spawnX; - } - - public void setSpawnX(double spawnX) { - this.spawnX = spawnX; - } - - public double getSpawnY() { - return spawnY; - } - - public void setSpawnY(double spawnY) { - this.spawnY = spawnY; - } - - public double getSpawnZ() { - return spawnZ; - } - - public void setSpawnZ(double spawnZ) { - this.spawnZ = spawnZ; - } - public boolean isNear(Player player) { return new Vector(this.x, this.y, this.z).distance(player.getLocation()) < 350; } - - public int getLevelRequired() { - return levelRequired; - } - - public void setLevelRequired(int levelRequired) { - this.levelRequired = levelRequired; - } - - public String getColor() { - return color; - } - - public void setColor(String color) { - this.color = color; - } } diff --git a/src/main/java/fr/yuki/yrpf/model/OutfitPoint.java b/src/main/java/fr/yuki/yrpf/model/OutfitPoint.java index ec5e939..f2e34a5 100644 --- a/src/main/java/fr/yuki/yrpf/model/OutfitPoint.java +++ b/src/main/java/fr/yuki/yrpf/model/OutfitPoint.java @@ -1,46 +1,24 @@ package fr.yuki.yrpf.model; +import eu.bebendorf.ajorm.Model; +import eu.bebendorf.ajorm.annotation.Column; +import eu.bebendorf.ajorm.annotation.Table; +import lombok.Getter; +import lombok.Setter; import net.onfirenetwork.onsetjava.data.Vector; import net.onfirenetwork.onsetjava.entity.Player; -public class OutfitPoint { +@Getter @Setter @Table("tbl_outfit_point") +public class OutfitPoint extends Model { + @Column(column = "id_outfit_point") private int id; + @Column private double x; + @Column private double y; + @Column private double z; - public int getId() { - return id; - } - - public void setId(int id) { - this.id = id; - } - - public double getX() { - return x; - } - - public void setX(double x) { - this.x = x; - } - - public double getY() { - return y; - } - - public void setY(double y) { - this.y = y; - } - - public double getZ() { - return z; - } - - public void setZ(double z) { - this.z = z; - } - public boolean isNear(Player player) { if(player.getLocation().distance(new Vector(this.x, this.y, this.z)) < 250) { return true; diff --git a/src/main/java/fr/yuki/yrpf/model/PhoneContact.java b/src/main/java/fr/yuki/yrpf/model/PhoneContact.java index 09df9d5..852db39 100644 --- a/src/main/java/fr/yuki/yrpf/model/PhoneContact.java +++ b/src/main/java/fr/yuki/yrpf/model/PhoneContact.java @@ -1,40 +1,19 @@ package fr.yuki.yrpf.model; -public class PhoneContact { +import eu.bebendorf.ajorm.Model; +import eu.bebendorf.ajorm.annotation.Column; +import eu.bebendorf.ajorm.annotation.Table; +import lombok.Getter; +import lombok.Setter; + +@Getter @Setter @Table("tbl_phone_contact") +public class PhoneContact extends Model { + @Column(column = "id_phone_contact") private int id; + @Column(column = "id_account") private int accountId; + @Column private String name; + @Column private String number; - - public int getId() { - return id; - } - - public void setId(int id) { - this.id = id; - } - - public int getAccountId() { - return accountId; - } - - public void setAccountId(int accountId) { - this.accountId = accountId; - } - - public String getName() { - return name; - } - - public void setName(String name) { - this.name = name; - } - - public String getNumber() { - return number; - } - - public void setNumber(String number) { - this.number = number; - } } diff --git a/src/main/java/fr/yuki/yrpf/model/Seller.java b/src/main/java/fr/yuki/yrpf/model/Seller.java index de0b39c..949d51a 100644 --- a/src/main/java/fr/yuki/yrpf/model/Seller.java +++ b/src/main/java/fr/yuki/yrpf/model/Seller.java @@ -2,23 +2,40 @@ import com.google.gson.Gson; import com.google.gson.reflect.TypeToken; +import eu.bebendorf.ajorm.Model; +import eu.bebendorf.ajorm.annotation.Column; +import eu.bebendorf.ajorm.annotation.Table; +import lombok.Getter; +import lombok.Setter; import net.onfirenetwork.onsetjava.data.Vector; import net.onfirenetwork.onsetjava.entity.NPC; import net.onfirenetwork.onsetjava.entity.Player; import java.util.ArrayList; -public class Seller { +@Getter @Setter @Table("tbl_seller") +public class Seller extends Model { + @Column(column = "id_seller") private int id; + @Column private String name; + @Column private double x; + @Column private double y; + @Column private double z; + @Column private double h; + @Column private int npcClothing; + @Column(size = 0) private String itemList; + @Column private String jobRequired; + @Column private int jobLevelRequired; + private NPC npc; public ArrayList decodeItems() { @@ -26,94 +43,6 @@ public ArrayList decodeItems() { new TypeToken>(){}.getType()); } - public int getId() { - return id; - } - - public void setId(int id) { - this.id = id; - } - - public String getName() { - return name; - } - - public void setName(String name) { - this.name = name; - } - - public double getX() { - return x; - } - - public void setX(double x) { - this.x = x; - } - - public double getY() { - return y; - } - - public void setY(double y) { - this.y = y; - } - - public double getZ() { - return z; - } - - public void setZ(double z) { - this.z = z; - } - - public double getH() { - return h; - } - - public void setH(double h) { - this.h = h; - } - - public int getNpcClothing() { - return npcClothing; - } - - public void setNpcClothing(int npcClothing) { - this.npcClothing = npcClothing; - } - - public String getItemList() { - return itemList; - } - - public void setItemList(String itemList) { - this.itemList = itemList; - } - - public NPC getNpc() { - return npc; - } - - public void setNpc(NPC npc) { - this.npc = npc; - } - - public String getJobRequired() { - return jobRequired; - } - - public void setJobRequired(String jobRequired) { - this.jobRequired = jobRequired; - } - - public int getJobLevelRequired() { - return jobLevelRequired; - } - - public void setJobLevelRequired(int jobLevelRequired) { - this.jobLevelRequired = jobLevelRequired; - } - public boolean isNear(Player player) { if(player.getLocation().distance(new Vector(this.x, this.y, this.z)) < 250) { return true; diff --git a/src/main/java/fr/yuki/yrpf/model/VehicleGarage.java b/src/main/java/fr/yuki/yrpf/model/VehicleGarage.java index c0a7899..9a2a769 100644 --- a/src/main/java/fr/yuki/yrpf/model/VehicleGarage.java +++ b/src/main/java/fr/yuki/yrpf/model/VehicleGarage.java @@ -2,130 +2,49 @@ import com.google.gson.Gson; import com.google.gson.reflect.TypeToken; -import fr.yuki.yrpf.dao.VehicleGarageDAO; +import eu.bebendorf.ajorm.Model; +import eu.bebendorf.ajorm.annotation.Column; +import eu.bebendorf.ajorm.annotation.Dates; +import eu.bebendorf.ajorm.annotation.Table; +import lombok.Getter; +import lombok.Setter; import net.onfirenetwork.onsetjava.Onset; import net.onfirenetwork.onsetjava.entity.Vehicle; +import java.sql.Timestamp; import java.util.ArrayList; -import java.util.Date; -public class VehicleGarage { +@Getter @Setter @Dates @Table("tbl_vehicle_garage") +public class VehicleGarage extends Model { + @Column(column = "id_vehicle_garage") private int vehicleGarageId; + @Column private String uuid; + @Column private int owner; + @Column(column = "id_garage") private int garageId; + @Column(column = "id_last_garage") private int garageLastId; + @Column private int modelId; + @Column private String damage; + @Column private double health; + @Column private String licencePlate; + @Column private String color; - private Date createdAt; - private Date updateAt; - private boolean isRental; + @Column + private Timestamp createdAt; + @Column + private Timestamp updatedAt; - public int getVehicleGarageId() { - return vehicleGarageId; - } - - public void setVehicleGarageId(int vehicleGarageId) { - this.vehicleGarageId = vehicleGarageId; - } - - public int getGarageId() { - return garageId; - } - - public void setGarageId(int garageId) { - this.garageId = garageId; - } - - public int getGarageLastId() { - return garageLastId; - } - - public void setGarageLastId(int garageLastId) { - this.garageLastId = garageLastId; - } - - public int getModelId() { - return modelId; - } - - public void setModelId(int modelId) { - this.modelId = modelId; - } - - public String getDamage() { - return damage; - } - - public void setDamage(String damage) { - this.damage = damage; - } - - public String getLicencePlate() { - return licencePlate; - } - - public void setLicencePlate(String licencePlate) { - this.licencePlate = licencePlate; - } - - public String getColor() { - return color; - } - - public void setColor(String color) { - this.color = color; - } - - public Date getCreatedAt() { - return createdAt; - } - - public void setCreatedAt(Date createdAt) { - this.createdAt = createdAt; - } - - public Date getUpdateAt() { - return updateAt; - } - - public void setUpdateAt(Date updateAt) { - this.updateAt = updateAt; - } - - public String getUuid() { - return uuid; - } - - public void setUuid(String uuid) { - this.uuid = uuid; - } - - public int getOwner() { - return owner; - } - - public void setOwner(int owner) { - this.owner = owner; - } + private boolean rental; public void save() { - try { - if(!isRental) VehicleGarageDAO.saveVehicleGarage(this); - } catch (Exception ex) { - Onset.print("Can't save vehicle: " + ex.toString()); - } - } - - public boolean isRental() { - return isRental; - } - - public void setRental(boolean rental) { - isRental = rental; + if(!rental) super.save(); } public void destroy() { @@ -163,11 +82,4 @@ public void computeDamages(Vehicle vehicle) { this.damage = new Gson().toJson(damages); } - public double getHealth() { - return health; - } - - public void setHealth(double health) { - this.health = health; - } }