Solved Plugin does not detect, an interact on Villager

Discussion in 'Spigot Plugin Development' started by Bluecrafter35, Jul 25, 2018.

  1. Hey so i have this:

    Code (Java):
    public class Villagerklick implements Listener
    {
        private static ArrayList<Auftrag> holzfaellerauftraege = new ArrayList<>();
        private static ArrayList<Auftrag> schmiedauftraege = new ArrayList<>();
        private static ArrayList<Auftrag> fischerauftraege = new ArrayList<>();
        private static ArrayList<Auftrag> bergbauauftraege = new ArrayList<>();
       
        public static void fillHolzfaeller(Auftrag a)
        {
            holzfaellerauftraege.add(a);
        }
        public static void fillSchmied(Auftrag a)
        {
            schmiedauftraege.add(a);
        }
        public static void fillFischer(Auftrag a)
        {
            fischerauftraege.add(a);
        }
        public static void fillMiner(Auftrag a)
        {
            bergbauauftraege.add(a);
        }
       
        public static void clearHolzfaeller()
        {
            holzfaellerauftraege.clear();
        }
        public static void clearSchmied()
        {
            schmiedauftraege.clear();
        }
        public static void clearFischer()
        {
            fischerauftraege.clear();
        }
        public static void clearMiner()
        {
            bergbauauftraege.clear();
        }
       
        @SuppressWarnings("deprecation")
        public void onNPCClick(PlayerInteractEntityEvent e)
        {
            Entity ent = e.getRightClicked();
            Player p = e.getPlayer();
            System.out.println("In NPC Click");
            if((ent instanceof org.bukkit.entity.Villager))
            {
                System.out.println("Villager erkannt");
                if(ent.getName().equalsIgnoreCase("Holzfäller"))
                {
                    System.out.println("Holzfaeller erkannt");
                    Random randy = new Random();
                    int auftrag = randy.nextInt(holzfaellerauftraege.size()-1 + 0+1)+0;
                    String id = holzfaellerauftraege.get(auftrag).getId()+"";
                    ItemStack item = null;
                    if(id.contains(";"))
                    {
                        String[] parts = id.split(":");
                        item = new ItemStack(Integer.parseInt(parts[0]), holzfaellerauftraege.get(auftrag).getMenge());
                        MaterialData data = new MaterialData(Integer.parseInt(parts[0]), Byte.parseByte(parts[1]));
                        item.setData(data);
                    }
                    else
                    {
                        item = new ItemStack(Integer.parseInt(id),holzfaellerauftraege.get(auftrag).getMenge());
                    }
                    p.sendMessage("§eHolzmichel");
                    p.sendMessage("§7---------------------------------------");
                    p.sendMessage("§7"+holzfaellerauftraege.get(auftrag).getBeschreibung());
                    p.sendMessage("§7---------------------------------------");
                    p.sendMessage("§7Notwendig: "+holzfaellerauftraege.get(auftrag).getMenge()+" an "+item.getType());
                   
                   
                    /*ArrayList<String> auftraege = new ArrayList<>();
                    ResultSet rs = Main.mysql.query("SELECT * FROM `jobdata` WHERE JOBART="+"Holzfäller");
                    String auftrag;
                    try {
                        while(rs.next())
                        {
                           
                        }
                    } catch (SQLException e1) {
                        e1.printStackTrace();
                    }
                    */

                }
            }
        }
    }
    The Problem is that if i click on a Villager it does nothing, not even this line:
    Code (Java):
    System.out.println("In NPC Click");
    Here is my Main:
    Code (Java):
    getServer().getPluginManager().registerEvents(new Eventfirstjoin(), this);
            getServer().getPluginManager().registerEvents(new Eventkill(), this);
            getServer().getPluginManager().registerEvents(new KeineErze(), this);
            getServer().getPluginManager().registerEvents(this, this);
            getServer().getPluginManager().registerEvents(new TodeundArt(),this);
            getServer().getPluginManager().registerEvents(new TabCompleteDeny(), this);
            getServer().getPluginManager().registerEvents(new PlayerToggleFlightListener(), this);
            getServer().getPluginManager().registerEvents(new EnderChestClick(), this);
            getServer().getPluginManager().registerEvents(new PlayerLeftEvent(),this);
            getServer().getPluginManager().registerEvents(new ChatListener(), this);
            getServer().getPluginManager().registerEvents(new NoSchalplatte(), this);
            getServer().getPluginManager().registerEvents(new Villagerklick(), this);
     
  2. Try adding @EventHandler to your method, like so:

    Code (Java):
     @SuppressWarnings("deprecation")
        @EventHandler
        public void onNPCClick(PlayerInteractEntityEvent e)
        {
            Entity ent = e.getRightClicked();
            Player p = e.getPlayer();
            System.out.println("In NPC Click");
            if((ent instanceof org.bukkit.entity.Villager))
            {
                System.out.println("Villager erkannt");
                if(ent.getName().equalsIgnoreCase("Holzfäller"))
                {
                    System.out.println("Holzfaeller erkannt");
                    Random randy = new Random();
                    int auftrag = randy.nextInt(holzfaellerauftraege.size()-1 + 0+1)+0;
                    String id = holzfaellerauftraege.get(auftrag).getId()+"";
                    ItemStack item = null;
                    if(id.contains(";"))
                    {
                        String[] parts = id.split(":");
                        item = new ItemStack(Integer.parseInt(parts[0]), holzfaellerauftraege.get(auftrag).getMenge());
                        MaterialData data = new MaterialData(Integer.parseInt(parts[0]), Byte.parseByte(parts[1]));
                        item.setData(data);
                    }
                    else
                    {
                        item = new ItemStack(Integer.parseInt(id),holzfaellerauftraege.get(auftrag).getMenge());
                    }
                    p.sendMessage("§eHolzmichel");
                    p.sendMessage("§7---------------------------------------");
                    p.sendMessage("§7"+holzfaellerauftraege.get(auftrag).getBeschreibung());
                    p.sendMessage("§7---------------------------------------");
                    p.sendMessage("§7Notwendig: "+holzfaellerauftraege.get(auftrag).getMenge()+" an "+item.getType());
                 
                 
                    /*ArrayList<String> auftraege = new ArrayList<>();
                    ResultSet rs = Main.mysql.query("SELECT * FROM `jobdata` WHERE JOBART="+"Holzfäller");
                    String auftrag;
                    try {
                        while(rs.next())
                        {
                         
                        }
                    } catch (SQLException e1) {
                        e1.printStackTrace();
                    }
                    */

                }
            }
        }
     
  3. Ah thanks completely forgot about the EventHandler ^^