Events Firing Mutliple Times

Discussion in 'Plugin Development' started by TehVoyager, Mar 1, 2014.

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

    TehVoyager

    Hello, I Have A Walking Dead Server and I am trying to make a Zombie Bites System. My Problem Is That The Entity Damage Events Are Firing Multiple Times I've Tried These 2 Methods But Both Fire Multiple Times:
    Code:java
    1. @EventHandler
    2. public void onEvent1(EntityDamageEvent e){
    3.  
    4. if(e instanceof EntityDamageEvent){
    5. //Fires Multiple Times For 1 Event.
    6. }
    7. }
    8.  
    9. @EventHandler
    10. public void onEvent1(EntityDamageByEntityEvent e){
    11. //Fires Multiple Times!
    12. }


    That's Not My Exact Code As I check If The Entity Is A Player And Damager Is A Zombie Buy That's The Main Part.
    Is There any Other Events To Try Or any Way Around This That You Guys Know? Thank You.
     
  2. Offline

    jthort

    TehVoyager Check your imports, sometimes if you use multiple classes and import it twice it fires multiple times

    Also make sure you register your event properly
     
  3. Offline

    TehVoyager

    jthort
    This Is My Code:

    Import:
    Code:java
    1. pm.registerEvents(new BiteManager(), this);


    Listener Class:
    Code:java
    1. package com.mcadventure.nick.walking;
    2.  
    3. import java.util.ArrayList;
    4.  
    5. import org.bukkit.entity.Player;
    6. import org.bukkit.entity.Zombie;
    7. import org.bukkit.event.EventHandler;
    8. import org.bukkit.event.Listener;
    9. import org.bukkit.event.entity.EntityDamageByEntityEvent;
    10.  
    11. public class BiteManager implements Listener{
    12.  
    13. public ArrayList<String> recentbit = new ArrayList<String>();
    14. public ArrayList<String> screwed = new ArrayList<String>();
    15. public ArrayList<String> amputated = new ArrayList<String>();
    16.  
    17. public static Main plugin;
    18.  
    19. public BiteManager(Main m){
    20. plugin = m;
    21. }
    22.  
    23. public BiteManager(){
    24.  
    25. }
    26.  
    27. static BiteManager bm = new BiteManager();
    28.  
    29. public static BiteManager getManager(){
    30. return bm;
    31. }
    32.  
    33. @EventHandler
    34. public void onZombieBite(EntityDamageByEntityEvent e){
    35. if(e.getDamager() instanceof Zombie && e.getEntity() instanceof Player){
    36. Player p = (Player) e.getEntity();
    37. //Fires Multiple Times
    38. }
    39. }
    40.  
    41. }
    42.  


    Don't Think I've Imported Anything Wrong. Thanks.
     
  4. Offline

    jthort

  5. Offline

    TehVoyager

    That's How I've Learned to make "Manager" Classes, I Have One Constructor That I Run On My onEnable In The Main Class Where I Initiate the plugin Variable and Another to Create A BitesManager Without Passing In Main, I'm not amazing at Java but that's how I learned. Right Now Am I Making 2 Instances That Both Fire The Event?

    I Kind Of Found A Solution, See For YourSelf:
    Code:java
    1. package com.mcadventure.nick.walking;
    2.  
    3. import org.bukkit.entity.Player;
    4. import org.bukkit.entity.Zombie;
    5. import org.bukkit.event.EventHandler;
    6. import org.bukkit.event.Listener;
    7. import org.bukkit.event.entity.EntityDamageByEntityEvent;
    8.  
    9. public class BiteListener implements Listener {
    10.  
    11. long l = 0;
    12.  
    13. @EventHandler
    14. public void onZombieBite(EntityDamageByEntityEvent e){
    15. if(e.getDamager() instanceof Zombie && e.getEntity() instanceof Player){
    16. if(System.currentTimeMillis() - l < 1500){
    17. e.setCancelled(true);
    18. }else{
    19. e.setDamage(e.getDamage() * 2);
    20. l = System.currentTimeMillis();
    21.  
    22. }
    23. //10th digit cant be same
    24. }
    25. }
    26.  
    27. }

    jthort

    EDIT by Moderator: merged posts, please use the edit button instead of double posting.
     
    Last edited by a moderator: Jun 7, 2016
Thread Status:
Not open for further replies.

Share This Page