Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package me.maniek.drop.listeners;
- import java.util.ArrayList;
- import java.util.Collection;
- import java.util.List;
- import java.util.Random;
- import org.bukkit.Bukkit;
- import org.bukkit.ChatColor;
- import org.bukkit.GameMode;
- import org.bukkit.Material;
- import org.bukkit.block.Block;
- import org.bukkit.enchantments.Enchantment;
- import org.bukkit.entity.Player;
- import org.bukkit.event.EventHandler;
- import org.bukkit.event.EventPriority;
- import org.bukkit.event.Listener;
- import org.bukkit.event.block.BlockBreakEvent;
- import org.bukkit.inventory.ItemStack;
- import me.maniek.drop.objects.Drop;
- import me.maniek.drop.objects.User;
- import me.maniek.drop.objects.utils.DropUtils;
- import me.maniek.drop.objects.utils.UserUtils;
- public class BlockBreakListener implements Listener {
- @SuppressWarnings("deprecation")
- @EventHandler(priority = EventPriority.HIGHEST)
- public static void onBreak(BlockBreakEvent e) {
- if (e.isCancelled()) return;
- Player p = e.getPlayer();
- if (e.getPlayer().getGameMode() == GameMode.SURVIVAL) {
- e.setCancelled(true);
- Block b = e.getBlock();
- Collection<ItemStack> drops = b.getDrops();
- List<ItemStack> iTD = new ArrayList<ItemStack>();
- if (b.getType() == Material.GOLD_ORE || b.getType() == Material.IRON_ORE || b.getType() == Material.EMERALD_ORE
- || b.getType() == Material.DIAMOND_ORE || b.getType() == Material.REDSTONE_ORE || b.getType() == Material.GLOWING_REDSTONE_ORE) {
- drops.clear();
- iTD.clear();
- p.sendMessage("§7Rudy dropia tylko ze stona!");
- }
- if (b.getType() == Material.STONE && b.getData() == 0) {
- User u = UserUtils.getUser(e.getPlayer());
- if (u == null) return;
- for (Drop d : DropUtils.getDrops()) {
- Random rand = new Random();
- int luck = rand.nextInt(101);
- if (luck > d.getSzansa() || p.hasPermission("mDrop.vip") && luck > d.getSzansaVip()) {
- continue;
- }
- if (b.getLocation().getBlockY() > d.getMinY()) {
- continue;
- }
- ItemStack item = p.getInventory().getItemInMainHand();
- ItemStack is = new ItemStack(d.getType());
- if(item == null) continue;
- int ilosc;
- switch (item.getEnchantmentLevel(Enchantment.LOOT_BONUS_BLOCKS)) {
- case 1:
- ilosc = rand.nextInt(d.getFi1m() - d.getFi1() + 1) + d.getFi1();
- break;
- case 2:
- ilosc = rand.nextInt(d.getFi2m() - d.getFi2() + 1) + d.getFi2();
- break;
- case 3:
- ilosc = rand.nextInt(d.getFi3m() - d.getFi3() + 1) + d.getFi3();
- break;
- default:
- ilosc = rand.nextInt(d.getIloscmax() - d.getIlosc() + 1) + d.getIlosc();
- break;
- }
- is.setDurability(d.getData());
- is.setAmount(ilosc);
- iTD.add(is);
- p.sendMessage(ChatColor.translateAlternateColorCodes('&', d.getMsg()) + " §7(" + ilosc + "szt) " + "§7[§c+" + d.getpoints() + "§7]");
- p.giveExp(d.getExp());
- u.addPkt(d.getpoints());
- if (u.getPkt() >= u.getNextPkt()) {
- u.setLvl(u.getLvl() + 1);
- u.setPkt(0);
- u.setNextPkt((u.getNextPkt() * 0.3) + u.getNextPkt());
- p.sendMessage("§aAwansowales na: §6" + u.getLvl() + " §apoziom!");
- }
- if (u.getLvl()%10 == 0) {
- Bukkit.broadcastMessage("Gracz " + p.getName() + " awansowal na " + u.getLvl());
- }
- }
- }
- for (ItemStack is : iTD) {
- if (canGet(is.getType(), p, is.getDurability())) {
- p.getInventory().addItem(is);
- } else {
- b.getWorld().dropItemNaturally(b.getLocation(), is);
- }
- }
- b.setType(Material.AIR);
- for (ItemStack is : drops) {
- if (canGet(is.getType(), p, is.getDurability())) {
- p.getInventory().addItem(is);
- } else b.getWorld().dropItemNaturally(b.getLocation(), is);
- }
- }
- Material m = e.getPlayer().getInventory().getItemInMainHand().getType();
- if(m == Material.WOOD_PICKAXE || m == Material.STONE_PICKAXE || m == Material.IRON_PICKAXE || m == Material.GOLD_PICKAXE || m == Material.DIAMOND_PICKAXE ||
- m == Material.WOOD_AXE || m == Material.STONE_AXE || m == Material.IRON_AXE || m == Material.GOLD_AXE || m == Material.DIAMOND_AXE ||
- m == Material.WOOD_SPADE || m == Material.STONE_SPADE || m == Material.GOLD_SPADE || m == Material.IRON_SPADE || m == Material.DIAMOND_SPADE ||
- m == Material.WOOD_SWORD || m == Material.STONE_SWORD || m == Material.GOLD_SWORD || m == Material.IRON_SWORD || m == Material.DIAMOND_SWORD){
- short damage = calculateDamage(p.getInventory().getItemInMainHand().getEnchantmentLevel(Enchantment.DURABILITY));
- p.getInventory().getItemInMainHand().setDurability((short) (p.getInventory().getItemInMainHand().getDurability() + damage));
- if(p.getInventory().getItemInMainHand().getDurability() > p.getInventory().getItemInMainHand().getType().getMaxDurability()){
- p.getInventory().getItemInMainHand().setType(Material.AIR);
- }
- }
- }
- private static boolean canGet(Material mat, Player p, short data) {
- int count = 0;
- if(p.getInventory().firstEmpty() >= 0) return true;
- for (int i=0; i<p.getInventory().getSize(); i++) {
- try {
- if(p.getInventory().getContents()[i].getType() == mat && p.getInventory().getContents()[i]
- .getAmount() < p.getInventory().getContents()[i].getMaxStackSize() && p.getInventory().getContents()[i].getDurability() == data) {
- count++;
- }
- } catch (Exception e) {
- }
- }
- return count > 0;
- }
- public static short calculateDamage(int level) {
- int percentage = (100/(level + 1));
- Random rand = new Random();
- int chance = rand.nextInt(100);
- if(percentage > chance) {
- return 1;
- }else {
- return 0;
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement