mcMMO.java 69 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353
  1. package com.gmail.nossr50;
  2. import com.gmail.nossr50.datatypes.Mob;
  3. import com.gmail.nossr50.datatypes.PlayerProfile;
  4. import com.gmail.nossr50.config.*;
  5. import com.gmail.nossr50.listeners.mcBlockListener;
  6. import com.gmail.nossr50.listeners.mcEntityListener;
  7. import com.gmail.nossr50.listeners.mcPlayerListener;
  8. import com.gmail.nossr50.locale.mcLocale;
  9. import com.gmail.nossr50.party.Party;
  10. import com.gmail.nossr50.skills.*;
  11. import com.nijikokun.bukkit.Permissions.Permissions;
  12. import org.bukkit.ChatColor;
  13. import org.bukkit.Location;
  14. import java.io.BufferedReader;
  15. import java.io.File;
  16. import java.io.FileReader;
  17. import java.util.ArrayList;
  18. import java.util.HashMap;
  19. import java.util.Timer;
  20. import java.util.logging.Level;
  21. import java.util.logging.Logger;
  22. import org.bukkit.command.Command;
  23. import org.bukkit.command.CommandSender;
  24. import org.bukkit.event.Event.Priority;
  25. import org.bukkit.event.Event;
  26. import org.bukkit.plugin.PluginDescriptionFile;
  27. import org.bukkit.plugin.java.JavaPlugin;
  28. import org.bukkit.plugin.PluginManager;
  29. import org.bukkit.entity.Player;
  30. public class mcMMO extends JavaPlugin
  31. {
  32. /*
  33. * I never expected mcMMO to get so popular!
  34. * Thanks for all the support for the mod
  35. * Thanks to the people who have worked on the code
  36. * Thanks to the donators who helped me out financially
  37. * Thanks to the server admins who use my mod :)
  38. *
  39. * This mod is open source, and its going to stay that way >:3
  40. *
  41. * Donate via paypal to nossr50@gmail.com (A million thanks to anyone that does!)
  42. */
  43. public static String maindirectory = "plugins" + File.separator + "mcMMO";
  44. File file = new File(maindirectory + File.separator + "config.yml");
  45. public static final Logger log = Logger.getLogger("Minecraft");
  46. private final mcPlayerListener playerListener = new mcPlayerListener(this);
  47. private final mcBlockListener blockListener = new mcBlockListener(this);
  48. private final mcEntityListener entityListener = new mcEntityListener(this);
  49. public static mcPermissions permissionHandler = new mcPermissions();
  50. private Permissions permissions;
  51. private Timer mcMMO_Timer = new Timer(true); //BLEED AND REGENERATION
  52. //private Timer mcMMO_SpellTimer = new Timer(true);
  53. public static Database database = null;
  54. public Mob mob = new Mob();
  55. public Misc misc = new Misc(this);
  56. public Sorcery sorcery = new Sorcery(this);
  57. //Config file stuff
  58. LoadProperties config = new LoadProperties();
  59. public void onEnable()
  60. {
  61. new File(maindirectory).mkdir();
  62. mcPermissions.initialize(getServer());
  63. config.configCheck();
  64. if(!LoadProperties.useMySQL)
  65. Users.getInstance().loadUsers(); //Load Users file
  66. /*
  67. * REGISTER EVENTS
  68. */
  69. PluginManager pm = getServer().getPluginManager();
  70. //Player Stuff
  71. pm.registerEvent(Event.Type.PLAYER_QUIT, playerListener, Priority.Normal, this);
  72. pm.registerEvent(Event.Type.PLAYER_JOIN, playerListener, Priority.Normal, this);
  73. pm.registerEvent(Event.Type.PLAYER_LOGIN, playerListener, Priority.Normal, this);
  74. pm.registerEvent(Event.Type.PLAYER_CHAT, playerListener, Priority.Lowest, this);
  75. pm.registerEvent(Event.Type.PLAYER_INTERACT, playerListener, Priority.Monitor, this);
  76. pm.registerEvent(Event.Type.PLAYER_RESPAWN, playerListener, Priority.Normal, this);
  77. //Block Stuff
  78. pm.registerEvent(Event.Type.BLOCK_DAMAGE, blockListener, Priority.Highest, this);
  79. pm.registerEvent(Event.Type.BLOCK_BREAK, blockListener, Priority.Highest, this);
  80. pm.registerEvent(Event.Type.BLOCK_FROMTO, blockListener, Priority.Normal, this);
  81. pm.registerEvent(Event.Type.BLOCK_PLACE, blockListener, Priority.Normal, this);
  82. //Entity Stuff
  83. pm.registerEvent(Event.Type.ENTITY_TARGET, entityListener, Priority.Normal, this);
  84. pm.registerEvent(Event.Type.ENTITY_DEATH, entityListener, Priority.Normal, this);
  85. pm.registerEvent(Event.Type.ENTITY_DAMAGE, entityListener, Priority.Highest, this);
  86. pm.registerEvent(Event.Type.CREATURE_SPAWN, entityListener, Priority.Normal, this);
  87. PluginDescriptionFile pdfFile = this.getDescription();
  88. mcPermissions.initialize(getServer());
  89. if(LoadProperties.useMySQL)
  90. {
  91. database = new Database(this);
  92. database.createStructure();
  93. } else
  94. Leaderboard.makeLeaderboards(); //Make the leaderboards
  95. for(Player player : getServer().getOnlinePlayers()){Users.addUser(player);} //In case of reload add all users back into PlayerProfile
  96. System.out.println(pdfFile.getName() + " version " + pdfFile.getVersion() + " is enabled!" );
  97. mcMMO_Timer.schedule(new mcTimer(this), (long)0, (long)(1000));
  98. //mcMMO_SpellTimer.schedule(new mcTimerSpells(this), (long)0, (long)(100));
  99. }
  100. public boolean inSameParty(Player playera, Player playerb){
  101. if(Users.getProfile(playera).inParty() && Users.getProfile(playerb).inParty()){
  102. if(Users.getProfile(playera).getParty().equals(Users.getProfile(playerb).getParty())){
  103. return true;
  104. } else {
  105. return false;
  106. }
  107. } else {
  108. return false;
  109. }
  110. }
  111. public void getXpToLevel(Player player, String skillname){
  112. Users.getProfile(player).getXpToLevel(skillname.toLowerCase());
  113. }
  114. public void removeXp(Player player, String skillname, Integer newvalue){
  115. PlayerProfile PP = Users.getProfile(player);
  116. PP.removeXP(skillname, newvalue);
  117. Skills.XpCheck(player);
  118. }
  119. public void addXp(Player player, String skillname, Integer newvalue){
  120. PlayerProfile PP = Users.getProfile(player);
  121. PP.addXP(skillname, newvalue);
  122. Skills.XpCheck(player);
  123. }
  124. public void modifySkill(Player player, String skillname, Integer newvalue){
  125. PlayerProfile PP = Users.getProfile(player);
  126. PP.modifyskill(newvalue, skillname);
  127. }
  128. public ArrayList<String> getParties(){
  129. String location = "plugins/mcMMO/mcmmo.users";
  130. ArrayList<String> parties = new ArrayList<String>();
  131. try {
  132. //Open the users file
  133. FileReader file = new FileReader(location);
  134. BufferedReader in = new BufferedReader(file);
  135. String line = "";
  136. while((line = in.readLine()) != null)
  137. {
  138. String[] character = line.split(":");
  139. String theparty = null;
  140. //Party
  141. if(character.length > 3)
  142. theparty = character[3];
  143. if(!parties.contains(theparty))
  144. parties.add(theparty);
  145. }
  146. in.close();
  147. } catch (Exception e) {
  148. log.log(Level.SEVERE, "Exception while reading "
  149. + location + " (Are you sure you formatted it correctly?)", e);
  150. }
  151. return parties;
  152. }
  153. public static String getPartyName(Player player){
  154. PlayerProfile PP = Users.getProfile(player);
  155. return PP.getParty();
  156. }
  157. public static boolean inParty(Player player){
  158. PlayerProfile PP = Users.getProfile(player);
  159. return PP.inParty();
  160. }
  161. public Permissions getPermissions() {
  162. return permissions;
  163. }
  164. public void onDisable() {
  165. System.out.println("mcMMO was disabled.");
  166. }
  167. public boolean onCommand( CommandSender sender, Command command, String label, String[] args ) {
  168. Player player = (Player) sender;
  169. PlayerProfile PP = Users.getProfile(player);
  170. String[] split = new String[args.length + 1];
  171. split[0] = label;
  172. for(int a = 0; a < args.length; a++){
  173. split[a + 1] = args[a];
  174. }
  175. //Check if the command is an MMO related help command
  176. if(split[0].equalsIgnoreCase("taming") || split[0].toLowerCase().equalsIgnoreCase(mcLocale.getString("m.SkillTaming").toLowerCase())){
  177. float skillvalue = (float)PP.getSkill("taming");
  178. String percentage = String.valueOf((skillvalue / 1000) * 100);
  179. player.sendMessage(mcLocale.getString("m.SkillHeader", new Object[] {mcLocale.getString("m.SkillTaming")}));
  180. player.sendMessage(mcLocale.getString("m.XPGain", new Object[] {mcLocale.getString("m.XPGainTaming")}));
  181. if(mcPermissions.getInstance().taming(player))
  182. player.sendMessage(mcLocale.getString("m.LVL", new Object[] {PP.getSkillToString("taming"), PP.getSkillToString("tamingXP"), PP.getXpToLevel("taming")}));
  183. player.sendMessage(mcLocale.getString("m.SkillHeader", new Object[] {mcLocale.getString("m.Effects")}));
  184. player.sendMessage(mcLocale.getString("m.EffectsTemplate", new Object[] {mcLocale.getString("m.EffectsTaming1_0"), mcLocale.getString("m.EffectsTaming1_1")}));
  185. player.sendMessage(mcLocale.getString("m.EffectsTemplate", new Object[] {mcLocale.getString("m.EffectsTaming2_0"), mcLocale.getString("m.EffectsTaming2_1")}));
  186. player.sendMessage(mcLocale.getString("m.EffectsTemplate", new Object[] {mcLocale.getString("m.EffectsTaming3_0"), mcLocale.getString("m.EffectsTaming3_1")}));
  187. player.sendMessage(mcLocale.getString("m.EffectsTemplate", new Object[] {mcLocale.getString("m.EffectsTaming4_0"), mcLocale.getString("m.EffectsTaming4_1")}));
  188. player.sendMessage(mcLocale.getString("m.EffectsTemplate", new Object[] {mcLocale.getString("m.EffectsTaming5_0"), mcLocale.getString("m.EffectsTaming5_1")}));
  189. player.sendMessage(mcLocale.getString("m.EffectsTemplate", new Object[] {mcLocale.getString("m.EffectsTaming6_0"), mcLocale.getString("m.EffectsTaming6_1")}));
  190. player.sendMessage(mcLocale.getString("m.SkillHeader", new Object[] {mcLocale.getString("m.YourStats")}));
  191. if(PP.getSkill("taming") < 100)
  192. player.sendMessage(mcLocale.getString("m.AbilityLockTemplate", new Object[] {mcLocale.getString("m.AbilLockTaming1")}));
  193. else
  194. player.sendMessage(mcLocale.getString("m.AbilityBonusTemplate", new Object[] {mcLocale.getString("m.AbilBonusTaming1_0"), mcLocale.getString("m.AbilBonusTaming1_1")}));
  195. if(PP.getSkill("taming") < 250)
  196. player.sendMessage(mcLocale.getString("m.AbilityLockTemplate", new Object[] {mcLocale.getString("m.AbilLockTaming2")}));
  197. else
  198. player.sendMessage(mcLocale.getString("m.AbilityBonusTemplate", new Object[] {mcLocale.getString("m.AbilBonusTaming2_0"), mcLocale.getString("m.AbilBonusTaming2_1")}));
  199. if(PP.getSkill("taming") < 500)
  200. player.sendMessage(mcLocale.getString("m.AbilityLockTemplate", new Object[] {mcLocale.getString("m.AbilLockTaming3")}));
  201. else
  202. player.sendMessage(mcLocale.getString("m.AbilityBonusTemplate", new Object[] {mcLocale.getString("m.AbilBonusTaming3_0"), mcLocale.getString("m.AbilBonusTaming3_1")}));
  203. if(PP.getSkill("taming") < 750)
  204. player.sendMessage(mcLocale.getString("m.AbilityLockTemplate", new Object[] {mcLocale.getString("m.AbilLockTaming4")}));
  205. else
  206. player.sendMessage(mcLocale.getString("m.AbilityBonusTemplate", new Object[] {mcLocale.getString("m.AbilBonusTaming4_0"), mcLocale.getString("m.AbilBonusTaming4_1")}));
  207. player.sendMessage(mcLocale.getString("m.TamingGoreChance", new Object[] {percentage}));
  208. }
  209. if(split[0].equalsIgnoreCase("woodcutting") || split[0].toLowerCase().equalsIgnoreCase(mcLocale.getString("m.SkillWoodCutting").toLowerCase())){
  210. float skillvalue = (float)PP.getSkill("woodcutting");
  211. int ticks = 2;
  212. int x = PP.getSkill("woodcutting");
  213. while(x >= 50){
  214. x-=50;
  215. ticks++;
  216. }
  217. String percentage = String.valueOf((skillvalue / 1000) * 100);
  218. player.sendMessage(mcLocale.getString("m.SkillHeader", new Object[] {mcLocale.getString("m.SkillWoodCutting")}));
  219. player.sendMessage(mcLocale.getString("m.XPGain", new Object[] {mcLocale.getString("m.XPGainWoodCutting")}));
  220. if(mcPermissions.getInstance().woodcutting(player))
  221. player.sendMessage(mcLocale.getString("m.LVL", new Object[] {PP.getSkillToString("woodcutting"), PP.getSkillToString("woodcuttingXP"), PP.getXpToLevel("woodcutting")}));
  222. player.sendMessage(mcLocale.getString("m.SkillHeader", new Object[] {mcLocale.getString("m.Effects")}));
  223. player.sendMessage(mcLocale.getString("m.EffectsTemplate", new Object[] {mcLocale.getString("m.EffectsWoodCutting1_0"), mcLocale.getString("m.EffectsWoodCutting1_1")}));
  224. player.sendMessage(mcLocale.getString("m.EffectsTemplate", new Object[] {mcLocale.getString("m.EffectsWoodCutting2_0"), mcLocale.getString("m.EffectsWoodCutting2_1")}));
  225. player.sendMessage(mcLocale.getString("m.EffectsTemplate", new Object[] {mcLocale.getString("m.EffectsWoodCutting3_0"), mcLocale.getString("m.EffectsWoodCutting3_1")}));
  226. player.sendMessage(mcLocale.getString("m.SkillHeader", new Object[] {mcLocale.getString("m.YourStats")}));
  227. if(PP.getSkill("woodcutting") < 100)
  228. player.sendMessage(mcLocale.getString("m.AbilityLockTemplate", new Object[] {mcLocale.getString("m.AbilLockWoodCutting1")}));
  229. else
  230. player.sendMessage(mcLocale.getString("m.AbilityBonusTemplate", new Object[] {mcLocale.getString("m.AbilBonusWoodCutting1_0"), mcLocale.getString("m.AbilBonusWoodCutting1_1")}));
  231. player.sendMessage(mcLocale.getString("m.WoodCuttingDoubleDropChance", new Object[] {percentage}));
  232. player.sendMessage(mcLocale.getString("m.WoodCuttingTreeFellerLength", new Object[] {ticks}));
  233. }
  234. if(split[0].equalsIgnoreCase("archery") || split[0].toLowerCase().equalsIgnoreCase(mcLocale.getString("m.SkillArchery").toLowerCase())){
  235. Integer rank = 0;
  236. if(PP.getSkill("archery") >= 50)
  237. rank++;
  238. if(PP.getSkill("archery") >= 250)
  239. rank++;
  240. if(PP.getSkill("archery") >= 575)
  241. rank++;
  242. if(PP.getSkill("archery") >= 725)
  243. rank++;
  244. if(PP.getSkill("archery") >= 1000)
  245. rank++;
  246. float skillvalue = (float)PP.getSkill("archery");
  247. String percentage = String.valueOf((skillvalue / 1000) * 100);
  248. int ignition = 20;
  249. if(PP.getSkill("archery") >= 200)
  250. ignition+=20;
  251. if(PP.getSkill("archery") >= 400)
  252. ignition+=20;
  253. if(PP.getSkill("archery") >= 600)
  254. ignition+=20;
  255. if(PP.getSkill("archery") >= 800)
  256. ignition+=20;
  257. if(PP.getSkill("archery") >= 1000)
  258. ignition+=20;
  259. String percentagedaze;
  260. if(PP.getSkill("archery") < 1000){
  261. percentagedaze = String.valueOf((skillvalue / 2000) * 100);
  262. } else {
  263. percentagedaze = "50";
  264. }
  265. player.sendMessage(mcLocale.getString("m.SkillHeader", new Object[] {mcLocale.getString("m.SkillArchery")}));
  266. player.sendMessage(mcLocale.getString("m.XPGain", new Object[] {mcLocale.getString("m.XPGainArchery")}));
  267. if(mcPermissions.getInstance().archery(player))
  268. player.sendMessage(mcLocale.getString("m.LVL", new Object[] {PP.getSkillToString("archery"), PP.getSkillToString("archeryXP"), PP.getXpToLevel("archery")}));
  269. player.sendMessage(mcLocale.getString("m.SkillHeader", new Object[] {mcLocale.getString("m.Effects")}));
  270. player.sendMessage(mcLocale.getString("m.EffectsTemplate", new Object[] {mcLocale.getString("m.EffectsArchery1_0"), mcLocale.getString("m.EffectsArchery1_1")}));
  271. player.sendMessage(mcLocale.getString("m.EffectsTemplate", new Object[] {mcLocale.getString("m.EffectsArchery2_0"), mcLocale.getString("m.EffectsArchery2_1")}));
  272. player.sendMessage(mcLocale.getString("m.EffectsTemplate", new Object[] {mcLocale.getString("m.EffectsArchery3_0"), mcLocale.getString("m.EffectsArchery3_1")}));
  273. player.sendMessage(mcLocale.getString("m.EffectsTemplate", new Object[] {mcLocale.getString("m.EffectsArchery4_0"), mcLocale.getString("m.EffectsArchery4_1")}));
  274. player.sendMessage(mcLocale.getString("m.SkillHeader", new Object[] {mcLocale.getString("m.YourStats")}));
  275. player.sendMessage(mcLocale.getString("m.ArcheryDazeChance", new Object[] {percentagedaze}));
  276. player.sendMessage(mcLocale.getString("m.ArcheryRetrieveChance", new Object[] {percentage}));
  277. player.sendMessage(mcLocale.getString("m.ArcheryIgnitionLength", new Object[] {(ignition / 20)}));
  278. player.sendMessage(mcLocale.getString("m.ArcheryDamagePlus", new Object[] {rank}));
  279. }
  280. if(split[0].equalsIgnoreCase("axes") || split[0].toLowerCase().equalsIgnoreCase(mcLocale.getString("m.SkillAxes"))){
  281. String percentage;
  282. float skillvalue = (float)PP.getSkill("axes");
  283. if(PP.getSkill("axes") < 750){
  284. percentage = String.valueOf((skillvalue / 1000) * 100);
  285. } else {
  286. percentage = "75";
  287. }
  288. int ticks = 2;
  289. int x = PP.getSkill("axes");
  290. while(x >= 50){
  291. x-=50;
  292. ticks++;
  293. }
  294. player.sendMessage(mcLocale.getString("m.SkillHeader", new Object[] {mcLocale.getString("m.SkillAxes")}));
  295. player.sendMessage(mcLocale.getString("m.XPGain", new Object[] {mcLocale.getString("m.XPGainAxes")}));
  296. if(mcPermissions.getInstance().axes(player))
  297. player.sendMessage(mcLocale.getString("m.LVL", new Object[] {PP.getSkillToString("axes"), PP.getSkillToString("axesXP"), PP.getXpToLevel("axes")}));
  298. player.sendMessage(mcLocale.getString("m.SkillHeader", new Object[] {mcLocale.getString("m.Effects")}));
  299. player.sendMessage(mcLocale.getString("m.EffectsTemplate", new Object[] {mcLocale.getString("m.EffectsAxes1_0"), mcLocale.getString("m.EffectsAxes1_1")}));
  300. player.sendMessage(mcLocale.getString("m.EffectsTemplate", new Object[] {mcLocale.getString("m.EffectsAxes2_0"), mcLocale.getString("m.EffectsAxes2_1")}));
  301. player.sendMessage(mcLocale.getString("m.EffectsTemplate", new Object[] {mcLocale.getString("m.EffectsAxes3_0"), mcLocale.getString("m.EffectsAxes3_1")}));
  302. player.sendMessage(mcLocale.getString("m.SkillHeader", new Object[] {mcLocale.getString("m.YourStats")}));
  303. player.sendMessage(mcLocale.getString("m.AxesCritChance", new Object[] {percentage}));
  304. if(PP.getSkill("axes") < 500){
  305. player.sendMessage(mcLocale.getString("m.AbilityLockTemplate", new Object[] {mcLocale.getString("m.AbilLockAxes1")}));
  306. } else {
  307. player.sendMessage(mcLocale.getString("m.AbilityBonusTemplate", new Object[] {mcLocale.getString("m.AbilBonusAxes1_0"), mcLocale.getString("m.AbilBonusAxes1_1")}));
  308. }
  309. player.sendMessage(mcLocale.getString("m.AxesSkullLength", new Object[] {ticks}));
  310. }
  311. if(split[0].equalsIgnoreCase("swords") || split[0].toLowerCase().equalsIgnoreCase(mcLocale.getString("m.SkillSwords").toLowerCase())){
  312. int bleedrank = 2;
  313. String percentage, parrypercentage = null, counterattackpercentage;
  314. float skillvalue = (float)PP.getSkill("swords");
  315. if(PP.getSkill("swords") < 750){
  316. percentage = String.valueOf((skillvalue / 1000) * 100);
  317. } else {
  318. percentage = "75";
  319. }
  320. if(skillvalue >= 750)
  321. bleedrank+=1;
  322. if(PP.getSkill("swords") <= 900){
  323. parrypercentage = String.valueOf((skillvalue / 3000) * 100);
  324. } else {
  325. parrypercentage = "30";
  326. }
  327. if(PP.getSkill("swords") <= 600){
  328. counterattackpercentage = String.valueOf((skillvalue / 2000) * 100);
  329. } else {
  330. counterattackpercentage = "30";
  331. }
  332. int ticks = 2;
  333. int x = PP.getSkill("swords");
  334. while(x >= 50){
  335. x-=50;
  336. ticks++;
  337. }
  338. player.sendMessage(mcLocale.getString("m.SkillHeader", new Object[] {mcLocale.getString("m.SkillSwords")}));
  339. player.sendMessage(mcLocale.getString("m.XPGain", new Object[] {mcLocale.getString("m.XPGainSwords")}));
  340. if(mcPermissions.getInstance().swords(player))
  341. player.sendMessage(mcLocale.getString("m.LVL", new Object[] {PP.getSkillToString("swords"), PP.getSkillToString("swordsXP"), PP.getXpToLevel("swords")}));
  342. player.sendMessage(mcLocale.getString("m.SkillHeader", new Object[] {mcLocale.getString("m.Effects")}));
  343. player.sendMessage(mcLocale.getString("m.EffectsTemplate", new Object[] {mcLocale.getString("m.EffectsSwords1_0"), mcLocale.getString("m.EffectsSwords1_1")}));
  344. player.sendMessage(mcLocale.getString("m.EffectsTemplate", new Object[] {mcLocale.getString("m.EffectsSwords2_0"), mcLocale.getString("m.EffectsSwords2_1")}));
  345. player.sendMessage(mcLocale.getString("m.EffectsTemplate", new Object[] {mcLocale.getString("m.EffectsSwords3_0"), mcLocale.getString("m.EffectsSwords3_1")}));
  346. player.sendMessage(mcLocale.getString("m.EffectsTemplate", new Object[] {mcLocale.getString("m.EffectsSwords4_0"), mcLocale.getString("m.EffectsSwords4_1")}));
  347. player.sendMessage(mcLocale.getString("m.EffectsTemplate", new Object[] {mcLocale.getString("m.EffectsSwords5_0"), mcLocale.getString("m.EffectsSwords5_1")}));
  348. player.sendMessage(mcLocale.getString("m.SkillHeader", new Object[] {mcLocale.getString("m.YourStats")}));
  349. player.sendMessage(mcLocale.getString("m.SwordsCounterAttChance", new Object[] {counterattackpercentage}));
  350. player.sendMessage(mcLocale.getString("m.SwordsBleedLength", new Object[] {bleedrank}));
  351. player.sendMessage(mcLocale.getString("m.SwordsTickNote"));
  352. player.sendMessage(mcLocale.getString("m.SwordsBleedLength", new Object[] {percentage}));
  353. player.sendMessage(mcLocale.getString("m.SwordsParryChance", new Object[] {parrypercentage}));
  354. player.sendMessage(mcLocale.getString("m.SwordsSSLength", new Object[] {ticks}));
  355. }
  356. if(split[0].equalsIgnoreCase("acrobatics") || split[0].toLowerCase().equalsIgnoreCase(mcLocale.getString("m.SkillAcrobatics").toLowerCase())){
  357. String dodgepercentage;
  358. float skillvalue = (float)PP.getSkill("acrobatics");
  359. String percentage = String.valueOf((skillvalue / 1000) * 100);
  360. String gracepercentage = String.valueOf(((skillvalue / 1000) * 100) * 2);
  361. if(PP.getSkill("acrobatics") <= 800){
  362. dodgepercentage = String.valueOf((skillvalue / 4000 * 100));
  363. } else {
  364. dodgepercentage = "20";
  365. }
  366. player.sendMessage(mcLocale.getString("m.SkillHeader", new Object[] {mcLocale.getString("m.SkillAcrobatics")}));
  367. player.sendMessage(mcLocale.getString("m.XPGain", new Object[] {mcLocale.getString("m.XPGainAcrobatics")}));
  368. if(mcPermissions.getInstance().acrobatics(player))
  369. player.sendMessage(mcLocale.getString("m.LVL", new Object[] {PP.getSkillToString("acrobatics"), PP.getSkillToString("acrobaticsXP"), PP.getXpToLevel("acrobatics")}));
  370. player.sendMessage(mcLocale.getString("m.SkillHeader", new Object[] {mcLocale.getString("m.Effects")}));
  371. player.sendMessage(mcLocale.getString("m.EffectsTemplate", new Object[] {mcLocale.getString("m.EffectsAcrobatics1_0"), mcLocale.getString("m.EffectsAcrobatics1_1")}));
  372. player.sendMessage(mcLocale.getString("m.EffectsTemplate", new Object[] {mcLocale.getString("m.EffectsAcrobatics2_0"), mcLocale.getString("m.EffectsAcrobatics2_1")}));
  373. player.sendMessage(mcLocale.getString("m.EffectsTemplate", new Object[] {mcLocale.getString("m.EffectsAcrobatics3_0"), mcLocale.getString("m.EffectsAcrobatics3_1")}));
  374. player.sendMessage(mcLocale.getString("m.SkillHeader", new Object[] {mcLocale.getString("m.YourStats")}));
  375. player.sendMessage(mcLocale.getString("m.AcrobaticsRollChance", new Object[] {percentage}));
  376. player.sendMessage(mcLocale.getString("m.AcrobaticsGracefulRollChance", new Object[] {gracepercentage}));
  377. player.sendMessage(mcLocale.getString("m.AcrobaticsDodgeChance", new Object[] {dodgepercentage}));
  378. }
  379. if(split[0].equalsIgnoreCase("mining") || split[0].toLowerCase().equalsIgnoreCase(mcLocale.getString("m.SkillMining"))){
  380. float skillvalue = (float)PP.getSkill("mining");
  381. String percentage = String.valueOf((skillvalue / 1000) * 100);
  382. int ticks = 2;
  383. int x = PP.getSkill("mining");
  384. while(x >= 50){
  385. x-=50;
  386. ticks++;
  387. }
  388. player.sendMessage(mcLocale.getString("m.SkillHeader", new Object[] {mcLocale.getString("m.SkillMining")}));
  389. player.sendMessage(mcLocale.getString("m.XPGain", new Object[] {mcLocale.getString("m.XPGainMining")}));
  390. if(mcPermissions.getInstance().mining(player))
  391. player.sendMessage(mcLocale.getString("m.LVL", new Object[] {PP.getSkillToString("mining"), PP.getSkillToString("miningXP"), PP.getXpToLevel("mining")}));
  392. player.sendMessage(mcLocale.getString("m.SkillHeader", new Object[] {mcLocale.getString("m.Effects")}));
  393. player.sendMessage(mcLocale.getString("m.EffectsTemplate", new Object[] {mcLocale.getString("m.EffectsMining1_0"), mcLocale.getString("m.EffectsMining1_1")}));
  394. player.sendMessage(mcLocale.getString("m.EffectsTemplate", new Object[] {mcLocale.getString("m.EffectsMining2_0"), mcLocale.getString("m.EffectsMining2_1")}));
  395. player.sendMessage(mcLocale.getString("m.SkillHeader", new Object[] {mcLocale.getString("m.YourStats")}));
  396. player.sendMessage(mcLocale.getString("m.MiningDoubleDropChance", new Object[] {percentage}));
  397. player.sendMessage(mcLocale.getString("m.MiningSuperBreakerLength", new Object[] {ticks}));
  398. }
  399. if(split[0].equalsIgnoreCase("repair") || split[0].toLowerCase().equalsIgnoreCase(mcLocale.getString("m.SkillRepair").toLowerCase())){
  400. float skillvalue = (float)PP.getSkill("repair");
  401. String percentage = String.valueOf((skillvalue / 1000) * 100);
  402. String repairmastery = String.valueOf((skillvalue / 500) * 100);
  403. player.sendMessage(mcLocale.getString("m.SkillHeader", new Object[] {mcLocale.getString("m.SkillRepair")}));
  404. player.sendMessage(mcLocale.getString("m.XPGain", new Object[] {mcLocale.getString("m.XPGainRepair")}));
  405. if(mcPermissions.getInstance().repair(player))
  406. player.sendMessage(mcLocale.getString("m.LVL", new Object[] {PP.getSkillToString("repair"), PP.getSkillToString("repairXP"), PP.getXpToLevel("repair")}));
  407. player.sendMessage(mcLocale.getString("m.SkillHeader", new Object[] {mcLocale.getString("m.Effects")}));
  408. player.sendMessage(mcLocale.getString("m.EffectsTemplate", new Object[] {mcLocale.getString("m.EffectsRepair1_0"), mcLocale.getString("m.EffectsRepair1_1")}));
  409. player.sendMessage(mcLocale.getString("m.EffectsTemplate", new Object[] {mcLocale.getString("m.EffectsRepair2_0"), mcLocale.getString("m.EffectsRepair2_1")}));
  410. player.sendMessage(mcLocale.getString("m.EffectsTemplate", new Object[] {mcLocale.getString("m.EffectsRepair3_0"), mcLocale.getString("m.EffectsRepair3_1")}));
  411. player.sendMessage(mcLocale.getString("m.EffectsTemplate", new Object[] {mcLocale.getString("m.EffectsRepair4_0", new Object[]{LoadProperties.repairdiamondlevel}), mcLocale.getString("m.EffectsRepair4_1")}));
  412. player.sendMessage(mcLocale.getString("m.SkillHeader", new Object[] {mcLocale.getString("m.YourStats")}));
  413. player.sendMessage(mcLocale.getString("m.RepairRepairMastery", new Object[] {repairmastery}));
  414. player.sendMessage(mcLocale.getString("m.RepairSuperRepairChance", new Object[] {percentage}));
  415. }
  416. if(split[0].equalsIgnoreCase("unarmed")){
  417. String percentage, arrowpercentage;
  418. float skillvalue = (float)PP.getSkill("unarmed");
  419. if(PP.getSkill("unarmed") < 1000){
  420. percentage = String.valueOf((skillvalue / 4000) * 100);
  421. } else {
  422. percentage = "25";
  423. }
  424. if(PP.getSkill("unarmed") < 1000){
  425. arrowpercentage = String.valueOf(((skillvalue / 1000) * 100) / 2);
  426. } else {
  427. arrowpercentage = "50";
  428. }
  429. int ticks = 2;
  430. int x = PP.getSkill("unarmed");
  431. while(x >= 50){
  432. x-=50;
  433. ticks++;
  434. }
  435. player.sendMessage(mcLocale.getString("m.SkillHeader", new Object[] {mcLocale.getString("m.SkillUnarmed")}));
  436. player.sendMessage(mcLocale.getString("m.XPGain", new Object[] {mcLocale.getString("m.XPGainUnarmed")}));
  437. if(mcPermissions.getInstance().unarmed(player))
  438. player.sendMessage(mcLocale.getString("m.LVL", new Object[] {PP.getSkillToString("unarmed"), PP.getSkillToString("unarmedXP"), PP.getXpToLevel("unarmed")}));
  439. player.sendMessage(mcLocale.getString("m.SkillHeader", new Object[] {mcLocale.getString("m.Effects")}));
  440. player.sendMessage(mcLocale.getString("m.EffectsTemplate", new Object[] {mcLocale.getString("m.EffectsUnarmed1_0"), mcLocale.getString("m.EffectsUnarmed1_1")}));
  441. player.sendMessage(mcLocale.getString("m.EffectsTemplate", new Object[] {mcLocale.getString("m.EffectsUnarmed2_0"), mcLocale.getString("m.EffectsUnarmed2_1")}));
  442. player.sendMessage(mcLocale.getString("m.EffectsTemplate", new Object[] {mcLocale.getString("m.EffectsUnarmed3_0"), mcLocale.getString("m.EffectsUnarmed3_1")}));
  443. player.sendMessage(mcLocale.getString("m.EffectsTemplate", new Object[] {mcLocale.getString("m.EffectsUnarmed4_0"), mcLocale.getString("m.EffectsUnarmed4_1")}));
  444. player.sendMessage(mcLocale.getString("m.EffectsTemplate", new Object[] {mcLocale.getString("m.EffectsUnarmed5_0"), mcLocale.getString("m.EffectsUnarmed5_1")}));
  445. player.sendMessage(mcLocale.getString("m.SkillHeader", new Object[] {mcLocale.getString("m.YourStats")}));
  446. player.sendMessage(mcLocale.getString("m.UnarmedArrowDeflectChance", new Object[] {arrowpercentage}));
  447. player.sendMessage(mcLocale.getString("m.UnarmedDisarmChance", new Object[] {percentage}));
  448. if(PP.getSkill("unarmed") < 250){
  449. player.sendMessage(mcLocale.getString("m.AbilityLockTemplate", new Object[] {mcLocale.getString("m.AbilLockUnarmed1")}));
  450. } else if(PP.getSkill("unarmed") >= 250 && PP.getSkill("unarmed") < 500){
  451. player.sendMessage(mcLocale.getString("m.AbilityBonusTemplate", new Object[] {mcLocale.getString("m.AbilBonusUnarmed1_0"), mcLocale.getString("m.AbilBonusUnarmed1_1")}));
  452. player.sendMessage(mcLocale.getString("m.AbilityLockTemplate", new Object[] {mcLocale.getString("m.AbilLockUnarmed2")}));
  453. } else {
  454. player.sendMessage(mcLocale.getString("m.AbilityBonusTemplate", new Object[] {mcLocale.getString("m.AbilBonusUnarmed2_0"), mcLocale.getString("m.AbilBonusUnarmed2_1")}));
  455. }
  456. player.sendMessage(mcLocale.getString("m.UnarmedBerserkLength", new Object[] {ticks}));
  457. }
  458. if(split[0].equalsIgnoreCase("herbalism") || split[0].toLowerCase().equalsIgnoreCase(mcLocale.getString("m.SkillHerbalism").toLowerCase())){
  459. int rank = 0;
  460. if(PP.getSkill("herbalism") >= 50)
  461. rank++;
  462. if (PP.getSkill("herbalism") >= 150)
  463. rank++;
  464. if (PP.getSkill("herbalism") >= 250)
  465. rank++;
  466. if (PP.getSkill("herbalism") >= 350)
  467. rank++;
  468. if (PP.getSkill("herbalism") >= 450)
  469. rank++;
  470. if (PP.getSkill("herbalism") >= 550)
  471. rank++;
  472. if (PP.getSkill("herbalism") >= 650)
  473. rank++;
  474. if (PP.getSkill("herbalism") >= 750)
  475. rank++;
  476. int bonus = 0;
  477. if(PP.getSkill("herbalism") >= 200)
  478. bonus++;
  479. if(PP.getSkill("herbalism") >= 400)
  480. bonus++;
  481. if(PP.getSkill("herbalism") >= 600)
  482. bonus++;
  483. int ticks = 2;
  484. int x = PP.getSkill("herbalism");
  485. while(x >= 50){
  486. x-=50;
  487. ticks++;
  488. }
  489. float skillvalue = (float)PP.getSkill("herbalism");
  490. String percentage = String.valueOf((skillvalue / 1000) * 100);
  491. String gpercentage = String.valueOf((skillvalue / 1500) * 100);
  492. player.sendMessage(mcLocale.getString("m.SkillHeader", new Object[] {mcLocale.getString("m.SkillHerbalism")}));
  493. player.sendMessage(mcLocale.getString("m.XPGain", new Object[] {mcLocale.getString("m.XPGainHerbalism")}));
  494. if(mcPermissions.getInstance().herbalism(player))
  495. player.sendMessage(mcLocale.getString("m.LVL", new Object[] {PP.getSkillToString("herbalism"), PP.getSkillToString("herbalismXP"), PP.getXpToLevel("herbalism")}));
  496. player.sendMessage(mcLocale.getString("m.SkillHeader", new Object[] {mcLocale.getString("m.Effects")}));
  497. player.sendMessage(mcLocale.getString("m.EffectsTemplate", new Object[] {mcLocale.getString("m.EffectsHerbalism1_0"), mcLocale.getString("m.EffectsHerbalism1_1")}));
  498. player.sendMessage(mcLocale.getString("m.EffectsTemplate", new Object[] {mcLocale.getString("m.EffectsHerbalism2_0"), mcLocale.getString("m.EffectsHerbalism2_1")}));
  499. player.sendMessage(mcLocale.getString("m.EffectsTemplate", new Object[] {mcLocale.getString("m.EffectsHerbalism3_0"), mcLocale.getString("m.EffectsHerbalism3_1")}));
  500. player.sendMessage(mcLocale.getString("m.EffectsTemplate", new Object[] {mcLocale.getString("m.EffectsHerbalism4_0"), mcLocale.getString("m.EffectsHerbalism4_1")}));
  501. player.sendMessage(mcLocale.getString("m.EffectsTemplate", new Object[] {mcLocale.getString("m.EffectsHerbalism5_0"), mcLocale.getString("m.EffectsHerbalism5_1")}));
  502. player.sendMessage(mcLocale.getString("m.SkillHeader", new Object[] {mcLocale.getString("m.YourStats")}));
  503. player.sendMessage(mcLocale.getString("m.HerbalismGreenTerraLength", new Object[] {ticks}));
  504. player.sendMessage(mcLocale.getString("m.HerbalismGreenThumbChance", new Object[] {gpercentage}));
  505. player.sendMessage(mcLocale.getString("m.HerbalismGreenThumbStage", new Object[] {bonus}));
  506. player.sendMessage(mcLocale.getString("m.HerbalismDoubleDropChance", new Object[] {percentage}));
  507. player.sendMessage(mcLocale.getString("m.HerbalismFoodPlus", new Object[] {rank}));
  508. }
  509. if(split[0].equalsIgnoreCase("excavation") || split[0].toLowerCase().equalsIgnoreCase(mcLocale.getString("m.SkillExcavation").toLowerCase()))
  510. {
  511. int ticks = 2;
  512. int x = PP.getSkill("excavation");
  513. while(x >= 50){
  514. x-=50;
  515. ticks++;
  516. }
  517. player.sendMessage(mcLocale.getString("m.SkillHeader", new Object[] {mcLocale.getString("m.SkillExcavation")}));
  518. player.sendMessage(mcLocale.getString("m.XPGain", new Object[] {mcLocale.getString("m.XPGainExcavation")}));
  519. if(mcPermissions.getInstance().excavation(player))
  520. player.sendMessage(mcLocale.getString("m.LVL", new Object[] {PP.getSkillToString("excavation"), PP.getSkillToString("excavationXP"), PP.getXpToLevel("excavation")}));
  521. player.sendMessage(mcLocale.getString("m.SkillHeader", new Object[] {mcLocale.getString("m.Effects")}));
  522. player.sendMessage(mcLocale.getString("m.EffectsTemplate", new Object[] {mcLocale.getString("m.EffectsExcavation1_0"), mcLocale.getString("m.EffectsExcavation1_1")}));
  523. player.sendMessage(mcLocale.getString("m.EffectsTemplate", new Object[] {mcLocale.getString("m.EffectsExcavation2_0"), mcLocale.getString("m.EffectsExcavation2_1")}));
  524. player.sendMessage(mcLocale.getString("m.SkillHeader", new Object[] {mcLocale.getString("m.YourStats")}));
  525. player.sendMessage(mcLocale.getString("m.ExcavationGreenTerraLength", new Object[] {ticks}));
  526. }
  527. if(split[0].equalsIgnoreCase("sorcery") || split[0].toLowerCase().equalsIgnoreCase(mcLocale.getString("m.SkillSorcery").toLowerCase()))
  528. {
  529. /*
  530. player.sendMessage(mcLocale.getString("m.SkillHeader", new Object[] {mcLocale.getString("m.SkillExcavation")}));
  531. player.sendMessage(mcLocale.getString("m.XPGain", new Object[] {mcLocale.getString("m.XPGainExcavation")}));
  532. player.sendMessage(mcLocale.getString("m.SkillHeader", new Object[] {mcLocale.getString("m.Effects")}));
  533. player.sendMessage(mcLocale.getString("m.EffectsTemplate", new Object[] {mcLocale.getString("m.EffectsExcavation1_0"), mcLocale.getString("m.EffectsExcavation1_1")}));
  534. player.sendMessage(mcLocale.getString("m.EffectsTemplate", new Object[] {mcLocale.getString("m.EffectsExcavation2_0"), mcLocale.getString("m.EffectsExcavation2_1")}));
  535. player.sendMessage(mcLocale.getString("m.SkillHeader", new Object[] {mcLocale.getString("m.YourStats")}));
  536. player.sendMessage(mcLocale.getString("m.ExcavationGreenTerraLength", new Object[] {ticks}));
  537. */
  538. }
  539. if(LoadProperties.mcmmoEnable && split[0].equalsIgnoreCase(LoadProperties.mcmmo)){
  540. player.sendMessage(ChatColor.RED+"-----[]"+ChatColor.GREEN+"mMO"+ChatColor.RED+"[]-----");
  541. player.sendMessage(ChatColor.YELLOW+"mcMMO is an RPG server mod for minecraft.");
  542. player.sendMessage(ChatColor.YELLOW+"There are many skills added by mcMMO to minecraft.");
  543. player.sendMessage(ChatColor.YELLOW+"They can do anything from giving a chance");
  544. player.sendMessage(ChatColor.YELLOW+"for double drops to letting you break materials instantly.");
  545. player.sendMessage(ChatColor.YELLOW+"For example, by harvesting logs from trees you will gain");
  546. player.sendMessage(ChatColor.YELLOW+"Woodcutting xp and once you have enough xp you will gain");
  547. player.sendMessage(ChatColor.YELLOW+"a skill level in Woodcutting. By raising this skill you will");
  548. player.sendMessage(ChatColor.YELLOW+"be able to receive benefits like "+ChatColor.RED+"double drops");
  549. player.sendMessage(ChatColor.YELLOW+"and increase the effects of the "+ChatColor.RED+"\"Tree Felling\""+ChatColor.YELLOW+" ability.");
  550. player.sendMessage(ChatColor.YELLOW+"mMO has abilities related to the skill, skills normally");
  551. player.sendMessage(ChatColor.YELLOW+"provide passive bonuses but they also have activated");
  552. player.sendMessage(ChatColor.YELLOW+"abilities too. Each ability is activated by holding");
  553. player.sendMessage(ChatColor.YELLOW+"the appropriate tool and "+ChatColor.RED+"right clicking.");
  554. player.sendMessage(ChatColor.YELLOW+"For example, if you hold a Mining Pick and right click");
  555. player.sendMessage(ChatColor.YELLOW+"you will ready your Pickaxe, attack mining materials");
  556. player.sendMessage(ChatColor.YELLOW+"and then "+ChatColor.RED+"Super Breaker "+ChatColor.YELLOW+"will activate.");
  557. player.sendMessage(ChatColor.GREEN+"Find out mcMMO commands with "+ChatColor.DARK_AQUA+LoadProperties.mcc);
  558. player.sendMessage(ChatColor.GREEN+"You can donate via paypal to"+ChatColor.DARK_RED+" nossr50@gmail.com");
  559. }
  560. if(LoadProperties.mccEnable && split[0].equalsIgnoreCase(LoadProperties.mcc)){
  561. player.sendMessage(ChatColor.RED+"---[]"+ChatColor.YELLOW+"mcMMO Commands"+ChatColor.RED+"[]---");
  562. if(mcPermissions.getInstance().party(player)){
  563. player.sendMessage(mcLocale.getString("m.mccPartyCommands"));
  564. player.sendMessage(LoadProperties.party+" "+mcLocale.getString("m.mccParty"));
  565. player.sendMessage(LoadProperties.party+" q "+mcLocale.getString("m.mccPartyQ"));
  566. if(mcPermissions.getInstance().partyChat(player))
  567. player.sendMessage("/p "+mcLocale.getString("m.mccPartyToggle"));
  568. player.sendMessage(LoadProperties.invite+" "+mcLocale.getString("m.mccPartyInvite"));
  569. player.sendMessage(LoadProperties.accept+" "+mcLocale.getString("m.mccPartyAccept"));
  570. if(mcPermissions.getInstance().partyTeleport(player))
  571. player.sendMessage(LoadProperties.ptp+" "+mcLocale.getString("m.mccPartyTeleport"));
  572. }
  573. player.sendMessage(mcLocale.getString("m.mccOtherCommands"));
  574. player.sendMessage(LoadProperties.stats+ChatColor.RED+" "+mcLocale.getString("m.mccStats"));
  575. player.sendMessage("/mctop <skillname> <page> "+ChatColor.RED+mcLocale.getString("m.mccLeaderboards"));
  576. if(mcPermissions.getInstance().mySpawn(player)){
  577. player.sendMessage(LoadProperties.myspawn+" "+ChatColor.RED+mcLocale.getString("m.mccMySpawn"));
  578. player.sendMessage(LoadProperties.clearmyspawn+" "+ChatColor.RED+mcLocale.getString("m.mccClearMySpawn"));
  579. }
  580. if(mcPermissions.getInstance().mcAbility(player))
  581. player.sendMessage(LoadProperties.mcability+ChatColor.RED+" "+mcLocale.getString("m.mccToggleAbility"));
  582. if(mcPermissions.getInstance().adminChat(player)){
  583. player.sendMessage("/a "+ChatColor.RED+mcLocale.getString("m.mccAdminToggle"));
  584. }
  585. if(mcPermissions.getInstance().whois(player))
  586. player.sendMessage(LoadProperties.whois+" "+mcLocale.getString("m.mccWhois"));
  587. if(mcPermissions.getInstance().mmoedit(player)){
  588. //player.sendMessage(LoadProperties.mmoedit+" [skill] [newvalue] "+ChatColor.RED+"Modify the designated skill value");
  589. player.sendMessage(LoadProperties.mmoedit+mcLocale.getString("m.mccMmoedit"));
  590. }
  591. if(mcPermissions.getInstance().mcgod(player))
  592. player.sendMessage(LoadProperties.mcgod+ChatColor.RED+" "+mcLocale.getString("m.mccMcGod"));
  593. player.sendMessage(mcLocale.getString("m.mccSkillInfo"));
  594. player.sendMessage(LoadProperties.mcmmo+" "+mcLocale.getString("m.mccModDescription"));
  595. }
  596. if(LoadProperties.mcabilityEnable && mcPermissions.permissionsEnabled && split[0].equalsIgnoreCase(LoadProperties.mcability)){
  597. if(PP.getAbilityUse()){
  598. player.sendMessage(mcLocale.getString("mcPlayerListener.AbilitiesOff"));
  599. PP.toggleAbilityUse();
  600. } else {
  601. player.sendMessage(mcLocale.getString("mcPlayerListener.AbilitiesOn"));
  602. PP.toggleAbilityUse();
  603. }
  604. }
  605. /*
  606. * FFS -> MySQL
  607. */
  608. if(player.isOp() && split[0].equalsIgnoreCase("mmoupdate"))
  609. {
  610. if(!mcPermissions.getInstance().admin(player))
  611. {
  612. player.sendMessage(ChatColor.YELLOW+"[mcMMO]"+ChatColor.DARK_RED +mcLocale.getString("mcPlayerListener.NoPermission"));
  613. return true;
  614. }
  615. player.sendMessage(ChatColor.GRAY+"Starting conversion...");
  616. Users.clearUsers();
  617. m.convertToMySQL(this);
  618. for(Player x : this.getServer().getOnlinePlayers())
  619. {
  620. Users.addUser(x);
  621. }
  622. player.sendMessage(ChatColor.GREEN+"Conversion finished!");
  623. }
  624. /*
  625. * LEADER BOARD COMMAND
  626. */
  627. if(LoadProperties.mctopEnable && split[0].equalsIgnoreCase(LoadProperties.mctop)){
  628. if(LoadProperties.useMySQL == false){
  629. /*
  630. * POWER LEVEL INFO RETRIEVAL
  631. */
  632. if(split.length == 1){
  633. int p = 1;
  634. String[] info = Leaderboard.retrieveInfo("powerlevel", p);
  635. player.sendMessage(mcLocale.getString("mcPlayerListener.PowerLevelLeaderboard"));
  636. int n = 1 * p; //Position
  637. for(String x : info){
  638. if(x != null){
  639. String digit = String.valueOf(n);
  640. if(n < 10)
  641. digit ="0"+String.valueOf(n);
  642. String[] splitx = x.split(":");
  643. //Format: 1. Playername - skill value
  644. player.sendMessage(digit+". "+ChatColor.GREEN+splitx[1]+" - "+ChatColor.WHITE+splitx[0]);
  645. n++;
  646. }
  647. }
  648. }
  649. if(split.length >= 2 && Leaderboard.isInt(split[1])){
  650. int p = 1;
  651. //Grab page value if specified
  652. if(split.length >= 2){
  653. if(Leaderboard.isInt(split[1])){
  654. p = Integer.valueOf(split[1]);
  655. }
  656. }
  657. int pt = p;
  658. if(p > 1){
  659. pt -= 1;
  660. pt += (pt * 10);
  661. pt = 10;
  662. }
  663. String[] info = Leaderboard.retrieveInfo("powerlevel", p);
  664. player.sendMessage(mcLocale.getString("mcPlayerListener.PowerLevelLeaderboard"));
  665. int n = 1 * pt; //Position
  666. for(String x : info){
  667. if(x != null){
  668. String digit = String.valueOf(n);
  669. if(n < 10)
  670. digit ="0"+String.valueOf(n);
  671. String[] splitx = x.split(":");
  672. //Format: 1. Playername - skill value
  673. player.sendMessage(digit+". "+ChatColor.GREEN+splitx[1]+" - "+ChatColor.WHITE+splitx[0]);
  674. n++;
  675. }
  676. }
  677. }
  678. /*
  679. * SKILL SPECIFIED INFO RETRIEVAL
  680. */
  681. if(split.length >= 2 && Skills.isSkill(split[1])){
  682. int p = 1;
  683. //Grab page value if specified
  684. if(split.length >= 3){
  685. if(Leaderboard.isInt(split[2])){
  686. p = Integer.valueOf(split[2]);
  687. }
  688. }
  689. int pt = p;
  690. if(p > 1){
  691. pt -= 1;
  692. pt += (pt * 10);
  693. pt = 10;
  694. }
  695. String firstLetter = split[1].substring(0,1); // Get first letter
  696. String remainder = split[1].substring(1); // Get remainder of word.
  697. String capitalized = firstLetter.toUpperCase() + remainder.toLowerCase();
  698. String[] info = Leaderboard.retrieveInfo(split[1].toLowerCase(), p);
  699. player.sendMessage(mcLocale.getString("mcPlayerListener.SkillLeaderboard", new Object[] {capitalized}));
  700. int n = 1 * pt; //Position
  701. for(String x : info){
  702. if(x != null){
  703. String digit = String.valueOf(n);
  704. if(n < 10)
  705. digit ="0"+String.valueOf(n);
  706. String[] splitx = x.split(":");
  707. //Format: 1. Playername - skill value
  708. player.sendMessage(digit+". "+ChatColor.GREEN+splitx[1]+" - "+ChatColor.WHITE+splitx[0]);
  709. n++;
  710. }
  711. }
  712. }
  713. } else {
  714. /*
  715. * MYSQL LEADERBOARDS
  716. */
  717. String powerlevel = "taming+mining+woodcutting+repair+unarmed+herbalism+excavation+archery+swords+axes+acrobatics";
  718. if(split.length >= 2 && Skills.isSkill(split[1])){
  719. /*
  720. * Create a nice consistent capitalized leaderboard name
  721. */
  722. String lowercase = split[1].toLowerCase(); //For the query
  723. String firstLetter = split[1].substring(0,1); //Get first letter
  724. String remainder = split[1].substring(1); //Get remainder of word.
  725. String capitalized = firstLetter.toUpperCase() + remainder.toLowerCase();
  726. player.sendMessage(mcLocale.getString("mcPlayerListener.SkillLeaderboard", new Object[] {capitalized}));
  727. if(split.length >= 3 && m.isInt(split[2])){
  728. int n = 1; //For the page number
  729. int n2 = Integer.valueOf(split[2]);
  730. if(n2 > 1){
  731. //Figure out the 'page' here
  732. n = 10;
  733. n = n * (n2-1);
  734. }
  735. //If a page number is specified
  736. HashMap<Integer, ArrayList<String>> userslist = mcMMO.database.Read("SELECT "+lowercase+", user_id FROM "
  737. +LoadProperties.MySQLtablePrefix+"skills WHERE "+lowercase+" > 0 ORDER BY `"+LoadProperties.MySQLtablePrefix+"skills`.`"+lowercase+"` DESC ");
  738. for(int i=n;i<=n+10;i++){
  739. if (i > userslist.size() || mcMMO.database.Read("SELECT user FROM "+LoadProperties.MySQLtablePrefix+"users WHERE id = '" + Integer.valueOf(userslist.get(i).get(1)) + "'") == null)
  740. break;
  741. HashMap<Integer, ArrayList<String>> username = mcMMO.database.Read("SELECT user FROM "+LoadProperties.MySQLtablePrefix+"users WHERE id = '" + Integer.valueOf(userslist.get(i).get(1)) + "'");
  742. player.sendMessage(String.valueOf(i)+". "+ChatColor.GREEN+userslist.get(i).get(0)+" - "+ChatColor.WHITE+username.get(1).get(0));
  743. }
  744. return true;
  745. }
  746. //If no page number is specified
  747. HashMap<Integer, ArrayList<String>> userslist = mcMMO.database.Read("SELECT "+lowercase+", user_id FROM "
  748. +LoadProperties.MySQLtablePrefix+"skills WHERE "+lowercase+" > 0 ORDER BY `"+LoadProperties.MySQLtablePrefix+"skills`.`"+lowercase+"` DESC ");
  749. for(int i=1;i<=10;i++){ //i<=userslist.size()
  750. if (i > userslist.size() || mcMMO.database.Read("SELECT user FROM "+LoadProperties.MySQLtablePrefix+"users WHERE id = '" + Integer.valueOf(userslist.get(i).get(1)) + "'") == null)
  751. break;
  752. HashMap<Integer, ArrayList<String>> username = mcMMO.database.Read("SELECT user FROM "+LoadProperties.MySQLtablePrefix+"users WHERE id = '" + Integer.valueOf(userslist.get(i).get(1)) + "'");
  753. player.sendMessage(String.valueOf(i)+". "+ChatColor.GREEN+userslist.get(i).get(0)+" - "+ChatColor.WHITE+username.get(1).get(0));
  754. }
  755. return true;
  756. }
  757. if(split.length >= 1){
  758. player.sendMessage(mcLocale.getString("mcPlayerListener.PowerLevelLeaderboard"));
  759. if(split.length >= 2 && m.isInt(split[1])){
  760. int n = 1; //For the page number
  761. int n2 = Integer.valueOf(split[1]);
  762. if(n2 > 1){
  763. //Figure out the 'page' here
  764. n = 10;
  765. n = n * (n2-1);
  766. }
  767. //If a page number is specified
  768. HashMap<Integer, ArrayList<String>> userslist = mcMMO.database.Read("SELECT "+powerlevel+", user_id FROM "
  769. +LoadProperties.MySQLtablePrefix+"skills WHERE "+powerlevel+" > 0 ORDER BY taming+mining+woodcutting+repair+unarmed+herbalism+excavation+archery+swords+axes+acrobatics DESC ");
  770. for(int i=n;i<=n+10;i++){
  771. if (i > userslist.size() || mcMMO.database.Read("SELECT user FROM "+LoadProperties.MySQLtablePrefix+"users WHERE id = '" + Integer.valueOf(userslist.get(i).get(1)) + "'") == null)
  772. break;
  773. HashMap<Integer, ArrayList<String>> username = mcMMO.database.Read("SELECT user FROM "+LoadProperties.MySQLtablePrefix+"users WHERE id = '" + Integer.valueOf(userslist.get(i).get(1)) + "'");
  774. player.sendMessage(String.valueOf(i)+". "+ChatColor.GREEN+userslist.get(i).get(0)+" - "+ChatColor.WHITE+username.get(1).get(0));
  775. }
  776. return true;
  777. }
  778. HashMap<Integer, ArrayList<String>> userslist = mcMMO.database.Read("SELECT taming+mining+woodcutting+repair+unarmed+herbalism+excavation+archery+swords+axes+acrobatics, user_id FROM "
  779. +LoadProperties.MySQLtablePrefix+"skills WHERE "+powerlevel+" > 0 ORDER BY taming+mining+woodcutting+repair+unarmed+herbalism+excavation+archery+swords+axes+acrobatics DESC ");
  780. for(int i=1;i<=10;i++){
  781. if (i > userslist.size() || mcMMO.database.Read("SELECT user FROM "+LoadProperties.MySQLtablePrefix+"users WHERE id = '" + Integer.valueOf(userslist.get(i).get(1)) + "'") == null)
  782. break;
  783. HashMap<Integer, ArrayList<String>> username = mcMMO.database.Read("SELECT user FROM "+LoadProperties.MySQLtablePrefix+"users WHERE id = '" + Integer.valueOf(userslist.get(i).get(1)) + "'");
  784. player.sendMessage(String.valueOf(i)+". "+ChatColor.GREEN+userslist.get(i).get(0)+" - "+ChatColor.WHITE+username.get(1).get(0));
  785. //System.out.println(username.get(1).get(0));
  786. //System.out.println("Mining : " + userslist.get(i).get(0) + ", User id : " + userslist.get(i).get(1));
  787. }
  788. }
  789. }
  790. }
  791. if(LoadProperties.mcrefreshEnable && split[0].equalsIgnoreCase(LoadProperties.mcrefresh)){
  792. if(!mcPermissions.getInstance().mcrefresh(player)){
  793. player.sendMessage(ChatColor.YELLOW+"[mcMMO]"+ChatColor.DARK_RED +mcLocale.getString("mcPlayerListener.NoPermission"));
  794. return true;
  795. }
  796. if(split.length >= 2 && isPlayer(split[1])){
  797. player.sendMessage("You have refreshed "+split[1]+"'s cooldowns!");
  798. player = getPlayer(split[1]);
  799. }
  800. /*
  801. * PREP MODES
  802. */
  803. PP = Users.getProfile(player);
  804. PP.setRecentlyHurt((long) 0);
  805. PP.setHoePreparationMode(false);
  806. PP.setAxePreparationMode(false);
  807. PP.setFistsPreparationMode(false);
  808. PP.setSwordsPreparationMode(false);
  809. PP.setPickaxePreparationMode(false);
  810. /*
  811. * GREEN TERRA
  812. */
  813. PP.setGreenTerraMode(false);
  814. PP.setGreenTerraDeactivatedTimeStamp((long) 0);
  815. /*
  816. * GIGA DRILL BREAKER
  817. */
  818. PP.setGigaDrillBreakerMode(false);
  819. PP.setGigaDrillBreakerDeactivatedTimeStamp((long) 0);
  820. /*
  821. * SERRATED STRIKE
  822. */
  823. PP.setSerratedStrikesMode(false);
  824. PP.setSerratedStrikesDeactivatedTimeStamp((long) 0);
  825. /*
  826. * SUPER BREAKER
  827. */
  828. PP.setSuperBreakerMode(false);
  829. PP.setSuperBreakerDeactivatedTimeStamp((long) 0);
  830. /*
  831. * TREE FELLER
  832. */
  833. PP.setTreeFellerMode(false);
  834. PP.setTreeFellerDeactivatedTimeStamp((long) 0);
  835. /*
  836. * BERSERK
  837. */
  838. PP.setBerserkMode(false);
  839. PP.setBerserkDeactivatedTimeStamp((long)0);
  840. player.sendMessage(mcLocale.getString("mcPlayerListener.AbilitiesRefreshed"));
  841. }
  842. /*
  843. * GODMODE COMMAND
  844. */
  845. if(LoadProperties.mcgodEnable && split[0].equalsIgnoreCase(LoadProperties.mcgod))
  846. {
  847. if(mcPermissions.permissionsEnabled)
  848. {
  849. if(!mcPermissions.getInstance().mcgod(player))
  850. {
  851. player.sendMessage(ChatColor.YELLOW+"[mcMMO]"+ChatColor.DARK_RED +mcLocale.getString("mcPlayerListener.NoPermission"));
  852. return true;
  853. }
  854. if(PP.getGodMode())
  855. {
  856. player.sendMessage(mcLocale.getString("mcPlayerListener.GodModeDisabled"));
  857. PP.toggleGodMode();
  858. } else
  859. {
  860. player.sendMessage(mcLocale.getString("mcPlayerListener.GodModeEnabled"));
  861. PP.toggleGodMode();
  862. }
  863. } else if (player.isOp())
  864. {
  865. if(PP.getGodMode())
  866. {
  867. player.sendMessage(mcLocale.getString("mcPlayerListener.GodModeDisabled"));
  868. PP.toggleGodMode();
  869. } else
  870. {
  871. player.sendMessage(mcLocale.getString("mcPlayerListener.GodModeEnabled"));
  872. PP.toggleGodMode();
  873. }
  874. }
  875. }
  876. if(LoadProperties.clearmyspawnEnable && LoadProperties.enableMySpawn && mcPermissions.getInstance().mySpawn(player) && split[0].equalsIgnoreCase(LoadProperties.clearmyspawn))
  877. {
  878. double x = this.getServer().getWorlds().get(0).getSpawnLocation().getX();
  879. double y = this.getServer().getWorlds().get(0).getSpawnLocation().getY();
  880. double z = this.getServer().getWorlds().get(0).getSpawnLocation().getZ();
  881. String worldname = this.getServer().getWorlds().get(0).getName();
  882. PP.setMySpawn(x, y, z, worldname);
  883. player.sendMessage(mcLocale.getString("mcPlayerListener.MyspawnCleared"));
  884. }
  885. if(LoadProperties.mmoeditEnable && mcPermissions.permissionsEnabled && split[0].equalsIgnoreCase(""+LoadProperties.mmoedit))
  886. {
  887. if(!mcPermissions.getInstance().mmoedit(player))
  888. {
  889. player.sendMessage(ChatColor.YELLOW+"[mcMMO]"+ChatColor.DARK_RED +mcLocale.getString("mcPlayerListener.NoPermission"));
  890. return true;
  891. }
  892. if(split.length < 3)
  893. {
  894. player.sendMessage(ChatColor.RED+"Usage is /"+LoadProperties.mmoedit+" playername skillname newvalue");
  895. return true;
  896. }
  897. if(split.length == 4)
  898. {
  899. if(isPlayer(split[1]) && m.isInt(split[3]) && Skills.isSkill(split[2]))
  900. {
  901. int newvalue = Integer.valueOf(split[3]);
  902. Users.getProfile(getPlayer(split[1])).modifyskill(newvalue, split[2]);
  903. player.sendMessage(ChatColor.RED+split[2]+" has been modified.");
  904. }
  905. }
  906. else if(split.length == 3)
  907. {
  908. if(m.isInt(split[2]) && Skills.isSkill(split[1]))
  909. {
  910. int newvalue = Integer.valueOf(split[2]);
  911. PP.modifyskill(newvalue, split[1]);
  912. player.sendMessage(ChatColor.RED+split[1]+" has been modified.");
  913. }
  914. } else
  915. {
  916. player.sendMessage(ChatColor.RED+"Usage is /"+LoadProperties.mmoedit+" playername skillname newvalue");
  917. }
  918. }
  919. /*
  920. * ADD EXPERIENCE COMMAND
  921. */
  922. if(LoadProperties.addxpEnable && mcPermissions.permissionsEnabled && split[0].equalsIgnoreCase(LoadProperties.addxp)){
  923. if(!mcPermissions.getInstance().mmoedit(player)){
  924. player.sendMessage(ChatColor.YELLOW+"[mcMMO]"+ChatColor.DARK_RED +mcLocale.getString("mcPlayerListener.NoPermission"));
  925. return true;
  926. }
  927. if(split.length < 3){
  928. player.sendMessage(ChatColor.RED+"Usage is /"+LoadProperties.addxp+" playername skillname xp");
  929. return true;
  930. }
  931. if(split.length == 4){
  932. if(isPlayer(split[1]) && m.isInt(split[3]) && Skills.isSkill(split[2])){
  933. int newvalue = Integer.valueOf(split[3]);
  934. Users.getProfile(getPlayer(split[1])).addXP(split[2], newvalue);
  935. getPlayer(split[1]).sendMessage(ChatColor.GREEN+"Experience granted!");
  936. player.sendMessage(ChatColor.RED+split[2]+" has been modified.");
  937. Skills.XpCheck(getPlayer(split[1]));
  938. }
  939. }
  940. else if(split.length == 3 && m.isInt(split[2]) && Skills.isSkill(split[1])){
  941. int newvalue = Integer.valueOf(split[2]);
  942. Users.getProfile(player).addXP(split[1], newvalue);
  943. player.sendMessage(ChatColor.RED+split[1]+" has been modified.");
  944. } else {
  945. player.sendMessage(ChatColor.RED+"Usage is /"+LoadProperties.addxp+" playername skillname xp");
  946. }
  947. }
  948. if(LoadProperties.ptpEnable && PP != null && PP.inParty() && split[0].equalsIgnoreCase(LoadProperties.ptp)){
  949. if(!mcPermissions.getInstance().partyTeleport(player)){
  950. player.sendMessage(ChatColor.YELLOW+"[mcMMO]"+ChatColor.DARK_RED +mcLocale.getString("mcPlayerListener.NoPermission"));
  951. return true;
  952. }
  953. if(split.length < 2){
  954. player.sendMessage(ChatColor.RED+"Usage is /"+LoadProperties.ptp+" <playername>");
  955. return true;
  956. }
  957. if(!isPlayer(split[1])){
  958. player.sendMessage("That is not a valid player");
  959. }
  960. if(isPlayer(split[1])){
  961. Player target = getPlayer(split[1]);
  962. PlayerProfile PPt = Users.getProfile(target);
  963. if(PP.getParty().equals(PPt.getParty())){
  964. player.teleport(target);
  965. player.sendMessage(ChatColor.GREEN+"You have teleported to "+target.getName());
  966. target.sendMessage(ChatColor.GREEN+player.getName() + " has teleported to you.");
  967. }
  968. }
  969. }
  970. /*
  971. * WHOIS COMMAND
  972. */
  973. if(LoadProperties.whoisEnable && (player.isOp() || mcPermissions.getInstance().whois(player)) && split[0].equalsIgnoreCase(LoadProperties.whois)){
  974. if(split.length < 2){
  975. player.sendMessage(ChatColor.RED + "Proper usage is /"+LoadProperties.whois+" <playername>");
  976. return true;
  977. }
  978. //if split[1] is a player
  979. if(isPlayer(split[1]))
  980. {
  981. Player target = getPlayer(split[1]);
  982. PlayerProfile PPt = Users.getProfile(target);
  983. double x,y,z;
  984. x = target.getLocation().getX();
  985. y = target.getLocation().getY();
  986. z = target.getLocation().getZ();
  987. player.sendMessage(ChatColor.GREEN + "~~WHOIS RESULTS~~");
  988. player.sendMessage(target.getName());
  989. if(PPt.inParty())
  990. player.sendMessage("Party: "+PPt.getParty());
  991. player.sendMessage("Health: "+target.getHealth()+ChatColor.GRAY+" (20 is full health)");
  992. player.sendMessage("OP: " + target.isOp());
  993. player.sendMessage(ChatColor.GREEN+"mcMMO Stats for "+ChatColor.YELLOW+target.getName());
  994. player.sendMessage(ChatColor.GOLD+"-=GATHERING SKILLS=-");
  995. if(mcPermissions.getInstance().excavation(target))
  996. player.sendMessage(Skills.getSkillStats(mcLocale.getString("mcPlayerListener.ExcavationSkill"), PPt.getSkillToString("excavation"), PPt.getSkillToString("excavationXP"), PPt.getXpToLevel("excavation")));
  997. if(mcPermissions.getInstance().herbalism(target))
  998. player.sendMessage(Skills.getSkillStats(mcLocale.getString("mcPlayerListener.HerbalismSkill"), PPt.getSkillToString("herbalism"), PPt.getSkillToString("herbalismXP"), PPt.getXpToLevel("herbalism")));
  999. if(mcPermissions.getInstance().mining(target))
  1000. player.sendMessage(Skills.getSkillStats(mcLocale.getString("mcPlayerListener.MiningSkill"), PPt.getSkillToString("mining"), PPt.getSkillToString("miningXP"), PPt.getXpToLevel("mining")));
  1001. if(mcPermissions.getInstance().woodCuttingAbility(target))
  1002. player.sendMessage(Skills.getSkillStats(mcLocale.getString("mcPlayerListener.WoodcuttingSkill"), PPt.getSkillToString("woodcutting"), PPt.getSkillToString("woodcuttingXP"), PPt.getXpToLevel("woodcutting")));
  1003. player.sendMessage(ChatColor.GOLD+"-=COMBAT SKILLS=-");
  1004. if(mcPermissions.getInstance().axes(target))
  1005. player.sendMessage(Skills.getSkillStats(mcLocale.getString("mcPlayerListener.AxesSkill"), PPt.getSkillToString("axes"), PPt.getSkillToString("axesXP"), PPt.getXpToLevel("axes")));
  1006. if(mcPermissions.getInstance().archery(player))
  1007. player.sendMessage(Skills.getSkillStats(mcLocale.getString("mcPlayerListener.ArcherySkill"), PPt.getSkillToString("archery"), PPt.getSkillToString("archeryXP"), PPt.getXpToLevel("archery")));
  1008. //if(mcPermissions.getInstance().sorcery(target))
  1009. //player.sendMessage(Skills.getSkillStats(mcLocale.getString("mcPlayerListener.SorcerySkill"), PPt.getSkillToString("sorcery"), PPt.getSkillToString("sorceryXP"), PPt.getXpToLevel("excavation")));
  1010. if(mcPermissions.getInstance().swords(target))
  1011. player.sendMessage(Skills.getSkillStats(mcLocale.getString("mcPlayerListener.SwordsSkill"), PPt.getSkillToString("swords"), PPt.getSkillToString("swordsXP"), PPt.getXpToLevel("swords")));
  1012. if(mcPermissions.getInstance().taming(target))
  1013. player.sendMessage(Skills.getSkillStats(mcLocale.getString("mcPlayerListener.TamingSkill"), PPt.getSkillToString("taming"), PPt.getSkillToString("tamingXP"), PPt.getXpToLevel("taming")));
  1014. if(mcPermissions.getInstance().unarmed(target))
  1015. player.sendMessage(Skills.getSkillStats(mcLocale.getString("mcPlayerListener.UnarmedSkill"), PPt.getSkillToString("unarmed"), PPt.getSkillToString("unarmedXP"), PPt.getXpToLevel("unarmed")));
  1016. player.sendMessage(ChatColor.GOLD+"-=MISC SKILLS=-");
  1017. if(mcPermissions.getInstance().acrobatics(target))
  1018. player.sendMessage(Skills.getSkillStats(mcLocale.getString("mcPlayerListener.AcrobaticsSkill"), PPt.getSkillToString("acrobatics"), PPt.getSkillToString("acrobaticsXP"), PPt.getXpToLevel("acrobatics")));
  1019. if(mcPermissions.getInstance().repair(target))
  1020. player.sendMessage(Skills.getSkillStats(mcLocale.getString("mcPlayerListener.RepairSkill"), PPt.getSkillToString("repair"), PPt.getSkillToString("repairXP"), PPt.getXpToLevel("repair")));
  1021. player.sendMessage(mcLocale.getString("mcPlayerListener.PowerLevel") +ChatColor.GREEN+(m.getPowerLevel(target)));
  1022. player.sendMessage(ChatColor.GREEN+"~~COORDINATES~~");
  1023. player.sendMessage("X: "+x);
  1024. player.sendMessage("Y: "+y);
  1025. player.sendMessage("Z: "+z);
  1026. }
  1027. }
  1028. /*
  1029. * STATS COMMAND
  1030. */
  1031. if(LoadProperties.statsEnable && split[0].equalsIgnoreCase(LoadProperties.stats)){
  1032. player.sendMessage(mcLocale.getString("mcPlayerListener.YourStats"));
  1033. if(mcPermissions.getEnabled())
  1034. player.sendMessage(mcLocale.getString("mcPlayerListener.NoSkillNote"));
  1035. ChatColor header = ChatColor.GOLD;
  1036. if(Skills.hasGatheringSkills(player)){
  1037. player.sendMessage(header+"-=GATHERING SKILLS=-");
  1038. if(mcPermissions.getInstance().excavation(player))
  1039. player.sendMessage(Skills.getSkillStats(mcLocale.getString("mcPlayerListener.ExcavationSkill"), PP.getSkillToString("excavation"), PP.getSkillToString("excavationXP"), PP.getXpToLevel("excavation")));
  1040. if(mcPermissions.getInstance().herbalism(player))
  1041. player.sendMessage(Skills.getSkillStats(mcLocale.getString("mcPlayerListener.HerbalismSkill"), PP.getSkillToString("herbalism"), PP.getSkillToString("herbalismXP"), PP.getXpToLevel("herbalism")));
  1042. if(mcPermissions.getInstance().mining(player))
  1043. player.sendMessage(Skills.getSkillStats(mcLocale.getString("mcPlayerListener.MiningSkill"), PP.getSkillToString("mining"), PP.getSkillToString("miningXP"), PP.getXpToLevel("mining")));
  1044. if(mcPermissions.getInstance().woodCuttingAbility(player))
  1045. player.sendMessage(Skills.getSkillStats(mcLocale.getString("mcPlayerListener.WoodcuttingSkill"), PP.getSkillToString("woodcutting"), PP.getSkillToString("woodcuttingXP"), PP.getXpToLevel("woodcutting")));
  1046. }
  1047. if(Skills.hasCombatSkills(player)){
  1048. player.sendMessage(header+"-=COMBAT SKILLS=-");
  1049. if(mcPermissions.getInstance().axes(player))
  1050. player.sendMessage(Skills.getSkillStats(mcLocale.getString("mcPlayerListener.AxesSkill"), PP.getSkillToString("axes"), PP.getSkillToString("axesXP"), PP.getXpToLevel("axes")));
  1051. if(mcPermissions.getInstance().archery(player))
  1052. player.sendMessage(Skills.getSkillStats(mcLocale.getString("mcPlayerListener.ArcherySkill"), PP.getSkillToString("archery"), PP.getSkillToString("archeryXP"), PP.getXpToLevel("archery")));
  1053. //if(mcPermissions.getInstance().sorcery(player))
  1054. //player.sendMessage(Skills.getSkillStats(mcLocale.getString("mcPlayerListener.SorcerySkill"), PP.getSkillToString("sorcery"), PP.getSkillToString("sorceryXP"), PP.getXpToLevel("excavation")));
  1055. if(mcPermissions.getInstance().swords(player))
  1056. player.sendMessage(Skills.getSkillStats(mcLocale.getString("mcPlayerListener.SwordsSkill"), PP.getSkillToString("swords"), PP.getSkillToString("swordsXP"), PP.getXpToLevel("swords")));
  1057. if(mcPermissions.getInstance().taming(player))
  1058. player.sendMessage(Skills.getSkillStats(mcLocale.getString("mcPlayerListener.TamingSkill"), PP.getSkillToString("taming"), PP.getSkillToString("tamingXP"), PP.getXpToLevel("taming")));
  1059. if(mcPermissions.getInstance().unarmed(player))
  1060. player.sendMessage(Skills.getSkillStats(mcLocale.getString("mcPlayerListener.UnarmedSkill"), PP.getSkillToString("unarmed"), PP.getSkillToString("unarmedXP"), PP.getXpToLevel("unarmed")));
  1061. }
  1062. if(Skills.hasMiscSkills(player)){
  1063. player.sendMessage(header+"-=MISC SKILLS=-");
  1064. if(mcPermissions.getInstance().acrobatics(player))
  1065. player.sendMessage(Skills.getSkillStats(mcLocale.getString("mcPlayerListener.AcrobaticsSkill"), PP.getSkillToString("acrobatics"), PP.getSkillToString("acrobaticsXP"), PP.getXpToLevel("acrobatics")));
  1066. if(mcPermissions.getInstance().repair(player))
  1067. player.sendMessage(Skills.getSkillStats(mcLocale.getString("mcPlayerListener.RepairSkill"), PP.getSkillToString("repair"), PP.getSkillToString("repairXP"), PP.getXpToLevel("repair")));
  1068. }
  1069. player.sendMessage(mcLocale.getString("mcPlayerListener.PowerLevel")+ChatColor.GREEN+(m.getPowerLevel(player)));
  1070. }
  1071. //Invite Command
  1072. if(LoadProperties.inviteEnable && mcPermissions.getInstance().party(player) && split[0].equalsIgnoreCase(LoadProperties.invite)){
  1073. if(!PP.inParty()){
  1074. player.sendMessage(mcLocale.getString("mcPlayerListener.NotInParty"));
  1075. return true;
  1076. }
  1077. if(split.length < 2){
  1078. player.sendMessage(ChatColor.RED+"Usage is /"+LoadProperties.invite+" <playername>");
  1079. return true;
  1080. }
  1081. if(PP.inParty() && split.length >= 2 && isPlayer(split[1])){
  1082. Player target = getPlayer(split[1]);
  1083. PlayerProfile PPt = Users.getProfile(target);
  1084. PPt.modifyInvite(PP.getParty());
  1085. player.sendMessage(mcLocale.getString("mcPlayerListener.InviteSuccess"));
  1086. //target.sendMessage(ChatColor.RED+"ALERT: "+ChatColor.GREEN+"You have received a party invite for "+PPt.getInvite()+" from "+player.getName());
  1087. target.sendMessage(mcLocale.getString("mcPlayerListener.ReceivedInvite1", new Object[] {PPt.getInvite(), player.getName()}));
  1088. //target.sendMessage(ChatColor.YELLOW+"Type "+ChatColor.GREEN+LoadProperties.accept+ChatColor.YELLOW+" to accept the invite");
  1089. target.sendMessage(mcLocale.getString("mcPlayerListener.ReceivedInvite2", new Object[] {LoadProperties.accept}));
  1090. }
  1091. }
  1092. //Accept invite
  1093. if(LoadProperties.acceptEnable && mcPermissions.getInstance().party(player) && split[0].equalsIgnoreCase(LoadProperties.accept)){
  1094. if(PP.hasPartyInvite()){
  1095. if(PP.inParty()){
  1096. Party.getInstance().informPartyMembersQuit(player, getPlayersOnline());
  1097. }
  1098. PP.acceptInvite();
  1099. Party.getInstance().informPartyMembers(player, getPlayersOnline());
  1100. player.sendMessage(mcLocale.getString("mcPlayerListener.InviteAccepted", new Object[]{PP.getParty()}));
  1101. } else {
  1102. player.sendMessage(mcLocale.getString("mcPlayerListener.NoInvites"));
  1103. }
  1104. }
  1105. //Party command
  1106. if(LoadProperties.partyEnable && split[0].equalsIgnoreCase(LoadProperties.party)){
  1107. if(!mcPermissions.getInstance().party(player)){
  1108. player.sendMessage(ChatColor.YELLOW+"[mcMMO]"+ChatColor.DARK_RED +mcLocale.getString("mcPlayerListener.NoPermission"));
  1109. return true;
  1110. }
  1111. if(split.length == 1 && !PP.inParty()){
  1112. player.sendMessage("Proper usage is "+LoadProperties.party+" <name> or 'q' to quit");
  1113. return true;
  1114. }
  1115. if(split.length == 1 && PP.inParty()){
  1116. String tempList = "";
  1117. int x = 0;
  1118. for(Player p : this.getServer().getOnlinePlayers()){
  1119. if(PP.getParty().equals(Users.getProfile(p).getParty())){
  1120. if(p != null && x+1 >= Party.getInstance().partyCount(player, getPlayersOnline())){
  1121. tempList+= p.getName();
  1122. x++;
  1123. }
  1124. if(p != null && x < Party.getInstance().partyCount(player, getPlayersOnline())){
  1125. tempList+= p.getName() +", ";
  1126. x++;
  1127. }
  1128. }
  1129. }
  1130. player.sendMessage(mcLocale.getString("mcPlayerListener.YouAreInParty", new Object[] {PP.getParty()}));
  1131. player.sendMessage(mcLocale.getString("mcPlayerListener.PartyMembers")+" ("+ChatColor.WHITE+tempList+ChatColor.GREEN+")");
  1132. }
  1133. if(split.length > 1 && split[1].equals("q") && PP.inParty()){
  1134. Party.getInstance().informPartyMembersQuit(player, getPlayersOnline());
  1135. PP.removeParty();
  1136. player.sendMessage(mcLocale.getString("mcPlayerListener.LeftParty"));
  1137. return true;
  1138. }
  1139. if(split.length >= 2){
  1140. if(PP.inParty())
  1141. Party.getInstance().informPartyMembersQuit(player, getPlayersOnline());
  1142. PP.setParty(split[1]);
  1143. player.sendMessage(mcLocale.getString("mcPlayerListener.JoinedParty", new Object[] {split[1]}));
  1144. Party.getInstance().informPartyMembers(player, getPlayersOnline());
  1145. }
  1146. }
  1147. if(LoadProperties.partyEnable && split[0].equalsIgnoreCase("p")){
  1148. if(!mcPermissions.getInstance().party(player)){
  1149. player.sendMessage(ChatColor.YELLOW+"[mcMMO]"+ChatColor.DARK_RED +mcLocale.getString("mcPlayerListener.NoPermission"));
  1150. return true;
  1151. }
  1152. // Not a toggle, a message
  1153. if (args.length >= 1) {
  1154. String pMessage = args[0];
  1155. for (int i = 1; i <= args.length - 1; i++) {
  1156. pMessage = pMessage + " " + args[i];
  1157. }
  1158. String pPrefix = ChatColor.GREEN + "(" + ChatColor.WHITE
  1159. + player.getName() + ChatColor.GREEN + ") ";
  1160. log.log(Level.INFO,
  1161. "[P](" + PP.getParty() + ")" + "<" + player.getName()
  1162. + "> " + pMessage);
  1163. for (Player herp : getServer().getOnlinePlayers()) {
  1164. if (Users.getProfile(herp).inParty()) {
  1165. if (Party.getInstance().inSameParty(herp, player))
  1166. herp.sendMessage(pPrefix + pMessage);
  1167. }
  1168. }
  1169. return true;
  1170. }
  1171. if(PP.getAdminChatMode())
  1172. PP.toggleAdminChat();
  1173. PP.togglePartyChat();
  1174. if(PP.getPartyChatMode()){
  1175. //player.sendMessage(ChatColor.GREEN + "Party Chat Toggled On");
  1176. player.sendMessage(mcLocale.getString("mcPlayerListener.PartyChatOn"));
  1177. } else {
  1178. //player.sendMessage(ChatColor.GREEN + "Party Chat Toggled " + ChatColor.RED + "Off");
  1179. player.sendMessage(mcLocale.getString("mcPlayerListener.PartyChatOff"));
  1180. }
  1181. }
  1182. if(split[0].equalsIgnoreCase("a") && (player.isOp() || mcPermissions.getInstance().adminChat(player))){
  1183. if(!mcPermissions.getInstance().adminChat(player) && !player.isOp()){
  1184. player.sendMessage(ChatColor.YELLOW+"[mcMMO]"+ChatColor.DARK_RED +mcLocale.getString("mcPlayerListener.NoPermission"));
  1185. return true;
  1186. }
  1187. // Not a toggle, a message
  1188. if (args.length >= 1) {
  1189. String aMessage = args[0];
  1190. for (int i = 1; i <= args.length - 1; i++) {
  1191. aMessage = aMessage + " " + args[i];
  1192. }
  1193. String aPrefix = ChatColor.AQUA + "{" + ChatColor.WHITE
  1194. + player.getName() + ChatColor.AQUA + "} ";
  1195. log.log(Level.INFO, "[A]" + "<" + player.getName() + "> "
  1196. + aMessage);
  1197. for (Player herp : getServer().getOnlinePlayers()) {
  1198. if ((herp.isOp() || mcPermissions.getInstance().adminChat(
  1199. herp)))
  1200. herp.sendMessage(aPrefix + aMessage);
  1201. }
  1202. return true;
  1203. }
  1204. if(PP.getPartyChatMode())
  1205. PP.togglePartyChat();
  1206. PP.toggleAdminChat();
  1207. if(PP.getAdminChatMode())
  1208. {
  1209. player.sendMessage(mcLocale.getString("mcPlayerListener.AdminChatOn"));
  1210. //player.sendMessage(ChatColor.AQUA + "Admin chat toggled " + ChatColor.GREEN + "On");
  1211. } else {
  1212. player.sendMessage(mcLocale.getString("mcPlayerListener.AdminChatOff"));
  1213. //player.sendMessage(ChatColor.AQUA + "Admin chat toggled " + ChatColor.RED + "Off");
  1214. }
  1215. }
  1216. /*
  1217. * MYSPAWN
  1218. */
  1219. if(LoadProperties.myspawnEnable && LoadProperties.enableMySpawn && split[0].equalsIgnoreCase(LoadProperties.myspawn)){
  1220. if(!mcPermissions.getInstance().mySpawn(player)){
  1221. player.sendMessage(ChatColor.YELLOW+"[mcMMO]"+ChatColor.DARK_RED +mcLocale.getString("mcPlayerListener.NoPermission"));
  1222. return true;
  1223. }
  1224. if(System.currentTimeMillis() < PP.getMySpawnATS() + 3600000){
  1225. long x = ((PP.getMySpawnATS() + 3600000) - System.currentTimeMillis());
  1226. int y = (int) (x/60000);
  1227. int z = (int) ((x/1000) - (y*60));
  1228. player.sendMessage(mcLocale.getString("mcPlayerListener.MyspawnTimeNotice", new Object[] {y, z}));
  1229. return true;
  1230. }
  1231. PP.setMySpawnATS(System.currentTimeMillis());
  1232. if(PP.getMySpawn(player) != null){
  1233. Location mySpawn = PP.getMySpawn(player);
  1234. if(mySpawn != null && this.getServer().getWorld(PP.getMySpawnWorld(this)) != null)
  1235. mySpawn.setWorld(this.getServer().getWorld(PP.getMySpawnWorld(this)));
  1236. if(mySpawn != null){
  1237. //It's done twice because it acts oddly when you are in another world
  1238. player.teleport(mySpawn);
  1239. player.teleport(mySpawn);
  1240. }
  1241. } else {
  1242. player.sendMessage(mcLocale.getString("mcPlayerListener.MyspawnNotExist"));
  1243. }
  1244. }
  1245. return true;
  1246. }
  1247. public Player[] getPlayersOnline() {
  1248. return this.getServer().getOnlinePlayers();
  1249. }
  1250. public boolean isPlayer(String playerName){
  1251. for(Player herp : getPlayersOnline()){
  1252. if(herp.getName().toLowerCase().equals(playerName.toLowerCase())){
  1253. return true;
  1254. }
  1255. }
  1256. return false;
  1257. }
  1258. public Player getPlayer(String playerName){
  1259. for(Player herp : getPlayersOnline()){
  1260. if(herp.getName().toLowerCase().equals(playerName.toLowerCase())){
  1261. return herp;
  1262. }
  1263. }
  1264. return null;
  1265. }
  1266. }