Blocking block breaks

Discussion in 'Plugin Development' started by McCastleWars, Feb 4, 2013.

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

    McCastleWars

    So I have no idea why this isn't working. I have @EventHandler ontop of the listener. I have registered the Listener in my onEnable()

    Heres the code.. I did some debugging its not getting called at all..

    Code:
    package me.borlea.castlewars.listeners;
     
    import me.borlea.castlewars.CastleWars;
     
    import org.bukkit.entity.Player;
    import org.bukkit.event.EventHandler;
    import org.bukkit.event.Listener;
    import org.bukkit.event.block.BlockBreakEvent;
     
    public class BlockBreakListener implements Listener{
     
        @EventHandler
        public void AntiBlockBreak(BlockBreakEvent event){
            Player player = event.getPlayer();
            if(CastleWars.blueTeam.contains(player) || CastleWars.redTeam.contains(player) || CastleWars.spectate.contains(player)){
                event.setCancelled(true);
            }
        }
    }
    

    onEnable()

    Code:
            registerEvents();
    RegisterEvents

    Code:
        public void registerEvents(){
            PluginManager pm = getServer().getPluginManager();
     
            pm.registerEvents(this.signListener, this);
            pm.registerEvents(this.leaveListener, this);
            pm.registerEvents(this.tdmListener, this);
            pm.registerEvents(this.spawnListener, this);
            pm.registerEvents(this.antiallypvpListener, this);
            pm.registerEvents(this.blockbreakListener, this);
            pm.registerEvents(this.antiarmorListener, this);
        }
    All events load correctly. Except spawn Listener. Still developing that part and leaveListener broke somehow..
     
  2. Offline

    jtjj222

    McCastleWars
    In your lsitener, you are using CastleWars.blueTeam/redTeam statically. This means that they won't update (and will always contain nothing). Instead, send an instance of your main class to the constructor of the BlockBreakListener:

    Code:java
    1.  
    2. package me.borlea.castlewars.listeners;
    3.  
    4. import me.borlea.castlewars.CastleWars;
    5.  
    6. import org.bukkit.entity.Player;
    7. import org.bukkit.event.EventHandler;
    8. import org.bukkit.event.Listener;
    9. import org.bukkit.event.block.BlockBreakEvent;
    10.  
    11. public class BlockBreakListener implements Listener{
    12.  
    13. CastleWars plugin;
    14.  
    15. public BlockBreakListener(CastleWars plugin) {
    16. this.plugin = plugin;
    17. }
    18.  
    19. @EventHandler
    20. public void AntiBlockBreak(BlockBreakEvent event){
    21. Player player = event.getPlayer();
    22. if(plugin.blueTeam.contains(player) || plugin.redTeam.contains(player) || CastleWars.spectate.contains(player)){
    23. event.setCancelled(true);
    24. }
    25. }
    26. }
    27.  
     
  3. Offline

    McCastleWars

    How would I fix the error this produceses
    public final BlockBreakListener blockbreakListener = new BlockBreakListener();

    Because ive tried plugin in = new BlockBreakListener(plugin)

    Its either public final BlockBreakListener blockbreakListener = new BlockBreakListener(plugin); and it didn't work
     
  4. Offline

    jtjj222

    new BlockBreakListener(this);
     
  5. Offline

    McCastleWars

    still can break blocks. Nvm fixed it
     
  6. Offline

    jtjj222

    are you setting the teams properly?
     
  7. Offline

    McCastleWars

    Yeah.. I wasn't setting the players to strings.. but you helped me for half of it
     
Thread Status:
Not open for further replies.

Share This Page