Commands don't work?

Discussion in 'Plugin Development' started by Gosintary, Jul 17, 2016.

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

    Gosintary

    My commands dont work. They dont say Unknown command, but they dont do anything.
    Code:
    package smackman17.plugin.ppcf;
    
    import java.util.HashSet;
    import java.util.Set;
    
    import org.bukkit.ChatColor;
    import org.bukkit.command.Command;
    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 org.bukkit.plugin.java.JavaPlugin;
    
    public class Main extends JavaPlugin implements Listener {
        private Set<String> filter = new HashSet<>();
        @Override
        public void onEnable(){
            System.out.println("[PerPersonChatFilter]Enabled!");
            saveDefaultConfig();
            System.out.println("[PerPersonChatFilter]Config Saved!");
            getServer().getPluginManager().registerEvents(this, this);
        }
        public boolean onCommand(CommandSender theSender, Command cmd,String commandLable, String[] args){
            if(commandLable.equalsIgnoreCase("ppcf"))
            if(commandLable.equalsIgnoreCase("ppcf")){
                if(args.length > 2)
                    if(args[0].equalsIgnoreCase("toggle")){
                        if(theSender instanceof Player){
                            if(!(filter.contains(theSender.getName()))){
                                String player = theSender.getName();
                                System.out.println("[PerPlayerChatFilter]"+player+" just toggled the filter on");
                                theSender.sendMessage(ChatColor.RED+"[PerPlayerChatFilter]"+ChatColor.GREEN+"Filter turned on!");
                                filter.add(player);
                            }else{
                                String player = theSender.getName();
                                System.out.println("[PerPlayerChatFilter]"+player+" just toggled the filter off");
                                theSender.sendMessage(ChatColor.RED+"[PerPlayerChatFilter]"+ChatColor.DARK_RED+"Filter turned off");
                                filter.remove(theSender.getName());
                            }
                        }
                    }
            }
            if(cmd.getName().equalsIgnoreCase("ppcf")) {
                  if(args.length > 2) {
                      if(args[0].equalsIgnoreCase("add")) {
                        theSender.sendMessage(ChatColor.RED+"[PerPlayerChatFilter]"+ChatColor.GREEN+args[1]+" was added to the filter!");
                        getConfig().getStringList("blockedwords").add(args[1]);
                        reloadConfig();
                      }
                  }
                }
            if(cmd.getName().equalsIgnoreCase("ppcf")) {
                  if(args.length > 2) {
                      if(args[0].equalsIgnoreCase("remove")) {
                          theSender.sendMessage(ChatColor.RED+"[PerPlayerChatFilter]"+ChatColor.DARK_RED+args[1]+" was removed from the filter!");
                        getConfig().getStringList("blockedwords").remove(args[1]);
                        reloadConfig();
                      }
                  }
                }
            return true;
           
        }
        @EventHandler
        public void playerChat(AsyncPlayerChatEvent event){
          Player player = (Player) event.getPlayer();
          String message = event.getMessage();
          if(filter.contains(player.getName())){
          message = message.replaceAll("hi", "(BLEEP)");
          event.setMessage(message);
          }
        }
    }
    
     
  2. Why do you even have this line?
    Code:
    if(commandLable.equalsIgnoreCase("ppcf"))
    It does nothing, since the only command you have is that. Also your problem is that you check if there are more than 2 arguments, so one would need to input at least 3 arguments for any of the code to fire.
     
  3. Offline

    Gosintary

    Ok here is my code now
    Code:
    package smackman17.plugin.ppcf;
    
    import java.util.HashSet;
    import java.util.Set;
    
    import org.bukkit.ChatColor;
    import org.bukkit.command.Command;
    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 org.bukkit.plugin.java.JavaPlugin;
    
    public class Main extends JavaPlugin implements Listener {
        private Set<String> filter = new HashSet<>();
        @Override
        public void onEnable(){
            System.out.println("[PerPersonChatFilter]Enabled!");
            saveDefaultConfig();
            System.out.println("[PerPersonChatFilter]Config Saved!");
            getServer().getPluginManager().registerEvents(this, this);
        }
        public boolean onCommand(CommandSender theSender, Command cmd,String commandLable, String[] args){
            if(commandLable.equalsIgnoreCase("ppcf")){
                if(args.length > 0){
                    if(args[0].equalsIgnoreCase("toggle")){
                        if(theSender instanceof Player){
                            if(!(filter.contains(theSender.getName()))){
                                String player = theSender.getName();
                                System.out.println("[PerPlayerChatFilter]"+player+" just toggled the filter on");
                                theSender.sendMessage(ChatColor.RED+"[PerPlayerChatFilter]"+ChatColor.GREEN+"Filter turned on!");
                                filter.add(player);
                            }else{
                                String player = theSender.getName();
                                System.out.println("[PerPlayerChatFilter]"+player+" just toggled the filter off");
                                theSender.sendMessage(ChatColor.RED+"[PerPlayerChatFilter]"+ChatColor.DARK_RED+"Filter turned off");
                                filter.remove(theSender.getName());
                            }
                        }
                    }
            }else{
                theSender.sendMessage("Your Missing something...");
            }
            if(cmd.getName().equalsIgnoreCase("ppcf")) {
                  if(args.length > 1) {
                      if(args[0].equalsIgnoreCase("add")) {
                        theSender.sendMessage(ChatColor.RED+"[PerPlayerChatFilter] "+ChatColor.GREEN+args[1]+" was added to the filter!");
                        getConfig().getStringList("blockedwords").add(args[1]);
                        reloadConfig();
                      }
                  }
                }
            if(cmd.getName().equalsIgnoreCase("ppcf")) {
                  if(args.length > 1) {
                      if(args[0].equalsIgnoreCase("remove")) {
                          theSender.sendMessage(ChatColor.RED+"[PerPlayerChatFilter] "+ChatColor.DARK_RED+args[1]+" was removed from the filter!");
                        getConfig().getStringList("blockedwords").remove(args[1]);
                        reloadConfig();
                      }
                  }
                }
            }
            return true;
        }
        @EventHandler
        public void playerChat(AsyncPlayerChatEvent event){
          Player player = (Player) event.getPlayer();
          String message = event.getMessage();
          if(filter.contains(player.getName())){
            CharSequence badword = (CharSequence) getConfig().getStringList("blockedwords");
              if(message.contains(badword)){
                  message = message.replace(badword, "*bleep*");
              }
          event.setMessage(message);
          }
        }
    }
    
    now here is my error

    Code:
    [15:54:18 ERROR]: Could not pass event AsyncPlayerChatEvent to PerPlayerChatFilt
    er v1.0
    org.bukkit.event.EventException
            at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.ja
    va:302) ~[craftbukkit.jar:git-Bukkit-18fbb24]
            at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.jav
    a:62) ~[craftbukkit.jar:git-Bukkit-18fbb24]
            at org.bukkit.plugin.SimplePluginManager.fireEvent(SimplePluginManager.j
    ava:501) [craftbukkit.jar:git-Bukkit-18fbb24]
            at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.j
    ava:483) [craftbukkit.jar:git-Bukkit-18fbb24]
            at net.minecraft.server.v1_8_R3.PlayerConnection.chat(PlayerConnection.j
    ava:1031) [craftbukkit.jar:git-Bukkit-18fbb24]
            at net.minecraft.server.v1_8_R3.PlayerConnection.a(PlayerConnection.java
    :980) [craftbukkit.jar:git-Bukkit-18fbb24]
            at net.minecraft.server.v1_8_R3.PacketPlayInChat.a(SourceFile:37) [craft
    bukkit.jar:git-Bukkit-18fbb24]
            at net.minecraft.server.v1_8_R3.PacketPlayInChat.a(SourceFile:9) [craftb
    ukkit.jar:git-Bukkit-18fbb24]
            at net.minecraft.server.v1_8_R3.NetworkManager.a(NetworkManager.java:115
    ) [craftbukkit.jar:git-Bukkit-18fbb24]
            at net.minecraft.server.v1_8_R3.NetworkManager.channelRead0(NetworkManag
    er.java:312) [craftbukkit.jar:git-Bukkit-18fbb24]
            at net.minecraft.server.v1_8_R3.NetworkManager.channelRead0(NetworkManag
    er.java:1) [craftbukkit.jar:git-Bukkit-18fbb24]
            at io.netty.channel.SimpleChannelInboundHandler.channelRead(SimpleChanne
    lInboundHandler.java:105) [craftbukkit.jar:git-Bukkit-18fbb24]
            at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(Abst
    ractChannelHandlerContext.java:333) [craftbukkit.jar:git-Bukkit-18fbb24]
            at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(Abstra
    ctChannelHandlerContext.java:319) [craftbukkit.jar:git-Bukkit-18fbb24]
            at io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessage
    Decoder.java:163) [craftbukkit.jar:git-Bukkit-18fbb24]
            at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(Abst
    ractChannelHandlerContext.java:333) [craftbukkit.jar:git-Bukkit-18fbb24]
            at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(Abstra
    ctChannelHandlerContext.java:319) [craftbukkit.jar:git-Bukkit-18fbb24]
            at io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessage
    Decoder.java:163) [craftbukkit.jar:git-Bukkit-18fbb24]
            at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(Abst
    ractChannelHandlerContext.java:333) [craftbukkit.jar:git-Bukkit-18fbb24]
            at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(Abstra
    ctChannelHandlerContext.java:319) [craftbukkit.jar:git-Bukkit-18fbb24]
            at io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessage
    Decoder.java:163) [craftbukkit.jar:git-Bukkit-18fbb24]
            at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(Abst
    ractChannelHandlerContext.java:333) [craftbukkit.jar:git-Bukkit-18fbb24]
            at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(Abstra
    ctChannelHandlerContext.java:319) [craftbukkit.jar:git-Bukkit-18fbb24]
            at io.netty.handler.timeout.ReadTimeoutHandler.channelRead(ReadTimeoutHa
    ndler.java:150) [craftbukkit.jar:git-Bukkit-18fbb24]
            at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(Abst
    ractChannelHandlerContext.java:333) [craftbukkit.jar:git-Bukkit-18fbb24]
            at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(Abstra
    ctChannelHandlerContext.java:319) [craftbukkit.jar:git-Bukkit-18fbb24]
            at io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChanne
    lPipeline.java:787) [craftbukkit.jar:git-Bukkit-18fbb24]
            at io.netty.channel.nio.AbstractNioByteChannel$NioByteUnsafe.read(Abstra
    ctNioByteChannel.java:130) [craftbukkit.jar:git-Bukkit-18fbb24]
            at io.netty.channel.nio.NioEventLoop.processSelectedKey(NioEventLoop.jav
    a:511) [craftbukkit.jar:git-Bukkit-18fbb24]
            at io.netty.channel.nio.NioEventLoop.processSelectedKeysOptimized(NioEve
    ntLoop.java:468) [craftbukkit.jar:git-Bukkit-18fbb24]
            at io.netty.channel.nio.NioEventLoop.processSelectedKeys(NioEventLoop.ja
    va:382) [craftbukkit.jar:git-Bukkit-18fbb24]
            at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:354) [craftbu
    kkit.jar:git-Bukkit-18fbb24]
            at io.netty.util.concurrent.SingleThreadEventExecutor$2.run(SingleThread
    EventExecutor.java:116) [craftbukkit.jar:git-Bukkit-18fbb24]
            at java.lang.Thread.run(Unknown Source) [?:1.8.0_71]
    Caused by: java.lang.ClassCastException: java.util.ArrayList cannot be cast to j
    ava.lang.CharSequence
            at smackman17.plugin.ppcf.Main.playerChat(Main.java:71) ~[?:?]
            at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0
    _71]
            at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0
    _71]
            at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) ~[?:1
    .8.0_71]
            at java.lang.reflect.Method.invoke(Unknown Source) ~[?:1.8.0_71]
            at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.ja
    va:300) ~[craftbukkit.jar:git-Bukkit-18fbb24]
            ... 33 more
    [15:54:18 INFO]: <Gosintary> he
     
    Last edited: Jul 17, 2016
  4. Offline

    MCMastery

    CharSequence badword = (CharSequence) getConfig().getStringList("blockedwords");

    Why use CharSequence instead of String? Also, you can't just turn a list of strings into a string.
     
  5. Offline

    SantaClawz69

    Can I suggest, instead of making all of your commands in 1 class and using else statements use different classes for each of your commands and just register them. It makes it a lot easier to keep track of your errors/code. It'll also make it easier for us to see whats going on.

    But nevertheless, if nothing is working try using some println debugging tactics and put a println where it's showing your error and see if it's even working. You can also send a message to the sender.
     
  6. Offline

    Gosintary

    ok well what do I do. I need to to check if a word in the list is found in message
     
  7. Offline

    MCMastery

    for every string in the string list, check if the message contains it
     
  8. Offline

    Firestar311

    You cannot cast CharSequence to a List<String>. You MUST use a List<String> object when getting a string list from the config.
     
  9. Learn Java? If that's too much for you I wouldn't suggest coding with the Bukkit API.
     
    CaptainMike2828 likes this.
  10. Offline

    Gosintary

    I have learned java. I was half asleep and not thinking very clearly.
     
Thread Status:
Not open for further replies.

Share This Page