PlayerInteractEvent, Why Such A Huge Console Errors?

Discussion in 'Plugin Development' started by yewtree8, Apr 20, 2014.

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

    yewtree8

    So This Is My Code

    Code:java
    1. package me.mat.woodenwands;
    2.  
    3. import java.util.Arrays;
    4. import java.util.List;
    5.  
    6. import org.bukkit.ChatColor;
    7. import org.bukkit.Material;
    8. import org.bukkit.entity.Player;
    9. import org.bukkit.event.EventHandler;
    10. import org.bukkit.event.Listener;
    11. import org.bukkit.event.block.Action;
    12. import org.bukkit.event.player.PlayerInteractEvent;
    13. import org.bukkit.inventory.ItemStack;
    14. import org.bukkit.inventory.meta.ItemMeta;
    15.  
    16. public class ArrowWandListener implements Listener {
    17.  
    18.  
    19.  
    20. public ItemStack ArrowWand = setMeta(new ItemStack(Material.WOOD_HOE), ChatColor.BOLD + " " + ChatColor.GOLD + "Arrow Wand",
    21. Arrays.asList(ChatColor.AQUA + "Right Click To Shoot Arrow"));
    22.  
    23.  
    24. @EventHandler
    25. public void onArrowWandInteract(PlayerInteractEvent event) {
    26. Player player = event.getPlayer();
    27. Action action = event.getAction();
    28. Material block = event.getClickedBlock().getType();
    29. if(player.getItemInHand().equals(ArrowWand) && event.getAction().equals(Action.RIGHT_CLICK_AIR)) {
    30.  
    31.  
    32. player.sendMessage("This Event Actually Worked");
    33.  
    34.  
    35. } else {
    36.  
    37. return;
    38.  
    39. }
    40.  
    41.  
    42.  
    43.  
    44.  
    45.  
    46. }
    47.  
    48.  
    49. public ItemStack setMeta(ItemStack material, String name, List<String> lore) {
    50. if(((material == null) || material.getType() == Material.AIR) || (name == null && lore == null))
    51.  
    52. return null;
    53.  
    54. ItemMeta im = material.getItemMeta();
    55. if (name != null)
    56. im.setDisplayName(name);
    57. if(lore != null) {
    58. im.setLore(lore);
    59.  
    60. material.setItemMeta(im);
    61. return material;
    62.  
    63. }
    64. return material;
    65.  
    66.  
    67. }
    68.  
    69.  
    70. }
    71.  



    ok it seems dandy? i've tried returning it and shizz but it doesn't work. ¬_¬


    The (FULL) Console Error (By popular demand of Funergy)


    http://imgur.com/cpzD4of
     
  2. Offline

    Funergy

    Learn to read stack traces
    and that isn't the whole error
     
  3. Offline

    yewtree8

    Funergy Thanks for that great bit of advice now can you help me?
     
  4. Code:java
    1. public void onArrowWandInteract(PlayerInteractEvent event) {
    2. if(event.getClickedBlock() == null) return;
    3. Player player = event.getPlayer();
    4. Action action = event.getAction();
    5. Material block = event.getClickedBlock().getType();
     
  5. Offline

    Funergy


    Code:
        @EventHandler
        public void onArrowWandInteract(PlayerInteractEvent event) {
        Player player = event.getPlayer();
        Action action = event.getAction();
        Material block = event.getClickedBlock().getType();
       
        ItemStack is = new ItemStack(Material.WOOD_HOE, 1);
        ItemMeta im = is.getItemMeta();
        im.setDisplayName(ChatColor.BOLD + " " + ChatColor.GOLD + "Arrow Wand");
        im.setLore(Arrays.asList(ChatColor.AQUA + "Right Click To Shoot Arrow"));
     
        if(player.getItemInHand().getType().equals(Material.WOOD_HOE) && player.getItemInHand().getItemMeta().equals(im)  && event.getAction().equals(Action.RIGHT_CLICK_AIR)) {
           
       
        player.sendMessage("This Event Actually Worked");
       
       
        } else {
       
        return;
       
        }
       
       
       
       
       
       
        }
     
  6. I forgot this:
    Code:java
    1. if(player.getItemInHand() == null) return;


    Caused by: java.lang.NullPointerException

    EDIT by Moderator: merged posts, please use the edit button instead of double posting.
     
    Last edited by a moderator: Jun 7, 2016
  7. Offline

    Funergy

    org.Bukkit.event.EventException
     
  8. Offline

    Not2EXceL

    It can't pass the even to the plugin therefore throwing the EventException due to the NullPointerException in his listener.
     
  9. Offline

    Funergy

    Okay I din't see that in the error... my fault....
     
  10. Offline

    qlimax5000

    NPE at line 28, this is caused if you don't click while looking at a nearby block. .getBlock() will return nothing and cause errors if you look into the air. Remove this line if not needed or add a null check.
     
Thread Status:
Not open for further replies.

Share This Page