Fishing.java 45 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285
  1. /*
  2. This file is part of mcMMO.
  3. mcMMO is free software: you can redistribute it and/or modify
  4. it under the terms of the GNU General Public License as published by
  5. the Free Software Foundation, either version 3 of the License, or
  6. (at your option) any later version.
  7. mcMMO is distributed in the hope that it will be useful,
  8. but WITHOUT ANY WARRANTY; without even the implied warranty of
  9. MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  10. GNU General Public License for more details.
  11. You should have received a copy of the GNU General Public License
  12. along with mcMMO. If not, see <http://www.gnu.org/licenses/>.
  13. */
  14. package com.gmail.nossr50.skills;
  15. import org.bukkit.Location;
  16. import org.bukkit.Material;
  17. import org.bukkit.craftbukkit.entity.CraftItem;
  18. import org.bukkit.enchantments.Enchantment;
  19. import org.bukkit.entity.*;
  20. import org.bukkit.event.player.PlayerFishEvent;
  21. import org.bukkit.inventory.ItemStack;
  22. import org.bukkit.material.Wool;
  23. import com.gmail.nossr50.Combat;
  24. import com.gmail.nossr50.Users;
  25. import com.gmail.nossr50.m;
  26. import com.gmail.nossr50.config.LoadProperties;
  27. import com.gmail.nossr50.datatypes.PlayerProfile;
  28. import com.gmail.nossr50.datatypes.SkillType;
  29. import com.gmail.nossr50.locale.mcLocale;
  30. public class Fishing {
  31. //Return the fishing tier for the player
  32. public static int getFishingLootTier(PlayerProfile PP)
  33. {
  34. int lvl = PP.getSkillLevel(SkillType.FISHING);
  35. if(lvl < 100)
  36. {
  37. return 1;
  38. } else if (lvl >= 100 && lvl < 300)
  39. {
  40. return 2;
  41. } else if (lvl >= 300 && lvl < 600)
  42. {
  43. return 3;
  44. } else if (lvl >= 600 && lvl < 900)
  45. {
  46. return 4;
  47. } else
  48. {
  49. return 5;
  50. }
  51. }
  52. public static void getFishingResults(Player player, PlayerFishEvent event)
  53. {
  54. switch(getFishingLootTier(Users.getProfile(player)))
  55. {
  56. case 1:
  57. getFishingResultsTier1(player, event);
  58. break;
  59. case 2:
  60. getFishingResultsTier2(player, event);
  61. break;
  62. case 3:
  63. getFishingResultsTier3(player, event);
  64. break;
  65. case 4:
  66. getFishingResultsTier4(player, event);
  67. break;
  68. case 5:
  69. getFishingResultsTier5(player, event);
  70. break;
  71. }
  72. m.mcDropItem(player.getLocation(), new ItemStack(Material.RAW_FISH, 1));
  73. Users.getProfile(player).addXP(SkillType.FISHING, LoadProperties.mfishing, player);
  74. Skills.XpCheckSkill(SkillType.FISHING, player);
  75. }
  76. private static void getFishingResultsTier1(Player player, PlayerFishEvent event)
  77. {
  78. int randomNum = (int)(Math.random() * 15);
  79. CraftItem theCatch = (CraftItem)event.getCaught();
  80. if(Math.random() * 100 < LoadProperties.fishingDropChanceTier1)
  81. {
  82. switch(randomNum)
  83. {
  84. case 1:
  85. if(LoadProperties.leatherArmor && LoadProperties.fishingDrops)
  86. theCatch.setItemStack(new ItemStack(Material.LEATHER_BOOTS, 1));
  87. else
  88. theCatch.setItemStack(new ItemStack(Material.RAW_FISH));
  89. break;
  90. case 2:
  91. if(LoadProperties.leatherArmor && LoadProperties.fishingDrops)
  92. theCatch.setItemStack(new ItemStack(Material.LEATHER_HELMET, 1));
  93. else
  94. theCatch.setItemStack(new ItemStack(Material.RAW_FISH));
  95. break;
  96. case 3:
  97. if(LoadProperties.leatherArmor && LoadProperties.fishingDrops)
  98. theCatch.setItemStack(new ItemStack(Material.LEATHER_LEGGINGS, 1));
  99. else
  100. theCatch.setItemStack(new ItemStack(Material.RAW_FISH));
  101. break;
  102. case 4:
  103. if(LoadProperties.leatherArmor && LoadProperties.fishingDrops)
  104. theCatch.setItemStack(new ItemStack(Material.LEATHER_CHESTPLATE, 1));
  105. else
  106. theCatch.setItemStack(new ItemStack(Material.RAW_FISH));
  107. break;
  108. case 5:
  109. if(LoadProperties.woodenTools && LoadProperties.fishingDrops)
  110. theCatch.setItemStack(new ItemStack(Material.WOOD_AXE, 1));
  111. else
  112. theCatch.setItemStack(new ItemStack(Material.RAW_FISH));
  113. break;
  114. case 6:
  115. if(LoadProperties.woodenTools && LoadProperties.fishingDrops)
  116. theCatch.setItemStack(new ItemStack(Material.WOOD_PICKAXE, 1));
  117. else
  118. theCatch.setItemStack(new ItemStack(Material.RAW_FISH));
  119. break;
  120. case 7:
  121. if(LoadProperties.woodenTools && LoadProperties.fishingDrops)
  122. theCatch.setItemStack(new ItemStack(Material.WOOD_SWORD, 1));
  123. else
  124. theCatch.setItemStack(new ItemStack(Material.RAW_FISH));
  125. break;
  126. case 8:
  127. if(LoadProperties.woodenTools && LoadProperties.fishingDrops)
  128. theCatch.setItemStack(new ItemStack(Material.WOOD_HOE, 1));
  129. else
  130. theCatch.setItemStack(new ItemStack(Material.RAW_FISH));
  131. break;
  132. case 9:
  133. if(LoadProperties.woodenTools && LoadProperties.fishingDrops)
  134. theCatch.setItemStack(new ItemStack(Material.WOOD_SPADE, 1));
  135. else
  136. theCatch.setItemStack(new ItemStack(Material.RAW_FISH));
  137. break;
  138. case 10:
  139. if(LoadProperties.stoneTools && LoadProperties.fishingDrops)
  140. theCatch.setItemStack(new ItemStack(Material.STONE_AXE, 1));
  141. else
  142. theCatch.setItemStack(new ItemStack(Material.RAW_FISH));
  143. break;
  144. case 11:
  145. if(LoadProperties.stoneTools && LoadProperties.fishingDrops)
  146. theCatch.setItemStack(new ItemStack(Material.STONE_PICKAXE, 1));
  147. else
  148. theCatch.setItemStack(new ItemStack(Material.RAW_FISH));
  149. break;
  150. case 12:
  151. if(LoadProperties.stoneTools && LoadProperties.fishingDrops)
  152. theCatch.setItemStack(new ItemStack(Material.STONE_SWORD, 1));
  153. else
  154. theCatch.setItemStack(new ItemStack(Material.RAW_FISH));
  155. break;
  156. case 13:
  157. if(LoadProperties.stoneTools && LoadProperties.fishingDrops)
  158. theCatch.setItemStack(new ItemStack(Material.STONE_HOE, 1));
  159. else
  160. theCatch.setItemStack(new ItemStack(Material.RAW_FISH));
  161. break;
  162. case 14:
  163. if(LoadProperties.stoneTools && LoadProperties.fishingDrops)
  164. theCatch.setItemStack(new ItemStack(Material.STONE_SPADE, 1));
  165. else
  166. theCatch.setItemStack(new ItemStack(Material.RAW_FISH));
  167. break;
  168. }
  169. } else
  170. {
  171. theCatch.setItemStack(new ItemStack(Material.RAW_FISH));
  172. }
  173. //Change durability to random value
  174. theCatch.getItemStack().setDurability((short) (Math.random() * theCatch.getItemStack().getType().getMaxDurability())); //Change the damage value
  175. }
  176. private static void getFishingResultsTier2(Player player, PlayerFishEvent event)
  177. {
  178. int randomNum = (int)(Math.random() * 20);
  179. CraftItem theCatch = (CraftItem)event.getCaught();
  180. if(Math.random() * 100 < LoadProperties.fishingDropChanceTier2)
  181. {
  182. switch(randomNum)
  183. {
  184. case 1:
  185. if(LoadProperties.leatherArmor && LoadProperties.fishingDrops)
  186. theCatch.setItemStack(new ItemStack(Material.LEATHER_BOOTS, 1));
  187. else
  188. theCatch.setItemStack(new ItemStack(Material.RAW_FISH));
  189. break;
  190. case 2:
  191. if(LoadProperties.leatherArmor && LoadProperties.fishingDrops)
  192. theCatch.setItemStack(new ItemStack(Material.LEATHER_HELMET, 1));
  193. else
  194. theCatch.setItemStack(new ItemStack(Material.RAW_FISH));
  195. break;
  196. case 3:
  197. if(LoadProperties.leatherArmor && LoadProperties.fishingDrops)
  198. theCatch.setItemStack(new ItemStack(Material.LEATHER_LEGGINGS, 1));
  199. else
  200. theCatch.setItemStack(new ItemStack(Material.RAW_FISH));
  201. break;
  202. case 4:
  203. if(LoadProperties.leatherArmor && LoadProperties.fishingDrops)
  204. theCatch.setItemStack(new ItemStack(Material.LEATHER_CHESTPLATE, 1));
  205. else
  206. theCatch.setItemStack(new ItemStack(Material.RAW_FISH));
  207. break;
  208. case 5:
  209. if(LoadProperties.ironTools && LoadProperties.fishingDrops)
  210. theCatch.setItemStack(new ItemStack(Material.IRON_AXE, 1));
  211. else
  212. theCatch.setItemStack(new ItemStack(Material.RAW_FISH));
  213. break;
  214. case 6:
  215. if(LoadProperties.ironTools && LoadProperties.fishingDrops)
  216. theCatch.setItemStack(new ItemStack(Material.IRON_PICKAXE, 1));
  217. else
  218. theCatch.setItemStack(new ItemStack(Material.RAW_FISH));
  219. break;
  220. case 7:
  221. if(LoadProperties.ironTools && LoadProperties.fishingDrops)
  222. theCatch.setItemStack(new ItemStack(Material.IRON_SWORD, 1));
  223. else
  224. theCatch.setItemStack(new ItemStack(Material.RAW_FISH));
  225. break;
  226. case 8:
  227. if(LoadProperties.ironTools && LoadProperties.fishingDrops)
  228. theCatch.setItemStack(new ItemStack(Material.IRON_HOE, 1));
  229. else
  230. theCatch.setItemStack(new ItemStack(Material.RAW_FISH));
  231. break;
  232. case 9:
  233. if(LoadProperties.ironTools && LoadProperties.fishingDrops)
  234. theCatch.setItemStack(new ItemStack(Material.IRON_SPADE, 1));
  235. else
  236. theCatch.setItemStack(new ItemStack(Material.RAW_FISH));
  237. break;
  238. case 10:
  239. if(LoadProperties.stoneTools && LoadProperties.fishingDrops)
  240. theCatch.setItemStack(new ItemStack(Material.STONE_AXE, 1));
  241. else
  242. theCatch.setItemStack(new ItemStack(Material.RAW_FISH));
  243. break;
  244. case 11:
  245. if(LoadProperties.stoneTools && LoadProperties.fishingDrops)
  246. theCatch.setItemStack(new ItemStack(Material.STONE_PICKAXE, 1));
  247. else
  248. theCatch.setItemStack(new ItemStack(Material.RAW_FISH));
  249. break;
  250. case 12:
  251. if(LoadProperties.stoneTools && LoadProperties.fishingDrops)
  252. theCatch.setItemStack(new ItemStack(Material.STONE_SWORD, 1));
  253. else
  254. theCatch.setItemStack(new ItemStack(Material.RAW_FISH));
  255. break;
  256. case 13:
  257. if(LoadProperties.stoneTools && LoadProperties.fishingDrops)
  258. theCatch.setItemStack(new ItemStack(Material.STONE_HOE, 1));
  259. else
  260. theCatch.setItemStack(new ItemStack(Material.RAW_FISH));
  261. break;
  262. case 14:
  263. if(LoadProperties.stoneTools && LoadProperties.fishingDrops)
  264. theCatch.setItemStack(new ItemStack(Material.STONE_SPADE, 1));
  265. else
  266. theCatch.setItemStack(new ItemStack(Material.RAW_FISH));
  267. break;
  268. case 15:
  269. if(LoadProperties.ironArmor && LoadProperties.fishingDrops)
  270. theCatch.setItemStack(new ItemStack(Material.IRON_BOOTS, 1));
  271. else
  272. theCatch.setItemStack(new ItemStack(Material.RAW_FISH));
  273. break;
  274. case 16:
  275. if(LoadProperties.ironArmor && LoadProperties.fishingDrops)
  276. theCatch.setItemStack(new ItemStack(Material.IRON_LEGGINGS, 1));
  277. else
  278. theCatch.setItemStack(new ItemStack(Material.RAW_FISH));
  279. break;
  280. case 17:
  281. if(LoadProperties.ironArmor && LoadProperties.fishingDrops)
  282. theCatch.setItemStack(new ItemStack(Material.IRON_CHESTPLATE, 1));
  283. else
  284. theCatch.setItemStack(new ItemStack(Material.RAW_FISH));
  285. break;
  286. case 18:
  287. if(LoadProperties.ironArmor && LoadProperties.fishingDrops)
  288. theCatch.setItemStack(new ItemStack(Material.IRON_HELMET, 1));
  289. else
  290. theCatch.setItemStack(new ItemStack(Material.RAW_FISH));
  291. break;
  292. case 19:
  293. if(LoadProperties.enderPearl && LoadProperties.fishingDrops)
  294. theCatch.setItemStack(new ItemStack(Material.ENDER_PEARL, 1));
  295. else
  296. theCatch.setItemStack(new ItemStack(Material.RAW_FISH));
  297. break;
  298. }
  299. } else
  300. {
  301. theCatch.setItemStack(new ItemStack(Material.RAW_FISH, 1));
  302. }
  303. //Change durability to random value
  304. theCatch.getItemStack().setDurability((short) (Math.random() * theCatch.getItemStack().getType().getMaxDurability())); //Change the damage value
  305. }
  306. private static void getFishingResultsTier3(Player player, PlayerFishEvent event)
  307. {
  308. int randomNum = (int)(Math.random() * 24);
  309. CraftItem theCatch = (CraftItem)event.getCaught();
  310. if(Math.random() * 100 < LoadProperties.fishingDropChanceTier3)
  311. {
  312. switch(randomNum)
  313. {
  314. case 1:
  315. if(LoadProperties.goldArmor && LoadProperties.fishingDrops)
  316. theCatch.setItemStack(new ItemStack(Material.GOLD_BOOTS, 1));
  317. else
  318. theCatch.setItemStack(new ItemStack(Material.RAW_FISH));
  319. break;
  320. case 2:
  321. if(LoadProperties.goldArmor && LoadProperties.fishingDrops)
  322. theCatch.setItemStack(new ItemStack(Material.GOLD_HELMET, 1));
  323. else
  324. theCatch.setItemStack(new ItemStack(Material.RAW_FISH));
  325. break;
  326. case 3:
  327. if(LoadProperties.goldArmor && LoadProperties.fishingDrops)
  328. theCatch.setItemStack(new ItemStack(Material.GOLD_LEGGINGS, 1));
  329. else
  330. theCatch.setItemStack(new ItemStack(Material.RAW_FISH));
  331. break;
  332. case 4:
  333. if(LoadProperties.goldArmor && LoadProperties.fishingDrops)
  334. theCatch.setItemStack(new ItemStack(Material.GOLD_CHESTPLATE, 1));
  335. else
  336. theCatch.setItemStack(new ItemStack(Material.RAW_FISH));
  337. break;
  338. case 5:
  339. if(LoadProperties.ironTools && LoadProperties.fishingDrops)
  340. theCatch.setItemStack(new ItemStack(Material.IRON_AXE, 1));
  341. else
  342. theCatch.setItemStack(new ItemStack(Material.RAW_FISH));
  343. break;
  344. case 6:
  345. if(LoadProperties.ironTools && LoadProperties.fishingDrops)
  346. theCatch.setItemStack(new ItemStack(Material.IRON_PICKAXE, 1));
  347. else
  348. theCatch.setItemStack(new ItemStack(Material.RAW_FISH));
  349. break;
  350. case 7:
  351. if(LoadProperties.ironTools && LoadProperties.fishingDrops)
  352. theCatch.setItemStack(new ItemStack(Material.IRON_SWORD, 1));
  353. else
  354. theCatch.setItemStack(new ItemStack(Material.RAW_FISH));
  355. break;
  356. case 8:
  357. if(LoadProperties.ironTools && LoadProperties.fishingDrops)
  358. theCatch.setItemStack(new ItemStack(Material.IRON_HOE, 1));
  359. else
  360. theCatch.setItemStack(new ItemStack(Material.RAW_FISH));
  361. break;
  362. case 9:
  363. if(LoadProperties.ironTools && LoadProperties.fishingDrops)
  364. theCatch.setItemStack(new ItemStack(Material.IRON_SPADE, 1));
  365. else
  366. theCatch.setItemStack(new ItemStack(Material.RAW_FISH));
  367. break;
  368. case 10:
  369. if(LoadProperties.goldTools && LoadProperties.fishingDrops)
  370. theCatch.setItemStack(new ItemStack(Material.GOLD_AXE, 1));
  371. else
  372. theCatch.setItemStack(new ItemStack(Material.RAW_FISH));
  373. break;
  374. case 11:
  375. if(LoadProperties.goldTools && LoadProperties.fishingDrops)
  376. theCatch.setItemStack(new ItemStack(Material.GOLD_PICKAXE, 1));
  377. else
  378. theCatch.setItemStack(new ItemStack(Material.RAW_FISH));
  379. break;
  380. case 12:
  381. if(LoadProperties.goldTools && LoadProperties.fishingDrops)
  382. theCatch.setItemStack(new ItemStack(Material.GOLD_SWORD, 1));
  383. else
  384. theCatch.setItemStack(new ItemStack(Material.RAW_FISH));
  385. break;
  386. case 13:
  387. if(LoadProperties.goldTools && LoadProperties.fishingDrops)
  388. theCatch.setItemStack(new ItemStack(Material.GOLD_HOE, 1));
  389. else
  390. theCatch.setItemStack(new ItemStack(Material.RAW_FISH));
  391. break;
  392. case 14:
  393. if(LoadProperties.goldTools && LoadProperties.fishingDrops)
  394. theCatch.setItemStack(new ItemStack(Material.GOLD_SPADE, 1));
  395. else
  396. theCatch.setItemStack(new ItemStack(Material.RAW_FISH));
  397. break;
  398. case 15:
  399. if(LoadProperties.ironArmor && LoadProperties.fishingDrops)
  400. theCatch.setItemStack(new ItemStack(Material.IRON_BOOTS, 1));
  401. else
  402. theCatch.setItemStack(new ItemStack(Material.RAW_FISH));
  403. break;
  404. case 16:
  405. if(LoadProperties.ironArmor && LoadProperties.fishingDrops)
  406. theCatch.setItemStack(new ItemStack(Material.IRON_LEGGINGS, 1));
  407. else
  408. theCatch.setItemStack(new ItemStack(Material.RAW_FISH));
  409. break;
  410. case 17:
  411. if(LoadProperties.ironArmor && LoadProperties.fishingDrops)
  412. theCatch.setItemStack(new ItemStack(Material.IRON_CHESTPLATE, 1));
  413. else
  414. theCatch.setItemStack(new ItemStack(Material.RAW_FISH));
  415. break;
  416. case 18:
  417. if(LoadProperties.ironArmor && LoadProperties.fishingDrops)
  418. theCatch.setItemStack(new ItemStack(Material.IRON_HELMET, 1));
  419. else
  420. theCatch.setItemStack(new ItemStack(Material.RAW_FISH));
  421. break;
  422. case 19:
  423. if(LoadProperties.enderPearl && LoadProperties.fishingDrops)
  424. theCatch.setItemStack(new ItemStack(Material.ENDER_PEARL, 1));
  425. else
  426. theCatch.setItemStack(new ItemStack(Material.RAW_FISH));
  427. break;
  428. case 20:
  429. if(LoadProperties.blazeRod && LoadProperties.fishingDrops)
  430. theCatch.setItemStack(new ItemStack(Material.BLAZE_ROD, 1));
  431. else
  432. theCatch.setItemStack(new ItemStack(Material.RAW_FISH));
  433. break;
  434. case 21:
  435. if(LoadProperties.records && LoadProperties.fishingDrops)
  436. theCatch.setItemStack(new ItemStack(Material.RECORD_3, 1));
  437. else
  438. theCatch.setItemStack(new ItemStack(Material.RAW_FISH));
  439. break;
  440. case 22:
  441. if(LoadProperties.records && LoadProperties.fishingDrops)
  442. theCatch.setItemStack(new ItemStack(Material.RECORD_4, 1));
  443. else
  444. theCatch.setItemStack(new ItemStack(Material.RAW_FISH));
  445. break;
  446. case 23:
  447. if(LoadProperties.records && LoadProperties.fishingDrops)
  448. theCatch.setItemStack(new ItemStack(Material.RECORD_5, 1));
  449. else
  450. theCatch.setItemStack(new ItemStack(Material.RAW_FISH));
  451. break;
  452. }
  453. }
  454. else
  455. {
  456. theCatch.setItemStack(new ItemStack(Material.RAW_FISH, 1));
  457. }
  458. //Change durability to random value
  459. theCatch.getItemStack().setDurability((short) (Math.random() * theCatch.getItemStack().getType().getMaxDurability())); //Change the damage value
  460. }
  461. private static void getFishingResultsTier4(Player player, PlayerFishEvent event)
  462. {
  463. int randomNum = (int)(Math.random() * 41);
  464. CraftItem theCatch = (CraftItem)event.getCaught();
  465. if(Math.random() * 100 < LoadProperties.fishingDropChanceTier4)
  466. {
  467. switch(randomNum)
  468. {
  469. case 1:
  470. if(LoadProperties.goldArmor && LoadProperties.fishingDrops)
  471. theCatch.setItemStack(new ItemStack(Material.GOLD_BOOTS, 1));
  472. else
  473. theCatch.setItemStack(new ItemStack(Material.RAW_FISH));
  474. break;
  475. case 2:
  476. if(LoadProperties.goldArmor && LoadProperties.fishingDrops)
  477. theCatch.setItemStack(new ItemStack(Material.GOLD_HELMET, 1));
  478. else
  479. theCatch.setItemStack(new ItemStack(Material.RAW_FISH));
  480. break;
  481. case 3:
  482. if(LoadProperties.goldArmor && LoadProperties.fishingDrops)
  483. theCatch.setItemStack(new ItemStack(Material.GOLD_LEGGINGS, 1));
  484. else
  485. theCatch.setItemStack(new ItemStack(Material.RAW_FISH));
  486. break;
  487. case 4:
  488. if(LoadProperties.goldArmor && LoadProperties.fishingDrops)
  489. theCatch.setItemStack(new ItemStack(Material.GOLD_CHESTPLATE, 1));
  490. else
  491. theCatch.setItemStack(new ItemStack(Material.RAW_FISH));
  492. break;
  493. case 5:
  494. if(LoadProperties.ironTools && LoadProperties.fishingDrops)
  495. theCatch.setItemStack(new ItemStack(Material.IRON_AXE, 1));
  496. else
  497. theCatch.setItemStack(new ItemStack(Material.RAW_FISH));
  498. break;
  499. case 6:
  500. if(LoadProperties.ironTools && LoadProperties.fishingDrops)
  501. theCatch.setItemStack(new ItemStack(Material.IRON_PICKAXE, 1));
  502. else
  503. theCatch.setItemStack(new ItemStack(Material.RAW_FISH));
  504. break;
  505. case 7:
  506. if(LoadProperties.ironTools && LoadProperties.fishingDrops)
  507. theCatch.setItemStack(new ItemStack(Material.IRON_SWORD, 1));
  508. else
  509. theCatch.setItemStack(new ItemStack(Material.RAW_FISH));
  510. break;
  511. case 8:
  512. if(LoadProperties.ironTools && LoadProperties.fishingDrops)
  513. theCatch.setItemStack(new ItemStack(Material.IRON_HOE, 1));
  514. else
  515. theCatch.setItemStack(new ItemStack(Material.RAW_FISH));
  516. break;
  517. case 9:
  518. if(LoadProperties.ironTools && LoadProperties.fishingDrops)
  519. theCatch.setItemStack(new ItemStack(Material.IRON_SPADE, 1));
  520. else
  521. theCatch.setItemStack(new ItemStack(Material.RAW_FISH));
  522. break;
  523. case 10:
  524. if(LoadProperties.goldTools && LoadProperties.fishingDrops)
  525. theCatch.setItemStack(new ItemStack(Material.GOLD_AXE, 1));
  526. else
  527. theCatch.setItemStack(new ItemStack(Material.RAW_FISH));
  528. break;
  529. case 11:
  530. if(LoadProperties.goldTools && LoadProperties.fishingDrops)
  531. theCatch.setItemStack(new ItemStack(Material.GOLD_PICKAXE, 1));
  532. else
  533. theCatch.setItemStack(new ItemStack(Material.RAW_FISH));
  534. break;
  535. case 12:
  536. if(LoadProperties.goldTools && LoadProperties.fishingDrops)
  537. theCatch.setItemStack(new ItemStack(Material.GOLD_SWORD, 1));
  538. else
  539. theCatch.setItemStack(new ItemStack(Material.RAW_FISH));
  540. break;
  541. case 13:
  542. if(LoadProperties.goldTools && LoadProperties.fishingDrops)
  543. theCatch.setItemStack(new ItemStack(Material.GOLD_HOE, 1));
  544. else
  545. theCatch.setItemStack(new ItemStack(Material.RAW_FISH));
  546. break;
  547. case 14:
  548. if(LoadProperties.goldTools && LoadProperties.fishingDrops)
  549. theCatch.setItemStack(new ItemStack(Material.GOLD_SPADE, 1));
  550. else
  551. theCatch.setItemStack(new ItemStack(Material.RAW_FISH));
  552. break;
  553. case 15:
  554. if(LoadProperties.ironArmor && LoadProperties.fishingDrops)
  555. theCatch.setItemStack(new ItemStack(Material.IRON_BOOTS, 1));
  556. else
  557. theCatch.setItemStack(new ItemStack(Material.RAW_FISH));
  558. break;
  559. case 16:
  560. if(LoadProperties.ironArmor && LoadProperties.fishingDrops)
  561. theCatch.setItemStack(new ItemStack(Material.IRON_LEGGINGS, 1));
  562. else
  563. theCatch.setItemStack(new ItemStack(Material.RAW_FISH));
  564. break;
  565. case 17:
  566. if(LoadProperties.ironArmor && LoadProperties.fishingDrops)
  567. theCatch.setItemStack(new ItemStack(Material.IRON_CHESTPLATE, 1));
  568. else
  569. theCatch.setItemStack(new ItemStack(Material.RAW_FISH));
  570. break;
  571. case 18:
  572. if(LoadProperties.ironArmor && LoadProperties.fishingDrops)
  573. theCatch.setItemStack(new ItemStack(Material.IRON_HELMET, 1));
  574. else
  575. theCatch.setItemStack(new ItemStack(Material.RAW_FISH));
  576. break;
  577. case 19:
  578. if(LoadProperties.enderPearl && LoadProperties.fishingDrops)
  579. theCatch.setItemStack(new ItemStack(Material.ENDER_PEARL, 1));
  580. else
  581. theCatch.setItemStack(new ItemStack(Material.RAW_FISH));
  582. break;
  583. case 20:
  584. if(LoadProperties.blazeRod && LoadProperties.fishingDrops)
  585. theCatch.setItemStack(new ItemStack(Material.BLAZE_ROD, 1));
  586. else
  587. theCatch.setItemStack(new ItemStack(Material.RAW_FISH));
  588. break;
  589. case 21:
  590. if(LoadProperties.records && LoadProperties.fishingDrops)
  591. theCatch.setItemStack(new ItemStack(Material.RECORD_3, 1));
  592. else
  593. theCatch.setItemStack(new ItemStack(Material.RAW_FISH));
  594. break;
  595. case 22:
  596. if(LoadProperties.records && LoadProperties.fishingDrops)
  597. theCatch.setItemStack(new ItemStack(Material.RECORD_4, 1));
  598. else
  599. theCatch.setItemStack(new ItemStack(Material.RAW_FISH));
  600. break;
  601. case 23:
  602. if(LoadProperties.records && LoadProperties.fishingDrops)
  603. theCatch.setItemStack(new ItemStack(Material.RECORD_5, 1));
  604. else
  605. theCatch.setItemStack(new ItemStack(Material.RAW_FISH));
  606. break;
  607. case 24:
  608. if(LoadProperties.diamondArmor && LoadProperties.fishingDrops)
  609. theCatch.setItemStack(new ItemStack(Material.DIAMOND_BOOTS, 1));
  610. else
  611. theCatch.setItemStack(new ItemStack(Material.RAW_FISH));
  612. break;
  613. case 25:
  614. if(LoadProperties.diamondArmor && LoadProperties.fishingDrops)
  615. theCatch.setItemStack(new ItemStack(Material.DIAMOND_HELMET, 1));
  616. else
  617. theCatch.setItemStack(new ItemStack(Material.RAW_FISH));
  618. break;
  619. case 26:
  620. if(LoadProperties.diamondArmor && LoadProperties.fishingDrops)
  621. theCatch.setItemStack(new ItemStack(Material.DIAMOND_LEGGINGS, 1));
  622. else
  623. theCatch.setItemStack(new ItemStack(Material.RAW_FISH));
  624. break;
  625. case 27:
  626. if(LoadProperties.diamondArmor && LoadProperties.fishingDrops)
  627. theCatch.setItemStack(new ItemStack(Material.DIAMOND_CHESTPLATE, 1));
  628. else
  629. theCatch.setItemStack(new ItemStack(Material.RAW_FISH));
  630. break;
  631. case 28:
  632. if(LoadProperties.diamondTools && LoadProperties.fishingDrops)
  633. theCatch.setItemStack(new ItemStack(Material.DIAMOND_AXE, 1));
  634. else
  635. theCatch.setItemStack(new ItemStack(Material.RAW_FISH));
  636. break;
  637. case 29:
  638. if(LoadProperties.diamondTools && LoadProperties.fishingDrops)
  639. theCatch.setItemStack(new ItemStack(Material.DIAMOND_PICKAXE, 1));
  640. else
  641. theCatch.setItemStack(new ItemStack(Material.RAW_FISH));
  642. break;
  643. case 30:
  644. if(LoadProperties.diamondTools && LoadProperties.fishingDrops)
  645. theCatch.setItemStack(new ItemStack(Material.DIAMOND_SWORD, 1));
  646. else
  647. theCatch.setItemStack(new ItemStack(Material.RAW_FISH));
  648. break;
  649. case 31:
  650. if(LoadProperties.diamondTools && LoadProperties.fishingDrops)
  651. theCatch.setItemStack(new ItemStack(Material.DIAMOND_HOE, 1));
  652. else
  653. theCatch.setItemStack(new ItemStack(Material.RAW_FISH));
  654. break;
  655. case 32:
  656. if(LoadProperties.diamondTools && LoadProperties.fishingDrops)
  657. theCatch.setItemStack(new ItemStack(Material.DIAMOND_SPADE, 1));
  658. else
  659. theCatch.setItemStack(new ItemStack(Material.RAW_FISH));
  660. break;
  661. case 33:
  662. if(LoadProperties.records && LoadProperties.fishingDrops)
  663. theCatch.setItemStack(new ItemStack(Material.RECORD_6, 1));
  664. else
  665. theCatch.setItemStack(new ItemStack(Material.RAW_FISH));
  666. break;
  667. case 34:
  668. if(LoadProperties.records && LoadProperties.fishingDrops)
  669. theCatch.setItemStack(new ItemStack(Material.RECORD_7, 1));
  670. else
  671. theCatch.setItemStack(new ItemStack(Material.RAW_FISH));
  672. break;
  673. case 35:
  674. if(LoadProperties.records && LoadProperties.fishingDrops)
  675. theCatch.setItemStack(new ItemStack(Material.RECORD_8, 1));
  676. else
  677. theCatch.setItemStack(new ItemStack(Material.RAW_FISH));
  678. break;
  679. case 36:
  680. if(LoadProperties.records && LoadProperties.fishingDrops)
  681. theCatch.setItemStack(new ItemStack(Material.RECORD_9, 1));
  682. else
  683. theCatch.setItemStack(new ItemStack(Material.RAW_FISH));
  684. break;
  685. case 37:
  686. if(LoadProperties.records && LoadProperties.fishingDrops)
  687. theCatch.setItemStack(new ItemStack(Material.RECORD_10, 1));
  688. else
  689. theCatch.setItemStack(new ItemStack(Material.RAW_FISH));
  690. break;
  691. case 38:
  692. if(LoadProperties.records && LoadProperties.fishingDrops)
  693. theCatch.setItemStack(new ItemStack(Material.RECORD_11, 1));
  694. else
  695. theCatch.setItemStack(new ItemStack(Material.RAW_FISH));
  696. break;
  697. case 39:
  698. if(LoadProperties.glowstoneDust && LoadProperties.fishingDrops)
  699. theCatch.setItemStack(new ItemStack(Material.GLOWSTONE_DUST, 16));
  700. else
  701. theCatch.setItemStack(new ItemStack(Material.RAW_FISH));
  702. break;
  703. case 40:
  704. if(LoadProperties.fishingDiamonds && LoadProperties.fishingDrops)
  705. theCatch.setItemStack(new ItemStack(Material.DIAMOND, (int)(Math.random() * 10)));
  706. else
  707. theCatch.setItemStack(new ItemStack(Material.RAW_FISH));
  708. break;
  709. }
  710. } else
  711. {
  712. theCatch.setItemStack(new ItemStack(Material.RAW_FISH, 1));
  713. }
  714. //Change durability to random value
  715. theCatch.getItemStack().setDurability((short) (Math.random() * theCatch.getItemStack().getType().getMaxDurability())); //Change the damage value
  716. }
  717. private static void getFishingResultsTier5(Player player, PlayerFishEvent event)
  718. {
  719. int randomNum = (int)(Math.random() * 50);
  720. CraftItem theCatch = (CraftItem)event.getCaught();
  721. if(Math.random() * 100 < LoadProperties.fishingDropChanceTier5)
  722. {
  723. switch(randomNum)
  724. {
  725. case 1:
  726. if(LoadProperties.goldArmor && LoadProperties.fishingDrops)
  727. theCatch.setItemStack(new ItemStack(Material.GOLD_BOOTS, 1));
  728. else
  729. theCatch.setItemStack(new ItemStack(Material.RAW_FISH));
  730. break;
  731. case 2:
  732. if(LoadProperties.goldArmor && LoadProperties.fishingDrops)
  733. theCatch.setItemStack(new ItemStack(Material.GOLD_HELMET, 1));
  734. else
  735. theCatch.setItemStack(new ItemStack(Material.RAW_FISH));
  736. break;
  737. case 3:
  738. if(LoadProperties.goldArmor && LoadProperties.fishingDrops)
  739. theCatch.setItemStack(new ItemStack(Material.GOLD_LEGGINGS, 1));
  740. else
  741. theCatch.setItemStack(new ItemStack(Material.RAW_FISH));
  742. break;
  743. case 4:
  744. if(LoadProperties.goldArmor && LoadProperties.fishingDrops)
  745. theCatch.setItemStack(new ItemStack(Material.GOLD_CHESTPLATE, 1));
  746. else
  747. theCatch.setItemStack(new ItemStack(Material.RAW_FISH));
  748. break;
  749. case 5:
  750. if(LoadProperties.ironTools && LoadProperties.fishingDrops)
  751. theCatch.setItemStack(new ItemStack(Material.IRON_AXE, 1));
  752. else
  753. theCatch.setItemStack(new ItemStack(Material.RAW_FISH));
  754. break;
  755. case 6:
  756. if(LoadProperties.ironTools && LoadProperties.fishingDrops)
  757. theCatch.setItemStack(new ItemStack(Material.IRON_PICKAXE, 1));
  758. else
  759. theCatch.setItemStack(new ItemStack(Material.RAW_FISH));
  760. break;
  761. case 7:
  762. if(LoadProperties.ironTools && LoadProperties.fishingDrops)
  763. theCatch.setItemStack(new ItemStack(Material.IRON_SWORD, 1));
  764. else
  765. theCatch.setItemStack(new ItemStack(Material.RAW_FISH));
  766. break;
  767. case 8:
  768. if(LoadProperties.ironTools && LoadProperties.fishingDrops)
  769. theCatch.setItemStack(new ItemStack(Material.IRON_HOE, 1));
  770. else
  771. theCatch.setItemStack(new ItemStack(Material.RAW_FISH));
  772. break;
  773. case 9:
  774. if(LoadProperties.ironTools && LoadProperties.fishingDrops)
  775. theCatch.setItemStack(new ItemStack(Material.IRON_SPADE, 1));
  776. else
  777. theCatch.setItemStack(new ItemStack(Material.RAW_FISH));
  778. break;
  779. case 10:
  780. if(LoadProperties.goldTools && LoadProperties.fishingDrops)
  781. theCatch.setItemStack(new ItemStack(Material.GOLD_AXE, 1));
  782. else
  783. theCatch.setItemStack(new ItemStack(Material.RAW_FISH));
  784. break;
  785. case 11:
  786. if(LoadProperties.goldTools && LoadProperties.fishingDrops)
  787. theCatch.setItemStack(new ItemStack(Material.GOLD_PICKAXE, 1));
  788. else
  789. theCatch.setItemStack(new ItemStack(Material.RAW_FISH));
  790. break;
  791. case 12:
  792. if(LoadProperties.goldTools && LoadProperties.fishingDrops)
  793. theCatch.setItemStack(new ItemStack(Material.GOLD_SWORD, 1));
  794. else
  795. theCatch.setItemStack(new ItemStack(Material.RAW_FISH));
  796. break;
  797. case 13:
  798. if(LoadProperties.goldTools && LoadProperties.fishingDrops)
  799. theCatch.setItemStack(new ItemStack(Material.GOLD_HOE, 1));
  800. else
  801. theCatch.setItemStack(new ItemStack(Material.RAW_FISH));
  802. break;
  803. case 14:
  804. if(LoadProperties.goldTools && LoadProperties.fishingDrops)
  805. theCatch.setItemStack(new ItemStack(Material.GOLD_SPADE, 1));
  806. else
  807. theCatch.setItemStack(new ItemStack(Material.RAW_FISH));
  808. break;
  809. case 15:
  810. if(LoadProperties.ironArmor && LoadProperties.fishingDrops)
  811. theCatch.setItemStack(new ItemStack(Material.IRON_BOOTS, 1));
  812. else
  813. theCatch.setItemStack(new ItemStack(Material.RAW_FISH));
  814. break;
  815. case 16:
  816. if(LoadProperties.ironArmor && LoadProperties.fishingDrops)
  817. theCatch.setItemStack(new ItemStack(Material.IRON_LEGGINGS, 1));
  818. else
  819. theCatch.setItemStack(new ItemStack(Material.RAW_FISH));
  820. break;
  821. case 17:
  822. if(LoadProperties.ironArmor && LoadProperties.fishingDrops)
  823. theCatch.setItemStack(new ItemStack(Material.IRON_CHESTPLATE, 1));
  824. else
  825. theCatch.setItemStack(new ItemStack(Material.RAW_FISH));
  826. break;
  827. case 18:
  828. if(LoadProperties.ironArmor && LoadProperties.fishingDrops)
  829. theCatch.setItemStack(new ItemStack(Material.IRON_HELMET, 1));
  830. else
  831. theCatch.setItemStack(new ItemStack(Material.RAW_FISH));
  832. break;
  833. case 19:
  834. if(LoadProperties.enderPearl && LoadProperties.fishingDrops)
  835. theCatch.setItemStack(new ItemStack(Material.ENDER_PEARL, 1));
  836. else
  837. theCatch.setItemStack(new ItemStack(Material.RAW_FISH));
  838. break;
  839. case 20:
  840. if(LoadProperties.blazeRod && LoadProperties.fishingDrops)
  841. theCatch.setItemStack(new ItemStack(Material.BLAZE_ROD, 1));
  842. else
  843. theCatch.setItemStack(new ItemStack(Material.RAW_FISH));
  844. break;
  845. case 21:
  846. if(LoadProperties.records && LoadProperties.fishingDrops)
  847. theCatch.setItemStack(new ItemStack(Material.RECORD_3, 1));
  848. else
  849. theCatch.setItemStack(new ItemStack(Material.RAW_FISH));
  850. break;
  851. case 22:
  852. if(LoadProperties.records && LoadProperties.fishingDrops)
  853. theCatch.setItemStack(new ItemStack(Material.RECORD_4, 1));
  854. else
  855. theCatch.setItemStack(new ItemStack(Material.RAW_FISH));
  856. break;
  857. case 23:
  858. if(LoadProperties.records && LoadProperties.fishingDrops)
  859. theCatch.setItemStack(new ItemStack(Material.RECORD_5, 1));else
  860. theCatch.setItemStack(new ItemStack(Material.RAW_FISH));
  861. break;
  862. case 24:
  863. if(LoadProperties.diamondArmor && LoadProperties.fishingDrops)
  864. theCatch.setItemStack(new ItemStack(Material.DIAMOND_BOOTS, 1));
  865. else
  866. theCatch.setItemStack(new ItemStack(Material.RAW_FISH));
  867. break;
  868. case 25:
  869. if(LoadProperties.diamondArmor && LoadProperties.fishingDrops)
  870. theCatch.setItemStack(new ItemStack(Material.DIAMOND_HELMET, 1));
  871. else
  872. theCatch.setItemStack(new ItemStack(Material.RAW_FISH));
  873. break;
  874. case 26:
  875. if(LoadProperties.diamondArmor && LoadProperties.fishingDrops)
  876. theCatch.setItemStack(new ItemStack(Material.DIAMOND_LEGGINGS, 1));
  877. else
  878. theCatch.setItemStack(new ItemStack(Material.RAW_FISH));
  879. break;
  880. case 27:
  881. if(LoadProperties.diamondArmor && LoadProperties.fishingDrops)
  882. theCatch.setItemStack(new ItemStack(Material.DIAMOND_CHESTPLATE, 1));
  883. else
  884. theCatch.setItemStack(new ItemStack(Material.RAW_FISH));
  885. break;
  886. case 28:
  887. if(LoadProperties.diamondTools && LoadProperties.fishingDrops)
  888. theCatch.setItemStack(new ItemStack(Material.DIAMOND_AXE, 1));
  889. else
  890. theCatch.setItemStack(new ItemStack(Material.RAW_FISH));
  891. break;
  892. case 29:
  893. if(LoadProperties.diamondTools && LoadProperties.fishingDrops)
  894. theCatch.setItemStack(new ItemStack(Material.DIAMOND_PICKAXE, 1));
  895. else
  896. theCatch.setItemStack(new ItemStack(Material.RAW_FISH));
  897. break;
  898. case 30:
  899. if(LoadProperties.diamondTools && LoadProperties.fishingDrops)
  900. theCatch.setItemStack(new ItemStack(Material.DIAMOND_SWORD, 1));
  901. else
  902. theCatch.setItemStack(new ItemStack(Material.RAW_FISH));
  903. break;
  904. case 31:
  905. if(LoadProperties.diamondTools && LoadProperties.fishingDrops)
  906. theCatch.setItemStack(new ItemStack(Material.DIAMOND_HOE, 1));
  907. else
  908. theCatch.setItemStack(new ItemStack(Material.RAW_FISH));
  909. break;
  910. case 32:
  911. if(LoadProperties.diamondTools && LoadProperties.fishingDrops)
  912. theCatch.setItemStack(new ItemStack(Material.DIAMOND_SPADE, 1));
  913. else
  914. theCatch.setItemStack(new ItemStack(Material.RAW_FISH));
  915. break;
  916. case 33:
  917. if(LoadProperties.records && LoadProperties.fishingDrops)
  918. theCatch.setItemStack(new ItemStack(Material.RECORD_6, 1));
  919. else
  920. theCatch.setItemStack(new ItemStack(Material.RAW_FISH));
  921. break;
  922. case 34:
  923. if(LoadProperties.records && LoadProperties.fishingDrops)
  924. theCatch.setItemStack(new ItemStack(Material.RECORD_7, 1));
  925. else
  926. theCatch.setItemStack(new ItemStack(Material.RAW_FISH));
  927. break;
  928. case 35:
  929. if(LoadProperties.records && LoadProperties.fishingDrops)
  930. theCatch.setItemStack(new ItemStack(Material.RECORD_8, 1));
  931. else
  932. theCatch.setItemStack(new ItemStack(Material.RAW_FISH));
  933. break;
  934. case 36:
  935. if(LoadProperties.records && LoadProperties.fishingDrops)
  936. theCatch.setItemStack(new ItemStack(Material.RECORD_9, 1));
  937. else
  938. theCatch.setItemStack(new ItemStack(Material.RAW_FISH));
  939. break;
  940. case 37:
  941. if(LoadProperties.records && LoadProperties.fishingDrops)
  942. theCatch.setItemStack(new ItemStack(Material.RECORD_10, 1));
  943. else
  944. theCatch.setItemStack(new ItemStack(Material.RAW_FISH));
  945. break;
  946. case 38:
  947. if(LoadProperties.records && LoadProperties.fishingDrops)
  948. theCatch.setItemStack(new ItemStack(Material.RECORD_11, 1));
  949. else
  950. theCatch.setItemStack(new ItemStack(Material.RAW_FISH));
  951. break;
  952. case 39:
  953. if(LoadProperties.glowstoneDust && LoadProperties.fishingDrops)
  954. theCatch.setItemStack(new ItemStack(Material.GLOWSTONE_DUST, 16));
  955. else
  956. theCatch.setItemStack(new ItemStack(Material.RAW_FISH));
  957. break;
  958. case 40:
  959. if(LoadProperties.fishingDiamonds && LoadProperties.fishingDrops)
  960. theCatch.setItemStack(new ItemStack(Material.DIAMOND, (int)(Math.random() * 20)));
  961. else
  962. theCatch.setItemStack(new ItemStack(Material.RAW_FISH));
  963. break;
  964. case 41:
  965. if(LoadProperties.diamondArmor && LoadProperties.fishingDrops)
  966. theCatch.setItemStack(new ItemStack(Material.DIAMOND_BOOTS, 1));
  967. else
  968. theCatch.setItemStack(new ItemStack(Material.RAW_FISH));
  969. break;
  970. case 42:
  971. if(LoadProperties.diamondArmor && LoadProperties.fishingDrops)
  972. theCatch.setItemStack(new ItemStack(Material.DIAMOND_HELMET, 1));
  973. else
  974. theCatch.setItemStack(new ItemStack(Material.RAW_FISH));
  975. break;
  976. case 43:
  977. if(LoadProperties.diamondArmor && LoadProperties.fishingDrops)
  978. theCatch.setItemStack(new ItemStack(Material.DIAMOND_LEGGINGS, 1));
  979. else
  980. theCatch.setItemStack(new ItemStack(Material.RAW_FISH));
  981. break;
  982. case 44:
  983. if(LoadProperties.diamondArmor && LoadProperties.fishingDrops)
  984. theCatch.setItemStack(new ItemStack(Material.DIAMOND_CHESTPLATE, 1));
  985. else
  986. theCatch.setItemStack(new ItemStack(Material.RAW_FISH));
  987. break;
  988. case 45:
  989. if(LoadProperties.diamondTools && LoadProperties.fishingDrops)
  990. theCatch.setItemStack(new ItemStack(Material.DIAMOND_AXE, 1));
  991. else
  992. theCatch.setItemStack(new ItemStack(Material.RAW_FISH));
  993. break;
  994. case 46:
  995. if(LoadProperties.diamondTools && LoadProperties.fishingDrops)
  996. theCatch.setItemStack(new ItemStack(Material.DIAMOND_PICKAXE, 1));
  997. else
  998. theCatch.setItemStack(new ItemStack(Material.RAW_FISH));
  999. break;
  1000. case 47:
  1001. if(LoadProperties.diamondTools && LoadProperties.fishingDrops)
  1002. theCatch.setItemStack(new ItemStack(Material.DIAMOND_SWORD, 1));
  1003. else
  1004. theCatch.setItemStack(new ItemStack(Material.RAW_FISH));
  1005. break;
  1006. case 48:
  1007. if(LoadProperties.diamondTools && LoadProperties.fishingDrops)
  1008. theCatch.setItemStack(new ItemStack(Material.DIAMOND_HOE, 1));
  1009. else
  1010. theCatch.setItemStack(new ItemStack(Material.RAW_FISH));
  1011. break;
  1012. case 49:
  1013. if(LoadProperties.diamondTools && LoadProperties.fishingDrops)
  1014. theCatch.setItemStack(new ItemStack(Material.DIAMOND_SPADE, 1));
  1015. else
  1016. theCatch.setItemStack(new ItemStack(Material.RAW_FISH));
  1017. break;
  1018. }
  1019. } else {
  1020. theCatch.setItemStack(new ItemStack(Material.RAW_FISH, 1));
  1021. }
  1022. //Change durability to random value
  1023. theCatch.getItemStack().setDurability((short) (Math.random() * theCatch.getItemStack().getType().getMaxDurability())); //Change the damage value
  1024. }
  1025. public static void processResults(PlayerFishEvent event)
  1026. {
  1027. Player player = event.getPlayer();
  1028. PlayerProfile PP = Users.getProfile(player);
  1029. Fishing.getFishingResults(player, event);
  1030. CraftItem theCatch = (CraftItem)event.getCaught();
  1031. if(theCatch.getItemStack().getType() != Material.RAW_FISH)
  1032. {
  1033. //Inform the player they retrieved a treasure...
  1034. player.sendMessage(mcLocale.getString("Fishing.ItemFound"));
  1035. //Keep track of whether or not the treasure is enchanted
  1036. boolean enchanted = false;
  1037. ItemStack fishingResults = theCatch.getItemStack();
  1038. if(Repair.isArmor(fishingResults) || Repair.isTools(fishingResults))
  1039. {
  1040. //Fishing up items will have a 10% chance to enter them into random enchantment lottery
  1041. if(Math.random() * 100 < 10)
  1042. {
  1043. for(Enchantment x : Enchantment.values())
  1044. {
  1045. if(x.canEnchantItem(fishingResults))
  1046. {
  1047. //Prevent impossible enchantment combinations
  1048. if((fishingResults.containsEnchantment(Enchantment.PROTECTION_ENVIRONMENTAL) || fishingResults.containsEnchantment(Enchantment.PROTECTION_EXPLOSIONS) ||
  1049. fishingResults.containsEnchantment(Enchantment.PROTECTION_FIRE) || fishingResults.containsEnchantment(Enchantment.PROTECTION_PROJECTILE)) &&
  1050. (x.equals(Enchantment.PROTECTION_EXPLOSIONS) || x.equals(Enchantment.PROTECTION_PROJECTILE) || x.equals(Enchantment.PROTECTION_FIRE) || x.equals(Enchantment.PROTECTION_ENVIRONMENTAL))){
  1051. return;
  1052. }
  1053. //More impossible enchantment combinations
  1054. else if((fishingResults.containsEnchantment(Enchantment.DAMAGE_ALL) || fishingResults.containsEnchantment(Enchantment.DAMAGE_ARTHROPODS) || fishingResults.containsEnchantment(Enchantment.DAMAGE_UNDEAD)) &&
  1055. (x.equals(Enchantment.DAMAGE_ALL) || x.equals(Enchantment.DAMAGE_ARTHROPODS) || x.equals(Enchantment.DAMAGE_UNDEAD))){
  1056. return;
  1057. }
  1058. //Even more impossible enchantment combinations
  1059. else if((fishingResults.containsEnchantment(Enchantment.SILK_TOUCH) || fishingResults.containsEnchantment(Enchantment.LOOT_BONUS_BLOCKS)) &&
  1060. (x.equals(Enchantment.SILK_TOUCH) || x.equals(Enchantment.LOOT_BONUS_BLOCKS))){
  1061. return;
  1062. }
  1063. else{
  1064. //Actual chance to have an enchantment is related to your fishing skill
  1065. if(Math.random() * 15 < Fishing.getFishingLootTier(PP))
  1066. {
  1067. enchanted = true;
  1068. int randomEnchantLevel = (int)(Math.random() * x.getMaxLevel()) + 1;
  1069. if(randomEnchantLevel == 0)
  1070. randomEnchantLevel = 1;
  1071. fishingResults.addEnchantment(x, randomEnchantLevel);
  1072. }
  1073. }
  1074. }
  1075. }
  1076. }
  1077. }
  1078. //Inform the player of magical properties
  1079. if(enchanted)
  1080. {
  1081. player.sendMessage(mcLocale.getString("Fishing.MagicFound"));
  1082. }
  1083. }
  1084. }
  1085. public static void shakeMob(PlayerFishEvent event)
  1086. {
  1087. LivingEntity le = (LivingEntity)event.getCaught();
  1088. //Do nothing to players
  1089. if(le instanceof Player)
  1090. return;
  1091. Combat.dealDamage(le, 1, event.getPlayer());
  1092. Location loc = le.getLocation();
  1093. /* Neutral Mobs */
  1094. if(le instanceof Sheep)
  1095. {
  1096. Sheep sheep = (Sheep)le;
  1097. if(!sheep.isSheared())
  1098. {
  1099. Wool wool = new Wool();
  1100. wool.setColor(sheep.getColor());
  1101. ItemStack theWool = wool.toItemStack();
  1102. theWool.setAmount((int)(Math.random() * 6));
  1103. m.mcDropItem(loc, theWool);
  1104. sheep.setSheared(true);
  1105. }
  1106. }
  1107. else if(le instanceof Pig)
  1108. {
  1109. m.mcDropItem(loc, new ItemStack(Material.PORK, 1));
  1110. }
  1111. else if(le instanceof Cow)
  1112. {
  1113. if(Math.random() * 100 < 99){
  1114. m.mcDropItem(loc, new ItemStack(Material.MILK_BUCKET, 1)); //rare chance to drop milk
  1115. }
  1116. else if(Math.random() * 10 < 5){
  1117. m.mcDropItem(loc, new ItemStack(Material.LEATHER, 1));
  1118. }
  1119. else{
  1120. m.mcDropItem(loc, new ItemStack(Material.RAW_BEEF, 1));
  1121. }
  1122. }
  1123. else if(le instanceof Chicken)
  1124. {
  1125. if(Math.random() * 10 <= 7){
  1126. if(Math.random() * 10 < 5){
  1127. m.mcDropItem(loc, new ItemStack(Material.FEATHER, 1));
  1128. }
  1129. else{
  1130. m.mcDropItem(loc, new ItemStack(Material.RAW_CHICKEN, 1));
  1131. }
  1132. }
  1133. else{
  1134. m.mcDropItem(loc, new ItemStack(Material.EGG, 1));
  1135. }
  1136. }
  1137. //need to implement new shearing method
  1138. else if(le instanceof MushroomCow)
  1139. {
  1140. if(Math.random() * 100 < 99){
  1141. if(Math.random() * 10 < 5){
  1142. m.mcDropItem(loc, new ItemStack(Material.MILK_BUCKET, 1)); //rare chance to drop milk
  1143. }
  1144. else{
  1145. m.mcDropItem(loc, new ItemStack(Material.MUSHROOM_SOUP, 1)); //rare chance to drop soup
  1146. }
  1147. }
  1148. else if(Math.random() * 10 <= 7){
  1149. if(Math.random() * 10 < 5){
  1150. m.mcDropItem(loc, new ItemStack(Material.LEATHER, 1));
  1151. }
  1152. else{
  1153. m.mcDropItem(loc, new ItemStack(Material.RAW_BEEF, 1));
  1154. }
  1155. }
  1156. else{
  1157. m.mcDropItem(loc, new ItemStack(Material.RED_MUSHROOM, 3));
  1158. //need some way to remove MushroomCow & replace with regular cow when sheared
  1159. }
  1160. }
  1161. else if(le instanceof Squid)
  1162. {
  1163. m.mcDropItem(loc, new ItemStack(Material.getMaterial(351), 1, (byte)0, (byte)0));
  1164. }
  1165. else if(le instanceof Snowman){
  1166. if(Math.random() * 100 < 99){
  1167. m.mcDropItem(loc, new ItemStack(Material.PUMPKIN, 1)); //rare chance to drop pumpkin
  1168. }
  1169. else{
  1170. m.mcDropItem(loc, new ItemStack(Material.SNOW_BALL, 5));
  1171. }
  1172. }
  1173. /* Hostile Mobs */
  1174. else if(le instanceof Skeleton)
  1175. {
  1176. if(Math.random() * 10 < 5)
  1177. m.mcDropItem(loc, new ItemStack(Material.BONE, 1));
  1178. else
  1179. m.mcDropItem(loc, new ItemStack(Material.ARROW, 3));
  1180. }
  1181. else if(le instanceof Spider)
  1182. {
  1183. if(Math.random() * 10 < 5)
  1184. m.mcDropItem(loc, new ItemStack(Material.SPIDER_EYE, 1));
  1185. else
  1186. m.mcDropItem(loc, new ItemStack(Material.STRING, 1));
  1187. }
  1188. else if(le instanceof Creeper)
  1189. {
  1190. m.mcDropItem(loc, new ItemStack(Material.SULPHUR, 1));
  1191. }
  1192. else if(le instanceof Enderman)
  1193. {
  1194. m.mcDropItem(loc, new ItemStack(Material.ENDER_PEARL, 1));
  1195. }
  1196. else if(le instanceof PigZombie)
  1197. {
  1198. if(Math.random() * 10 < 5)
  1199. m.mcDropItem(loc, new ItemStack(Material.ROTTEN_FLESH, 1));
  1200. else
  1201. m.mcDropItem(loc, new ItemStack(Material.GOLD_NUGGET, 1));
  1202. }
  1203. else if(le instanceof Blaze)
  1204. {
  1205. m.mcDropItem(loc, new ItemStack(Material.BLAZE_ROD, 1));
  1206. }
  1207. else if(le instanceof CaveSpider)
  1208. {
  1209. if(Math.random() * 10 < 5)
  1210. m.mcDropItem(loc, new ItemStack(Material.SPIDER_EYE, 1));
  1211. else
  1212. m.mcDropItem(loc, new ItemStack(Material.STRING, 1));
  1213. }
  1214. else if(le instanceof Ghast)
  1215. {
  1216. if(Math.random() * 10 < 5)
  1217. m.mcDropItem(loc, new ItemStack(Material.SULPHUR, 1));
  1218. else
  1219. m.mcDropItem(loc, new ItemStack(Material.GHAST_TEAR, 1));
  1220. }
  1221. else if(le instanceof MagmaCube)
  1222. {
  1223. m.mcDropItem(loc, new ItemStack(Material.MAGMA_CREAM, 1));
  1224. }
  1225. else if(le instanceof Slime)
  1226. {
  1227. m.mcDropItem(loc, new ItemStack(Material.SLIME_BALL, 1));
  1228. }
  1229. else if(le instanceof Zombie)
  1230. {
  1231. m.mcDropItem(loc, new ItemStack(Material.ROTTEN_FLESH, 1));
  1232. }
  1233. }
  1234. }