Advertisement
Guest User

Untitled

a guest
Jul 21st, 2018
58
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 20.90 KB | None | 0 0
  1. package me.autismrealms.practiceserver.mechanics.enchants;
  2.  
  3. import me.autismrealms.practiceserver.PracticeServer;
  4. import me.autismrealms.practiceserver.apis.itemapi.ItemAPI;
  5. import me.autismrealms.practiceserver.mechanics.damage.Damage;
  6. import me.autismrealms.practiceserver.mechanics.drops.Mobdrops;
  7. import me.autismrealms.practiceserver.utils.Particles;
  8. import org.bukkit.*;
  9. import org.bukkit.enchantments.Enchantment;
  10. import org.bukkit.entity.EntityType;
  11. import org.bukkit.entity.Firework;
  12. import org.bukkit.entity.Player;
  13. import org.bukkit.event.EventHandler;
  14. import org.bukkit.event.Listener;
  15. import org.bukkit.event.inventory.InventoryClickEvent;
  16. import org.bukkit.event.inventory.InventoryType;
  17. import org.bukkit.event.player.PlayerInteractEvent;
  18. import org.bukkit.inventory.ItemStack;
  19. import org.bukkit.inventory.meta.FireworkMeta;
  20. import org.bukkit.inventory.meta.ItemMeta;
  21.  
  22. import java.lang.reflect.Field;
  23. import java.util.List;
  24. import java.util.Random;
  25.  
  26. public class Enchants implements Listener {
  27. public static Enchantment glow;
  28.  
  29. static {
  30. Enchants.glow = new GlowEnchant(69);
  31. }
  32.  
  33. public static boolean registerNewEnchantment() {
  34. try {
  35. final Field f = Enchantment.class.getDeclaredField("acceptingNew");
  36. f.setAccessible(true);
  37. f.set(null, true);
  38. try {
  39. Enchantment.registerEnchantment(Enchants.glow);
  40. return true;
  41. } catch (IllegalArgumentException ex) {
  42. }
  43. } catch (Exception ex2) {
  44. }
  45. return false;
  46. }
  47.  
  48. public static int getPlus(final ItemStack is) {
  49. if (is.getItemMeta().hasDisplayName()) {
  50. String name = ChatColor.stripColor(is.getItemMeta().getDisplayName());
  51. if (name.startsWith("[+")) {
  52. name = name.split("\\[+")[1].split("\\]")[0];
  53. try {
  54. return Integer.parseInt(name);
  55. } catch (Exception e) {
  56. return 0;
  57. }
  58. }
  59. }
  60. return 0;
  61. }
  62.  
  63. public void onEnable() {
  64. PracticeServer.log.info("[Enchants] has been enabled.");
  65. Bukkit.getServer().getPluginManager().registerEvents(this, PracticeServer.plugin);
  66. registerNewEnchantment();
  67. }
  68.  
  69. public void onDisable() {
  70. PracticeServer.log.info("[Enchants] has been disabled.");
  71. }
  72.  
  73. @EventHandler
  74. public void onMapUse(PlayerInteractEvent event) {
  75. Player player = event.getPlayer();
  76.  
  77. if (player.getInventory().getItemInMainHand() == null) return;
  78. if (player.getInventory().getItemInMainHand().getType() == Material.AIR) return;
  79.  
  80. if (player.getInventory().getItemInMainHand().getType() == Material.EMPTY_MAP) event.setCancelled(true);
  81. }
  82.  
  83. @EventHandler
  84. public void onProtectionApply(InventoryClickEvent event) {
  85. if (event.getCursor() == null || event.getCursor().getType() == Material.AIR) return;
  86. if (event.getCurrentItem() == null || event.getCurrentItem().getType() == Material.AIR) return;
  87. if (!event.getInventory().getName().equalsIgnoreCase("container.crafting")) return;
  88. if (event.getSlotType() == InventoryType.SlotType.ARMOR) return;
  89.  
  90. ItemStack itemStack = event.getCursor();
  91. Player player = (Player) event.getWhoClicked();
  92.  
  93. if (!ItemAPI.isProtectionScroll(itemStack)) return;
  94.  
  95. ItemStack itemStack1 = event.getCurrentItem();
  96.  
  97. if (ItemAPI.isProtected(itemStack1)) {
  98.  
  99. player.sendMessage(ChatColor.RED + "ITEM ALREADY PROTECTED");
  100. player.playSound(player.getLocation(), Sound.BLOCK_NOTE_BASS, 10F, 1F);
  101.  
  102. return;
  103. }
  104.  
  105. if (!ItemAPI.canEnchant(itemStack1, itemStack)) {
  106. player.sendMessage(ChatColor.RED + "ITEM CAN'T BE PROTECTED: MUST BE THE SAME TIER");
  107. player.playSound(player.getLocation(), Sound.BLOCK_NOTE_BASS, 10F, 1F);
  108.  
  109. return;
  110. }
  111. event.setCancelled(true);
  112. event.setCurrentItem(ItemAPI.makeProtected(itemStack1));
  113.  
  114. player.sendMessage(ChatColor.GREEN.toString() + ChatColor.BOLD + " -> ITEM PROTECTED");
  115. player.sendMessage(ChatColor.GRAY.toString() + ChatColor.ITALIC + " " + itemStack1.getItemMeta().getDisplayName());
  116. Firework fw = (Firework) player.getWorld().spawnEntity(player.getLocation(), EntityType.FIREWORK);
  117. FireworkMeta fwm = fw.getFireworkMeta();
  118. FireworkEffect effect = FireworkEffect.builder().flicker(false).withColor(Color.GREEN).withFade(Color.GREEN).with(FireworkEffect.Type.STAR).trail(true).build();
  119. fwm.addEffect(effect);
  120. fwm.setPower(0);
  121. fw.setFireworkMeta(fwm);
  122.  
  123. if (itemStack.getAmount() == 1) {
  124. event.setCursor(new ItemStack(Material.AIR));
  125. } else {
  126. ItemStack newStack = itemStack.clone();
  127. newStack.setAmount(newStack.getAmount() - 1);
  128. event.setCursor(newStack);
  129. }
  130. }
  131.  
  132. @SuppressWarnings("deprecation")
  133. @EventHandler
  134. public void onInvClick(final InventoryClickEvent e) throws Exception {
  135. final Player p = (Player) e.getWhoClicked();
  136. if (!e.getInventory().getName().equalsIgnoreCase("container.crafting")) {
  137. return;
  138. }
  139. if (e.getSlotType() == InventoryType.SlotType.ARMOR) {
  140. return;
  141. }
  142. if (e.getCursor() != null && e.getCursor().getType() == Material.EMPTY_MAP
  143. && e.getCursor().getItemMeta().getDisplayName() != null
  144. && e.getCursor().getItemMeta().getDisplayName().contains("Armor")
  145. && e.getCurrentItem() != null
  146. && (e.getCurrentItem().getType().name().contains("_HELMET")
  147. || e.getCurrentItem().getType().name().contains("_CHESTPLATE")
  148. || e.getCurrentItem().getType().name().contains("_LEGGINGS")
  149. || e.getCurrentItem().getType().name().contains("_BOOTS"))
  150. && e.getCurrentItem().getItemMeta().getLore() != null
  151. && e.getCurrentItem().getItemMeta().hasDisplayName()
  152. && ((Mobdrops.isBlueLeather(e.getCurrentItem()) && e.getCurrentItem().getType().name().contains("LEATHER_") && e.getCursor().getItemMeta().getDisplayName().contains("Frozen"))
  153. || (e.getCurrentItem().getType().name().contains("GOLD_") && e.getCursor().getItemMeta().getDisplayName().contains("Gold"))
  154. || (e.getCurrentItem().getType().name().contains("DIAMOND_") && e.getCursor().getItemMeta().getDisplayName().contains("Diamond"))
  155. || (e.getCurrentItem().getType().name().contains("IRON_") && e.getCursor().getItemMeta().getDisplayName().contains("Iron"))
  156. || (e.getCurrentItem().getType().name().contains("CHAINMAIL_") && e.getCursor().getItemMeta().getDisplayName().contains("Chainmail"))
  157. || (!Mobdrops.isBlueLeather(e.getCurrentItem()) && e.getCurrentItem().getType().name().contains("LEATHER_") && e.getCursor().getItemMeta().getDisplayName().contains("Leather")))) {
  158. final List<String> curlore = e.getCurrentItem().getItemMeta().getLore();
  159. String name = e.getCurrentItem().getItemMeta().getDisplayName();
  160. if (name.startsWith(ChatColor.RED + "[+")) {
  161. name = name.split("] ")[1];
  162. }
  163. final double beforehp = Damage.getHp(e.getCurrentItem());
  164. final double beforehpgen = Damage.getHps(e.getCurrentItem());
  165. final int beforenrg = Damage.getEnergy(e.getCurrentItem());
  166. final int plus = getPlus(e.getCurrentItem());
  167. if (plus < 3) {
  168. if (e.getCursor().getAmount() > 1) {
  169. e.getCursor().setAmount(e.getCursor().getAmount() - 1);
  170. } else if (e.getCursor().getAmount() == 1) {
  171. e.setCursor(null);
  172. }
  173. p.getWorld().playSound(p.getLocation(), Sound.ENTITY_PLAYER_LEVELUP, 1.0f, 1.25f);
  174. final Firework fw = (Firework) p.getWorld().spawnEntity(p.getLocation(), EntityType.FIREWORK);
  175. final FireworkMeta fwm = fw.getFireworkMeta();
  176. final FireworkEffect effect = FireworkEffect.builder().flicker(false).withColor(Color.YELLOW).withFade(Color.YELLOW).with(FireworkEffect.Type.BURST).trail(true).build();
  177. fwm.addEffect(effect);
  178. fwm.setPower(0);
  179. fw.setFireworkMeta(fwm);
  180. e.setCancelled(true);
  181. double added = beforehp * 0.05;
  182. if (added < 1.0) {
  183. added = 1.0;
  184. }
  185. final int newhp = (int) (beforehp + added);
  186. final ItemStack is = e.getCurrentItem();
  187. final ItemMeta im = is.getItemMeta();
  188. im.setDisplayName(ChatColor.RED + "[+" + (plus + 1) + "] " + name);
  189. final List<String> lore = im.getLore();
  190. lore.set(1, ChatColor.RED + "HP: +" + newhp);
  191. if (curlore.get(2).contains("ENERGY REGEN")) {
  192. lore.set(2, ChatColor.RED + "ENERGY REGEN: +" + (beforenrg + 1) + "%");
  193. } else if (curlore.get(2).contains("HP REGEN")) {
  194. double addedhps = beforehpgen * 0.05;
  195. if (addedhps < 1.0) {
  196. addedhps = 1.0;
  197. }
  198. final int newhps = (int) (beforehpgen + addedhps);
  199. lore.set(2, ChatColor.RED + "HP REGEN: +" + newhps + " HP/s");
  200. }
  201. im.setLore(lore);
  202. is.setItemMeta(im);
  203. e.setCurrentItem(is);
  204. }
  205. if (plus >= 3 && plus < 12) {
  206. if (e.getCursor().getAmount() > 1) {
  207. e.getCursor().setAmount(e.getCursor().getAmount() - 1);
  208. } else if (e.getCursor().getAmount() == 1) {
  209. e.setCursor(null);
  210. }
  211. final Random random = new Random();
  212. final int drop = random.nextInt(100) + 1;
  213. int doifail = 0;
  214. int[] chance = {0, 0, 0, 30, 40, 50, 65, 75, 80, 85, 90, 95};
  215. if(plus > 2 && plus < 12) doifail = chance[plus];
  216. if (PracticeServer.BETA_VENDOR_ENABLED) {
  217. doifail = 0;
  218. }
  219. e.setCancelled(true);
  220. if (drop <= doifail) {
  221. p.getWorld().playSound(p.getLocation(), Sound.BLOCK_LAVA_EXTINGUISH, 2.0f, 1.25f);
  222. Particles.LAVA.display(0.0f, 0.0f, 0.0f, 5.0f, 10, p.getEyeLocation(), 20.0);
  223.  
  224. if (ItemAPI.isProtected(e.getCurrentItem())) {
  225. e.setCurrentItem(ItemAPI.removeProtection(e.getCurrentItem()));
  226. e.getWhoClicked().sendMessage(ChatColor.GREEN + "YOUR PROTECTION SCROLL HAS PREVENTED THIS ITEM FROM VANISHING");
  227.  
  228. return;
  229. }
  230.  
  231. e.setCurrentItem(null);
  232. } else {
  233. p.getWorld().playSound(p.getLocation(), Sound.ENTITY_PLAYER_LEVELUP, 1.0f, 1.25f);
  234. final Firework fw2 = (Firework) p.getWorld().spawnEntity(p.getLocation(), EntityType.FIREWORK);
  235. final FireworkMeta fwm2 = fw2.getFireworkMeta();
  236. final FireworkEffect effect2 = FireworkEffect.builder().flicker(false).withColor(Color.YELLOW).withFade(Color.YELLOW).with(FireworkEffect.Type.BURST).trail(true).build();
  237. fwm2.addEffect(effect2);
  238. fwm2.setPower(0);
  239. fw2.setFireworkMeta(fwm2);
  240. e.setCancelled(true);
  241. double added2 = beforehp * 0.05;
  242. if (added2 < 1.0) {
  243. added2 = 1.0;
  244. }
  245. final int newhp2 = (int) (beforehp + added2);
  246. final ItemStack is2 = e.getCurrentItem();
  247. final ItemMeta im2 = is2.getItemMeta();
  248. im2.setDisplayName(ChatColor.RED + "[+" + (plus + 1) + "] " + name);
  249. final List<String> lore2 = im2.getLore();
  250. lore2.set(1, ChatColor.RED + "HP: +" + newhp2);
  251. if (curlore.get(2).contains("ENERGY REGEN")) {
  252. lore2.set(2, ChatColor.RED + "ENERGY REGEN: +" + (beforenrg + 1) + "%");
  253. } else if (curlore.get(2).contains("HP REGEN")) {
  254. double addedhps2 = beforehpgen * 0.05;
  255. if (addedhps2 < 1.0) {
  256. addedhps2 = 1.0;
  257. }
  258. final int newhps2 = (int) (beforehpgen + addedhps2);
  259. lore2.set(2, ChatColor.RED + "HP REGEN: +" + newhps2 + " HP/s");
  260. }
  261. im2.setLore(lore2);
  262. is2.setItemMeta(im2);
  263. is2.addUnsafeEnchantment(Enchants.glow, 1);
  264. e.setCurrentItem(is2);
  265. e.setCurrentItem(ItemAPI.removeProtection(is2));
  266. }
  267. }
  268. }
  269. if (e.getCursor() != null && e.getCursor().getType() == Material.EMPTY_MAP
  270. && e.getCursor().getItemMeta().getDisplayName() != null
  271. && e.getCursor().getItemMeta().getDisplayName().contains("Weapon")
  272. && e.getCurrentItem() != null && (e.getCurrentItem().getType().name().contains("_SWORD")
  273. || e.getCurrentItem().getType().name().contains("_HOE")
  274. || e.getCurrentItem().getType().name().contains("_SPADE")
  275. || e.getCurrentItem().getType().name().contains("_AXE"))
  276. && e.getCurrentItem().getItemMeta().getLore() != null
  277. && e.getCurrentItem().getItemMeta().hasDisplayName()
  278. && ((e.getCurrentItem().getItemMeta().getDisplayName().contains(ChatColor.BLUE.toString()) && e.getCurrentItem().getType().name().contains("DIAMOND_") && e.getCursor().getItemMeta().getDisplayName().contains("Frozen"))
  279. || (e.getCurrentItem().getType().name().contains("GOLD_") && e.getCursor().getItemMeta().getDisplayName().contains("Gold"))
  280. || (!e.getCurrentItem().getItemMeta().getDisplayName().contains(ChatColor.BLUE.toString()) && e.getCurrentItem().getType().name().contains("DIAMOND_") && e.getCursor().getItemMeta().getDisplayName().contains("Diamond"))
  281. || (e.getCurrentItem().getType().name().contains("IRON_") && e.getCursor().getItemMeta().getDisplayName().contains("Iron"))
  282. || (e.getCurrentItem().getType().name().contains("STONE_") && e.getCursor().getItemMeta().getDisplayName().contains("Stone"))
  283. || (e.getCurrentItem().getType().name().contains("WOOD_") && e.getCursor().getItemMeta().getDisplayName().contains("Wooden")))) {
  284. String name2 = e.getCurrentItem().getItemMeta().getDisplayName();
  285. if (name2.startsWith(ChatColor.RED + "[+")) {
  286. name2 = name2.split("] ")[1];
  287. }
  288. final double beforemin = Damage.getDamageRange(e.getCurrentItem()).get(0);
  289. final double beforemax = Damage.getDamageRange(e.getCurrentItem()).get(1);
  290. final int plus2 = getPlus(e.getCurrentItem());
  291. if (plus2 < 3) {
  292. if (e.getCursor().getAmount() > 1) {
  293. e.getCursor().setAmount(e.getCursor().getAmount() - 1);
  294. } else if (e.getCursor().getAmount() == 1) {
  295. e.setCursor(null);
  296. }
  297. p.getWorld().playSound(p.getLocation(), Sound.ENTITY_PLAYER_LEVELUP, 1.0f, 1.25f);
  298. final Firework fw3 = (Firework) p.getWorld().spawnEntity(p.getLocation(), EntityType.FIREWORK);
  299. final FireworkMeta fwm3 = fw3.getFireworkMeta();
  300. final FireworkEffect effect3 = FireworkEffect.builder().flicker(false).withColor(Color.YELLOW).withFade(Color.YELLOW).with(FireworkEffect.Type.BURST).trail(true).build();
  301. fwm3.addEffect(effect3);
  302. fwm3.setPower(0);
  303. fw3.setFireworkMeta(fwm3);
  304. e.setCancelled(true);
  305. double addedmin = beforemin * 0.05;
  306. if (addedmin < 1.0) {
  307. addedmin = 1.0;
  308. }
  309. final int min = (int) (beforemin + addedmin);
  310. double addedmax = beforemax * 0.05;
  311. if (addedmax < 1.0) {
  312. addedmax = 1.0;
  313. }
  314. final int max = (int) (beforemax + addedmax);
  315. final ItemStack is3 = e.getCurrentItem();
  316. final ItemMeta im3 = is3.getItemMeta();
  317. im3.setDisplayName(ChatColor.RED + "[+" + (plus2 + 1) + "] " + name2);
  318. final List<String> lore3 = im3.getLore();
  319. lore3.set(0, ChatColor.RED + "DMG: " + min + " - " + max);
  320. im3.setLore(lore3);
  321. is3.setItemMeta(im3);
  322. e.setCurrentItem(is3);
  323. }
  324. if (plus2 >= 3 && plus2 < 12) {
  325. if (e.getCursor().getAmount() > 1) {
  326. e.getCursor().setAmount(e.getCursor().getAmount() - 1);
  327. } else if (e.getCursor().getAmount() == 1) {
  328. e.setCursor(null);
  329. }
  330. final Random random2 = new Random();
  331. final int drop2 = random2.nextInt(100) + 1;
  332. int doifail2 = 0;
  333. if (plus2 == 3) {
  334. doifail2 = 30;
  335. }
  336. else if (plus2 == 4) {
  337. doifail2 = 40;
  338. }
  339. else if (plus2 == 5) {
  340. doifail2 = 50;
  341. }
  342. else if (plus2 == 6) {
  343. doifail2 = 65;
  344. }
  345. else if (plus2 == 7) {
  346. doifail2 = 75;
  347. }
  348. else if (plus2 == 8) {
  349. doifail2 = 80;
  350. }
  351. else if (plus2 == 9) {
  352. doifail2 = 85;
  353. }
  354. else if (plus2 == 10) {
  355. doifail2 = 90;
  356. }
  357. else if (plus2 == 11) {
  358. doifail2 = 95;
  359. }
  360. if(PracticeServer.BETA_VENDOR_ENABLED){
  361. doifail2 = 0;
  362. }
  363. e.setCancelled(true);
  364. if (drop2 <= doifail2) {
  365. p.getWorld().playSound(p.getLocation(), Sound.BLOCK_LAVA_EXTINGUISH, 2.0f, 1.25f);
  366. Particles.LAVA.display(0.0f, 0.0f, 0.0f, 5.0f, 10, p.getEyeLocation(), 20.0);
  367.  
  368. if (ItemAPI.isProtected(e.getCurrentItem())) {
  369. e.setCurrentItem(ItemAPI.removeProtection(e.getCurrentItem()));
  370.  
  371. e.getWhoClicked().sendMessage(ChatColor.GREEN + "YOUR PROTECTION SCROLL HAS PREVENTED THIS ITEM FROM VANISHING");
  372.  
  373. return;
  374. }
  375.  
  376. e.setCurrentItem(null);
  377. } else {
  378. p.getWorld().playSound(p.getLocation(), Sound.BLOCK_LAVA_EXTINGUISH, 1.0f, 1.25f);
  379. final Firework fw4 = (Firework) p.getWorld().spawnEntity(p.getLocation(), EntityType.FIREWORK);
  380. final FireworkMeta fwm4 = fw4.getFireworkMeta();
  381. final FireworkEffect effect4 = FireworkEffect.builder().flicker(false).withColor(Color.YELLOW).withFade(Color.YELLOW).with(FireworkEffect.Type.BURST).trail(true).build();
  382. fwm4.addEffect(effect4);
  383. fwm4.setPower(0);
  384. fw4.setFireworkMeta(fwm4);
  385. e.setCancelled(true);
  386. double addedmin2 = beforemin * 0.05;
  387. if (addedmin2 < 1.0) {
  388. addedmin2 = 1.0;
  389. }
  390. final int min2 = (int) (beforemin + addedmin2);
  391. double addedmax2 = beforemax * 0.05;
  392. if (addedmax2 < 1.0) {
  393. addedmax2 = 1.0;
  394. }
  395. final int max2 = (int) (beforemax + addedmax2);
  396. final ItemStack is4 = e.getCurrentItem();
  397. final ItemMeta im4 = is4.getItemMeta();
  398. im4.setDisplayName(ChatColor.RED + "[+" + (plus2 + 1) + "] " + name2);
  399. final List<String> lore4 = im4.getLore();
  400. lore4.set(0, ChatColor.RED + "DMG: " + min2 + " - " + max2);
  401. im4.setLore(lore4);
  402. is4.setItemMeta(im4);
  403. is4.addUnsafeEnchantment(Enchants.glow, 1);
  404. e.setCurrentItem(is4);
  405. e.setCurrentItem(ItemAPI.removeProtection(is4));
  406. }
  407. }
  408. }
  409. }
  410. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement