Help with my plugin

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

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

    Zangoran

    Here is my 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.event.EventHandler;
    9. import org.bukkit.event.Listener;
    10. import org.bukkit.event.player.PlayerJoinEvent;
    11. import org.bukkit.plugin.java.JavaPlugin;
    12.  
    13. public class SMP extends JavaPlugin implements Listener {
    14.  
    15. public static boolean state = false;
    16. private int smp1;
    17.  
    18. public void onEnable1() {
    19. getLogger().info("onEnable has been enabled!");
    20. getServer().getPluginManager().registerEvents(this, this);
    21. }
    22.  
    23. @
    24. Override
    25. public void onDisable() {}
    26.  
    27. int smp = 0;
    28. public void onEnable() {
    29. getServer().getPluginManager().registerEvents(this, this);
    30. }
    31.  
    32.  
    33. public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) {
    34. if (cmd.getName().equalsIgnoreCase("smp") && sender instanceof Player) {
    35. Player player = (Player) sender;
    36. if (!player.hasPermission("smp.toggle")) {
    37. player.sendMessage(ChatColor.RED + "You are not allowed to perform this command.");
    38. return true;
    39. } else if (args.length > 0) {
    40. if (args[0].equalsIgnoreCase("on")) {
    41. smp1 = 1;
    42. for (Player p: Bukkit.getServer().getOnlinePlayers()) {
    43. if (!p.hasPermission("smp.bypass")) {
    44. p.kickPlayer("Server is under maintenance!");
    45. return true;
    46. } else {
    47. p.sendMessage(ChatColor.RED + "[" + ChatColor.GOLD + "SMP" + ChatColor.RED + "]" + ChatColor.BLUE + " SMP has been turned" + ChatColor.DARK_GREEN + " ON");
    48. }
    49. }
    50. } else if (args[0].equalsIgnoreCase("off")) {
    51. smp1 = 0;
    52. for (Player p: Bukkit.getServer().getOnlinePlayers()) {
    53. p.sendMessage(ChatColor.RED + "[" + ChatColor.GOLD + "SMP" + ChatColor.RED + "]" + ChatColor.BLUE + " SMP has been turned" + ChatColor.RED + " OFF");
    54. }
    55. return true;
    56.  
    57. } else if (args[0].equalsIgnoreCase("status")) {
    58. for (Player p: Bukkit.getServer().getOnlinePlayers()) {
    59. p.sendMessage(ChatColor.RED + "[" + ChatColor.GOLD + "SMP" + ChatColor.RED + "]" + " " + ChatColor.RED + ChatColor.BOLD + smp1 + ChatColor.GOLD + " 0 = OFF, 1 = ON");
    60. }
    61. return true;
    62. } else if (args[0].equalsIgnoreCase("reload")) {
    63. if (player.hasPermission("smp.reload")) {
    64. this.reloadConfig();
    65. player.sendMessage(ChatColor.RED + "[" + ChatColor.GOLD + "SMP" + ChatColor.RED + "]" + ChatColor.DARK_RED + " SMP reloaded!");
    66. Bukkit.getLogger().info(ChatColor.RED + "[" + ChatColor.GOLD + "SMP" + ChatColor.RED + "]" + ChatColor.DARK_RED + " SMP reloaded!");
    67. return true;
    68. }
    69. }
    70. } else {
    71. return false;
    72. }
    73. } else {
    74. return true;
    75. }
    76.  
    77. return true;
    78. }
    79. @EventHandler
    80. public void onPlayerJoin(PlayerJoinEvent event){
    81. if(smp == 1){
    82. Player player = event.getPlayer();
    83. player.kickPlayer("Server under maintenance!");
    84. }
    85. }
    86. }
    87.  


    The problem is when I do /smp on and /smp off and /smp status it shows a message to all the online players. What I want it to do is just show it to the player that has the smp.toggle permission.

    Here is my plugin.yml:
    Code:java
    1. name: SMP
    2. main: me.zangoran.kobaltorange.smp.SMP
    3. version: 1.0
    4. author: Zangoran
    5.  
    6. commands:
    7. smp:
    8. description: Kicks every player when they join unless they have the smp.bypass permission!
    9. usage: "Error! Perhaps you meant /smp <command>"
    10. permission-message: "&kI&4[&6SMP&4]&2You do not have &6permission &4to do this! &c(&d<permission>&c)&kI"
    11.  
    12. permissions:
    13. smp.*:
    14. description: Gives access to all commands
    15. children:
    16. smp.toggle: true
    17. smp.bypass: true
    18. smp.kickmsg: true
    19. smp.toggle:
    20. description: "Allows you to toggle /smp on|off|status|reload"
    21. default: op
    22. smp.bypass:
    23. description: Allows you to not be kicked when smp is active
    24. default: op
    25. smp.reload:
    26. description: Allows you to reload the config
    27. default: op
     
  2. Offline

    Gater12

    Zangoran
    Then broadcast message to those who have permission?
    Code:java
    1. Bukkit.broadcast("message", "permission.node.here");
     
  3. Offline

    Konkz

    Firstly, in /spm on how do you know normal players get message if they are kicked? In other two commands you don't even check for the permission.

    EDIT: Also, do you want to send the message to all people with permission or only the sender?
     
  4. Offline

    Zangoran

    Konkz I know that the players are getting the message because I am testing it with a different non op account.
     
  5. Offline

    Konkz

    OP accounts have all permissions AFAIK. And if they haven't got the permission they get kicked so you can't test that, also please answer my question above that I've edited into my reply.
     
  6. Offline

    Zangoran

    Konkz I want to send it to all people with the permission

    Here is my new code if you want to see because I have made some changes:
    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.Listener;
    10. import org.bukkit.event.player.PlayerJoinEvent;
    11. import org.bukkit.plugin.java.JavaPlugin;
    12.  
    13. public class SMP extends JavaPlugin implements Listener {
    14.  
    15. public static boolean state = false;
    16. private int smp1;
    17.  
    18. public void onEnable1() {
    19. getLogger().info("onEnable has been enabled!");
    20. getServer().getPluginManager().registerEvents(this, this);
    21. }
    22.  
    23. @
    24. Override
    25. public void onDisable() {}
    26.  
    27. int smp = 0;
    28. public void onEnable() {
    29. getServer().getPluginManager().registerEvents(this, this);
    30. }
    31.  
    32.  
    33. public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) {
    34. if (cmd.getName().equalsIgnoreCase("smp") && sender instanceof Player) {
    35. Player player = (Player) sender;
    36. if (!player.hasPermission("smp.toggle")) {
    37. player.sendMessage(ChatColor.RED + "You are not allowed to perform this command.");
    38. return true;
    39. } else if (args.length > 0) {
    40. if (args[0].equalsIgnoreCase("on")) {
    41. smp1 = 1;
    42. for (Player p: Bukkit.getServer().getOnlinePlayers()) {
    43. if (!p.hasPermission("smp.bypass")) {
    44. p.kickPlayer("Server is under maintenance!");
    45. return true;
    46. } else {
    47. p.sendMessage(ChatColor.RED + "[" + ChatColor.GOLD + "SMP" + ChatColor.RED + "]" + ChatColor.BLUE + " SMP has been turned" + ChatColor.DARK_GREEN + " ON");
    48. }
    49. }
    50. } else if (args[0].equalsIgnoreCase("off")) {
    51. smp1 = 0;
    52. for (Player p: Bukkit.getServer().getOnlinePlayers()) {
    53. if (!p.hasPermission("smp.toggle"))
    54. p.sendMessage(ChatColor.RED + "[" + ChatColor.GOLD + "SMP" + ChatColor.RED + "]" + ChatColor.BLUE + " SMP has been turned" + ChatColor.RED + " OFF");
    55. }
    56. return true;
    57.  
    58. } else if (args[0].equalsIgnoreCase("status")) {
    59. for (Player p: Bukkit.getServer().getOnlinePlayers()) {
    60. if (!p.hasPermission("smp.status"))
    61. if (smp1 == 1)
    62. p.sendMessage(ChatColor.RED + "[" + ChatColor.GOLD + "SMP" + ChatColor.RED + "]" + " " + ChatColor.BLUE + ChatColor.BOLD + "SMP is " + ChatColor.DARK_GREEN + "ON!");
    63. else if (smp1 == 0)
    64. p.sendMessage(ChatColor.RED + "[" + ChatColor.GOLD + "SMP" + ChatColor.RED + "]" + " " + ChatColor.BLUE + ChatColor.BOLD + "SMP is " + ChatColor.RED + "OFF!");
    65. }
    66.  
    67. return true;
    68. } else if (args[0].equalsIgnoreCase("reload")) {
    69. if (player.hasPermission("smp.reload")) {
    70. this.reloadConfig();
    71. player.sendMessage(ChatColor.RED + "[" + ChatColor.GOLD + "SMP" + ChatColor.RED + "]" + ChatColor.DARK_RED + " SMP reloaded!");
    72. Bukkit.getLogger().info(ChatColor.RED + "[" + ChatColor.GOLD + "SMP" + ChatColor.RED + "]" + ChatColor.DARK_RED + " SMP reloaded!");
    73. return true;
    74. }
    75. }
    76. } else {
    77. return false;
    78. }
    79. } else {
    80. return true;
    81. }
    82.  
    83. return true;
    84. }
    85. @EventHandler
    86. public void onPlayerJoin(PlayerJoinEvent event){
    87. if(smp == 1){
    88. Player player = event.getPlayer();
    89. player.kickPlayer("Server under maintenance!");
    90. }
    91. }
    92. }
    93.  


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

    Konkz


    a) You don't need to do Bukkit.getServer().getOnlinePlayers() but Bukkit.getOnlinePlayers()
    b) Here you are saying if they haven't got permission send them a message
    PHP:
     if (!p.hasPermission("smp.toggle"))
                            
    p.sendMessage(ChatColor.RED "[" ChatColor.GOLD "SMP" ChatColor.RED "]" ChatColor.BLUE " SMP has been turned" ChatColor.RED " OFF");
    I'm still not sure about the "people without permission can see the message" as they get kicked if they haven't got the permission so you can't check.
     
  8. Offline

    es359

    Is this what your talking about Zangoran?

    Code:java
    1. for(Player pl: Bukkit.getServer.getOnlinePlayers()) {
    2. if(!pl.hasPermission("msg.broadcast.blablabla")) {
    3. return;
    4. }else {
    5. pl.sendMessage("Your message ")
    6. }
    7. }
     
  9. Offline

    Zangoran

    es359 Konkz I am also having a problem now it is only kicking the online players not when they join so they can join again, why is it doing that?
    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.event.EventHandler;
    9. import org.bukkit.event.Listener;
    10. import org.bukkit.event.player.PlayerJoinEvent;
    11. import org.bukkit.plugin.java.JavaPlugin;
    12.  
    13. public class SMP extends JavaPlugin implements Listener {
    14.  
    15. public static boolean state = false;
    16. private int smp1;
    17.  
    18. public void onEnable1() {
    19. getLogger().info("onEnable has been enabled!");
    20. getServer().getPluginManager().registerEvents(this, this);
    21. }
    22.  
    23. @
    24. Override
    25. public void onDisable() {}
    26.  
    27. int smp = 0;
    28. public void onEnable() {
    29. getServer().getPluginManager().registerEvents(this, this);
    30. }
    31.  
    32.  
    33. public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) {
    34. if (cmd.getName().equalsIgnoreCase("smp") && sender instanceof Player) {
    35. Player player = (Player) sender;
    36. if (!player.hasPermission("smp.toggle")) {
    37. player.sendMessage(ChatColor.RED + "You are not allowed to perform this command.");
    38. return true;
    39. } else if (args.length > 0) {
    40. if (args[0].equalsIgnoreCase("on")) {
    41. smp1 = 1;
    42. for (Player p: Bukkit.getServer().getOnlinePlayers()) {
    43. if (!p.hasPermission("smp.bypass")) {
    44. player.kickPlayer("Server under maintenance!");
    45. return true;
    46. } else {
    47. p.sendMessage(ChatColor.RED + "[" + ChatColor.GOLD + "SMP" + ChatColor.RED + "]" + ChatColor.BLUE + " SMP has been turned" + ChatColor.DARK_GREEN + " ON");
    48. }
    49. }
    50. } else if (args[0].equalsIgnoreCase("off")) {
    51. smp1 = 0;
    52. for (Player p: Bukkit.getServer().getOnlinePlayers()) {
    53. if (!p.hasPermission("smp.toggle"))
    54. p.sendMessage(ChatColor.RED + "[" + ChatColor.GOLD + "SMP" + ChatColor.RED + "]" + ChatColor.BLUE + " SMP has been turned" + ChatColor.RED + " OFF");
    55. }
    56. return true;
    57.  
    58. } else if (args[0].equalsIgnoreCase("status")) {
    59. for (Player p: Bukkit.getServer().getOnlinePlayers()) {
    60. if (!p.hasPermission("smp.status"))
    61. if (smp1 == 1)
    62. p.sendMessage(ChatColor.RED + "[" + ChatColor.GOLD + "SMP" + ChatColor.RED + "]" + " " + ChatColor.BLUE + ChatColor.BOLD + "SMP is " + ChatColor.DARK_GREEN + "ON!");
    63. else if (smp1 == 0)
    64. p.sendMessage(ChatColor.RED + "[" + ChatColor.GOLD + "SMP" + ChatColor.RED + "]" + " " + ChatColor.BLUE + ChatColor.BOLD + "SMP is " + ChatColor.RED + "OFF!");
    65. }
    66.  
    67. return true;
    68. } else if (args[0].equalsIgnoreCase("reload")) {
    69. if (player.hasPermission("smp.reload")) {
    70. this.reloadConfig();
    71. player.sendMessage(ChatColor.RED + "[" + ChatColor.GOLD + "SMP" + ChatColor.RED + "]" + ChatColor.DARK_RED + " SMP reloaded!");
    72. Bukkit.getLogger().info(ChatColor.RED + "[" + ChatColor.GOLD + "SMP" + ChatColor.RED + "]" + ChatColor.DARK_RED + " SMP reloaded!");
    73. return true;
    74. }
    75. }
    76. } else {
    77. return false;
    78. }
    79. } else {
    80. return true;
    81. }
    82.  
    83. return true;
    84. }
    85. @EventHandler
    86. public void onPlayerJoin(PlayerJoinEvent event){
    87. if(smp == 1){
    88. Player player = event.getPlayer();
    89. player.kickPlayer("Server under maintenance!");
    90. }
    91. }
    92. }
    93.  
     
  10. Offline

    es359


    Why don't you just use an event with this?

    I have created a similar plugin that uses events.

    Code:java
    1. @EventHandler
    2. public void onPlayerLog(PlayerLoginEvent e) {
    3. Player p = e.getPlayer();
    4.  
    5. if(!p.hasPermission("server.join")) {
    6. p.kickPlayer("Your message Etc.");
    7. }
    8.  
    9. }
     
  11. Offline

    Zangoran

    es359 Can I stick this under the onCommand line?
     
  12. Offline

    es359

    Err, no.

    however, you could put this in a boolean and then set the value of the boolean using a command.
     
  13. Offline

    Zangoran

    es359 Ok that could work. Thanks!
     
    es359 likes this.
  14. Offline

    JaguarJo

Thread Status:
Not open for further replies.

Share This Page