From 7faa28f06976858c12a2b63e505bbdd768da85ef Mon Sep 17 00:00:00 2001 From: Sleaker Date: Fri, 31 Aug 2012 09:00:43 -0700 Subject: [PATCH 1/6] fix PEX primary group, they sort by rank in reverse (first is lowest rank). --- .../permission/plugins/Permission_PermissionsEx.java | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/src/net/milkbowl/vault/permission/plugins/Permission_PermissionsEx.java b/src/net/milkbowl/vault/permission/plugins/Permission_PermissionsEx.java index 1e74413..2123cab 100644 --- a/src/net/milkbowl/vault/permission/plugins/Permission_PermissionsEx.java +++ b/src/net/milkbowl/vault/permission/plugins/Permission_PermissionsEx.java @@ -199,8 +199,10 @@ public class Permission_PermissionsEx extends Permission { PermissionUser user = PermissionsEx.getPermissionManager().getUser(playerName); if (user == null) { return null; - } else if (user.getGroupsNames(world).length > 0) { - return user.getGroupsNames(world)[0]; + } + String[] groupNames = user.getGroupsNames(); + if (groupNames.length > 0) { + return groupNames[groupNames.length - 1]; } else { return null; } @@ -271,8 +273,9 @@ public class Permission_PermissionsEx extends Permission { @Override public String[] getGroups() { PermissionGroup[] groups = PermissionsEx.getPermissionManager().getGroups(); - if (groups == null || groups.length == 0) + if (groups == null || groups.length == 0) { return null; + } String[] groupNames = new String[groups.length]; for (int i = 0; i < groups.length; i++) { groupNames[i] = groups[i].getName(); From 69c3b3b78603ad479022eedff5e854ef448b690e Mon Sep 17 00:00:00 2001 From: Sleaker Date: Fri, 31 Aug 2012 13:14:52 -0700 Subject: [PATCH 2/6] Revert "fix PEX primary group, they sort by rank in reverse (first is lowest rank)." This reverts commit 7faa28f06976858c12a2b63e505bbdd768da85ef. --- .../permission/plugins/Permission_PermissionsEx.java | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/src/net/milkbowl/vault/permission/plugins/Permission_PermissionsEx.java b/src/net/milkbowl/vault/permission/plugins/Permission_PermissionsEx.java index 2123cab..1e74413 100644 --- a/src/net/milkbowl/vault/permission/plugins/Permission_PermissionsEx.java +++ b/src/net/milkbowl/vault/permission/plugins/Permission_PermissionsEx.java @@ -199,10 +199,8 @@ public class Permission_PermissionsEx extends Permission { PermissionUser user = PermissionsEx.getPermissionManager().getUser(playerName); if (user == null) { return null; - } - String[] groupNames = user.getGroupsNames(); - if (groupNames.length > 0) { - return groupNames[groupNames.length - 1]; + } else if (user.getGroupsNames(world).length > 0) { + return user.getGroupsNames(world)[0]; } else { return null; } @@ -273,9 +271,8 @@ public class Permission_PermissionsEx extends Permission { @Override public String[] getGroups() { PermissionGroup[] groups = PermissionsEx.getPermissionManager().getGroups(); - if (groups == null || groups.length == 0) { + if (groups == null || groups.length == 0) return null; - } String[] groupNames = new String[groups.length]; for (int i = 0; i < groups.length; i++) { groupNames[i] = groups[i].getName(); From 44f37f6fb16d38f5630269fd3c4b56d92cd9e387 Mon Sep 17 00:00:00 2001 From: Sleaker Date: Sun, 2 Sep 2012 00:39:20 -0700 Subject: [PATCH 3/6] apparently GM doesn't update it's permission changes to bukkit when they are made. --- .../plugins/Permission_GroupManager.java | 28 ++++++++++++++++--- 1 file changed, 24 insertions(+), 4 deletions(-) diff --git a/src/net/milkbowl/vault/permission/plugins/Permission_GroupManager.java b/src/net/milkbowl/vault/permission/plugins/Permission_GroupManager.java index b088652..132a318 100644 --- a/src/net/milkbowl/vault/permission/plugins/Permission_GroupManager.java +++ b/src/net/milkbowl/vault/permission/plugins/Permission_GroupManager.java @@ -26,6 +26,7 @@ import org.anjocaido.groupmanager.data.Group; import org.anjocaido.groupmanager.data.User; import org.anjocaido.groupmanager.dataholder.OverloadedWorldHolder; import org.anjocaido.groupmanager.permissions.AnjoPermissionsHandler; +import org.anjocaido.groupmanager.permissions.BukkitPermissions; import org.bukkit.Bukkit; import org.bukkit.World; import org.bukkit.entity.Player; @@ -134,6 +135,10 @@ public class Permission_GroupManager extends Permission { } user.addPermission(permission); + Player p = Bukkit.getPlayer(playerName); + if (p != null) { + GroupManager.BukkitPermissions.updatePermissions(p); + } return true; } @@ -155,6 +160,10 @@ public class Permission_GroupManager extends Permission { } user.removePermission(permission); + Player p = Bukkit.getPlayer(playerName); + if (p != null) { + GroupManager.BukkitPermissions.updatePermissions(p); + } return true; } @@ -260,6 +269,10 @@ public class Permission_GroupManager extends Permission { } else { user.addSubGroup(group); } + Player p = Bukkit.getPlayer(playerName); + if (p != null) { + GroupManager.BukkitPermissions.updatePermissions(p); + } return true; } @@ -278,16 +291,23 @@ public class Permission_GroupManager extends Permission { if (user == null) { return false; } + boolean success = false; if (user.getGroup().getName().equalsIgnoreCase(groupName)) { user.setGroup(owh.getDefaultGroup()); - return true; + success = true; } else { Group group = owh.getGroup(groupName); - if (group == null) { - return false; + if (group != null) { + success = user.removeSubGroup(group); } - return user.removeSubGroup(group); } + if (success) { + Player p = Bukkit.getPlayer(playerName); + if (p != null) { + GroupManager.BukkitPermissions.updatePermissions(p); + } + } + return success; } @Override From b3b4512b0daad1a926d0fe2e6bf44795e20fc726 Mon Sep 17 00:00:00 2001 From: flobi Date: Sun, 2 Sep 2012 20:47:00 -0400 Subject: [PATCH 4/6] Bugfix: Loading GoldIsMoney on enable event fail --- src/net/milkbowl/vault/economy/plugins/Economy_GoldIsMoney.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/net/milkbowl/vault/economy/plugins/Economy_GoldIsMoney.java b/src/net/milkbowl/vault/economy/plugins/Economy_GoldIsMoney.java index 189c334..ca9da53 100644 --- a/src/net/milkbowl/vault/economy/plugins/Economy_GoldIsMoney.java +++ b/src/net/milkbowl/vault/economy/plugins/Economy_GoldIsMoney.java @@ -112,7 +112,7 @@ public class Economy_GoldIsMoney implements Economy { if (economy.economy == null) { Plugin ec = plugin.getServer().getPluginManager().getPlugin("GoldIsMoney"); - if (ec != null && ec.isEnabled() && ec.getClass().getName().equals("com.GoldIsMoney.GoldIsMoney")) { + if (ec != null && ec.isEnabled() && ec.getClass().getName().equals("com.flobi.GoldIsMoney.GoldIsMoney")) { economy.economy = (GoldIsMoney) ec; log.info(String.format("[%s][Economy] %s hooked.", plugin.getDescription().getName(), economy.name)); } From 718cb885648914077f4d731cb225a8a429b1ac62 Mon Sep 17 00:00:00 2001 From: flobi Date: Sun, 2 Sep 2012 21:10:42 -0400 Subject: [PATCH 5/6] GoldIsMoney update --- lib/GoldIsMoney.jar | Bin 11244 -> 17111 bytes lib/GoldIsMoney2.jar | Bin 0 -> 26615 bytes pom.xml | 9 +- src/net/milkbowl/vault/Vault.java | 4 + .../economy/plugins/Economy_GoldIsMoney2.java | 286 ++++++++++++++++++ 5 files changed, 298 insertions(+), 1 deletion(-) create mode 100644 lib/GoldIsMoney2.jar create mode 100644 src/net/milkbowl/vault/economy/plugins/Economy_GoldIsMoney2.java diff --git a/lib/GoldIsMoney.jar b/lib/GoldIsMoney.jar index b0468c8e00602a802246bb8b071036d4b0fa7da9..6a0dc9eca1e0253e184a1bbea679d7c03f3e2c43 100644 GIT binary patch literal 17111 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 literal 11244 zcmb7~1yCK`vhRbtySu~2ArRbc&! zt^0avs-|jcb+6Ua{jZr>KV^9+XzX|JzmE=`Es=MB8TLEqcR)#XQ5IQ6DORAUqO6pp znmPa|^*ZwI-4$?bR6(8vFpVP5!Z*U}k6H>Kd!M;xH?ME=Uyq z9tbpBO?#^8D{&CfF2F=vH7pFGEUA%D+4wP$X+*gP(alPs^2uux>Yl#O4s$w! z5<~ttlh1emFlJCV(Ekl$lfBtK1)s-E5P5@!KWWPre9gaPES}DizxOL3{&S?t&fzIrUlFG9Y@l1L;uMOq<}MFEH=CUgqv00lV{8<}Z_6 zxp_Lxy*71@z~OT)ZJE2yfm;mmwi;hk1Y~zOo=Vz|U1NkMLgs3I?E%7I9DJLvOsR{k zVTm#uigZ`){QJWgN+lIm#!E4ypPM2ohFdjt%LyGe(_*uciQep8orpZ~D+S^t(;hw` zA9r_!SCRarjO}Lv`L(%X#v_Aimo=OVISbDspSADo?vZ0*{64hCvxI3>NQv$7leAzF zpm_khKV!MMFQXNivL$%aBjdkPgn_SEu<8`084{bZaxEx(4VHr?4Mmb9Inj zYH0XJoepm)Em+H&=@+um6zgaFybxO+aMlkHoWbi&vQYlWe%~!d6sV@1VYKM(xvR&E zbCtO~=lAhiH=JG^W8=+tXLF?7OHC3DdRM;-MpA)s@apD2+eKT|0T)PJo~MUC%tNZqEW=pOL;( z2c%AQvn6pgYyrn*%D0}v(xNh=!zSc!%-%vm0I-v3s_H#ig=M{?ku155)Yojtgb!}- zRTkGZYuH#_)({8PXSew$Ij^+|=C6(DVixPkXLkeS=QWObdQ(M+Uc29m|Hw(){%ZW5 zLOf_RRxu}O8VOC@O5}Y`R0Y2gqdAs9S0y#q#AYmktYkEkw??N{j6o26@7|8d3zozj zcs2!dQW{0W3LmMDP<3-GoJ@UfKXj>7;J!Rx&n9h9LyhKyz<`&zUlj#>&dM#-fCr%W zk=uCy@fvo+Ak=Z_+heH?NOlfPW$&kP_Bv6Z3qXq7RjXQ%P~5XIn?#r#E~*dVf6D7F zp-x_H9Q9+L;&)*Km>MNI<3NNfkI9swAuP=>YFFYe3{@ueW_qLyk%*f-^96{jv*$r{0srbcm=D-dbSKwn*M=GZ^IqIz-8E)^f2E*AtzI&Qzo6 z+lYUtA^*qcwZX> z>{vDMBB>pQ?%$CuNCRDL2s;0v2YN#?lBH`BruO(Mu;w5C+tv?jiC zq7|?us?7D!!ZF9bXr+x94uj$;!;!gEXS&G0s+PD@Ao>v#*b{5uN1>QNhs?WzPGA5W zH(v;6y+{oyLw@z}pxLn%D9ROd%V3xHxdh#F%_(KI&yA(>OS)Z0hm<-y^N!y2fv z(D7W1DsC?j^{lq`h*oKM)3q^cg5XJKhU*Wz9DptnCvk05 zwvlsUtS7Hg-!CzG?#&-8R&Unn^av6;Ot~rPKv*JiJfDLU@)(lKPUc%R1F4<=)@)>IplKd#gp> zky0+=T`E*D0WOK99^4d6`we6VQ9-@G-!Gx>hP(^5_fYDTn+U0vXuZ^T7(TEUWBXgK zg__Ha6e_+PR(u8ZKOuQ4xtFmXxC$qM|UFybcPZUrJFBnQnx9!X{M7^tbvGys#+ z-Ij+H_&JX#$sud18EqgKqD$a0U`kj@BSUc|btN9up>@u z7c<;H`FGXHuY2F+`cAZ2b=~bPp>_GEL{v(oO9g?%H=1HA9=Gg1c*PMao^i1ZH=+Fa%Vqo+(ffc}kf{4UU{jxoJ#w%|@{8 zanV=TYLjcXt#0szGgPrpkzNkAQ^L;bRD5wA|B){|XSjqP4J~%+nj}To<0XuSEmdu2 ziv%k+;3qtwCo(|5O}Rqd@*GCZKr~N&ev{DEYYp90n@=X=9o)v&MuU2baRJwz&q923 zJ_wt3xG&>orEnj)F2olra-&4(POW(W3e z7R=lbemWzNb&FAEMqkkZ`80>y9O;86imvLDMcgdPIL3S`V!Zj=hIa~J8fA(?*`~sX^t_F_W!!V{RY5VUa{2ucwB~t9Dz{vXe1rz@aKu7R0*!H5-0k#c`?6G( zvp&o3&Vto#V{S#ba4!ZSImC{WT3X2uRh?+P-m$1}UO+49qJ%y$|O@j}KZ+Ne#c`F6A9%FzkgJ%=)jey2O)=&y7~1PMW1GM-7F}5u8|3shfeSs)Gk_d zoG1`3&&R(;UvevP(YzWVwUrKNC*Zf{=I@<;H+D(zm?M=3WFPHu!ow_7Y?(QzZ=5BI zB;21uUooO*xs(LoPT4Cg;qG}=fYVL-duC?KRcvFdt=?mEZ;E*uU#&pZ18XqeJcf@I z!MAdTRNKL{oOo-o*u~Z4^}ptiMqS_>yvj9F_RjtJPs^T6FuwSV2(pYFwxY3JAZrYW zGpf^~=4}=%rg@3t`&Qb;Z`-4A-}4eScs)^_mVbC4ND}HhRAB03kR^j}mcgdSA!CRX zVF%lMCHNXzLE~&yW->oA5HIHb>xhf2L2tw%=0UGHpXGCFYfphB1;U7~yEYvwPCLZS z(X~B4q}!sCiE1wgN3QKQOSJxNh~k6#W~tdVNo;ONR5H8UV{LU*u85lnd5{R2w1?c- z+0k_)v8S6I2t|T=6pLSw$`{*{?ZnXl9kmH&dGGuS|I5b!>xD|Gs`{(a1>CBp*~2bn zj_^}5+DW%r*K4y(t$;$+>2nfkP%?9k@ca>s55_uKef4K+qGyN+PNotV_FZd>;6C`0 z8`26I_0qcZgm1Gey96rY47)gB!;-urvjoIX{R%B9{&gqFVPlq&`^%DD684IxaXXEH zC9}uZwwzK}HR?A`EFuC~V<>%QBS6QgK-+7}{l<)-s#(V)Pezsj+*3B)_DvLpS;hJ8 z{^@)chC4m}mrt+OKH}o72JVDr@=2bgebypiwB_;J!%2mmq?n4CIjLTF9HNmkJ-XH- zdmrhduEH*&s2Ihw5jO|4kma7r7k&JQk$%7<(d>Q9oE|V{fk2%4tiN zq&*7gMB;sM?(ph~ar%VL$v|@uzIBp@(M_-XH0_sKSDtv0q<2M+2{Ab4(4|Rp38;Nm z)%LV(TlQmA?h_WoY?sL(>WRP-nlkAMw+ep8Ox>1lCz$~Px2{IFue*G5noV7!VTIy6 z1XC<&9Yv9tymQ;Myzx7fv4dsSHf_SqvInNQ?nc_@;$icJFOeXR3>xnh-Pj0o5qq7^2 z;F=k-Wt66LYr%4Z%a;4Yo8eGub}9)>ObrV;Ailz2=w7MHH%vxp_#3>9$mqE9zLV zRIg~!^iPUWc@A6-B&McJH+ID8bwX=f&f?+NWz!tk_aC8P9Mk4$gIx#WQAkm@L%x$l z6wdDA{uroy|9M%bWh5lW-S!xpoO8$n?8$an3>82VT}m>3CC29*I-zx`!4W&8)>&ju zF<{`wy?W6zp&2-4tubRnRnny?XC&Ns4OoZi>92RHj~0&gQSD^McUV#-PG!u+NT1xR z&bAiyiiBVcwT8+^%Q+u;*w**~8(151$ zlYunXFHP3oyH#VKP8KPDU~Nd6@t|yv%DxDpK>WZ_7U~AMG3z2u*p=n|z*qjeVXi|i zkNmsXkpe1y;o30W*nA95E+N9RdS+9m4%2c|aSBl>}EJ} zCE0oTO4iSU@16V}o&hE23)q;?*ktLZdB&G05#Sg|6Yf``IQK|djV;v*f!;yEXYp6o z*gSE`p^%EJ`1?V&gjRK_mdYLjH6J;;<6rZ$!;7uPy@vubPyL-o@=k`-#)RT-D_ip zxv=LT`BgB=7hI5b9dF$|K*hdgny*kxfZu3XQKlF2ZIyd5-(W(d@{2f$MGbkSix`&C zX!NEr;2BoDi8!Y6b}%7#_2&3|2PWe3r58ihu;S+Qex+bl0l2m}h$6YAxK?rM+fNG= zl4%q5T0?6Q(9|sCoKrB}GCdnpXV{stUr4%PhI`wGaH*<;okse;b888FC`o$cM2V4pL^-MMG|JD|H~n@_5r=rGkg1`cy&W?hz{GpE>-P3N@J+5uV)Gbz|yl zB~k`v745`%TLJ8fY521BYVP#_73e&Ux?M~KeaM3(JKL!~C?i6;Or?c>Z1(xK@2=b6LYH~f#Lm9 zeNM?toKZN-(wIAa;PdTQey}wbV^Br2m znC)x3*o=$j^G-||quP(Ua#x{a2QT7I?5j3iIm6;1g|%2bL(}0#_Gh&kFM1_?N-UkG zfvgE*u_?~GgSDEFAW2>^ERBZMnc~h#(=rZM4Z&&GX3#VlZTKb=S_V^WH-5yDZXF_~ zvLa?u)rwL~%KMcCFejPZY3eK$YajNEZ&yP5#dxog(0(6vEFy%LS}MabVD~)bYf97N zEGE};!7L58OzM7Y198Mt>7buRm?HIt`jgo-A6bcy4o|{eiz~_#8Aexs`z2gGrrU;ha|#4hTqE zF!i)y4=cT!8t4QHHa;l&j93Z(Ty(6>JNmLx^;oXg$|)hR43al6c-p zf$fuZ3;9#83ncMLb7f~XHuxfcM`5Zv1`5gXsEBnD1QzRfNwGG9%o?6Hx#&Q8MrBOg zyFJ60lYX)b>F%s6mNE6k=Wk>p3EzZ(uCbZ2;+gNk+ZU-iP{Wv?R>*?OfoVh!JO*K~ z6!p(RAF7IES9~gL%&9HGabvA1_HPU$EpBp402EVw_lW}(YL#aOh#wybwr9v6ssf5e zQ(1n<@NONYvCv$TyURa8J~9eYuR%@yAdd%%8kL1p*z@>pVm!iDe?`xI2Kr!61vf^c z8V^8xD~-=^4QIQ=ml{a=bpA4`e2S4mZ&B zi0~QlDZfJ(3`ih7D=6|EuK8HDa5LjP=J$p^-|v3}FZcsF??pw2Owh5YGw)_*6h5=l zsQe&=aU~(gA)NMGh(H70m1p<#FO@>vtZn+DQMb=wS6i6X zZkx0#vRQ>HEJ_8;0OPu*$dbhnh0-O9ulm}J2Y^gWb?C*UhOt-b%OzZI5kJ@`=1b-J z@YT!xAB9iv4wp+RzeM?X+kw@mqoT05xMd}U5X?MG$&~7+`8&ILTdzf61{h)eOc-w! zoGj^9H=qV5KaIwJnoaN7vg!d>ZLV{pi$!Ty-*PZfY%|MCplQ$>ET(+cp;nwxI1~%= z#iDExH}+oBP)=z&AZ;L1CS>1F2OjQaLT&F>*xyjnT^D5e5#j8}U>*lSA45jpz`I=P ze6({G1R1v<%qhHNW|G3pnvvgAX9OG+ajs2T=_#~`WzM9{@2vUW&SV6uCr%y=ne%;1 zw@qM5ME3Q%ErP4y*zppp#)x{k6FCKi97Gm-RcHoL_c#jp{n9^~Hy73^ARi_zW{5Av zX(XezF~-eH2T6h+qsUOI6S{_z&TTpSq-7^Rh_)egtuWb!3a<4AW>G)U%Y)NS4ErX8 zkD#J|Sx%*P<~Q;~|9S`_9EnekE3Z+5NhKPAyEe-@wLtfRQ8$A5WJE1FgC8BA?UD?s z!FNDUP#!_&CX2g)nvfD51$$4sho#hZot^TT-Mb6*XBTYO#&;n{+6#c(`7P~*2S#4; z1qa(|gHfY);Do6lk)Jac#0J71?nV;F4M##3c@STNHnpUiSow4VLBU3Md>|TG08;%6 zoSRUfMBgi)Z0nL7HKb-LCZ}wx4!tsZZPFxH=%_aaA`#5oe5n)Di27r7)6{N}N;mYBO%HazO z?jN|sH4`lw2kvUYb>FkKG_sFJ1r-k-U3|Uff20N%@-rBj^X6K3NnH@@9VXHPJ6^bR z9SBu2NCHRKQwP@t9AEuk!Vz2Bl$oyay&Sk5@H6Liz*S+LZ5=P~cDa z)3jQtym4snaroRGuAbe`%Bzop;D9`$%PYcN4k{ zgds+{yKGJ~eC@L;(d7=^c5jK(|0+9@%eX^FQS@W2H*e(Ncq)WR|E77xX1HXv!|nFx z`pMHHuWV**cwc<6%yS8KWHvC;F%i?Kgj&;(J!Xg(mBM8~8slMKfwCo=w4PORGaC!C z1L$0rxGlx(jFEJT;LIwEdB-`z{`~d1jYzfc8J;6RC^@FSm1;GMat|k%gyQ5XCx5h{ z6+&FTL{y;T1;KF5?n4k6mHgLVz0dsvLf=R#G#~AxX3t0x*o*2tOYSQg9}m>}I$S=_ ze<<;KZS~@{#6^2$lli9Lp_s&4WKk!dq?C0ZhJ93saMYl%1gYA5Q)(wZgab@JP7$-< z+G8nY#v4-ADyL~$u>2}d4e;eXz#wx`rC$N;ww=c zbzs@iH5&FQnl%8NGALLnjrTd})D7c^()poDoko=Yb3|gaU;B1H_c5-yNo6;B z?%4sw2j19UgB36QADE~F(hLMpZ+r!Oy&=;tBx?6$1>(y@re|9t#WjG95k6S7|{cEX`L~6k%a5;AlAv7FKJBSj2LT0 z$m+B8`dL|`YZRIDYWIfI$$=xkqVX@f=ZqbV*R&lJp%bq> zU$Dn7SIY~G1MPrSonEE)2UjXqAILl$_R4bdHqZF#wss~~9ztBngm?Tt=D7NP)eZ z(DNx#iu`1B<}J3WF5n8X!+xDn(H7xv_%ifBNi=T&4JDmK}C3*XSQ>o ziY4YGz+2P@5wkE4Puvc;57pWz1U&wwFl^7_B8W8L9pv4syC_a0Sk~Qo&WA{qJvcFOE#hdA9 z#9re$fHc8da!X|VeTXjkoJAdy+)(?W>{X_QT^v-OK^&a%rsZjy zvYO>-VEO}BU6I_nK5?0bP=|ZTX9)yZ^{6-38sAXFV?z_ML9U<-#6%M9w< zHor2i>?s(wHC+Uvn2!0zFiRLGC6?fm|>o$6VF^P^e#LkCmb zx!O2R_`{Lz6GlMkl9lk-zz<#5ietBkm z)A#=Qa_)3g!N1nsB@u+pMPM*xd+tdz{_(339Q9t!fl==pi5mn^vhJA{@|vGfHNhL~ z2jEkhAs{3%JB> zR3JNfbG9xtfC%iCjs5iv3~TN5d_&&m^lQf+@iK1gK?|P6IvZ-1FCCAS!*9kuNs55< zO<54-Q~Oc8=_pJiVc<^Q%?LSEq$#~GBu>OImy|*Q$dqv$d)B&^zM#J_MKk)SQA(X& zGS_OPbdC8eI&syGaKnUwif@Y$*^EtgUhRBPrci!g`<_;k{A68!8D?B$X^(LwsXK!%WV4cY& z&9(P>XSXtAo$8YDQqm;;{SG=1f=g4h(c zV_v!OPw@}(O}f0mJCJ`N>`xq5Td+{a`@7o+Z$Z-n2?>{#l{d4zuhr7b zXQh6eV|_MKI~}Fc)%{^<&NU<$it)3aN1(n>pe%So+BR>B35t$#+Ol$r^b8cv`56gz zI7|Nck^Tp_(()ok_Pok|$Sf*AzN9I84Yqu_&YW7bb{IZL#E!Xar4Nxm;$Y`}zYq)I zQHZuYYZR@IY;}=VpX4>tbWQ}0sPLfmCl{=-?g-?aZ`4`+J~u1StWhW*?IKodwoRQ8 zK6@lk0AS*R9g3W{Ih^@6vABAovVs>vn|m-{p%IzLk&;drGkwg3m^!Oq0!s_Ky%;wHDrb9PnhRg3uZ1ixcd!9OZ`MIH*%IG%Ip!Z* zx0soPnR&`;L~#kUv9L*kg~zXp1G6gRbTQ=SuFSi8j)GnoFSw;6YJOTtNX#D~i%w>0 zotOf^*z8sdZ;*dBm%WJOCg4fmy*m{9dvp0l;NKxI#NV6C|Fw7QWa4JspC~F1#f~02 ziTE0x@I+ffkG<3+(@{u?v+z@+LH1CD;^MQe(OT`u&lWDYn~dhxgwgz2kM~q+>z}3Nxk3t< zQ94wv5f=#B8W&X#Er>oR?m+-XNtO;%JHq)Z;c+d%?WpwGQEJY)8dj#1x;Sq|Lto_L zUW39V{0kF}g5S6fE}wR8|Kum5&9Ce5_v(NBCX@bQ*t|dddw$^mwz&?DLbwGovtHaPha0-hBGhy-n26v(Pjxt8l%|X?8WittgC}v5qnm>>J%81|?M1`fP(8MC6 zg(;x;3Fv7D?G=^_w!Q~KA<=gSx2O(NCC{W(xERMy;a+BSrIA)V~ptw0WcLdGU2 z$@j6L_n(FOh2O#GE(zjZwYy|IR} z36)N+UH!I4szlD&x1 ztQ37W-WLKD3!tnrD@FrtF>NfkyLP0tW3?YxV`Z&R+l6U?S|!DE2NQHtyv81J1DcQ2 z(A?H{(n~U-^UY{bTWv|0Bo$r9A)X_HX6-1Hb%Z<#7K4 zxBs`(Kce?{yZYN+qP}n=YG!no_%)hs`vh|XVv&L ztLB*1v&VmS|GHa2`Uf}~2ow|)$X&rNL6HCLLIVK@krh=Dq?MEtqn8zwlN1wGR-uy> z`x*lQxtE<7myxEWn}wIArJ9Malr5moV!U7+H;G?H!;{`xd?zj}!Tp&WT|NFV7MW87bH=xi{*U++Bdju5pZawaHQ7V+LB_~{ zC`7Cwgjw2QOy^x}j&Ks;3DkcMWc zHl&(;I^mp6EI6F{Pm5P$g=U%kDqq%({3T2KYTA;`C`y9H<7JAI7J2sT&P}tbV_XWO zOu{N6ig89psXA*!<8YpWv0~bC5?hxDoVi=o(-ct`{ub0(9NRmt(*dc22I4lvmg9NV zEUcK&sNn*$`0qRs%GGWd=*P@}w=5|Ue1)W-U+^C!)mu=M`kvFNBgq?4>gcXO&6Hi& z=srL2KDd(7-#$2#C%3uPa@6r+VgQo%=oQ$s0Hk8u2HOG3H=N#$9)?I^j>y=Z8(TCQ zk^Q?3{g8m?I!E4!u7OknrEcPQugKNPuETyW9sKDhyU3(vkC&EU`9#Fb*{2gv4Z|T- zn#>vi%(DzXTT+bjK=Ns~(8!-e5ej$z7EfRLA9U3!N)N`t>V2;jBJY-x(&oE^$u0G9 zGh609J1Ro+<`#$g0Bh<*p62MtLJ6X~V^Duhp`_O!3gyT<7K(Yv2qMWk{XXze*3y*2 zcZr`97`ITQd&qsx)^ju>#h5qnV`%Dp4BLB*nlf6Wa70x894p%HnJH1UV*uP|KOU`v z!r7FwV}*_)CXJ+o_;Rr%Wf0ACvPU#BJ`mOoJdTv-g+0ljZmBVC1 zc!aa0&AW!w3=*hv#3t{$;Lt&j2p~XTX4+<6&0@Y_{PCn=}CYzE0Q?v{>()KiH zd=Ur?Q_aU{$O#yLQ3K{`0T;Wx8+6AT+s+Vu8hy0Y=C3ojQzv2~3>$STHaMR%I-gg! zn}509?{;rI-V%tsIy81^_+~+!^ucdI%rpA`#h~ru3OB-uVU=r9M zww9cz(&v?1<#<3D<-W5K>;3k}noZiw>KX!G%TK1hto5^OmxjFW_4XQCO$B&$755mLaf!DC?~?@M@a&FgM2cAJE! zmNz$PQ`y5OmAtfpeHRGBOWRkP4D2cN=9QupuF(7e7~E&fzcJ|)8@2ka9vZV$^gI@f zO;pK|V%uWJ!3)*O_QRX2=iGkfg#<|3qt$WQR{vfllF%H3Yg%E7v&F?EuNEjwisT(yS)p^9p+S9SWkpw~5X zKf3ZG9%KJAH6k_)QLp$pZB$Tk`!33x?Z?*au=T2+9=ha``lxRZ+MEosdph<7gNBLs zQBMF=bBPCe9TgL48_!IPaJNKtM(ixKnqZ9xd(w8XZzYyWZKSN}U1?Ce9lL#T1hAvi zbVEo{-B$5dwn!{=`#u>qn7S5!d+r8k*faQd!{8>(LmJ9PzPOEd#Wxe@Y8XsSCl0r6 z8TRnn@+C{5DyMEk4Z;+Of{=2&AoB;(SV39p%`pTdugbbV0_Q3b?&G2vvdS4pL$iBuT9y}V1$PD@l@XO@? zSA_59NV>M$H&Y%aRx3J{O+m|wuyljvCuMafG8}ATz9sQ(r*I%&gW8f5Ea8% z$3t6Zi_`Z|m-$3LXLI@!bSBcjEGJ=dNuswPrH>|RP?;EO#k;dvA%!S& zg>ZQfU3@t9`En{K_BN&iD&Yyf?A_z7mP?W|ueG~c?aJz$xNZHgnK zMX$~ViZhyl9}^^nIeSj|hEJzR7-zi87I{JW!IzJ|~9F?bF%V*O%pG$Az$l=+I9G z-&$Yx2J+tgsQ0L#pp^Gdo>a79SnOFaDTkbiP@*?UpvxDIENCnZiEo7FWE>D-`zK8 z#mJm{gsdPYNFUe_{A2;6N@|tQUlruyxYit5m=2}sIe2HG`m}UeTDnA*usn|-Qy<|B zv$d-yIzfs3W|9!MwQ|50G(t;9kI0J-UKDm?SK$oAt>AtNw{WvC@7S6@p|f1W{Sod$=4ruf4)W}GYna8i z+x}I-;$Ox4Zf`R4C{T0f`v8@-v8jP-_tO&PJtxq!$&iN`oNA1=3tZP1Cs*{hFvm2? zP8N4}^L#blzikdaYXkFg}L79tEIb1v33{S_BBygGN(A-5thCGo{ zD;mt9@O}J&Lw}2*$P`gJ=I!yKE1QEmK%b$uF0cke;LnR-4$mQGtVDS^jd{I7P5Eq% zS)FQVD*@y!k&E8k)JF(xN#I5w*3LQU-^eGs0$te8_BuXToo;cq@3BMWc)iht{;n~D z^o)O}Iat0ST=yL}{OLKqzx=trg@o);TuBL3h}1AKP?fvAP(J&Bo~HB}22F>ZUiEbAZGxg-s~VDSI=`*EH0>~25AkmT zM_7ftO#_nuXoL+0PVaw@b0n*<>i==|JCWFBkq%U#3Wm9SXG8l0xCzokTZy?RS$Rr5pM|FR~VnF^=BR6TRm5~Nd22N ziVr9$)K!g7DbEu+8jhU#$6Q6nuZ9;ItUYyNj-{ML*S8fsa2BbSqHh<+uTJc40)4uZ zeu1+MRrX-D?;kLuuiqCNzDUWxZY1)np|vuLRgb}x%KWvjHGK&mOrRXV5`E_1{gjH| ze_k8HTDoi5uuIJ19OjrxNbW{j!)C{rWw?fOO(-?LNyelq+Ram9ER0x5oshRbWPzJN zndQHysdlGxHv4Y27Ws;{X8DX}(99~YCF39NkYXQa8!PATk1!5|1~KL#QLh;*N(&Y z&;P{7x%2d*BQPK!^%(yaA5;F%@$rAsWg8b08z)X0hFvZI5`}x_!3!K_Ekf zS)g27wL=m2nP|zTCW_Bf>n+)lP#cuG!VLOvM*Ekf;vb{QSU5VF*qAtwF#fmIR4(OE1<`otm#VCrooIi1E87n$ z#VCD*D9s|}6-b5;;mCX(I&n9JuWQz|1LwqVp+A5`mLI!6UKED7*Mt0&OyXDnVGCKz z$6KxK{61dapa$^ItOHmy>*r|Ot$O{GHXb(hC<{E4Z&riAVl`(!1&Lj4Qg~=c$LMFb z*~2H8&kh=bo)}*_EN*8 z(xojk=tdv@ZcL3gy}fu5MvEXvm^1u(PD zv(f;prWOuL{eV90RBTv=pV)`gRhJH+&x<4QTapKhjQ4`mUb07RW}%6&O#$3O-jzk2 z=Fne;T|i^Id+V1{V`(Uj%B*(n6s|w%d@2xBZlyInKuT;{3_;D*5K+fHhcv!-KDO}&g;Q;KS%ysH~1riTpE-Tuf7GT zQh(qf=8SgIl3x7v!46n3wM(a;b0qiH!1_lBm2>x&0Nb#>n`2X|9|MJDm zq;REmF|?rX!y+RQFoc3!LRlyhMwhU^F$oKl@StEtK?S}7^X=BQ*1j~YaWccvi*mR@ zPDO|_!DkN_W0*SHBUNU`lI_Qy$J_PgyzkHa*WX|@A^K#BxqL-BxW^llHHb+X= z;U+f|#dQ{!xuA3VaBi44EU~BuR9$9g>gvuByxWRmgTID-E_Yf*o}SijIQ+Xw#fuqO zkW!|cwiWaBL{(=kL%mNVIMtq@Gza0noY$XK|sZq^h%P`mO^dLcp`Cz z&}j4xgO+7O33PV*a6^V^-tJ&SCbo67par+YGJOZAX2yJjv|X*3$T04f@f;)vb$X?% zA*dA%e2*-E#-F$`BxS~Mj(+rJBNMOV1X7h%xj;jnr882L1^VHBhIM-_Y`zDNC76M| zR^fFhKf|Nrxq#q88P=w1?k2%iNolc ziXG*k)+o2yyWFC}W z(h~BFByD!aF9qcs&aLko2c+w_T#4((^oLh4t@J{NU*rlY8%G=}X=SU2ZR#b2Yv#bU z0h}SF6FvmAjw1YWWqS1BMz6-Ej{VHwh#g$d;+=KaG24C7!RMD=#Kz%F)Y`ykcArFV zX0K3w!hC_^w&l4}BG|VKRnSokw<>EGxr)^NCHDrix?G!7m7An6fEzGFGvsgnZ>px= z8;&JOPM|u(+wQk}kU~JEKn4*Pa#>zLcB#uEoSNvN<}uNCtJfy4sfM){_7`#>nZ(8v zbuJMwG+xlbgH5&i*}FBo35G13xBbHS)lnFaOl%6?Rt`&fPZ^`LBDL+@0aIB8&*Sv0 zxLh1h&AeoD8NMuIzPJavaYyu%Kj25( zV!E*hqEY#gN4Aqb=wlJ~ufcCw_ojc|=}Ud7yP*$l!|u@|e;fY(wrV{)HP+BQ*9`kz zQMBJp{DxpVbwhkv^zcFclJ2&L_R5Ht*?Tc;NUV^6!CxZ-mOZDWRRlOcYyCU__;=oJ zXY6m*1MR-Zm~n&r=yvyiglf9o?OypGkwSw1zZI(gpVR-hP^rVZ;i;m3*%D-495usNvKpIxSAR~wFBj$a;Mj@Movfx*8(Yji4R6v!Cp zP2ok}$CB|t9ow91eRQOs*^we46R=LoYV8x3oi*samDutc4nat$I%uK?FdEdfeK^(6= z9yp2GYjq0GT>gq;2Jr1U2#7tMVSaO;VzBm2JHkkIn-8mEj~7c1E7i<{sLaSfkgEbB zOsQ6x0criT;pzuVD-LHswRDZlOWw;8@R! zdpsG_45+OQ?T-mr3SCn$Z+9?!45hOD((;7A>f6U<%pwvDgKJS57tMz);mg5~GKQ)L z0$W0~>LLRi464_yI7mC|R)59jisf^LG{yDC4N+AX{(&fLWvSdti$n-@)}Uw5ogD{r z8AOgrCIWPLYQZGv21-j5=m&6yM53gl4Pb*pWlyj;B_GwU?>uOpzm*uqOoUAJWj4as7i42)p>R=(4Vp_tuHhKP(SpTnR@wLkQ zvozdpSw_GQRS&`0vdozvlp#=^{9RUKJED8is)0tiKp@;c*GA5+`&frlDyKY3b^m#* zEor5SQTn2x3H}*%8heuygNJ(MKm6Iu3@iC(?+9XZJQ1f0g=tlPB#Q0eIuw$tj%|G# zQ~?N=O2SXO_<{5r1WbE!S8A`GLRqA)qU|L>S;{{phg1gDXG4cf!m?MkP}hClj9-rK zwLMJTNSnPCmDKy@{OfK`!F(|~=f8?15bCg_1!+RLu?#y9f6d%@vps*$<`3Yv#1qy+ za!DsilWU*xG1pVuoWE}@DnB|V8|_YpMSGC&RlJmp$r?=#M+#B{O&#VDclbi1%OumD z19Lu;cyqXO@M-rA7o|Lf_5d6M$^tZ2>ta-F1xby;`t_2T@P%EiA-d>MNc@AL(sNrf zgVW@s1bsElmz>NH7ztNXy>X#0x2x1ZUd=#7U(27SGuR4#{A9P3o@x6BeEI364`hIn zzYDZp?U5QqvgmTU6KoF=$VejS1f&^RGFtCR59b~Uj*p9)d()DhTgWYEKa&O_QSZuE@^YFg3JTG{3u2#%_4_Pv?>EP%XzpN(Z{gZk;{-8+lSD zIo?lO0>TP7yh8#-ZcE`S$hkSpS7n~pjmKrxFaIV;ub7C+Iz%b$M`x4btUZ%tIh-g) zEnOaeWi8!&&b{Z`{(|2J&oTg|mTq=bDHpFkr8?%1dtvnMd&$(xV5iyHbLyP)5mHN8 zW>{;9W!Z3A9HA%iE`9nL`I*gS-xO;`;vKnd=L-b%tXZKg04Ll|{F zW$~q2DTA`eaa|JoojGuFTKmqDQF&r%fCj^o!GrRsWJslIcpnB(g?7JyET50Z&V7}! zrq0|-vVUp~r&k*U34h(g>_bEokFW>1+#njJ)>uU7JxXgCslC%1DqWyaMke)~|1MZL z%&A19Tt^{aG6?mop~-F9;;g%`ys3naL~oHX((ZvxAKRgDC+oOX_Cj#i8O#_CSd76- zorqP%Q~t(@G8~J_FZqMy{8}9J6EEK4gL}}PFYriNQU0DegFYu-VoNol+pjyZQr!M1 z<&?y1hBfvITxJ+<*v)k7MG}l6xU-TtWsxhQUaZCrJp84>32huA%8=B*Eyo!Rco?F? z5lP9c{#2Ngv)}gr&|Skbthy4=bC&K~;7r z0(qveTQJ|VP-MtAHDEN<FOO3H!Z?a4=5L3=GxxPoJ(52{iZ73m=5;pZ*d2&?#$k&!#5lp7hzb#{S0&f;F2_=uU^a*n3I=UCZ3`ZHHKk3fzz+@e7Cv`%i>k6Yh+6?RUxS4UF)sI z>ET1Z4;OtC^&A=&|N9nrjQkyKxEzK=YELxJpWBZUaAY|{X;`E7^uCage}o`j{XJub zhy9$^%jD?2&}=5uf6H>5qD#c1TIL9NYp84vJDz#FWAW4GU3qJfft~SbmRw~YViIpR z@C>5|>kRX&Q%3Hoo2>BpZMTJ59$L4e12kFVej2cUlCIW3t|TaJI9CYdNnuObwljoWvgj@8LOuBCIAm^Sg{~OL|g2zpjE}2 z@O*zI2!1mm2qeIUP4lLPNc}t^?4s^d`-K|sf`_h}E+!Je-dogc`V)+wly#{i2v z$X-o)VJ0-gZ?GMe1$UeAane#`%xHs_VSVP0(eCV?4qnZq`3n zKA`^z^^k0;K1ZNs2skT!a8<hJY=`DKssKUa>hDbhS6a$ ze3TtoI=|s6+dnUpZ6-!af;C6|)>fs}rmGyDh;H+O!iD9owbt6x^cXgX9VcCM{#qY( z%v>WHgy6IKz+^_5{&eBQdDm^eR^$`9+b}2BqmW7%>srPG9VE;YCsBwrY>2IUVi-a# zY+}esBrHV!$Gm9L%&!r~^*G<%gJpQ8vhFHP$c73v&pfD?jcO!9Y1W>-Mwuh@nDl`; z!`&qz0`rDQxY!131NO9aMz4Ks{#!)uz)Nz7vO~tLNWJ2Hum_P_AFW8;7;evrdeMA+ z0z>2_CW0nNdlvwgyk4I z(mtgd#Aou;xPYv}(M`7RPf&k*1e4w{E?gZ5W6~ei8t|w()Zz7}lKtF0etAD{R8DBy z*^{Py`hB7;Qwi)gpq-W8vzkRzLZ5=>%u7_nc*|VgZAM8xK2G}WA8d8T*)aZXn~%JZ z?jXN_(o8hb#qpLXT;%CA<#K56x5T3uh%Sp#3=3JDrjayhBOFm^X1L*}o89w`IL2_- z()+#%ey2kiT255n(k1FiM^tIa@(O1lnVw@8bz_&(c0M5IkBPfNrob;$t|62#j4Wyj}{&c za_grCqsx(t7M%n(?9h+EIH8zVljT;_%1)J0XdQp~G$Dy^+X%4$Zs0WZdJSH*LmY55 zm+nWcGlE;!)!bMtY}4dsN1+G7GlPH?yWBG9z=`-erbO|ecM-ipL>1kLF|R~1b?#3) z3hoc6&DCKEGt}srcLt}6d=GX|!hp97kgguZI1z@x9jvI}Ce)MAofUx;l$P{Q=*@ID z8^L$o3>+-CzqJy{ub@&+N=-LZ{TSxetg_lINU+njvN|~4b-q!%qc=K=XYIgH`^(pr+)x7oF&$%J=l3L|XA& z(Bh&vBwy*zvhP|Q+`!+FZ1*&`L|%{F6HHEdd4^v1cSVbJvc6a4{=!%)aZE1|l<*;> zC-heJyC*kdMv?m>UWpwc6a#CgGpx;K@j(4bJm!$A4i`5RyQDe({%D-|h%5DO-X761;3Vif<=8-(bN zxTzK}4_;MhrTtqviU7eTy+XF#>}evaK)2aul>#0pr8Zt<6Gv-3IoG)klx(-LN~)Z$ z*h~UmqQpHsZ&I(u(V`a5|7v@F?{b`S)!V+#xc1(ioaTeiQRFMhm8hY`!hMbuG3qzm zj@2MJkarr$J5tH7?w1+r?-lu-!NSS`aabHF*^kMXm)}*jJ8#NBY4_Oh{O<9on+bLc ztJXM_7g~TU`-B^taJoY`uIR8hq+{T5uT1(>o(U+Oh{pMdB$_W?{HVcKXc_LuE2{d85xuht>64O zadHJalt;WftE;?^Y`J`S&Eqh)y}GQ53@u_53#L(6rBL#R zkr1A(EWu}Qx+M|iJ}k+(=UjY#JBsRNCaBp_mkm#)&xMmme18CL{!xOTq>1a4Blpdcfx439hWn>kG57ge&6i5n|P;!q9ehu-yegLeXUf}v?@tWSvZljhs>B&ExtlK(-rD`PhwU3`%EQAq+%6knwX=$c*Rp?7 z(06GbA6Cm{riO3calGa2yg+dr=MGLeqN5$ne2#bN1WgDP!y;ziMARhYo|+5#kn??`h67^q*?HK9{Y*zg3Bv+#J)c07n{_V&G!I(N}3*nbM+ z`vjN)@0mqq(c25(;TPed!zSu^f_%YrVHJ0J?y%fsSyjkQ#Ogzzin+4X7Z+j~;$iT= zWQO0-xXg3ygl0?n?~=K`V0>f?SI5C8Lo)BCw7M6KWCu`2X%;v_Cq7~1zSM@dcds=K zElkr>p@#ZX^~(8v!QRP9A>={~P?fMs71N);g!LJf;WubC!oHM^CHttfZnb%;wcJdX z6*KHZkH6FJn!tYx^=RaRaec9-mwswu`&FO6Kz2#aTbry!6wCqxN;mPP^HWq0(nx*y zdUamdfHE2qWli|COxT~6z0WxuMpW6$;2 z3U?0@ruB;Xzj43IcYW?~7<^bPw0;6Ww$)><=@n*lUig#3TR5?sGH z*sk8`ItFD@c4kQPq_lZVEcZs5>J*tz_dkPnV~ljA5`tN^<}4zZYpTPgla&;c6Jj+y zHw;$W3VU`r>@TAz*F7a;`|x5_+bYyJJLxh`a@tV>+o zioI9~D#oJGtO{PVnK&G5#(mS0;WJ9sRq5ON8_djPAU*Zw^SML(hBdJ)0w}d|)EOu2 zLWiP_Vj4T;Jxm8Em3#8O@cC^DH|OUerP~|}pDC(o z!i~a?0j}fY(hzM*6SA5_UjMfnwV+4}F=%ldaZx*a9hm12jmqjV?CPTy9Q z=bMsf5zprmdD^A=IF_@~^5VyhfJx7$5?gi8Dza+~m3UWbak;1_L+;<_uX+Qi;vLK@ zyP5ugm}!dz_wb_KN*{#sqZ-GVdMn8G?As-I0KMcBqWjX+&XEP)jXS^pk9za8A$-sF z{`tKWQEi;z3c+KVwmA+y{sb1t?0yVZiG2cjO`IU+$XQU<+=Bx9AuHt~D932IoV6dAwOZ}o$9PMnp%M%%Tu+rJzP}{>Jh(J0KZuW+Hd1$*SrX~FXD zy_ON|>)^%m`#dG@YZFfaJ8b?bgunTmJUkNJUpl8;AA2S|d4jJA1&``kxr{i%o-C+L zj~fyFOZOB}n)2&z)#y|25}5`_@dbS23i7dUpm;sDJHNAmZV7nLnn7p()H_Y#RF5kC z_NjPq@UG@@utmH;YiQ%)C!`XyO_!JszZ)%h+zBr6>t80xZ`&PP7*76pLS}EI4i(R} zBn&y>SeS@{`b{4q8#@q1nw?c^uqA7-sn0B*wMM&A!AD{hfxXXI@kY--o^eLRJWf3J z0t)!#ucDbj=?vKU1gnN?e_^J=WRo1D9=J{12{r;%hJK!Nboud{LOpBS`t-3MCR1^2 z=W%dfAUrl-CIl6i{b)+&o8HiJ(rW4K9}76@kokv}e;qsAr>@>2w@5q&`o2*gD+-b8 zXtzdMKyE3rdPc>1hrRJe;_!q+o^6c0l9e?e?H*-7CHMb9XJyH& zh-~W~!Vi#aSNSw!K6^eW`8HScG825{x6EAm=y=i_(nsqR3*jlh5+N^iy>oM!(pDAD z`B5E%bL+_3B~jir(28lk7(TI1-#^{hezS--?hd2bL~ErP+qXNIgig7gSQgNf_!*ZY ze0T__cVev|@j!%H|FOjK<$Dh8!7;P*N?vraY`a z>b;XTXysYX^|Q10-Zb#9KPM$l14?&9=(XmhXIRf^$~HHx(@}V5ectM^q1aej#uoPM zbZ*DoYe9wNxU=lw@otqsPXr6QMWU9Ljg?NRu79XGdThez1&i- zQO9q(4x&OgRi_UDwOx2k;&QjlHa)5eji?f4>A#~ObheV9rv@Dxby{47;m8jXp-$tv z3+IYF6ufieZhQ#A52N;db1Z(T&BwE(pG*P|ZV=puHrU2=oniP)1Nb^>N!H@GxLAuf zaY3-^_8Red$x!{-9Ey~3eY|Usao8Q#xjOWE*kpzC1#f(&l z@bh;2pHck&>4=amjY4I2NGB;pwO@hnS=ML-fg7Hp=}K0KJ;+4)jA?MIr!z1Y+wY)O z1XFXN+cDmSm-Ia1!A!%7K@c;fElSho6balSN2C$#$GgJ*W5@U`t!X3n{JHe~^MH_= z!Y`Qic|Z6+S*tu^t+oLI2#5y3zh$leK85!G&ZGTT%9^P5u8wzz?cG&#Q8O+uLKYJc z2TQnn5!W*$0z{V)*6`l}!yyW5YU*d|30O^acEKpbY+Q5;b(IA~CaVF{-FpW_3;_$u zK6e>e^FH}LfwW#-sif_&xByPG)Yq-|_l{)Suh(t*E=W5NeM$}T8e)^;edQuv!-038 zqr-1*W9_#OU$<_?gHB2)D3*+wqlT7J&H3BdP*nFZ^b+|)Jn?3wd-28w!ztJbd3Pbs zWrlrWts?E;ES56bY3YtmzW#?BS;n(Qb4^9<(o^|WfEb4m44m;yy!m6Ne>g2GFXem< z+;fb8DhnGK(n&qJGsGhpZkTrzcblBP;XVS55b>3gE<15 zCFO;tnxkL>Ws*zw+`A?ej<^wuwx;&=^vNscI`b!i%Q}S zL8D;7v(cast_iGN^tnbzu1r0glM|=J%3znX2WPt{RXcnU;6cU!xN(r>I{<*SCH&My zvKK%lX0KxuH+r&EAYeus$yy-vkX6ly{=CO07iRS?<10HGROl{=n1>p8X2dF$1ef$8(I~@uek+?OkdVZfghR)%kjYDKn$A)~#NGngL?( zyOC6AG*>6PXigm!~(C(OBEFhf2eP}_+dPbx)whMa_d-2zpefjC; za-Ox6LjC2(C-pi9_`|V77FA1q-(gj}KKaA+ zAqk!sjwFBs68KtP;UaSd=jL8jdNg8-`&#^Y6#UX2NtW6TTH`p~5A^9B%_b_Y7*z=JYbQUOa2su@GSS|n+} z>f9Azm@9Xjx3Ep@ue)?1b;6n5gaIOlfqM?BwPLR{bLy?Se+`y{UGJh@dj+nKx^t9B#wzSVCL zbcfH=w-I?Lw@QPK6;?HO=_9n1RFn`rw0e@LOK|o3-lRiDnt9l0b6-)Kyv{5xcfQ@_ z9eAB_Yf{^|c@fOb`c|v@ukga%OH94s`K8!Rsz}hgjXVYAr2+SAYQC3wgaAc z^5l2s=`mb@cpU`i=90_L}bd9fknwTBmQ?7Ty}Zfqt*o z5L$E`2B}yL;puI8n#cheH8xc=BgB{sb5|#3xOMNAO5qYt%@3uAZONP4g4-^Dl5~|h zpT>Vuh-Zvwgv9m%l@bK2r~YHaJ;1<@+lZh$Z%{Ykoz(*L?0Jvx)Po@U@U|Vc{3a@KN7oVkdV4?A?~C1u(u#lX zmbOe778AKOf*gWwKcQ!a^J3c-n;!P#hgqBl{eJXaWjAp&`?i4cFwqvTH=WS{qU6PKu{36oT}{EHm>qQX?W)uV-!PHCHdVl- z@||b=h=>BZjw!PmrA`oxD+;6Tu(`>c{!Z9G0JP;&Zg1S+#OFVM!uVgWV$J^yUqb$C z(---_cBiU3Sy)>*{dar$peD4Z%3PJiDIHpdrBv{G6dSPuMW_OfYu%?!Bh0rc{!9^ghY@ok!Z-0YE{t};N7FLDvK^KEUJi!W(L3TnqFXV#pbkg%cop-B7Vd;0$QU zsKhhps$H3)giji_1iB22yG_R{&2bxHcT_S8jAhvvA&QwPp47;3!q0N7Sr}yP9Lg@z z6vTPNa+?;bT3}?+a#M0G8v)@s`MU-@rqxYGKtDx@K>tN311hP6xkA5L;npb2EJ4_K zZn~)Eh85&?PT(?=3I#GVIN<$KE_X)B6#6didSgL8o)Hy&H6>i?hZ&4R@NX8yz&{lj zaqQ&MHaReOoi?}z z5HoVu+Nz-U_24};n$OJ&uTB4EvmCbf5U(soDO!=}V?2deT#cnEOOvMwJ$#I9Z%2wO^G?^u{d`Q9%7aZgWuW6Vn=fR^XT$}zto-dC!wZ`mAOnY3)h3dwnEsd* zPSJ1C>$MyS0QCXE55ang*lEaT7eG~1FvaMtX4_aRgRv13v^4hDadx6u&^8)8BFQM? z@UY)d++2ySl*zWFW}!{021}}z@^tqGu}>(;mX`6vSjUDd&+kWIg_R1DFYlczPY4;8 z@s!JL;1}U|A=K9hX{WYB|t8Zdk#V;$KM^_^; za)w+LoU^CfwSeFd7R$g5cyz=Om12@GC&AH2iM^4GFZ^?k@u^&cCyde zyH3xad44=st?F6Ty=qPO-R!3ya}K$wIWW-H*5K+2JJ8?aSwI~X{magXSYm@d0#8{Q zXEy@2df2Zvu&M)(*=mUu$DHYO-NFHAWm(#~%zWKG?fYi5j-KU8YSsaWSXg8%Hr(jSWye2)#bl20&3L1vH!7toRJzKqtNc%tBD?M7eH2mT!7&{i zW~-MJQWVn}PDvAQ@vGMmsC-Lk*eqvc+EhMYNmBVnaPhb`(Lsud;1}L_yy;rF=6Wu~ zV+AZfBv_rzUN>K4utGZw{e*96kgoLYu`SeHbso=Fy&=nu4zSDtm0gtU0odI^i8>?+ z(1I}DEgSUvwvSp?(GrEu-(O;Fc#eA=s8FjKYaf^W2XUihVEidgiCxB9er) zw&+@jo^9!8w|-jRd}2RScOmM*;`_i13tw68xRt648a3M;dn!R-WbaO(_7@m`59HT$ z$%36J>wv8Hkr28c8jZ~PNa~oV8IJdH15zU?e91*2D+zCN`K#@yoP~V9OG~(&0$(f& zY5DTRei<|$J{@{VH*u)hkUP)B^Wg8nv2T;cMb(AzEcZn0!}rc-wv{@sFFMbgU%tu3`hH#+!) z(JNX1!9gXDaD%YhCbdyZpUK2KGgS)PtDB%;=FvsAd!XU>{S*5sVIwcB@Y z4M*hznM)%QqR60y2UbPu_Esk8Z9)uvtduiat$xc8#BB8x>%9+4I%UCfkMBhxfiYz^ zT5n~MOSfxWbR&u~C@U~~f{MFS%5xLylGB0Y^tvMMGsJa7>To1LYne>CJY8xT3imX` zv?C6PY)`Bk{dTfig}a^xFOx_*KpcF~d~e3LcpTW^J9%Dwvt@JZtzDRgY|0QUqE-BD z1ke-h>$|o~R<^&XtAeLGjjK~36+%&FJi@l+vu2Vl-}&_|HKtxED4i5xE7JEfv)cH! zhvb-Lov|BGO|4j3Jke$-LBbNqvujg-$rXgxdAdD(>j1VU=Tq=bz@nz4h%aClT9N1C za4Ias@6c7tRLCGEWp!)`+va+c*no9)3hQB*k|1TO5ivn(fKq8`l3voZektp1aEulQ z*k;+v7^6~GEiu5yo^`G8i0Mz~%%B?-RaP->&E_7j|ITMz(EusS*iN`JEtmK-KTyZN zz?7|4qonXPSyukDod3_gC?|_46_}rW zfx(XFB68pZJ)O`Tfyi{ zY_=I~ta|VKV{5v!X+)1WJxg~IgSfDtmOW1eYuSoVp=a|2s=L5BTLX`j zO(s&Km1#K+3P0RC3C+3n#}~OAbeEG~GU(h2W0~G+TTVrlm_ZXlQMi+}X>(~;QsT(6 zS+-){SaM!<=6CII=NDGdILZw*-ZrF^K!1*|6%H~EmLLWlO1X}ONvNrr?V9vZ5DmAB z5i*UM;r6TM$J`3$Rr6Ou)8xZ!Qtk!(6;0cbs&T~;9M<)hJ(vSJQ@tFKCC+AD5Mw^+ zGMHgX#9Kua31}g{Cid|vckRGgs6pGHu@v)+02VQ%pje^Z01S}PT*AO z(cwJP`WyD(tKq^(^EfXe*Yrol)8X&Y(BW3h(TsDZb2*Miy)RrtyQy0Z6(IG>90B^z zK-qn@i{X900P`8Y2=fqZJK8~vgd8MSjW6WA7g9?uM~Fg9DEMBEzCA8SQHqm<*mUli zgM^Upgbag(;sO?zV~Bvn)Vs0eNC&2M6doPaoOs{GnMm0-sOMH`Ih;3rQZp?h-N_D-S>X!DGfUP4WQtaJ6j=KKyVNT_q6}A@vYLPjmuyZ7MXf$(lB#v!;F1_8C zW#{7UeVTxf2*Jkd|~5cNGJp$f7)402lx3Tq7G^rq6w-T-?~-jfK`Wvx#hI~1M^ zm?x=W8VctlRAGk$iDh=FiVe)|0(Bw6KXz^ml7c*axpw^-`4h0E;66y2s%OO}Pm>Sv zr^II_yDF(4ONa{ z7pB-)G>Uo^9gEZyB`b2$)7%B@BV%~(7p0{?b|RWzIo}4nAx=Qn0jl#}4pN2!=8yNO z7a9vjJ!_JK!0~5xlrImms0$Cp-cfg(<7+UIa@zDs!*wFIL`+U>9U5pD@>Wr3>IWgA z?9IMetR{ESk0x1z;_17uOUNvSE`&OwP3YX+OocC;zR}R9Zg2m@2bH{BA!^Z)TO`MD zs7}}rObxy>bE=b)L6e;zP$FI{f56>ep>Y7Mf+CAD|_!B8`R6mrz$7z zP_`4D>(3Gs^oVgpC+Smaq@|;G{K=c+c+&zt7ZI|SBOkN>b(wN=2& zcr<`ViY|Ge7WMI%|~J09@dqSTmpJ<_#Z!`{jR-rsoX3g_8J zV$E6yD(=2M?Cgq9?tBJw31A$jTrtE^#mG=epl@~=vTb9Y?r1A-dTO#J>_0uGy;3Jg zxZ}jUyXb8$9%(D??N^FzV%enLybg3Kh(x zA4ToHBlUdz-ggkYb9utG2`^9TfpWgpJ6zHEA2}?fS0->gub(|@r~0@5CI0<3M%3Qc z*2vD}zr}Qj9+=aFj~%JfW_7q#C>qRx@WxUv2SnZl2J#W)3Hy^ITcp}h84Vwfu(IJx zm0yaKTc}ylgVb%IIgR6V#uVDG1+5#eCYr7qnwqYo( zPaxhZ&%p32vis{#n!wgr;j&u1i)UiUDzTs5p-LDgM8rNP>m1{d>#_^>={>$V%3Bw>^If8%w6%frlhBOU4E0Uf zbDDR#5uwPr-4<$cA|XnAtqU8&mXxV37f?^vJqdUfoK3IDRdE-1ab&HmC1i4|$P`~+ zGVSUG{01)-^OrN)uOW*i^DnZgu_@hy*O=vwxXhMrgh_{LjhCV<30@jy5?PNO?ZeQN zO)hyUzfiPCF?>O1lE5anYmgGgY!*jM$bkrEh8d5LuDYXo@_ z9wUXnpfR5lRG&^3vksUDq%60P`F-O5#6;PHOjl9NHE0+O{OID!LtZ8D)~9k!xS zHBa;A*o0<8^F8i*GZDVYl(L74%go_eiMD)rh6`y)G-gW^ma`mWIytS%uJ0)#oL{Y< zeksF^V=aA+3kYJzU&5=J>vrS_?Ig-XP0Z7iVsRb z*emt6BDL%FiMSfom)tz4KkN1SF0Wn>v<>I|ELC>5eosT2m9EX4!B8MhwkbV}XxT(G z@%|q3eCgH{U;qtNO4i-SfNr&^E=E>UncnS~2ywJ$#1pGJq8*#!fQKC1+2_7jH4@2z z3UM`)l4nr$$qrnp6^aA&A-yZr>*xrn*tM?va^O=6ZTJ<#l=;p9(&*q~7gaWVjM|sP z8YWDh;8mH{UH@=DrCw2jhng1xc08biA+%K^f+Xn6o{QWbH7HG#(${vkGSAliH?Pag z`r2x3)yBG&G%E`8Oty#WJ$IvR>8)%RZ3?>qCSca^Uk*$ zvU6UE0ro0apj`t;QB+(Hx!y_ck(~V|+xev>-V~z7L(1mN9>N#!D@G|(`1%@iDmK@Q zJ%_#_FF4md89yj=Mt}iK%n7JT+b)i$=epf!CC=C4s!wH&ghUs_rPnNI(+)ECrVX0O zA$<(#6MK}rnc+J&o64xTdN`1onEXaw(&(l5tPmc-;NsO{OVd7Dwq!z~T77k>bM+zj zeAv>IsDM(ZDwO^{t?O*-xK$^vb|6Cn1uE54o6M+{mwK^#X1`cnpzcY!$Xi_q$Qi zI{we9<9ao1_x>b-*MD~tG~E!n<;PyKHe z&M9kITLR;AS80+GBi{-}0J^6Mxld?jT#e&DiUP;TTl?cF;hCxi^Ez$vkbTR-L29%n zmIw_Br+m`R)OoOFPG`9WedD@?oAd)qqXma_nJpO`*fMphFM&0!;^y3Bk{V^ z1zSfnj$Zr{hUF;MMSmv(G5BT-N#^)lQOYbzL~2K@S7TfHz5JZ0=UT7J=HyiC6E*v1 zj9)K+dWYYkIM-(AMFMP?)a&?a!vsR64{4|Buxmh>U$w6|XAog$UcpQuV$=%L^hp?z zHoe?2E;n3%lM6_zLAd+^33=%*j13N@T2nqmkLpI(7pp%-l3R1NO0_pCK7DPY97rA& zK)+2+ij^y#5vga4qTS1@OJ&!$wGLJGYT>tQTeO;O}7BCUoD(RCdZ%n!wv$C?GND3zwn|Mq9 zg)39uOeLnbhzd<48yvEGGk$|AgOr%3!i@%lEB6f+m(4_Vup-5e_LMcvwBZ>BeerO% z6B0*1M2dRDC_8Q#7*vO*EV`m%a!g`8ou`$nqRFLNda!#3gA`1{ZLlS#^&zB$cW&3w zd5uMRqz6h`c za=)PN2Cae$k}*Yk3Q1cy3pkQR?wsD1=X_1V(E{ZXkM#*|QKnvfW^$qGa7cA4A|6xR zMYy2n%{+E4=-=iv1wqGWmaQv0t^{w-S5|&LV~%1XZ~4kxvM_z90cbNZ+c}c)%vG;p zcyG_o*Hei-*=je-z!iWldgl!8sR!8EnkCDOqGaYVATP06eV@-;OKCUug~$Rv#aW*@ zPCHl?*;c+CW~m_%U8t~~*0uXw-VWsYvauY%M=yH4J427wrdrw2Fjq=g)qCx9 z4CL51#UB-_$<^|;$#g+POtr^piH8jvrycED&a_|6}TGlYW**~x64Nk(D&dGTJo z4RXmBG(CH2ps@-)PO_H4F;~>EF#WF_7rE)Vra-K3T@HFZfCe_*f%K$WO>FIC0Ttf! zCWR~qCs5Xd;pnLr%bpqlX&u&9=@W<(K)V>ViY0m$U$dMWgJUy}sG38n2;?b#&~g3Eym&Ui(qu@(#O zDcz-%R}~T}wBPW_X&7^VSbiZ1(H6ElhG$C_ImbiNEHGJW(zVlWR2f)?q@&kO+s-$; zn;W<5K1s<9n&XARiszP$f%A-DTprl_O1|?+kVBnO4#;YIy@hkc+m3fZ&2Nw77nrHo zNu&*t9)e%zbwrcM?BINmWfU&-(^mB?y38?9(|zu>Li#?_qR;}nm3Bfj_HFN1gM*V@ zJ)tj+24j!$as)Aj>!$b*O{<`YfWh0C)9_cAvAC(^i^CBFB%Tqu5}wqh&ufE2ge30q z#Np(s(fA@7HtpiW_J#tHCDL42Zc)sAdv~K@Ou~_`q;Mdzr$#v60*YiN2uQ?xrC}T* z4q2Ac?rAFYdNlgFvOL)qsjSLfN?32 zn2vj*wJ~s=B21yQ%UQrO@z9?9kj;!tU+S}Fu_eSs4=Try`PrBBcd4$%QaA{C#koqK zdd_dLBKJ8%J3p0w9a{}Y@PWqr7}E=(UV}-&H75(Z5t6;3GW_54eGxd~3#d&WDK1g8 z->ovLMa8;n>E@%2KRb?f|G^T10Q@FDFG&{@duAF)dw`gUNgEPzix7(5y8~s{gu{9( zat0|C_wYC-8zVdqr+$EsoM@Lsg%12Iy_J+F5`XTf{PyPV`t3WfwtYgPiDK(bVG!yN zO8-z@pCw&(t}N#Q+|uiJ?r>w}Fbzkd-X7JxXC4&RFaz{r3B>5UY$u*+KU8>`(3Pq} z9cV}h&JYE>0gXRuNmgR=IZ)hf+okq_S{ea#~?`L3v&3iH&!6stelfFlmdluxz zoC7E;XY7>%rw@OOI!bU3I69Eo(}Tb;+%j4(nAM{pMtP80G?mxRS1e@XIT!6xq&tM# zHi<9i{tzZbgrVn2$$tj8=!YGQ!pfK8G*o=xIN~9Ol2vz4CaA!hUCTab*b(P!>Q^(Q zh;w_4IW+qt{J5ML{#Xp;RKPT~+ySBPDz4O%8W+!_SMGV5KsHM+Xz(&p{T93Xc7!rJ z{}c7iUZC5gCT}*vI@L zD6+0+4#yjYQW>bSfRr@(X0B&cnm5Uf;ey-1X8zWfVm`MJw#jB6+tXB1G);4=>SI`? z6>_pR1JUgM+w*t&?0uWA>cDr6z;br!__Ttv)>o60&b?7b&l+bDoRm;=^!VYfo;SqG z6(U|4^?^T1Gs;J)hM|s6GX_@mpQoXg9sckp#JuCgK2zqZ*Oe7~V^N!*?gRYxky7R> zr$ykma?N0I4cS<#XW{p>FSyTJDJ6*@b%Y-qry0FaH}NZ^x+4zY7ii8oB#RS;GNy>S za8f_V1ScJUEYH)dhz+H#NxB8-N`EKrbrD{b-*bQy= zCF6Kb`L02WbbM6%G^_8B5V^+W+v=M|IZ-<=jmX+}J-+jvm(MM0xN<)>|B&6*ubSy( z0Y$5j!GYqoKkH4vuT1(}qWs#*ji^NqT2DVn)RS(#k}M1?=Ci-1Wc)tf;@6anKkc7p zX8cb1H45W*Rs3H?$bXs9)7SsgV2r;be-{${)%*XKIXtcMACUixxc=X{ziVy&k|F)e zV$lAP`#(iV|Bn4#H1W^n_M-nA_P;`j{}nFyJNI{uvtI|Lzf1+=|HA$Mx2k`q{w}%j zC-oltpQ(RWOZz+Z_txq^eb7VxkJR7VssG6bzZbv%xmuQ|$A8!gzj6O}AN*cO_~)M8 z;rvJH(?kJI??)L)tL_sIV%zW-%fhQFx)&6B^s_bV^_9-#hwFa9Zh{FNn?WZ|DGKc78A Pd-`-dMFEQUzn=ad(t4bl literal 0 HcmV?d00001 diff --git a/pom.xml b/pom.xml index 280b0e8..e2a3287 100644 --- a/pom.xml +++ b/pom.xml @@ -51,10 +51,17 @@ com.flobi.GoldIsMoney GoldIsMoney - 1.0.0 + 1.2.1 system ${project.basedir}/lib/GoldIsMoney.jar + + com.flobi.GoldIsMoney2 + GoldIsMoney + 2.0.0 + system + ${project.basedir}/lib/GoldIsMoney2.jar + cosine.boseconomy.BOSEconomy BOSEconomy diff --git a/src/net/milkbowl/vault/Vault.java b/src/net/milkbowl/vault/Vault.java index de43f8c..e6b711a 100644 --- a/src/net/milkbowl/vault/Vault.java +++ b/src/net/milkbowl/vault/Vault.java @@ -45,6 +45,7 @@ import net.milkbowl.vault.economy.plugins.Economy_CurrencyCore; import net.milkbowl.vault.economy.plugins.Economy_EconXP; import net.milkbowl.vault.economy.plugins.Economy_Essentials; import net.milkbowl.vault.economy.plugins.Economy_GoldIsMoney; +import net.milkbowl.vault.economy.plugins.Economy_GoldIsMoney2; import net.milkbowl.vault.economy.plugins.Economy_Gringotts; import net.milkbowl.vault.economy.plugins.Economy_McMoney; import net.milkbowl.vault.economy.plugins.Economy_MineConomy; @@ -243,6 +244,9 @@ public class Vault extends JavaPlugin { // Try to load GoldIsMoney hookEconomy("GoldIsMoney", Economy_GoldIsMoney.class, ServicePriority.Normal, "com.flobi.GoldIsMoney.GoldIsMoney"); + + // Try to load GoldIsMoney2 + hookEconomy("GoldIsMoney2", Economy_GoldIsMoney2.class, ServicePriority.Normal, "com.flobi.GoldIsMoney2.GoldIsMoney"); } diff --git a/src/net/milkbowl/vault/economy/plugins/Economy_GoldIsMoney2.java b/src/net/milkbowl/vault/economy/plugins/Economy_GoldIsMoney2.java new file mode 100644 index 0000000..58fd9b2 --- /dev/null +++ b/src/net/milkbowl/vault/economy/plugins/Economy_GoldIsMoney2.java @@ -0,0 +1,286 @@ +/* This file is part of Vault. + +Vault is free software: you can redistribute it and/or modify +it under the terms of the GNU Lesser General Public License as published by +the Free Software Foundation, either version 3 of the License, or +(at your option) any later version. + +Vault is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU Lesser General Public License for more details. + +You should have received a copy of the GNU Lesser General Public License +along with Vault. If not, see . +*/ +package net.milkbowl.vault.economy.plugins; + +import java.util.List; +import java.util.logging.Logger; + +import net.milkbowl.vault.economy.Economy; +import net.milkbowl.vault.economy.EconomyResponse; +import net.milkbowl.vault.economy.EconomyResponse.ResponseType; + +import org.bukkit.Bukkit; +import org.bukkit.event.EventHandler; +import org.bukkit.event.EventPriority; +import org.bukkit.event.Listener; +import org.bukkit.event.server.PluginDisableEvent; +import org.bukkit.event.server.PluginEnableEvent; +import org.bukkit.plugin.Plugin; + +import com.flobi.GoldIsMoney2.GoldIsMoney; + +public class Economy_GoldIsMoney2 implements Economy { + private static final Logger log = Logger.getLogger("Minecraft"); + + private final String name = "GoldIsMoney"; + private Plugin plugin = null; + protected GoldIsMoney economy = null; + + public Economy_GoldIsMoney2(Plugin plugin) { + this.plugin = plugin; + Bukkit.getServer().getPluginManager().registerEvents(new EconomyServerListener(this), plugin); + // Load Plugin in case it was loaded before + if (economy == null) { + Plugin ec = plugin.getServer().getPluginManager().getPlugin("GoldIsMoney"); + + if (ec != null && ec.isEnabled() && ec.getClass().getName().equals("com.flobi.GoldIsMoney2.GoldIsMoney")) { + economy = (GoldIsMoney) ec; + log.info(String.format("[%s][Economy] %s hooked.", plugin.getDescription().getName(), name)); + } + } + } + + @Override + public boolean isEnabled() { + if (economy == null) { + return false; + } else { + return economy.isEnabled(); + } + } + + @Override + public String getName() { + return name; + } + + @Override + public boolean hasBankSupport() { + return GoldIsMoney.hasBankSupport(); + } + + @Override + public int fractionalDigits() { + return GoldIsMoney.fractionalDigits(); + } + + @Override + public String format(double amount) { + return GoldIsMoney.format(amount); + } + + @Override + public String currencyNamePlural() { + return GoldIsMoney.currencyNamePlural(); + } + + @Override + public String currencyNameSingular() { + return GoldIsMoney.currencyNameSingular(); + } + + @Override + public boolean hasAccount(String playerName) { + return GoldIsMoney.hasAccount(playerName); + } + + @Override + public double getBalance(String playerName) { + return GoldIsMoney.getBalance(playerName); + } + + @Override + public boolean has(String playerName, double amount) { + return GoldIsMoney.has(playerName, amount); + } + + @Override + public EconomyResponse withdrawPlayer(String playerName, double amount) { + if (amount < 0) { + return new EconomyResponse(0, 0, ResponseType.FAILURE, "Cannot withdraw negative funds!"); + } + if (!GoldIsMoney.hasAccount(playerName)) { + return new EconomyResponse(0, 0, ResponseType.FAILURE, "That player does not have an account!"); + } + if (!GoldIsMoney.has(playerName, amount)) { + return new EconomyResponse(0, GoldIsMoney.getBalance(playerName), ResponseType.FAILURE, "Insufficient funds"); + } + if (!GoldIsMoney.withdrawPlayer(playerName, amount)) { + return new EconomyResponse(0, GoldIsMoney.getBalance(playerName), ResponseType.FAILURE, "Unable to withdraw funds!"); + } + return new EconomyResponse(amount, GoldIsMoney.getBalance(playerName), ResponseType.SUCCESS, null); + } + + @Override + public EconomyResponse depositPlayer(String playerName, double amount) { + if (amount < 0) { + return new EconomyResponse(0, 0, ResponseType.FAILURE, "Cannot desposit negative funds!"); + } + if (!GoldIsMoney.hasAccount(playerName)) { + return new EconomyResponse(0, 0, ResponseType.FAILURE, "That player does not have an account!"); + } + if (!GoldIsMoney.depositPlayer(playerName, amount)) { + return new EconomyResponse(0, GoldIsMoney.getBalance(playerName), ResponseType.FAILURE, "Unable to deposit funds!"); + } + return new EconomyResponse(amount, GoldIsMoney.getBalance(playerName), ResponseType.SUCCESS, null); + } + + @Override + public EconomyResponse createBank(String name, String player) { + if (!GoldIsMoney.hasBankSupport()) { + return new EconomyResponse(0, 0, ResponseType.NOT_IMPLEMENTED, "GoldIsMoney bank support is disabled!"); + } + if (!GoldIsMoney.createBank(name, player)) { + return new EconomyResponse(0, 0, ResponseType.FAILURE, "Unable to create bank account."); + } + return new EconomyResponse(0, GoldIsMoney.bankBalance(name), ResponseType.SUCCESS, ""); + } + + @Override + public EconomyResponse deleteBank(String name) { + if (!GoldIsMoney.hasBankSupport()) { + return new EconomyResponse(0, 0, ResponseType.NOT_IMPLEMENTED, "GoldIsMoney bank support is disabled!"); + } + if (!GoldIsMoney.deleteBank(name)) { + return new EconomyResponse(0, 0, ResponseType.FAILURE, "Unable to remove bank account."); + } + return new EconomyResponse(0, 0, ResponseType.SUCCESS, ""); + } + + @Override + public EconomyResponse bankBalance(String name) { + if (!GoldIsMoney.hasBankSupport()) { + return new EconomyResponse(0, 0, ResponseType.NOT_IMPLEMENTED, "GoldIsMoney bank support is disabled!"); + } + if (!GoldIsMoney.bankExists(name)) { + return new EconomyResponse(0, 0, ResponseType.FAILURE, "That bank does not exist!"); + } + return new EconomyResponse(0, GoldIsMoney.bankBalance(name), ResponseType.SUCCESS, ""); + } + + @Override + public EconomyResponse bankHas(String name, double amount) { + if (!GoldIsMoney.hasBankSupport()) { + return new EconomyResponse(0, 0, ResponseType.NOT_IMPLEMENTED, "GoldIsMoney bank support is disabled!"); + } + if (!GoldIsMoney.bankExists(name)) { + return new EconomyResponse(0, 0, ResponseType.FAILURE, "That bank does not exist!"); + } + if (GoldIsMoney.bankHas(name, amount)) { + return new EconomyResponse(0, GoldIsMoney.bankBalance(name), ResponseType.FAILURE, "The bank does not have enough money!"); + } + return new EconomyResponse(0, GoldIsMoney.bankBalance(name), ResponseType.SUCCESS, ""); + } + + @Override + public EconomyResponse bankWithdraw(String name, double amount) { + if (!GoldIsMoney.hasBankSupport()) { + return new EconomyResponse(0, 0, ResponseType.NOT_IMPLEMENTED, "GoldIsMoney bank support is disabled!"); + } + if (!GoldIsMoney.bankExists(name)) { + return new EconomyResponse(0, 0, ResponseType.FAILURE, "That bank does not exist!"); + } + if (!GoldIsMoney.bankHas(name, amount)) { + return new EconomyResponse(0, GoldIsMoney.bankBalance(name), ResponseType.FAILURE, "The bank does not have enough money!"); + } + if (!GoldIsMoney.bankWithdraw(name, amount)) { + return new EconomyResponse(0, GoldIsMoney.bankBalance(name), ResponseType.FAILURE, "Unable to withdraw from that bank account!"); + } + return new EconomyResponse(amount, GoldIsMoney.bankBalance(name), ResponseType.SUCCESS, ""); + } + + @Override + public EconomyResponse bankDeposit(String name, double amount) { + if (!GoldIsMoney.hasBankSupport()) { + return new EconomyResponse(0, 0, ResponseType.NOT_IMPLEMENTED, "GoldIsMoney bank support is disabled!"); + } + if (!GoldIsMoney.bankExists(name)) { + return new EconomyResponse(0, 0, ResponseType.FAILURE, "That bank does not exist!"); + } + if (!GoldIsMoney.bankDeposit(name, amount)) { + return new EconomyResponse(0, GoldIsMoney.bankBalance(name), ResponseType.FAILURE, "Unable to deposit to that bank account!"); + } + return new EconomyResponse(amount, GoldIsMoney.bankBalance(name), ResponseType.SUCCESS, ""); + } + + @Override + public EconomyResponse isBankOwner(String name, String playerName) { + if (!GoldIsMoney.hasBankSupport()) { + return new EconomyResponse(0, 0, ResponseType.NOT_IMPLEMENTED, "GoldIsMoney bank support is disabled!"); + } + if (!GoldIsMoney.bankExists(name)) { + return new EconomyResponse(0, 0, ResponseType.FAILURE, "That bank does not exist!"); + } + if (!GoldIsMoney.isBankOwner(name, playerName)) { + return new EconomyResponse(0, 0, ResponseType.FAILURE, "That player does not own that bank!"); + } + return new EconomyResponse(0, GoldIsMoney.bankBalance(name), ResponseType.SUCCESS, ""); + } + + @Override + public EconomyResponse isBankMember(String name, String playerName) { + if (!GoldIsMoney.hasBankSupport()) { + return new EconomyResponse(0, 0, ResponseType.NOT_IMPLEMENTED, "GoldIsMoney bank support is disabled!"); + } + if (!GoldIsMoney.bankExists(name)) { + return new EconomyResponse(0, 0, ResponseType.FAILURE, "That bank does not exist!"); + } + if (!GoldIsMoney.isBankMember(name, playerName)) { + return new EconomyResponse(0, 0, ResponseType.FAILURE, "That player is not a member of that bank!"); + } + return new EconomyResponse(0, GoldIsMoney.bankBalance(name), ResponseType.SUCCESS, ""); + } + + @Override + public List getBanks() { + return GoldIsMoney.getBanks(); + } + + @Override + public boolean createPlayerAccount(String playerName) { + return GoldIsMoney.createPlayerAccount(playerName); + } + + public class EconomyServerListener implements Listener { + Economy_GoldIsMoney2 economy = null; + + public EconomyServerListener(Economy_GoldIsMoney2 economy_GoldIsMoney2) { + this.economy = economy_GoldIsMoney2; + } + + @EventHandler(priority = EventPriority.MONITOR) + public void onPluginEnable(PluginEnableEvent event) { + if (economy.economy == null) { + Plugin ec = plugin.getServer().getPluginManager().getPlugin("GoldIsMoney"); + + if (ec != null && ec.isEnabled() && ec.getClass().getName().equals("com.flobi.GoldIsMoney2.GoldIsMoney")) { + economy.economy = (GoldIsMoney) ec; + log.info(String.format("[%s][Economy] %s hooked.", plugin.getDescription().getName(), economy.name)); + } + } + } + + @EventHandler(priority = EventPriority.MONITOR) + public void onPluginDisable(PluginDisableEvent event) { + if (economy.economy != null) { + if (event.getPlugin().getDescription().getName().equals("GoldIsMoney")) { + economy.economy = null; + log.info(String.format("[%s][Economy] %s unhooked.", plugin.getDescription().getName(), economy.name)); + } + } + } + } +} \ No newline at end of file From 759a2aed881efa6771cda2773218db9926d795f3 Mon Sep 17 00:00:00 2001 From: xLRDxREVENGEx Date: Thu, 6 Sep 2012 14:01:42 -0700 Subject: [PATCH 6/6] Fixed type in items.java class for ghast tear It was put as Ghost Tear which is now corrected to Ghast Tear --- src/net/milkbowl/vault/item/Items.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/net/milkbowl/vault/item/Items.java b/src/net/milkbowl/vault/item/Items.java index cd2b63f..415b1ef 100644 --- a/src/net/milkbowl/vault/item/Items.java +++ b/src/net/milkbowl/vault/item/Items.java @@ -311,7 +311,7 @@ public class Items { items.add(new ItemInfo("End Stone", new String[][] {{"end", "ston"}}, Material.ENDER_STONE)); items.add(new ItemInfo("Dragon Egg", new String[][] {{"drag", "egg"}}, Material.DRAGON_EGG)); items.add(new ItemInfo("Blaze Rod", new String[][] {{"rod", "blaz"}}, Material.BLAZE_ROD)); - items.add(new ItemInfo("Ghost Tear", new String[][] {{"ghas", "tear"}}, Material.GHAST_TEAR)); + items.add(new ItemInfo("Ghast Tear", new String[][] {{"ghas", "tear"}}, Material.GHAST_TEAR)); items.add(new ItemInfo("Gold Nugget", new String[][] {{"nugg", "gold"}}, Material.GOLD_NUGGET)); items.add(new ItemInfo("Glass Bottle", new String[][] {{"bottl"}, {"glas", "bott"}, {"empt", "bott"}}, Material.GLASS_BOTTLE)); items.add(new ItemInfo("Potion", new String[][] {{"potio"}}, Material.POTION));