Whats Wrong with this code?

Discussion in 'Plugin Development' started by finalblade1234, Jan 17, 2013.

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

    finalblade1234

    Hello i just wanna know whats wrong with this code (im new to java)

    Main Class:
    Code:
    package org.hopto.finalcraft.finalblade1234;
     
    import org.bukkit.plugin.java.JavaPlugin;
     
        public class Main extends JavaPlugin {
            public void onEnable(){   
                getCommand("mute").setExecutor(new FacePalmListener());
                getServer().getPluginManager().registerEvents(new FacePalmListener(), this);
             
    }
    }
    
    facepalm listner class:
    Code:
    package org.hopto.finalcraft.finalblade1234;
     
    import java.util.ArrayList;
     
    import org.bukkit.ChatColor;
    import org.bukkit.command.Command;
    import org.bukkit.command.CommandExecutor;
    import org.bukkit.command.CommandSender;
    import org.bukkit.entity.Player;
    import org.bukkit.event.EventHandler;
    import org.bukkit.event.Listener;
    import org.bukkit.event.player.AsyncPlayerChatEvent;
    import static org.bukkit.Bukkit.getPlayer;
     
    public class FacePalmListener implements CommandExecutor, Listener {
          ArrayList<String> mutedlist = new ArrayList<String>();
        @Override
        public boolean onCommand(CommandSender sender, Command cmd, String cmdlabel,
                String[] arg3) {
     
            Player target = getPlayer(arg3[0]);
            mutedlist.add(arg3[0]);
            if(cmdlabel.equalsIgnoreCase("mute") && arg3.length == 1){
                target.sendMessage(ChatColor.GREEN + "You Have Been Muted By " + sender.getName());
            return true;
        }
            return false;
        }
        @EventHandler
        public void on(AsyncPlayerChatEvent event){
            Player p = event.getPlayer();
            ArrayList<String> mutedlist = new ArrayList<String>();
            if(mutedlist.contains(p)){
            p.chat("Tesing123abc");
            event.setCancelled(true);
            }
        }
    }
    hope you can help
     
  2. Offline

    RainoBoy97

    What is the problem? Any stacktrace?
     
  3. Offline

    gomeow

    Is there an error?
    You can't expect us to fix a problem that we don't know about.


    However, obvious problem: You are muting people on EVERY command, put that code after you check what it is.
     
  4. Offline

    Lolmewn

    You create two instances of the FacePalm class, they will both have different variables.
     
    gomeow likes this.
  5. Offline

    gomeow

  6. Offline

    Jusi

    First: please tell us something abou the error or bug occurring.

    To mention possible errors:
    - I would not add a player to mutedlist before checking if the command is "mute".
    - I would change the line
    Code:
    public void on(AsyncPlayerChatEvent event){
    to
    Code:
    public void onAsyncPlayerChat(AsyncPlayerChatEvent event){
    I hope, this was helpful.
     
  7. Offline

    finalblade1234

    Ok i fixed the muting players on every command (glad you caught that)
    Here is the error:
    Code:
    2013-01-17 09:37:42 [WARNING] To start the server with more ram, launch it as "java -Xmx1024M -Xms1024M -jar minecraft_server.jar"
    2013-01-17 09:37:42 [INFO] Loading properties
    2013-01-17 09:37:42 [INFO] Default game type: SURVIVAL
    2013-01-17 09:37:42 [INFO] Generating keypair
    2013-01-17 09:37:43 [INFO] Starting Minecraft server on *:30000
    2013-01-17 09:37:43 [INFO] This server is running CraftBukkit version git-Bukkit-1.4.5-R1.0-5-gf7e4117-b2547jnks (MC: 1.4.6) (Implementing API version 1.4.6-R0.1-SNAPSHOT)
    2013-01-17 09:37:43 [INFO] [MutePlus] Loading MutePlus v0.9
    2013-01-17 09:37:43 [INFO] Preparing level "world"
    2013-01-17 09:37:43 [INFO] Preparing start region for level 0 (Seed: -1183036973176668503)
    2013-01-17 09:37:44 [INFO] Preparing start region for level 1 (Seed: -1183036973176668503)
    2013-01-17 09:37:44 [INFO] Preparing spawn area: 0%
    2013-01-17 09:37:45 [INFO] Preparing start region for level 2 (Seed: -1183036973176668503)
    2013-01-17 09:37:45 [INFO] [MutePlus] Enabling MutePlus v0.9
    2013-01-17 09:37:45 [SEVERE] Error occurred while enabling MutePlus v0.9 (Is it up to date?)
    java.lang.NullPointerException
        at org.hopto.finalcraft.finalblade1234.Main.onEnable(Main.java:7)
        at org.bukkit.plugin.java.JavaPlugin.setEnabled(JavaPlugin.java:217)
        at org.bukkit.plugin.java.JavaPluginLoader.enablePlugin(JavaPluginLoader.java:457)
        at org.bukkit.plugin.SimplePluginManager.enablePlugin(SimplePluginManager.java:381)
        at org.bukkit.craftbukkit.v1_4_6.CraftServer.loadPlugin(CraftServer.java:278)
        at org.bukkit.craftbukkit.v1_4_6.CraftServer.enablePlugins(CraftServer.java:260)
        at net.minecraft.server.v1_4_6.MinecraftServer.j(MinecraftServer.java:321)
        at net.minecraft.server.v1_4_6.MinecraftServer.e(MinecraftServer.java:300)
        at net.minecraft.server.v1_4_6.MinecraftServer.a(MinecraftServer.java:259)
        at net.minecraft.server.v1_4_6.DedicatedServer.init(DedicatedServer.java:149)
        at net.minecraft.server.v1_4_6.MinecraftServer.run(MinecraftServer.java:399)
        at net.minecraft.server.v1_4_6.ThreadServerApplication.run(SourceFile:849)
    2013-01-17 09:37:45 [INFO] Server permissions file permissions.yml is empty, ignoring it
    2013-01-17 09:37:46 [INFO] Done (2.331s)! For help, type "help" or "?"
     
  8. Offline

    gomeow

    The code you gave makes no difference

    Why is your onCommand in the listener? It isn't an event

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

    fireblast709

    his Listener and CommandExecutor are the same class
    finalblade1234
    • you forgot to register the mute command in the plugin.yml
    • for the double instancing, create an object and use it
      Code:java
      1. FacePalmListener fpl = new FacePalmListener();
      2. getCommand("mute").setExecutor(fpl);
      3. Bukkit.getPluginManager().registerEvents(fpl, this);
    • You create infinite recursion is your listener by calling player.chat() (afaik)
     
  10. Offline

    finalblade1234

    Ohh! that works.. and once again i forgot to define it in the plugin.yml
    Ok and the
    Code:
    Bukkit.getPluginManager().registerEvents(fpl);
    
    doesnt work
    whould this be ok?:
    Code:
    Bukkit.getPluginManager().registerEvents(fpl, this);
    or should the this be null
     
  11. Offline

    gomeow

    The second argument is your plugin, if that is in your main class, it should be this
     
  12. Offline

    fireblast709

    finalblade1234 yea forgot the this :3. Fixed in the other post ;D
     
  13. Offline

    finalblade1234

    Oh ok but now when Im "muted" i still can speak D;
    this is what i have:
    Code:
    package org.hopto.finalcraft.finalblade1234;
     
    import java.util.ArrayList;
     
    import org.bukkit.ChatColor;
    import org.bukkit.command.Command;
    import org.bukkit.command.CommandExecutor;
    import org.bukkit.command.CommandSender;
    import org.bukkit.entity.Player;
    import org.bukkit.event.EventHandler;
    import org.bukkit.event.Listener;
    import org.bukkit.event.player.AsyncPlayerChatEvent;
    import static org.bukkit.Bukkit.getPlayer;
     
    public class FacePalmListener implements CommandExecutor, Listener {
          ArrayList<String> mutedlist = new ArrayList<String>();
        @Override
        public boolean onCommand(CommandSender sender, Command cmd, String cmdlabel,
                String[] arg3) {
            if(cmdlabel.equalsIgnoreCase("mute") && arg3.length == 1){
            Player target = getPlayer(arg3[0]);
            mutedlist.add(arg3[0]);
                target.sendMessage(ChatColor.GREEN + "You Have Been Muted By " + sender.getName());
            return true;
        }
            return false;
        }
        @EventHandler
        public void onAsyncPlayerChat(AsyncPlayerChatEvent event){
            Player p = event.getPlayer();
            if(mutedlist.contains(p)){
            event.setCancelled(true);
            }
        }
    }
    
     
  14. Offline

    fireblast709

    finalblade1234 replace mutedlist.contains(p) with mutedlist.contains(p.getName())
     
Thread Status:
Not open for further replies.

Share This Page