Solved Dev help please

Discussion in 'Plugin Development' started by Zangoran, May 30, 2014.

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

    Zangoran

    I have this code:
    Code:java
    1. package me.zangoran.kobaltorange.smp;
    2.  
    3. import org.bukkit.Bukkit;
    4. import org.bukkit.ChatColor;
    5. import org.bukkit.command.Command;
    6. import org.bukkit.command.CommandSender;
    7. import org.bukkit.entity.Player;
    8. import org.bukkit.plugin.java.JavaPlugin;
    9.  
    10. public class SMP extends JavaPlugin {
    11.  
    12. public static boolean state = false;
    13.  
    14. @
    15. Override
    16. public void onEnable() {
    17. getLogger().info("onEnable has been enabled!");
    18. }
    19.  
    20. @
    21. Override
    22. public void onDisable() {}
    23.  
    24. public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) {
    25. if (cmd.getName().equalsIgnoreCase("smp") && sender instanceof Player) {
    26. Player player = (Player) sender;
    27. if (!player.hasPermission("smp.toggle")) {
    28. player.sendMessage(ChatColor.RED + "You are not allowed to perform this command.");
    29. return true;
    30. } else if (args.length > 0) {
    31. if (args[0].equalsIgnoreCase("on")) {
    32. SMP.state = true;
    33. for (Player p: Bukkit.getServer().getOnlinePlayers()) {
    34. if (!p.hasPermission("smp.bypass")) {
    35. p.kickPlayer("Server is under maintenance!");
    36. return true;
    37. } else {
    38. Bukkit.getLogger().info(ChatColor.RED + "[" + ChatColor.GOLD + "SMP" + ChatColor.RED + "]" + ChatColor.BLUE + " SMP has been turned" + ChatColor.DARK_GREEN + " ON");
    39. p.sendMessage(ChatColor.RED + "[" + ChatColor.GOLD + "SMP" + ChatColor.RED + "]" + ChatColor.BLUE + " SMP has been turned" + ChatColor.DARK_GREEN + " ON");
    40. }
    41. }
    42. }
    43.  
    44. } else if (args[0].equalsIgnoreCase("off")) {
    45. SMP.state = false;
    46. for (Player p: Bukkit.getServer().getOnlinePlayers()) {
    47. p.sendMessage(ChatColor.RED + "[" + ChatColor.GOLD + "SMP" + ChatColor.RED + "]" + ChatColor.BLUE + " SMP has been turned" + ChatColor.RED + " OFF");
    48. }
    49. return true;
    50. } else if (args[0].equalsIgnoreCase("reload")) {
    51. if (player.hasPermission("smp.reload")) {
    52. this.reloadConfig();
    53. player.sendMessage(ChatColor.RED + "[" + ChatColor.GOLD + "SMP" + ChatColor.RED + "]" + ChatColor.DARK_RED + " Config reloaded!");
    54. Bukkit.getLogger().info(ChatColor.RED + "[" + ChatColor.GOLD + "SMP" + ChatColor.RED + "]" + ChatColor.DARK_RED + " Config reloaded!");
    55. return true;
    56. }
    57. } else {
    58. return false;
    59. }
    60. } else {
    61. return true;
    62. }
    63.  
    64.  
    65. return true;
    66. }
    67. }


    So far it does nothing. Can someone please help with kicking a player when they join and to turn off the auto kicking. Also I am getting this message when I do /smp:
    Code:
    [18:18:04 ERROR]: null
    org.bukkit.command.CommandException: Unhandled exception executing command 'smp' in plugin SMP v1.0
            at org.bukkit.command.PluginCommand.execute(PluginCommand.java:46) ~[craftbukkit-1.7.9-R0.2-20140520.082451-2.jar:git-Bukkit-1.7.9-R0.1-2-g1e4
    dcde-b3086jnks]
            at org.bukkit.command.SimpleCommandMap.dispatch(SimpleCommandMap.java:180) ~[craftbukkit-1.7.9-R0.2-20140520.082451-2.jar:git-Bukkit-1.7.9-R0.
    1-2-g1e4dcde-b3086jnks]
            at org.bukkit.craftbukkit.v1_7_R3.CraftServer.dispatchCommand(CraftServer.java:701) ~[craftbukkit-1.7.9-R0.2-20140520.082451-2.jar:git-Bukkit-
    1.7.9-R0.1-2-g1e4dcde-b3086jnks]
            at net.minecraft.server.v1_7_R3.PlayerConnection.handleCommand(PlayerConnection.java:956) [craftbukkit-1.7.9-R0.2-20140520.082451-2.jar:git-Bu
    kkit-1.7.9-R0.1-2-g1e4dcde-b3086jnks]
            at net.minecraft.server.v1_7_R3.PlayerConnection.a(PlayerConnection.java:817) [craftbukkit-1.7.9-R0.2-20140520.082451-2.jar:git-Bukkit-1.7.9-R
    0.1-2-g1e4dcde-b3086jnks]
            at net.minecraft.server.v1_7_R3.PacketPlayInChat.a(PacketPlayInChat.java:28) [craftbukkit-1.7.9-R0.2-20140520.082451-2.jar:git-Bukkit-1.7.9-R0
    .1-2-g1e4dcde-b3086jnks]
            at net.minecraft.server.v1_7_R3.PacketPlayInChat.handle(PacketPlayInChat.java:47) [craftbukkit-1.7.9-R0.2-20140520.082451-2.jar:git-Bukkit-1.7
    .9-R0.1-2-g1e4dcde-b3086jnks]
            at net.minecraft.server.v1_7_R3.NetworkManager.a(NetworkManager.java:157) [craftbukkit-1.7.9-R0.2-20140520.082451-2.jar:git-Bukkit-1.7.9-R0.1-
    2-g1e4dcde-b3086jnks]
            at net.minecraft.server.v1_7_R3.ServerConnection.c(SourceFile:134) [craftbukkit-1.7.9-R0.2-20140520.082451-2.jar:git-Bukkit-1.7.9-R0.1-2-g1e4d
    cde-b3086jnks]
            at net.minecraft.server.v1_7_R3.MinecraftServer.v(MinecraftServer.java:667) [craftbukkit-1.7.9-R0.2-20140520.082451-2.jar:git-Bukkit-1.7.9-R0.
    1-2-g1e4dcde-b3086jnks]
            at net.minecraft.server.v1_7_R3.DedicatedServer.v(DedicatedServer.java:260) [craftbukkit-1.7.9-R0.2-20140520.082451-2.jar:git-Bukkit-1.7.9-R0.
    1-2-g1e4dcde-b3086jnks]
            at net.minecraft.server.v1_7_R3.MinecraftServer.u(MinecraftServer.java:558) [craftbukkit-1.7.9-R0.2-20140520.082451-2.jar:git-Bukkit-1.7.9-R0.
    1-2-g1e4dcde-b3086jnks]
            at net.minecraft.server.v1_7_R3.MinecraftServer.run(MinecraftServer.java:469) [craftbukkit-1.7.9-R0.2-20140520.082451-2.jar:git-Bukkit-1.7.9-R
    0.1-2-g1e4dcde-b3086jnks]
            at net.minecraft.server.v1_7_R3.ThreadServerApplication.run(SourceFile:628) [craftbukkit-1.7.9-R0.2-20140520.082451-2.jar:git-Bukkit-1.7.9-R0.
    1-2-g1e4dcde-b3086jnks]
    Caused by: java.lang.NullPointerException
            at me.zangoran.kobaltorange.smp.SMP.onCommand(SMP.java:28) ~[?:?]
            at org.bukkit.command.PluginCommand.execute(PluginCommand.java:44) ~[craftbukkit-1.7.9-R0.2-20140520.082451-2.jar:git-Bukkit-1.7.9-R0.1-2-g1e4
    dcde-b3086jnks]
            ... 13 more
     
  2. Offline

    Antybarrel

    You have too many "}" before your else if. Try this:


    Code:java
    1. public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) {
    2. if (cmd.getName().equalsIgnoreCase("smp") && sender instanceof Player) {
    3. Player player = (Player) sender;
    4. if (!player.hasPermission("smp.toggle")) {
    5. player.sendMessage(ChatColor.RED + "You are not allowed to perform this command.");
    6. return true;
    7. } else if (args.length > 0) {
    8. if (args[0].equalsIgnoreCase("on")) {
    9. for (Player p: Bukkit.getServer().getOnlinePlayers()) {
    10. if (!p.hasPermission("smp.bypass")) {
    11. p.kickPlayer("Server is under maintenance!");
    12. return true;
    13. } else {
    14. Bukkit.getLogger().info(ChatColor.RED + "[" + ChatColor.GOLD + "SMP" + ChatColor.RED + "]" + ChatColor.BLUE + " SMP has been turned" + ChatColor.DARK_GREEN + " ON");
    15. p.sendMessage(ChatColor.RED + "[" + ChatColor.GOLD + "SMP" + ChatColor.RED + "]" + ChatColor.BLUE + " SMP has been turned" + ChatColor.DARK_GREEN + " ON");
    16. }
    17. }
    18. }
    19.  
    20. else if (args[0].equalsIgnoreCase("off")) {
    21. for (Player p: Bukkit.getServer().getOnlinePlayers()) {
    22. p.sendMessage(ChatColor.RED + "[" + ChatColor.GOLD + "SMP" + ChatColor.RED + "]" + ChatColor.BLUE + " SMP has been turned" + ChatColor.RED + " OFF");
    23. }
    24. return true;
    25. } else if (args[0].equalsIgnoreCase("reload")) {
    26. if (player.hasPermission("smp.reload")) {
    27. this.reloadConfig();
    28. player.sendMessage(ChatColor.RED + "[" + ChatColor.GOLD + "SMP" + ChatColor.RED + "]" + ChatColor.DARK_RED + " Config reloaded!");
    29. Bukkit.getLogger().info(ChatColor.RED + "[" + ChatColor.GOLD + "SMP" + ChatColor.RED + "]" + ChatColor.DARK_RED + " Config reloaded!");
    30. return true;
    31. }
    32. } else {
    33. return false;
    34. }
    35. } else {
    36. return true;
    37. }
    38.  
    39.  
    40. }
    41. return true;
    42. }
    43. }
     
  3. Offline

    Zangoran

    Antybarrel Thank you so much!

    But how do you do the auto kicking thing when they join and how do you turn it off?
     
  4. Offline

    Antybarrel

    Well to kick someone on join do this:
    Just made sure to register your events in your onEnable
    Code:java
    1. @EventHandler
    2. public void onPlayerJoin(PlayerJoinEvent event){
    3. Player player = event.getPlayer();
    4. player.kickPlayer("Kick Message");
    5. }
     
  5. Offline

    Zangoran

    Antybarrel Would I just stick that under the "on" command?

    And how would I turn it off?
     
  6. Offline

    Antybarrel

    And to turn it of I would make an if statement in the onPlayerJoin and set a varrible to something when a player goes /smp off

    I'll Quickly do an example
     
  7. Offline

    Zangoran

  8. Offline

    Antybarrel

    Like this.
    Code:java
    1.  
    2. public class test extends JavaPlugin implements Listener{
    3. int smp = 0;
    4. public void onEnable()
    5. {
    6. getServer().getPluginManager().registerEvents(this, this);
    7. }
    8.  
    9.  
    10. public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) {
    11. if (cmd.getName().equalsIgnoreCase("smp") && sender instanceof Player) {
    12. Player player = (Player) sender;
    13. if (!player.hasPermission("smp.toggle")) {
    14. player.sendMessage(ChatColor.RED + "You are not allowed to perform this command.");
    15. return true;
    16. } else if (args.length > 0) {
    17. if (args[0].equalsIgnoreCase("on")) {
    18. smp = 1;
    19. for (Player p : Bukkit.getServer().getOnlinePlayers()) {
    20. if (!p.hasPermission("smp.bypass")) {
    21. p.kickPlayer("Server is under maintenance!");
    22. return true;
    23. } else {
    24. Bukkit.getLogger().info(ChatColor.RED + "[" + ChatColor.GOLD + "SMP" + ChatColor.RED + "]" + ChatColor.BLUE + " SMP has been turned" + ChatColor.DARK_GREEN + " ON");
    25. p.sendMessage(ChatColor.RED + "[" + ChatColor.GOLD + "SMP" + ChatColor.RED + "]" + ChatColor.BLUE + " SMP has been turned" + ChatColor.DARK_GREEN + " ON");
    26. }
    27. }
    28. }
    29.  
    30. else if (args[0].equalsIgnoreCase("off")) {
    31. smp = 0;
    32. for (Player p : Bukkit.getServer().getOnlinePlayers()) {
    33. p.sendMessage(ChatColor.RED + "[" + ChatColor.GOLD + "SMP" + ChatColor.RED + "]" + ChatColor.BLUE + " SMP has been turned" + ChatColor.RED + " OFF");
    34. }
    35. return true;
    36. } else if (args[0].equalsIgnoreCase("reload")) {
    37. if (player.hasPermission("smp.reload")) {
    38. this.reloadConfig();
    39. player.sendMessage(ChatColor.RED + "[" + ChatColor.GOLD + "SMP" + ChatColor.RED + "]" + ChatColor.DARK_RED + " Config reloaded!");
    40. Bukkit.getLogger().info(ChatColor.RED + "[" + ChatColor.GOLD + "SMP" + ChatColor.RED + "]" + ChatColor.DARK_RED + " Config reloaded!");
    41. return true;
    42. }
    43. } else {
    44. return false;
    45. }
    46. } else {
    47. return true;
    48. }
    49. }
    50. return true;
    51. }
    52.  
    53.  
    54.  
    55.  
    56. @EventHandler
    57. public void onPlayerJoin(PlayerJoinEvent event){
    58. if(smp == 1){
    59. Player player = event.getPlayer();
    60. player.kickPlayer("Kick Message");
    61. }
    62. }
    63. }
    64.  


    Hope it helps!
     
  9. Offline

    Zangoran

    Antybarrel So it works.
    But it only kicks the online players. It does not kick them when they join.
     
  10. Offline

    AoH_Ruthless

    Zangoran
    You need to listen for the PlayerJoinEvent to do that.

    "But it only kicks the online players" - Well yeah .. you can only kick online players.
     
  11. Offline

    Zangoran

    AoH_Ruthless What I want it to do is kick a player when they join

    Antybarrel How do you kick a player when they join when I do a command

    Antybarrel Ok I think I got it but it says there is some wrong things (underlined in red)
    Code:java
    1. package me.zangoran.kobaltorange.smp;
    2.  
    3. import org.bukkit.Bukkit;
    4. import org.bukkit.ChatColor;
    5. import org.bukkit.command.Command;
    6. import org.bukkit.command.CommandSender;
    7. import org.bukkit.entity.Player;
    8. import org.bukkit.event.EventHandler;
    9. import org.bukkit.event.player.PlayerJoinEvent;
    10. import org.bukkit.plugin.java.JavaPlugin;
    11.  
    12. public class SMP extends JavaPlugin {
    13.  
    14. public static boolean state = false;
    15. private int smp;
    16.  
    17. @
    18. Override
    19. public void onEnable() {
    20. getLogger().info("onEnable has been enabled!");
    21. }
    22.  
    23. @
    24. Override
    25. public void onDisable() {}
    26.  
    27. public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) {
    28. if (cmd.getName().equalsIgnoreCase("smp") && sender instanceof Player) {
    29. Player player = (Player) sender;
    30. if (!player.hasPermission("smp.toggle")) {
    31. player.sendMessage(ChatColor.RED + "You are not allowed to perform this command.");
    32. return true;
    33. } else if (args.length > 0) {
    34. if (args[0].equalsIgnoreCase("on")) {
    35. public void onPlayerJoin1(PlayerJoinEvent event){
    36. if(smp == 1){
    37. Player player = event.getPlayer();
    38. player.kickPlayer("Server under mantinance");
    39. }
    40. for (Player p : Bukkit.getServer().getOnlinePlayers()) {
    41. if (!p.hasPermission("smp.bypass")) {
    42. p.kickPlayer("Server is under maintenance!");
    43. return;
    44. } else {
    45. Bukkit.getLogger().info(ChatColor.RED + "[" + ChatColor.GOLD + "SMP" + ChatColor.RED + "]" + ChatColor.BLUE + " SMP has been turned" + ChatColor.DARK_GREEN + " ON");
    46. p.sendMessage(ChatColor.RED + "[" + ChatColor.GOLD + "SMP" + ChatColor.RED + "]" + ChatColor.BLUE + " SMP has been turned" + ChatColor.DARK_GREEN + " ON");
    47. }
    48. }
    49.  
    50. else if (args[0].equalsIgnoreCase("off")) {
    51. for (Player p : Bukkit.getServer().getOnlinePlayers()) {
    52. p.sendMessage(ChatColor.RED + "[" + ChatColor.GOLD + "SMP" + ChatColor.RED + "]" + ChatColor.BLUE + " SMP has been turned" + ChatColor.RED + " OFF");
    53. }
    54. return true;
    55. } else if (args[0].equalsIgnoreCase("reload")) {
    56. if (player.hasPermission("smp.reload")) {
    57. this.reloadConfig();
    58. player.sendMessage(ChatColor.RED + "[" + ChatColor.GOLD + "SMP" + ChatColor.RED + "]" + ChatColor.DARK_RED + " Config reloaded!");
    59. Bukkit.getLogger().info(ChatColor.RED + "[" + ChatColor.GOLD + "SMP" + ChatColor.RED + "]" + ChatColor.DARK_RED + " Config reloaded!");
    60. return true;
    61. }
    62. } else {
    63. return false;
    64. }
    65. } else {
    66. return true;
    67. }
    68. }
    69. return true;
    70. }
    71.  
    72.  
    73.  
    74.  
    75. @EventHandler
    76. public void onPlayerJoin(PlayerJoinEvent event){
    77. if(smp == 1){
    78. Player player = event.getPlayer();
    79. player.kickPlayer("Server under mantinance");
    80. }
    81. }
    82. }
    83.  


    EDIT by Moderator: merged posts, please use the edit button instead of double posting.
     
    Last edited by a moderator: Jul 1, 2016
  12. Offline

    Antybarrel

    Change the onCommand back to what I posted and put this in the OnEnable.

    Code:java
    1. getServer().getPluginManager().registerEvents(this, this);



    This makes it so the event is registered, meaning that people will get kicked Onjoin not just when the command is entered
    Hope it helps
     
  13. Offline

    Zangoran

    Antybarrel Thanks you have fixed all the problems. This is now solved!
     
  14. Offline

    JaguarJo

Thread Status:
Not open for further replies.

Share This Page