AutoPickup and Breakable Items

Discussion in 'Plugin Development' started by plisov, Jun 21, 2017.

Thread Status:
Not open for further replies.
  1. Offline

    plisov

    Im working on an AutoPickup plugin and what I've noticed is that the tools being used to mine dont seem to lose durability. I was wondering how I could still make the tool breakable. Here is the code I currently have.

    Code:
    package me.plisov.extra.autopickup;
    
    import java.io.File;
    import java.io.IOException;
    
    import org.bukkit.Bukkit;
    import org.bukkit.GameMode;
    import org.bukkit.Material;
    import org.bukkit.configuration.file.FileConfiguration;
    import org.bukkit.configuration.file.YamlConfiguration;
    import org.bukkit.entity.Player;
    import org.bukkit.event.EventHandler;
    import org.bukkit.event.Listener;
    import org.bukkit.event.block.BlockBreakEvent;
    import org.bukkit.inventory.ItemStack;
    import org.bukkit.plugin.Plugin;
    
    import com.sk89q.worldguard.bukkit.WorldGuardPlugin;
    
    import me.plisov.extra.scoreboard.Scoreboard;
    import net.md_5.bungee.api.ChatColor;
    
    public class AutoPickup implements Listener {
    
        @EventHandler
        public void onBlockBreak(BlockBreakEvent event) {
    
            FileConfiguration blocks = null;
            File blocksfile = new File("plugins" + File.separator + "Extra" + File.separator + "blocks-broken.yml");
    
            blocks = YamlConfiguration.loadConfiguration(blocksfile);
    
            Player player = (Player) event.getPlayer();
    
            Scoreboard.createScoreboard(player, blocks, blocksfile);
    
            WorldGuardPlugin guard = getWorldGuard();
    
            if (player.getGameMode() != GameMode.CREATIVE) {
                for (ItemStack is : event.getBlock().getDrops()) {
    
                    if (guard.canBuild(player, event.getBlock())) {
    
                        blocks.set(player.getName(), blocks.getInt(player.getName()) + 1);
                        try {
                            blocks.save(blocksfile);
                        } catch (IOException e) {
                        }
    
                        if(player.getInventory().getItemInMainHand().getItemMeta().hasLore()) {
                           
                           
                           
                            if (player.getInventory().getItemInMainHand().getItemMeta().getLore()
                                    .contains(ChatColor.GRAY + "Smelting I")) {
    
                                if (event.getBlock().getType().equals(Material.IRON_ORE)
                                        || event.getBlock().getType().equals(Material.GOLD_ORE)) {
    
                                    if (event.getBlock().getType().equals(Material.IRON_ORE)) {
    
                                        player.getInventory().addItem(new ItemStack(Material.IRON_INGOT));
                                        event.getBlock().setType(Material.AIR);
    
                                    }
    
                                    if (event.getBlock().getType().equals(Material.GOLD_ORE)) {
    
                                        player.getInventory().addItem(new ItemStack(Material.GOLD_INGOT));
                                        event.getBlock().setType(Material.AIR);
                                    }
    
                                } else {
                                    player.getInventory().addItem(is);
                                    event.getBlock().setType(Material.AIR);
                                }
    
                            } else {
                                player.getInventory().addItem(is);
                                event.getBlock().setType(Material.AIR);
                            }
                        } else {
                            player.getInventory().addItem(is);
                            event.getBlock().setType(Material.AIR);
                        }
                    }
                }
            }
        }
    
        private WorldGuardPlugin getWorldGuard() {
            Plugin plugin = Bukkit.getServer().getPluginManager().getPlugin("WorldGuard");
    
            // WorldGuard may not be loaded
            if (plugin == null || !(plugin instanceof WorldGuardPlugin)) {
                return null; // Maybe you want throw an exception instead
            }
    
            return (WorldGuardPlugin) plugin;
        }
    }
    
     
  2. Offline

    plisov

    Any ideas?
     
  3. Offline

    Zombie_Striker

    @plisov
    Maybe try not setting the block to air, and instead clearing all the drops.
     
  4. Offline

    plisov

    I tried doing event.getBlock().getDrops().clear() however it doesn't clear the drops.
     
  5. Offline

    Zombie_Striker

    @plisov
    If you're on 1.12, you can use event.setBlockDrops(false) to stop the block from dropping anything.
     
  6. Offline

    plisov

    Unfortunately I'm not on 1.12
     
Thread Status:
Not open for further replies.

Share This Page