Converting Block Event to Action

Discussion in 'Plugin Development' started by skimberk1, May 8, 2011.

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

    skimberk1

    I'm really new to both Java AND Bukkit development and was wondering how I could migrate from using the BLOCK_DAMAGE event to using the LEFT_CLICK_BLOCK action.
    Here's my code :

    BP.class
    Code:
    package me.sebastian.BP;
    
    import java.util.ArrayList;
    import java.util.HashMap;
    import java.util.logging.Logger;
    
    import org.bukkit.ChatColor;
    import org.bukkit.block.Block;
    import org.bukkit.command.Command;
    import org.bukkit.command.CommandSender;
    import org.bukkit.entity.Player;
    import org.bukkit.event.Event;
    import org.bukkit.plugin.Plugin;
    import org.bukkit.plugin.PluginManager;
    import org.bukkit.plugin.java.JavaPlugin;
     
    import com.nijiko.permissions.PermissionHandler;
    import com.nijikokun.bukkit.Permissions.Permissions;
    
    public class BP extends JavaPlugin{
        private static final Logger log = Logger.getLogger("Minecraft");
        private final BPBlockListener blockListener = new BPBlockListener(this);
        public PermissionHandler permissionHandler;
        public final HashMap<Player, ArrayList<Block>> bpUsers = new HashMap<Player, ArrayList<Block>>();
    
        private void setupPermissions() {
            Plugin permissionsPlugin = this.getServer().getPluginManager().getPlugin("Permissions");
            if (this.permissionHandler == null) {
                if (permissionsPlugin != null) {
                    this.permissionHandler = ((Permissions) permissionsPlugin).getHandler();
                    log.info("[Delete Block]: Using Permissions");
                } else {
                    log.info("[Delete Block]: Permissions not detected, defaulting to OP");
                }
            }
        }
    
        @Override
        public void onDisable() {
            log.info("[Delete Block]: Plugin Disabled");
    
        }
    
        @Override
        public void onEnable() {
            setupPermissions();
            PluginManager pm = this.getServer().getPluginManager();
            pm.registerEvent(Event.Type.BLOCK_DAMAGE, blockListener, Event.Priority.Normal, this);
            log.info("[Delete Block]: Plugin Started");
    
        }
        public boolean onCommand(CommandSender sender, Command cmd, String commandLabel, String[] args){
            if ((this).permissionHandler.has((Player) sender, "deleteblock.use")) {
                if(commandLabel.equalsIgnoreCase("delete") || commandLabel.equalsIgnoreCase("deleteblock")){
                    toggleBP((Player) sender);
                    return true;
                }
                return false;
            }
            return true;
        }
        public void toggleBP(Player player){
            if(enabled(player)){
                this.bpUsers.remove(player);
                player.sendMessage(ChatColor.GREEN + "Delete Block Disabled");
            }else{
                this.bpUsers.put(player, null);
                player.sendMessage(ChatColor.GREEN + "Delete Block Enabled");
            }
        }
        public boolean enabled(Player player){
            return this.bpUsers.containsKey(player);
        }
    
    }
    
    BPBlockListener.class
    Code:
    package me.sebastian.BP;
    
    import org.bukkit.block.Block;
    import org.bukkit.entity.Player;
    import org.bukkit.event.block.BlockDamageEvent;
    import org.bukkit.event.block.BlockListener;
    import org.bukkit.inventory.ItemStack;
    
    public class BPBlockListener extends BlockListener {
        public static BP plugin;
    
        public BPBlockListener(BP instance) {
            plugin = instance;
        }
        public void onBlockDamage(BlockDamageEvent event) {
            Block block = event.getBlock();
            Player player = event.getPlayer();
            if(plugin.enabled(player)){
    
                int blockId = block.getTypeId();
                block.setTypeId(0);
                player.getInventory().addItem(new ItemStack[] {
                        new ItemStack(blockId, 1)
                });
    
            }
        }
    
    }
    
    Thanks a lot!
     
  2. Offline

    cvenomz

Thread Status:
Not open for further replies.

Share This Page