void in an invalid type for the variable onBlockPlace

Discussion in 'Plugin Development' started by da_Do, Mar 31, 2018.

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

    da_Do

    Good evening, i have this problem on the line 42.
    can someone help me ?
    thanks
    Code:
    package me.kits.src;
    
    import java.util.Random;
    
    import org.bukkit.Material;
    import org.bukkit.block.Block;
    import org.bukkit.block.BlockFace;
    import org.bukkit.command.Command;
    import org.bukkit.command.CommandSender;
    import org.bukkit.entity.Player;
    import org.bukkit.event.EventHandler;
    import org.bukkit.event.block.BlockPlaceEvent;
    import org.bukkit.inventory.ItemStack;
    import org.bukkit.plugin.java.JavaPlugin;
    
    public class Main extends JavaPlugin {
    
        public void onEnable() {
            getLogger().info("Plugin Started");
        }
    
        public void onDisable() {
            getLogger().info("Plugin disabled");
        }
    
        @Override
        public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) {
            if (cmd.getName().equalsIgnoreCase("kits")) {
                if (!(sender instanceof Player)) {
                    sender.sendMessage("Only players can use this command");
                    return false;
                }
               
                ItemStack less10 = new ItemStack(Material.APPLE, 64);
                ItemStack less20 = new ItemStack(Material.ARROW, 64);
                ItemStack less30 = new ItemStack(Material.EGG, 16);
                ItemStack accept = new ItemStack(Material.SIGN, 1);
                ItemStack decline = new ItemStack(Material.ACACIA_STAIRS, 1);
               
               
       
                public void onBlockPlace(BlockPlaceEvent event) {
                   
                    Block block = event.getBlock();
                    Material material = block.getType();
                    Random r = new Random();
                    Player player = (Player) sender;
                           
                    int n = r.nextInt(30);
                    if(n <= 10) {
                        player.getInventory().addItem(accept, decline);
                        if(material == Material.SIGN) {
                            player.getInventory().addItem(less10);
                        } else {
                            event.setCancelled(true);
                        }
                                       
                    }
                    if(n <= 20 && n > 10) {
                        player.getInventory().addItem(accept, decline);
                        if(material == Material.SIGN) {
                            player.getInventory().addItem(less20);
                        } else {
                            event.setCancelled(true);
                        }
                       
                    }
                    if(n <= 30 && n > 20) {
                        player.getInventory().addItem(accept, decline);
                        if(material == Material.SIGN) {
                            player.getInventory().addItem(less20);
                        } else {
                            event.setCancelled(true);
                       
                        }
                    }
                }
            }
        }
    }
    
    
    
    
    
    
    
    
     
  2. You cant put an event in a method
     
  3. Offline

    da_Do

    @Blackwing_Forged Okey, i repaired it . No error, but now that plugin is not working . How to do that ? Thanks
     
  4. Offline

    Zombie_Striker

    @da_Do
    Can you post the updated code?

    Also,you need to register the class in order for all of the events in the class to be called, and you need the @EventHandler tag in order for bukkit to see the event for each method.
     
  5. Offline

    da_Do

    Code:
    package me.kits.src;
    
    import java.util.Random;
    
    import org.bukkit.Material;
    import org.bukkit.block.Block;
    import org.bukkit.command.Command;
    import org.bukkit.command.CommandSender;
    import org.bukkit.entity.Player;
    import org.bukkit.event.block.BlockPlaceEvent;
    import org.bukkit.inventory.ItemStack;
    import org.bukkit.plugin.PluginManager;
    import org.bukkit.plugin.java.JavaPlugin;
    
    public class Main extends JavaPlugin {
    
        public void onEnable() {
            getLogger().info("Plugin Started");
        }
    
        public void onDisable() {
            getLogger().info("Plugin disabled");
        }
       
        public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) {
            if (cmd.getName().equalsIgnoreCase("kits")) {
                if (!(sender instanceof Player)) {
                    sender.sendMessage("Only players can use this command");
                   
                }
            }
            return true;
        }
               
                ItemStack less10 = new ItemStack(Material.APPLE, 64);
                ItemStack less20 = new ItemStack(Material.ARROW, 64);
                ItemStack less30 = new ItemStack(Material.EGG, 16);
                ItemStack accept = new ItemStack(Material.SIGN, 1);
                ItemStack decline = new ItemStack(Material.ACACIA_STAIRS, 1);
               
               
       
                public void onBlockPlace(BlockPlaceEvent event) {
                   
                    Block block = event.getBlock();
                    Material material = block.getType();
                    Random r = new Random();
                    Player player = event.getPlayer();
                           
                    int n = r.nextInt(30);
                    if(n <= 10) {
                        player.getInventory().addItem(accept, decline);
                        if(material == Material.SIGN) {
                            player.getInventory().addItem(less10);
                        } else {
                            event.setCancelled(true);
                        }
                                       
                    }
                    if(n <= 20 && n > 10) {
                        player.getInventory().addItem(accept, decline);
                        if(material == Material.SIGN) {
                            player.getInventory().addItem(less20);
                        } else {
                            event.setCancelled(true);
                        }
                       
                    }
                    if(n <= 30 && n > 20) {
                        player.getInventory().addItem(accept, decline);
                        if(material == Material.SIGN) {
                            player.getInventory().addItem(less20);
                        } else {
                            event.setCancelled(true);
                    }
                }
            }
       
        }
    
    
       
    
    can u help me please ?
     
  6. Offline

    Zombie_Striker

    @da_Do
    1. Add the @EventHandler tag above onBlockPlace.
    2. In the onEnable, add Bukkit.getPluginManager().registerEvents(this,this) and let the class implement Listener.
     
Thread Status:
Not open for further replies.

Share This Page