Skills.java 24 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621
  1. package com.gmail.nossr50.skills;
  2. import java.util.logging.Logger;
  3. import org.bukkit.ChatColor;
  4. import org.bukkit.entity.Entity;
  5. import org.bukkit.entity.Player;
  6. import org.bukkit.inventory.ItemStack;
  7. import com.gmail.nossr50.Leaderboard;
  8. import com.gmail.nossr50.Users;
  9. import com.gmail.nossr50.m;
  10. import com.gmail.nossr50.mcMMO;
  11. import com.gmail.nossr50.mcPermissions;
  12. import com.gmail.nossr50.config.LoadProperties;
  13. import com.gmail.nossr50.datatypes.PlayerProfile;
  14. import com.gmail.nossr50.datatypes.PlayerStat;
  15. import com.gmail.nossr50.locale.mcLocale;
  16. public class Skills {
  17. protected static final Logger log = Logger.getLogger("Minecraft");
  18. public void updateSQLfromFile(Player player){
  19. }
  20. public static boolean cooldownOver(Player player, long oldTime, int cooldown){
  21. long currentTime = System.currentTimeMillis();
  22. if(currentTime - oldTime >= (cooldown * 1000)){
  23. return true;
  24. } else {
  25. return false;
  26. }
  27. }
  28. public boolean hasArrows(Player player){
  29. for(ItemStack x : player.getInventory().getContents()){
  30. if (x.getTypeId() == 262){
  31. return true;
  32. }
  33. }
  34. return false;
  35. }
  36. public void addArrows(Player player){
  37. for(ItemStack x : player.getInventory().getContents()){
  38. if (x.getTypeId() == 262){
  39. x.setAmount(x.getAmount() + 1);
  40. return;
  41. }
  42. }
  43. }
  44. public static int calculateTimeLeft(Player player, long deactivatedTimeStamp, int cooldown)
  45. {
  46. return (int) (((deactivatedTimeStamp + (cooldown * 1000)) - System.currentTimeMillis())/1000);
  47. }
  48. public static boolean isAllCooldownsOver(PlayerProfile PP)
  49. {
  50. long t = System.currentTimeMillis();
  51. if(t - PP.getGreenTerraDeactivatedTimeStamp() >= (LoadProperties.greenTerraCooldown * 1000) &&
  52. t - PP.getTreeFellerDeactivatedTimeStamp() >= (LoadProperties.treeFellerCooldown * 1000) &&
  53. t - PP.getSuperBreakerDeactivatedTimeStamp() >= (LoadProperties.superBreakerCooldown * 1000) &&
  54. t - PP.getSerratedStrikesDeactivatedTimeStamp() >= (LoadProperties.serratedStrikeCooldown * 1000) &&
  55. t - PP.getBerserkDeactivatedTimeStamp() >= (LoadProperties.berserkCooldown * 1000) &&
  56. t - PP.getSkullSplitterDeactivatedTimeStamp() >= (LoadProperties.skullSplitterCooldown * 1000) &&
  57. t - PP.getGigaDrillBreakerDeactivatedTimeStamp() >= (LoadProperties.gigaDrillBreakerCooldown * 1000))
  58. {
  59. return true;
  60. }
  61. else
  62. return false;
  63. }
  64. public static void watchCooldowns(Player player){
  65. PlayerProfile PP = Users.getProfile(player);
  66. if(!PP.getGreenTerraInformed() && System.currentTimeMillis() - PP.getGreenTerraDeactivatedTimeStamp() >= (LoadProperties.greenTerraCooldown * 1000)){
  67. PP.setGreenTerraInformed(true);
  68. player.sendMessage(mcLocale.getString("Skills.YourGreenTerra"));
  69. }
  70. if(!PP.getTreeFellerInformed() && System.currentTimeMillis() - PP.getTreeFellerDeactivatedTimeStamp() >= (LoadProperties.greenTerraCooldown * 1000)){
  71. PP.setTreeFellerInformed(true);
  72. player.sendMessage(mcLocale.getString("Skills.YourTreeFeller"));
  73. }
  74. if(!PP.getSuperBreakerInformed() && System.currentTimeMillis() - PP.getSuperBreakerDeactivatedTimeStamp() >= (LoadProperties.superBreakerCooldown * 1000)){
  75. PP.setSuperBreakerInformed(true);
  76. player.sendMessage(mcLocale.getString("Skills.YourSuperBreaker"));
  77. }
  78. if(!PP.getSerratedStrikesInformed() && System.currentTimeMillis() - PP.getSerratedStrikesDeactivatedTimeStamp() >= (LoadProperties.serratedStrikeCooldown * 1000)){
  79. PP.setSerratedStrikesInformed(true);
  80. player.sendMessage(mcLocale.getString("Skills.YourSerratedStrikes"));
  81. }
  82. if(!PP.getBerserkInformed() && System.currentTimeMillis() - PP.getBerserkDeactivatedTimeStamp() >= (LoadProperties.berserkCooldown * 1000)){
  83. PP.setBerserkInformed(true);
  84. player.sendMessage(mcLocale.getString("Skills.YourBerserk"));
  85. }
  86. if(!PP.getSkullSplitterInformed() && System.currentTimeMillis() - PP.getSkullSplitterDeactivatedTimeStamp() >= (LoadProperties.skullSplitterCooldown * 1000)){
  87. PP.setSkullSplitterInformed(true);
  88. player.sendMessage(mcLocale.getString("Skills.YourSkullSplitter"));
  89. }
  90. if(!PP.getGigaDrillBreakerInformed() && System.currentTimeMillis() - PP.getGigaDrillBreakerDeactivatedTimeStamp() >= (LoadProperties.gigaDrillBreakerCooldown * 1000)){
  91. PP.setGigaDrillBreakerInformed(true);
  92. player.sendMessage(mcLocale.getString("Skills.YourGigaDrillBreaker"));
  93. }
  94. }
  95. public static void hoeReadinessCheck(Player player){
  96. PlayerProfile PP = Users.getProfile(player);
  97. if(mcPermissions.getInstance().herbalismAbility(player) && m.isHoe(player.getItemInHand()) && !PP.getHoePreparationMode()){
  98. if(!PP.getGreenTerraMode() && !cooldownOver(player, PP.getGreenTerraDeactivatedTimeStamp(), LoadProperties.greenTerraCooldown)){
  99. player.sendMessage(mcLocale.getString("Skills.TooTired")
  100. +ChatColor.YELLOW+" ("+calculateTimeLeft(player, PP.getGreenTerraDeactivatedTimeStamp(), LoadProperties.greenTerraCooldown)+"s)");
  101. return;
  102. }
  103. player.sendMessage(mcLocale.getString("Skills.ReadyHoe"));
  104. PP.setHoePreparationATS(System.currentTimeMillis());
  105. PP.setHoePreparationMode(true);
  106. }
  107. }
  108. public static void monitorSkills(Player player){
  109. PlayerProfile PP = Users.getProfile(player);
  110. if(PP != null)
  111. {
  112. if(PP.getHoePreparationMode() && System.currentTimeMillis() - PP.getHoePreparationATS() >= 4000){
  113. PP.setHoePreparationMode(false);
  114. player.sendMessage(mcLocale.getString("Skills.LowerHoe"));
  115. }
  116. if(PP.getAxePreparationMode() && System.currentTimeMillis() - PP.getAxePreparationATS() >= 4000){
  117. PP.setAxePreparationMode(false);
  118. player.sendMessage(mcLocale.getString("Skills.LowerAxe"));
  119. }
  120. if(PP.getPickaxePreparationMode() && System.currentTimeMillis() - PP.getPickaxePreparationATS() >= 4000){
  121. PP.setPickaxePreparationMode(false);
  122. player.sendMessage(mcLocale.getString("Skills.LowerPickAxe"));
  123. }
  124. if(PP.getSwordsPreparationMode() && System.currentTimeMillis() - PP.getSwordsPreparationATS() >= 4000){
  125. PP.setSwordsPreparationMode(false);
  126. player.sendMessage(mcLocale.getString("Skills.LowerSword"));
  127. }
  128. if(PP.getFistsPreparationMode() && System.currentTimeMillis() - PP.getFistsPreparationATS() >= 4000){
  129. PP.setFistsPreparationMode(false);
  130. player.sendMessage(mcLocale.getString("Skills.LowerFists"));
  131. }
  132. if(PP.getShovelPreparationMode() && System.currentTimeMillis() - PP.getShovelPreparationATS() >= 4000){
  133. PP.setShovelPreparationMode(false);
  134. player.sendMessage(mcLocale.getString("Skills.LowerShovel"));
  135. }
  136. /*
  137. * HERBALISM ABILITY
  138. */
  139. if(mcPermissions.getInstance().herbalismAbility(player)){
  140. if(PP.getGreenTerraMode() && PP.getGreenTerraDeactivatedTimeStamp() <= System.currentTimeMillis()){
  141. PP.setGreenTerraMode(false);
  142. PP.setGreenTerraInformed(false);
  143. player.sendMessage(mcLocale.getString("Skills.GreenTerraOff"));
  144. }
  145. }
  146. /*
  147. * AXES ABILITY
  148. */
  149. if(mcPermissions.getInstance().axesAbility(player)){
  150. if(PP.getSkullSplitterMode() && PP.getSkullSplitterDeactivatedTimeStamp() <= System.currentTimeMillis()){
  151. PP.setSkullSplitterMode(false);
  152. PP.setSkullSplitterInformed(false);
  153. player.sendMessage(mcLocale.getString("Skills.SkullSplitterOff"));
  154. }
  155. }
  156. /*
  157. * WOODCUTTING ABILITY
  158. */
  159. if(mcPermissions.getInstance().woodCuttingAbility(player)){
  160. if(PP.getTreeFellerMode() && PP.getTreeFellerDeactivatedTimeStamp() <= System.currentTimeMillis()){
  161. PP.setTreeFellerMode(false);
  162. PP.setTreeFellerInformed(false);
  163. player.sendMessage(mcLocale.getString("Skills.TreeFellerOff"));
  164. }
  165. }
  166. /*
  167. * MINING ABILITY
  168. */
  169. if(mcPermissions.getInstance().miningAbility(player)){
  170. if(PP.getSuperBreakerMode() && PP.getSuperBreakerDeactivatedTimeStamp() <= System.currentTimeMillis()){
  171. PP.setSuperBreakerMode(false);
  172. PP.setSuperBreakerInformed(false);
  173. player.sendMessage(mcLocale.getString("Skills.SuperBreakerOff"));
  174. }
  175. }
  176. /*
  177. * EXCAVATION ABILITY
  178. */
  179. if(mcPermissions.getInstance().excavationAbility(player)){
  180. if(PP.getGigaDrillBreakerMode() && PP.getGigaDrillBreakerDeactivatedTimeStamp() <= System.currentTimeMillis()){
  181. PP.setGigaDrillBreakerMode(false);
  182. PP.setGigaDrillBreakerInformed(false);
  183. player.sendMessage(mcLocale.getString("Skills.GigaDrillBreakerOff"));
  184. }
  185. }
  186. /*
  187. * SWORDS ABILITY
  188. */
  189. if(mcPermissions.getInstance().swordsAbility(player)){
  190. if(PP.getSerratedStrikesMode() && PP.getSerratedStrikesDeactivatedTimeStamp() <= System.currentTimeMillis()){
  191. PP.setSerratedStrikesMode(false);
  192. PP.setSerratedStrikesInformed(false);
  193. player.sendMessage(mcLocale.getString("Skills.SerratedStrikesOff"));
  194. }
  195. }
  196. /*
  197. * UNARMED ABILITY
  198. */
  199. if(mcPermissions.getInstance().unarmedAbility(player)){
  200. if(PP.getBerserkMode() && PP.getBerserkDeactivatedTimeStamp() <= System.currentTimeMillis()){
  201. PP.setBerserkMode(false);
  202. PP.setBerserkInformed(false);
  203. player.sendMessage(mcLocale.getString("Skills.BerserkOff"));
  204. }
  205. }
  206. }
  207. }
  208. public static void abilityActivationCheck(Player player){
  209. PlayerProfile PP = Users.getProfile(player);
  210. if(PP != null){
  211. if(!PP.getAbilityUse())
  212. return;
  213. if(mcPermissions.getInstance().miningAbility(player) && m.isMiningPick(player.getItemInHand()) && !PP.getPickaxePreparationMode()){
  214. if(!PP.getSuperBreakerMode() && !cooldownOver(player, PP.getSuperBreakerDeactivatedTimeStamp(), LoadProperties.superBreakerCooldown)){
  215. player.sendMessage(mcLocale.getString("Skills.TooTired")
  216. +ChatColor.YELLOW+" ("+calculateTimeLeft(player, PP.getSuperBreakerDeactivatedTimeStamp(), LoadProperties.superBreakerCooldown)+"s)");
  217. return;
  218. }
  219. player.sendMessage(mcLocale.getString("Skills.ReadyPickAxe"));
  220. PP.setPickaxePreparationATS(System.currentTimeMillis());
  221. PP.setPickaxePreparationMode(true);
  222. }
  223. if(mcPermissions.getInstance().excavationAbility(player) && m.isShovel(player.getItemInHand()) && !PP.getShovelPreparationMode()){
  224. if(!PP.getGigaDrillBreakerMode() && !cooldownOver(player, PP.getGigaDrillBreakerDeactivatedTimeStamp(), LoadProperties.gigaDrillBreakerCooldown)){
  225. player.sendMessage(mcLocale.getString("Skills.TooTired")
  226. +ChatColor.YELLOW+" ("+calculateTimeLeft(player, PP.getGigaDrillBreakerDeactivatedTimeStamp(), LoadProperties.gigaDrillBreakerCooldown)+"s)");
  227. return;
  228. }
  229. player.sendMessage(mcLocale.getString("Skills.ReadyShovel"));
  230. PP.setShovelPreparationATS(System.currentTimeMillis());
  231. PP.setShovelPreparationMode(true);
  232. }
  233. if(mcPermissions.getInstance().swordsAbility(player) && m.isSwords(player.getItemInHand()) && !PP.getSwordsPreparationMode()){
  234. if(!PP.getSerratedStrikesMode() && !cooldownOver(player, PP.getSerratedStrikesDeactivatedTimeStamp(), LoadProperties.serratedStrikeCooldown)){
  235. player.sendMessage(mcLocale.getString("Skills.TooTired")
  236. +ChatColor.YELLOW+" ("+calculateTimeLeft(player, PP.getSerratedStrikesDeactivatedTimeStamp(), LoadProperties.serratedStrikeCooldown)+"s)");
  237. return;
  238. }
  239. player.sendMessage(mcLocale.getString("Skills.ReadySword"));
  240. PP.setSwordsPreparationATS(System.currentTimeMillis());
  241. PP.setSwordsPreparationMode(true);
  242. }
  243. if(mcPermissions.getInstance().unarmedAbility(player) && player.getItemInHand().getTypeId() == 0 && !PP.getFistsPreparationMode()){
  244. if(!PP.getBerserkMode() && !cooldownOver(player, PP.getBerserkDeactivatedTimeStamp(), LoadProperties.berserkCooldown)){
  245. player.sendMessage(mcLocale.getString("Skills.TooTired")
  246. +ChatColor.YELLOW+" ("+calculateTimeLeft(player, PP.getBerserkDeactivatedTimeStamp(), LoadProperties.berserkCooldown)+"s)");
  247. return;
  248. }
  249. player.sendMessage(mcLocale.getString("Skills.ReadyFists"));
  250. PP.setFistsPreparationATS(System.currentTimeMillis());
  251. PP.setFistsPreparationMode(true);
  252. }
  253. if((mcPermissions.getInstance().axes(player) || mcPermissions.getInstance().woodcutting(player)) && !PP.getAxePreparationMode()){
  254. if(m.isAxes(player.getItemInHand())){
  255. player.sendMessage(mcLocale.getString("Skills.ReadyAxe"));
  256. PP.setAxePreparationATS(System.currentTimeMillis());
  257. PP.setAxePreparationMode(true);
  258. }
  259. }
  260. }
  261. }
  262. public static void XpCheck(Player player){
  263. PlayerProfile PP = Users.getProfile(player);
  264. /*
  265. * TAMING
  266. */
  267. if(player != null){
  268. if(PP.getSkill("tamingXP") >= PP.getXpToLevel("taming")){
  269. int skillups = 0;
  270. while(PP.getSkill("tamingXP") >= PP.getXpToLevel("taming")){
  271. skillups++;
  272. PP.removeTamingXP(PP.getXpToLevel("taming"));
  273. PP.skillUpTaming(1);
  274. }
  275. /*
  276. * Leaderboard updating stuff
  277. */
  278. PlayerStat ps = new PlayerStat();
  279. if(!LoadProperties.useMySQL){
  280. ps.statVal = PP.getSkill("taming");
  281. ps.name = player.getName();
  282. Leaderboard.updateLeaderboard(ps, "taming");
  283. }
  284. if(player != null && PP != null && PP.getSkillToString("taming") != null)
  285. player.sendMessage(mcLocale.getString("Skills.TamingUp", new Object[] {String.valueOf(skillups), PP.getSkillToString("taming")}));
  286. }
  287. /*
  288. * ACROBATICS
  289. */
  290. if(PP.getSkill("acrobaticsXP") >= PP.getXpToLevel("acrobatics")){
  291. int skillups = 0;
  292. while(PP.getSkill("acrobaticsXP") >= PP.getXpToLevel("acrobatics")){
  293. skillups++;
  294. PP.removeAcrobaticsXP(PP.getXpToLevel("acrobatics"));
  295. PP.skillUpAcrobatics(1);
  296. }
  297. /*
  298. * Leaderboard updating stuff
  299. */
  300. if(!LoadProperties.useMySQL){
  301. PlayerStat ps = new PlayerStat();
  302. ps.statVal = PP.getSkill("acrobatics");
  303. ps.name = player.getName();
  304. Leaderboard.updateLeaderboard(ps, "acrobatics");
  305. }
  306. if(player != null && PP != null && PP.getSkillToString("acrobatics") != null)
  307. player.sendMessage(mcLocale.getString("Skills.AcrobaticsUp", new Object[] {String.valueOf(skillups), PP.getSkillToString("acrobatics")}));
  308. }
  309. /*
  310. * ARCHERY
  311. */
  312. if(PP.getSkill("archeryXP") >= PP.getXpToLevel("archery")){
  313. int skillups = 0;
  314. while(PP.getSkill("archeryXP") >= PP.getXpToLevel("archery")){
  315. skillups++;
  316. PP.removeArcheryXP(PP.getXpToLevel("archery"));
  317. PP.skillUpArchery(1);
  318. }
  319. /*
  320. * Leaderboard updating stuff
  321. */
  322. if(!LoadProperties.useMySQL){
  323. PlayerStat ps = new PlayerStat();
  324. ps.statVal = PP.getSkill("archery");
  325. ps.name = player.getName();
  326. Leaderboard.updateLeaderboard(ps, "archery");
  327. }
  328. if(player != null && PP != null && PP.getSkillToString("archery") != null)
  329. player.sendMessage(mcLocale.getString("Skills.ArcheryUp", new Object[] {String.valueOf(skillups), PP.getSkillToString("archery")}));
  330. }
  331. /*
  332. * SWORDS
  333. */
  334. if(PP.getSkill("swordsXP") >= PP.getXpToLevel("swords")){
  335. int skillups = 0;
  336. while(PP.getSkill("swordsXP") >= PP.getXpToLevel("swords")){
  337. skillups++;
  338. PP.removeSwordsXP(PP.getXpToLevel("swords"));
  339. PP.skillUpSwords(1);
  340. }
  341. /*
  342. * Leaderboard updating stuff
  343. */
  344. if(!LoadProperties.useMySQL){
  345. PlayerStat ps = new PlayerStat();
  346. ps.statVal = PP.getSkill("swords");
  347. ps.name = player.getName();
  348. Leaderboard.updateLeaderboard(ps, "swords");
  349. }
  350. if(player != null && PP != null && PP.getSkillToString("swords") != null)
  351. player.sendMessage(mcLocale.getString("Skills.SwordsUp", new Object[] {String.valueOf(skillups), PP.getSkillToString("swords")}));
  352. }
  353. /*
  354. * AXES
  355. */
  356. if(PP.getSkill("axesXP") >= PP.getXpToLevel("axes")){
  357. int skillups = 0;
  358. while(PP.getSkill("axesXP") >= PP.getXpToLevel("axes")){
  359. skillups++;
  360. PP.removeAxesXP(PP.getXpToLevel("axes"));
  361. PP.skillUpAxes(1);
  362. }
  363. /*
  364. * Leaderboard updating stuff
  365. */
  366. if(!LoadProperties.useMySQL){
  367. PlayerStat ps = new PlayerStat();
  368. ps.statVal = PP.getSkill("axes");
  369. ps.name = player.getName();
  370. Leaderboard.updateLeaderboard(ps, "axes");
  371. }
  372. if(player != null && PP != null && PP.getSkillToString("axes") != null)
  373. player.sendMessage(mcLocale.getString("Skills.AxesUp", new Object[] {String.valueOf(skillups), PP.getSkillToString("axes")}));
  374. }
  375. /*
  376. * UNARMED
  377. */
  378. if(PP.getSkill("unarmedXP") >= PP.getXpToLevel("unarmed")){
  379. int skillups = 0;
  380. while(PP.getSkill("unarmedXP") >= PP.getXpToLevel("unarmed")){
  381. skillups++;
  382. PP.removeUnarmedXP(PP.getXpToLevel("unarmed"));
  383. PP.skillUpUnarmed(1);
  384. }
  385. /*
  386. * Leaderboard updating stuff
  387. */
  388. if(!LoadProperties.useMySQL){
  389. PlayerStat ps = new PlayerStat();
  390. ps.statVal = PP.getSkill("unarmed");
  391. ps.name = player.getName();
  392. Leaderboard.updateLeaderboard(ps, "unarmed");
  393. }
  394. if(player != null && PP != null && PP.getSkillToString("unarmed") != null)
  395. player.sendMessage(mcLocale.getString("Skills.UnarmedUp", new Object[] {String.valueOf(skillups), PP.getSkillToString("unarmed")}));
  396. }
  397. /*
  398. * HERBALISM
  399. */
  400. if(PP.getSkill("herbalismXP") >= PP.getXpToLevel("herbalism")){
  401. int skillups = 0;
  402. while(PP.getSkill("herbalismXP") >= PP.getXpToLevel("herbalism")){
  403. skillups++;
  404. PP.removeHerbalismXP(PP.getXpToLevel("herbalism"));
  405. PP.skillUpHerbalism(1);
  406. }
  407. /*
  408. * Leaderboard updating stuff
  409. */
  410. if(!LoadProperties.useMySQL){
  411. PlayerStat ps = new PlayerStat();
  412. ps.statVal = PP.getSkill("herbalism");
  413. ps.name = player.getName();
  414. Leaderboard.updateLeaderboard(ps, "herbalism");
  415. }
  416. if(player != null && PP != null && PP.getSkillToString("herbalism") != null)
  417. player.sendMessage(mcLocale.getString("Skills.HerbalismUp", new Object[] {String.valueOf(skillups), PP.getSkillToString("herbalism")}));
  418. }
  419. /*
  420. * MINING
  421. */
  422. if(player != null && PP.getSkill("miningXP") >= PP.getXpToLevel("mining")){
  423. int skillups = 0;
  424. while(PP.getSkill("miningXP") >= PP.getXpToLevel("mining")){
  425. skillups++;
  426. PP.removeMiningXP(PP.getXpToLevel("mining"));
  427. PP.skillUpMining(1);
  428. }
  429. /*
  430. * Leaderboard updating stuff
  431. */
  432. if(!LoadProperties.useMySQL){
  433. PlayerStat ps = new PlayerStat();
  434. ps.statVal = PP.getSkill("mining");
  435. ps.name = player.getName();
  436. Leaderboard.updateLeaderboard(ps, "mining");
  437. }
  438. if(player != null && PP != null && PP.getSkillToString("mining") != null)
  439. player.sendMessage(mcLocale.getString("Skills.MiningUp", new Object[] {String.valueOf(skillups), PP.getSkillToString("mining")}));
  440. }
  441. /*
  442. * WOODCUTTING
  443. */
  444. if(player != null && PP.getSkill("woodcuttingXP") >= PP.getXpToLevel("woodcutting")){
  445. int skillups = 0;
  446. while(PP.getSkill("woodcuttingXP") >= PP.getXpToLevel("woodcutting")){
  447. skillups++;
  448. PP.removeWoodCuttingXP(PP.getXpToLevel("woodcutting"));
  449. PP.skillUpWoodCutting(1);
  450. }
  451. /*
  452. * Leaderboard updating stuff
  453. */
  454. if(!LoadProperties.useMySQL){
  455. PlayerStat ps = new PlayerStat();
  456. ps.statVal = PP.getSkill("woodcutting");
  457. ps.name = player.getName();
  458. Leaderboard.updateLeaderboard(ps, "woodcutting");
  459. }
  460. if(player != null && PP != null && PP.getSkillToString("woodcutting") != null)
  461. player.sendMessage(mcLocale.getString("Skills.WoodcuttingUp", new Object[] {String.valueOf(skillups), PP.getSkillToString("woodcutting")}));
  462. }
  463. /*
  464. * REPAIR
  465. */
  466. if(PP.getSkill("repairXP") >= PP.getXpToLevel("repair")){
  467. int skillups = 0;
  468. while(PP.getSkill("repairXP") >= PP.getXpToLevel("repair")){
  469. skillups++;
  470. PP.removeRepairXP(PP.getXpToLevel("repair"));
  471. PP.skillUpRepair(1);
  472. }
  473. /*
  474. * Leaderboard updating stuff
  475. */
  476. if(!LoadProperties.useMySQL){
  477. PlayerStat ps = new PlayerStat();
  478. ps.statVal = PP.getSkill("repair");
  479. ps.name = player.getName();
  480. Leaderboard.updateLeaderboard(ps, "repair");
  481. }
  482. if(player != null && PP != null && PP.getSkillToString("repair") != null)
  483. player.sendMessage(mcLocale.getString("Skills.RepairUp", new Object[] {String.valueOf(skillups), PP.getSkillToString("repair")}));
  484. }
  485. /*
  486. * EXCAVATION
  487. */
  488. if(PP.getSkill("excavationXP") >= PP.getXpToLevel("excavation")){
  489. int skillups = 0;
  490. while(PP.getSkill("excavationXP") >= PP.getXpToLevel("excavation")){
  491. skillups++;
  492. PP.removeExcavationXP(PP.getXpToLevel("excavation"));
  493. PP.skillUpExcavation(1);
  494. }
  495. /*
  496. * Leaderboard updating stuff
  497. */
  498. if(!LoadProperties.useMySQL){
  499. PlayerStat ps = new PlayerStat();
  500. ps.statVal = PP.getSkill("excavation");
  501. ps.name = player.getName();
  502. Leaderboard.updateLeaderboard(ps, "excavation");
  503. }
  504. if(player != null && PP != null && PP.getSkillToString("excavation") != null)
  505. player.sendMessage(mcLocale.getString("Skills.ExcavationUp", new Object[] {String.valueOf(skillups), PP.getSkillToString("excavation")}));
  506. //player.sendMessage(ChatColor.YELLOW+"Excavation skill increased by "+String.valueOf(skillups)+"."+" Total ("+PP.getSkillToString("excavation")+")");
  507. }
  508. }
  509. /*
  510. * Leaderboard updating stuff
  511. */
  512. if(!LoadProperties.useMySQL)
  513. {
  514. PlayerStat ps = new PlayerStat();
  515. ps.statVal = m.getPowerLevel(player);
  516. ps.name = player.getName();
  517. Leaderboard.updateLeaderboard(ps, "powerlevel");
  518. }
  519. }
  520. public static boolean isSkill(String skillname){
  521. skillname = skillname.toLowerCase();
  522. if(skillname.equals("all")){
  523. return true;
  524. }
  525. else if(skillname.equals("sorcery")){
  526. return true;
  527. }
  528. else if(skillname.equals("taming")){
  529. return true;
  530. }
  531. else if(skillname.equals("mining")){
  532. return true;
  533. }
  534. else if(skillname.equals("woodcutting")){
  535. return true;
  536. }
  537. else if(skillname.equals("excavation")){
  538. return true;
  539. }
  540. else if(skillname.equals("repair")){
  541. return true;
  542. }
  543. else if(skillname.equals("herbalism")){
  544. return true;
  545. }
  546. else if(skillname.equals("acrobatics")){
  547. return true;
  548. }
  549. else if(skillname.equals("swords")){
  550. return true;
  551. }
  552. else if(skillname.equals("archery")){
  553. return true;
  554. }
  555. else if(skillname.equals("unarmed")){
  556. return true;
  557. }
  558. else if(skillname.equals("axes")){
  559. return true;
  560. }
  561. else {
  562. return false;
  563. }
  564. }
  565. public static void arrowRetrievalCheck(Entity entity, mcMMO plugin)
  566. {
  567. if(plugin.misc.arrowTracker.containsKey(entity))
  568. {
  569. Integer x = 0;
  570. while(x < plugin.misc.arrowTracker.get(entity))
  571. {
  572. m.mcDropItem(entity.getLocation(), 262);
  573. x++;
  574. }
  575. }
  576. plugin.misc.arrowTracker.remove(entity);
  577. }
  578. public static String getSkillStats(String skillname, String level, String XP, Integer XPToLevel)
  579. {
  580. ChatColor parColor = ChatColor.DARK_AQUA;
  581. ChatColor xpColor = ChatColor.GRAY;
  582. ChatColor LvlColor = ChatColor.GREEN;
  583. ChatColor skillColor = ChatColor.YELLOW;
  584. return skillColor+skillname+LvlColor+level+parColor+" XP"+"("+xpColor+XP+parColor+"/"+xpColor+XPToLevel+parColor+")";
  585. }
  586. public static boolean hasCombatSkills(Player player)
  587. {
  588. if(mcPermissions.getInstance().axes(player) || mcPermissions.getInstance().archery(player) || mcPermissions.getInstance().sorcery(player) || mcPermissions.getInstance().swords(player) || mcPermissions.getInstance().taming(player) || mcPermissions.getInstance().unarmed(player))
  589. return true;
  590. else
  591. return false;
  592. }
  593. public static boolean hasGatheringSkills(Player player)
  594. {
  595. if(mcPermissions.getInstance().excavation(player) || mcPermissions.getInstance().herbalism(player) || mcPermissions.getInstance().mining(player) || mcPermissions.getInstance().woodcutting(player))
  596. return true;
  597. else
  598. return false;
  599. }
  600. public static boolean hasMiscSkills(Player player)
  601. {
  602. if(mcPermissions.getInstance().acrobatics(player) || mcPermissions.getInstance().repair(player))
  603. return true;
  604. else
  605. return false;
  606. }
  607. }