1.11 için kopladığım motd pluginde komut çalışmıyor. Sorun nerede?

McWeb

Kızıltaş Madencisi
Mesajlar
467
En iyi cevaplar
0
Beğeniler
120
Puanları
610
1.11 için kopladığım motd pluginde komut çalışmıyor. Sorun nerede?
Kod:
public class Main extends JavaPlugin implements Listener{
    @Override
    public void onEnable() {
        Bukkit.getServer().getPluginManager().registerEvents(this, this);
        getConfig().options().copyDefaults(true);
        saveConfig();
        reloadConfig();
        getLogger().info("Plugin Aktif");
    }
        @EventHandler(priority=EventPriority.HIGHEST)
        public void pingevent(ServerListPingEvent e) {
        reloadConfig();
        e.setMotd(ChatColor.translateAlternateColorCodes('&', getConfig().getString("Motd.Tasarim")));
        if (getConfig().getBoolean("Motd.MaxOyuncu", true)) {
        e.setMaxPlayers(getConfig().getInt("Motd.MaxOyuncuSayi"));   
    }
        }
        public boolean onCommand(CommandSender gonderen, Command kmt, String commandLabel, String[] args) {
            if (kmt.getName().equalsIgnoreCase("motd")) {
                 if (!gonderen.hasPermission("motd")) {
                    if (getConfig().getBoolean("Motd.Komut", true)) {
                         gonderen.sendMessage(ChatColor.translateAlternateColorCodes('&', getConfig().getString("Motd.YetkinYok")));
                         return true;
                 }
                 if (args.length == 0) {
                         gonderen.sendMessage(ChatColor.translateAlternateColorCodes('&', getConfig().getString("Motd.Kullanim")));
                         return true;
                 }
                 if(args.length == 1) {
                   if(args[0].equalsIgnoreCase("yap")) {
                       if(gonderen.hasPermission("motd.set")) {
                 StringBuilder str = new StringBuilder();
                 for (int i = 0; i < args.length; i++) {
                         str.append(args + " ");
                 }
                 String motd = str.toString();
                 getConfig().set("Motd.Tasarim", motd);
                 saveConfig();
                 String motdtasarim = getConfig().getString("Motd.Tasarim");
                 gonderen.sendMessage(ChatColor.translateAlternateColorCodes('&', getConfig().getString("Motd.Tamam"))+ motdtasarim);
                 return true;
         }
        }
}
            }
        }
            return true;
}
}


Plugin.yml
Kod:
name: BasicPlugin
version: 1.0
main: com.mcweb.Main
description: Tek plugin fazla gorev!
author: McWeb    
commands:
    motd:
        description: Motd duzenlemenizi saglar
        usage: /motd        
permissions:
    motd.*:
       description: Tum motd komutlarını kullanma yekisi.
       children:
           motd.set: true
       default: op
    motd.set:
        description: /motd set komutu kullanım yetkisi.
        default: true
 


soDank

Zombi Katili
Mesajlar
150
En iyi cevaplar
0
Beğeniler
47
Puanları
0
İlk başta şu indentation'u düzeltelim senin kodda:
Kod:
public class Main extends JavaPlugin implements Listener{
    @Override
    public void onEnable() {
        Bukkit.getServer().getPluginManager().registerEvents(this, this);
        getConfig().options().copyDefaults(true);
        saveConfig();
        reloadConfig();
        getLogger().info("Plugin Aktif");
    }
    @EventHandler(priority=EventPriority.HIGHEST)
    public void pingevent(ServerListPingEvent e) {
        reloadConfig();
        e.setMotd(ChatColor.translateAlternateColorCodes('&', getConfig().getString("Motd.Tasarim")));
        if (getConfig().getBoolean("Motd.MaxOyuncu", true)) {
            e.setMaxPlayers(getConfig().getInt("Motd.MaxOyuncuSayi")); 
        }
    }
    public boolean onCommand(CommandSender gonderen, Command kmt, String commandLabel, String[] args) {
        if (kmt.getName().equalsIgnoreCase("motd")) {
            if (!gonderen.hasPermission("motd")) {
                if (getConfig().getBoolean("Motd.Komut", true)) {
                    gonderen.sendMessage(ChatColor.translateAlternateColorCodes('&', getConfig().getString("Motd.YetkinYok")));
                    return true;
                }
                if (args.length == 0) {
                    gonderen.sendMessage(ChatColor.translateAlternateColorCodes('&', getConfig().getString("Motd.Kullanim")));
                    return true;
                }
                if(args.length == 1) {
                    if(args[0].equalsIgnoreCase("yap")) {
                        if(gonderen.hasPermission("motd.set")) {
                            StringBuilder str = new StringBuilder();
                            for (int i = 0; i < args.length; i++) {
                                str.append(args + " ");
                            }
                            String motd = str.toString();
                            getConfig().set("Motd.Tasarim", motd);
                            saveConfig();
                            String motdtasarim = getConfig().getString("Motd.Tasarim");
                            gonderen.sendMessage(ChatColor.translateAlternateColorCodes('&', getConfig().getString("Motd.Tamam"))+ motdtasarim);
                            return true;
                        }
                    }
                }
            }
        }
        return true;
    }
}


oh mis. Şimdi sorununa gelirsek: Komut çalışmıyor derken neden bahsetmeye çalışıyorsun?
 

Personinblack

YASAKLANDI
Mesajlar
1,876
En iyi cevaplar
0
Beğeniler
1,237
Puanları
90
İlk başta şu indentation'u düzeltelim senin kodda:
Kod:
public class Main extends JavaPlugin implements Listener{
    @Override
    public void onEnable() {
        Bukkit.getServer().getPluginManager().registerEvents(this, this);
        getConfig().options().copyDefaults(true);
        saveConfig();
        reloadConfig();
        getLogger().info("Plugin Aktif");
    }
    @EventHandler(priority=EventPriority.HIGHEST)
    public void pingevent(ServerListPingEvent e) {
        reloadConfig();
        e.setMotd(ChatColor.translateAlternateColorCodes('&', getConfig().getString("Motd.Tasarim")));
        if (getConfig().getBoolean("Motd.MaxOyuncu", true)) {
            e.setMaxPlayers(getConfig().getInt("Motd.MaxOyuncuSayi"));
        }
    }
    public boolean onCommand(CommandSender gonderen, Command kmt, String commandLabel, String[] args) {
        if (kmt.getName().equalsIgnoreCase("motd")) {
            if (!gonderen.hasPermission("motd")) {
                if (getConfig().getBoolean("Motd.Komut", true)) {
                    gonderen.sendMessage(ChatColor.translateAlternateColorCodes('&', getConfig().getString("Motd.YetkinYok")));
                    return true;
                }
                if (args.length == 0) {
                    gonderen.sendMessage(ChatColor.translateAlternateColorCodes('&', getConfig().getString("Motd.Kullanim")));
                    return true;
                }
                if(args.length == 1) {
                    if(args[0].equalsIgnoreCase("yap")) {
                        if(gonderen.hasPermission("motd.set")) {
                            StringBuilder str = new StringBuilder();
                            for (int i = 0; i < args.length; i++) {
                                str.append(args + " ");
                            }
                            String motd = str.toString();
                            getConfig().set("Motd.Tasarim", motd);
                            saveConfig();
                            String motdtasarim = getConfig().getString("Motd.Tasarim");
                            gonderen.sendMessage(ChatColor.translateAlternateColorCodes('&', getConfig().getString("Motd.Tamam"))+ motdtasarim);
                            return true;
                        }
                    }
                }
            }
        }
        return true;
    }
}


oh mis. Şimdi sorununa gelirsek: Komut çalışmıyor derken neden bahsetmeye çalışıyorsun?

Benim cevabımı okursan anlarsın. Çözümü yazdım zaten bir üstünde.
 

Personinblack

YASAKLANDI
Mesajlar
1,876
En iyi cevaplar
0
Beğeniler
1,237
Puanları
90
Main'in CommandExecutor implement etmesi gerekmiyor işte. onCommand zaten JavaPlugin'de geliyor. CommandExecutor komutları ayrı classlara atayacaksan gerekir.
Şimdi test ettim haklıymışsın kusura bakma :/ Plugin.yml üzerinden register etmek yetiyormuş.
 

Üst