Advertisement
Maniek2341

Untitled

Feb 4th, 2018
66
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.67 KB | None | 0 0
  1. package me.maniek.drop.listeners;
  2.  
  3. import java.util.ArrayList;
  4. import java.util.Collection;
  5. import java.util.List;
  6. import java.util.Random;
  7.  
  8. import org.bukkit.Bukkit;
  9. import org.bukkit.ChatColor;
  10. import org.bukkit.GameMode;
  11. import org.bukkit.Material;
  12. import org.bukkit.block.Block;
  13. import org.bukkit.enchantments.Enchantment;
  14. import org.bukkit.entity.Player;
  15. import org.bukkit.event.EventHandler;
  16. import org.bukkit.event.EventPriority;
  17. import org.bukkit.event.Listener;
  18. import org.bukkit.event.block.BlockBreakEvent;
  19. import org.bukkit.inventory.ItemStack;
  20.  
  21. import me.maniek.drop.objects.Drop;
  22. import me.maniek.drop.objects.User;
  23. import me.maniek.drop.objects.utils.DropUtils;
  24. import me.maniek.drop.objects.utils.UserUtils;
  25.  
  26. public class BlockBreakListener implements Listener {
  27.  
  28. @SuppressWarnings("deprecation")
  29. @EventHandler(priority = EventPriority.HIGHEST)
  30. public static void onBreak(BlockBreakEvent e) {
  31. if (e.isCancelled()) return;
  32.  
  33. Player p = e.getPlayer();
  34. if (e.getPlayer().getGameMode() == GameMode.SURVIVAL) {
  35. e.setCancelled(true);
  36. Block b = e.getBlock();
  37. Collection<ItemStack> drops = b.getDrops();
  38. List<ItemStack> iTD = new ArrayList<ItemStack>();
  39. if (b.getType() == Material.GOLD_ORE || b.getType() == Material.IRON_ORE || b.getType() == Material.EMERALD_ORE
  40. || b.getType() == Material.DIAMOND_ORE || b.getType() == Material.REDSTONE_ORE || b.getType() == Material.GLOWING_REDSTONE_ORE) {
  41. drops.clear();
  42. iTD.clear();
  43. p.sendMessage("§7Rudy dropia tylko ze stona!");
  44. }
  45. if (b.getType() == Material.STONE && b.getData() == 0) {
  46. User u = UserUtils.getUser(e.getPlayer());
  47. if (u == null) return;
  48. for (Drop d : DropUtils.getDrops()) {
  49. Random rand = new Random();
  50. int luck = rand.nextInt(101);
  51. if (luck > d.getSzansa() || p.hasPermission("mDrop.vip") && luck > d.getSzansaVip()) {
  52. continue;
  53. }
  54. if (b.getLocation().getBlockY() > d.getMinY()) {
  55. continue;
  56. }
  57. ItemStack item = p.getInventory().getItemInMainHand();
  58. ItemStack is = new ItemStack(d.getType());
  59. if(item == null) continue;
  60.  
  61. int ilosc;
  62. switch (item.getEnchantmentLevel(Enchantment.LOOT_BONUS_BLOCKS)) {
  63. case 1:
  64. ilosc = rand.nextInt(d.getFi1m() - d.getFi1() + 1) + d.getFi1();
  65. break;
  66. case 2:
  67. ilosc = rand.nextInt(d.getFi2m() - d.getFi2() + 1) + d.getFi2();
  68. break;
  69. case 3:
  70. ilosc = rand.nextInt(d.getFi3m() - d.getFi3() + 1) + d.getFi3();
  71. break;
  72. default:
  73. ilosc = rand.nextInt(d.getIloscmax() - d.getIlosc() + 1) + d.getIlosc();
  74. break;
  75. }
  76. is.setDurability(d.getData());
  77. is.setAmount(ilosc);
  78. iTD.add(is);
  79. p.sendMessage(ChatColor.translateAlternateColorCodes('&', d.getMsg()) + " §7(" + ilosc + "szt) " + "§7[§c+" + d.getpoints() + "§7]");
  80. p.giveExp(d.getExp());
  81. u.addPkt(d.getpoints());
  82. if (u.getPkt() >= u.getNextPkt()) {
  83. u.setLvl(u.getLvl() + 1);
  84. u.setPkt(0);
  85. u.setNextPkt((u.getNextPkt() * 0.3) + u.getNextPkt());
  86. p.sendMessage("§aAwansowales na: §6" + u.getLvl() + " §apoziom!");
  87. }
  88. if (u.getLvl()%10 == 0) {
  89. Bukkit.broadcastMessage("Gracz " + p.getName() + " awansowal na " + u.getLvl());
  90. }
  91. }
  92. }
  93. for (ItemStack is : iTD) {
  94. if (canGet(is.getType(), p, is.getDurability())) {
  95. p.getInventory().addItem(is);
  96. } else {
  97. b.getWorld().dropItemNaturally(b.getLocation(), is);
  98. }
  99. }
  100. b.setType(Material.AIR);
  101. for (ItemStack is : drops) {
  102. if (canGet(is.getType(), p, is.getDurability())) {
  103. p.getInventory().addItem(is);
  104. } else b.getWorld().dropItemNaturally(b.getLocation(), is);
  105. }
  106. }
  107.  
  108. Material m = e.getPlayer().getInventory().getItemInMainHand().getType();
  109.  
  110. if(m == Material.WOOD_PICKAXE || m == Material.STONE_PICKAXE || m == Material.IRON_PICKAXE || m == Material.GOLD_PICKAXE || m == Material.DIAMOND_PICKAXE ||
  111. m == Material.WOOD_AXE || m == Material.STONE_AXE || m == Material.IRON_AXE || m == Material.GOLD_AXE || m == Material.DIAMOND_AXE ||
  112. m == Material.WOOD_SPADE || m == Material.STONE_SPADE || m == Material.GOLD_SPADE || m == Material.IRON_SPADE || m == Material.DIAMOND_SPADE ||
  113. m == Material.WOOD_SWORD || m == Material.STONE_SWORD || m == Material.GOLD_SWORD || m == Material.IRON_SWORD || m == Material.DIAMOND_SWORD){
  114. short damage = calculateDamage(p.getInventory().getItemInMainHand().getEnchantmentLevel(Enchantment.DURABILITY));
  115. p.getInventory().getItemInMainHand().setDurability((short) (p.getInventory().getItemInMainHand().getDurability() + damage));
  116. if(p.getInventory().getItemInMainHand().getDurability() > p.getInventory().getItemInMainHand().getType().getMaxDurability()){
  117. p.getInventory().getItemInMainHand().setType(Material.AIR);
  118. }
  119. }
  120. }
  121.  
  122. private static boolean canGet(Material mat, Player p, short data) {
  123. int count = 0;
  124. if(p.getInventory().firstEmpty() >= 0) return true;
  125. for (int i=0; i<p.getInventory().getSize(); i++) {
  126. try {
  127. if(p.getInventory().getContents()[i].getType() == mat && p.getInventory().getContents()[i]
  128. .getAmount() < p.getInventory().getContents()[i].getMaxStackSize() && p.getInventory().getContents()[i].getDurability() == data) {
  129. count++;
  130. }
  131. } catch (Exception e) {
  132. }
  133. }
  134. return count > 0;
  135. }
  136. public static short calculateDamage(int level) {
  137. int percentage = (100/(level + 1));
  138. Random rand = new Random();
  139. int chance = rand.nextInt(100);
  140. if(percentage > chance) {
  141. return 1;
  142. }else {
  143. return 0;
  144. }
  145. }
  146. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement