Solved I dont understand what's wrong!

Discussion in 'Plugin Development' started by WeDaBeast, May 23, 2014.

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

    WeDaBeast

    No Stack-Traces or anything

    Main.java:
    Code:java
    1. /*
    2. * To change this license header, choose License Headers in Project Properties.
    3. * To change this template file, choose Tools | Templates
    4. * and open the template in the editor.
    5. */
    6. package me.PlayMoney;
    7.  
    8. import org.bukkit.ChatColor;
    9. import org.bukkit.plugin.java.JavaPlugin;
    10.  
    11. /**
    12. *
    13. * @author Matthew Tong
    14. * @author Adam Canfield
    15. * @author John Smith
    16. *
    17. */
    18. public class Main extends JavaPlugin {
    19.  
    20. private static boolean debugMode = true;
    21.  
    22. @Override
    23. public void onDisable() {
    24.  
    25. }
    26.  
    27. @Override
    28. public void onEnable() {
    29. this.getServer().getPluginManager().registerEvents(new me.PlayMoney.CommandPlayBalance(), this);
    30. this.getServer().getPluginManager().registerEvents(new me.PlayMoney.CommandPlayGive(), this);
    31. this.getCommand("mode").setExecutor(new me.PlayMoney.CommandPlayMode());
    32. }
    33.  
    34. /**
    35.   * Checks if the plugin is in Debug Mode. If the plugin is in debug mode,
    36.   * messages that would normally not be sent to players will be. This is
    37.   * mainly for testing purposes.
    38.   *
    39.   * @return True or False.
    40.   */
    41. public static boolean debugMode() {
    42. if (Main.debugMode) {
    43. return true;
    44. }
    45. return false;
    46. }
    47.  
    48. /**
    49.   * Debug message chat formatting
    50.   *
    51.   * @param Message The message being sent to the player.
    52.   * @return Returns the message. If debugMode is not enabled, returns null;
    53.   */
    54. public static String debugMessage(String Message) {
    55. if (Main.debugMode()) {
    56. return ChatColor.RED + "" + ChatColor.BOLD + "[Debug]" + ChatColor.DARK_GRAY + Message;
    57. }
    58. return null;
    59. }
    60. }
    61.  



    CommandPlayMode.java:
    Code:java
    1. package me.PlayMoney;
    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. import org.bukkit.scoreboard.Objective;
    10. import org.bukkit.scoreboard.Score;
    11. import org.bukkit.scoreboard.Scoreboard;
    12. import org.bukkit.scoreboard.ScoreboardManager;
    13. import org.bukkit.scoreboard.Team;
    14.  
    15. public class CommandPlayMode extends JavaPlugin {
    16.  
    17. public boolean onCommand(CommandSender sender, Command cmd,
    18. String CommandLabel, String[] args) {
    19. if (!(sender instanceof Player)) {
    20. sender.sendMessage(ChatColor.RED + "Players only, bad console!");
    21. return true;
    22. }
    23. Player player = (Player) sender;
    24. if (cmd.getName().equalsIgnoreCase("mode")) {
    25. if (args.length == 0) {
    26. sender.sendMessage(ChatColor.RED
    27. + "Usage: /mode <play or real>");
    28. return false;
    29.  
    30. } else {
    31. if (args[0].equalsIgnoreCase("play")) {
    32.  
    33. // Stating scoreboard
    34. ScoreboardManager manager = Bukkit.getScoreboardManager();
    35. Scoreboard board = manager.getNewScoreboard();
    36. Team team = board.registerNewTeam("Play");
    37.  
    38. // Setting team shit
    39. team.addPlayer(player);
    40. team.setPrefix("[Play Mode]");
    41. Objective objective = board.registerNewObjective("play",
    42. "dummy");
    43.  
    44. // Display Shit
    45. Score score = objective.getScore(Bukkit
    46. .getOfflinePlayer(ChatColor.GREEN + "Play Money:")); // Get
    47. // a
    48. // fake
    49. score.setScore(getConfig().getInt("money." + player.getName()));
    50.  
    51. return false;
    52.  
    53. } else {
    54.  
    55. sender.sendMessage(ChatColor.RED
    56. + "Usage /mode <play or real>");
    57. return false;
    58.  
    59. }
    60.  
    61. }
    62. }
    63. return false;
    64. }
    65. }
    66.  



    CommandPlayBalance.java:
    Code:java
    1. package me.PlayMoney;
    2.  
    3. import java.util.HashMap;
    4.  
    5. import org.bukkit.Bukkit;
    6. import org.bukkit.ChatColor;
    7. import org.bukkit.command.Command;
    8. import org.bukkit.command.CommandSender;
    9. import org.bukkit.entity.Player;
    10. import org.bukkit.event.Listener;
    11. import org.bukkit.plugin.java.JavaPlugin;
    12.  
    13. public class CommandPlayBalance extends JavaPlugin implements Listener {
    14.  
    15. HashMap<String, Integer> money = new HashMap<String, Integer>();
    16.  
    17. public void onEnable() {
    18. this.saveDefaultConfig();
    19. Bukkit.getServer().getPluginManager().registerEvents(this, this);
    20. }
    21.  
    22.  
    23. public boolean onCommand(CommandSender sender, Command cmd,
    24. String CommandLabel, String[] args) {
    25. Player player = (Player) sender;
    26.  
    27. if (cmd.getName().equalsIgnoreCase("play")) {
    28. if (args.length == 0) {
    29. sender.sendMessage(ChatColor.RED
    30. + "Usage: /play <balance> / <user>");
    31. return false;
    32.  
    33. } else {
    34. if (args[0].equalsIgnoreCase("balance")) {
    35. player.sendMessage(ChatColor.AQUA
    36. + "Your play balance is " + ChatColor.GOLD
    37. + money.get(player.getName()));
    38. return true;
    39.  
    40. }
    41. }
    42. }
    43. return false;
    44. }
    45. }
    46.  
    47.  


    CommandPlayGive.java:
    Code:java
    1. package me.PlayMoney;
    2.  
    3. import java.util.HashMap;
    4.  
    5. import org.bukkit.Bukkit;
    6. import org.bukkit.ChatColor;
    7. import org.bukkit.command.Command;
    8. import org.bukkit.command.CommandSender;
    9. import org.bukkit.entity.Player;
    10. import org.bukkit.event.Listener;
    11. import org.bukkit.plugin.java.JavaPlugin;
    12.  
    13. public class CommandPlayGive extends JavaPlugin implements Listener {
    14.  
    15. HashMap<String, Integer> money = new HashMap<String, Integer>();
    16.  
    17. public void onEnable() {
    18. this.saveDefaultConfig();
    19. Bukkit.getServer().getPluginManager().registerEvents(this, this);
    20. }
    21.  
    22. public boolean onCommand(CommandSender sender, Command cmd,
    23. String CommandLabel, String[] args) {
    24.  
    25. Player player = (Player) sender;
    26.  
    27. if (cmd.getName().equalsIgnoreCase("give")) {
    28. if (args.length == 0) {
    29. sender.sendMessage(ChatColor.RED
    30. + "Usage: /give <user> <Diamond, Iron_Ingot, Arrow, Coal, Brick, Stick, or Feather!>");
    31. return false;
    32.  
    33. } else {
    34. if (args[0].equalsIgnoreCase("balance")) {
    35. player.sendMessage(ChatColor.AQUA + "Your play balance is "
    36. + ChatColor.GOLD + money.get(player.getName()));
    37. return true;
    38.  
    39. }
    40. Player other = Bukkit.getServer().getPlayer(args[1]);
    41. }
    42. if (args[2].equalsIgnoreCase("diamond")) {
    43. if(money.containsKey(player.getName())){
    44. money.put(player.getName(), (int) (money.get(player.getName()) + 0.1));
    45. }else{
    46. money.put(player.getName(), (int) 0.1);
    47. }
    48. return true;
    49. }
    50. if (args[2].equalsIgnoreCase("iron_ingot")) {
    51. if(money.containsKey(player.getName())){
    52. money.put(player.getName(), (int) (money.get(player.getName()) + 0.05));
    53. }else{
    54. money.put(player.getName(), (int) 0.05);
    55. }
    56. return true;
    57. }
    58. if (args[2].equalsIgnoreCase("arrow")) {
    59. if(money.containsKey(player.getName())){
    60. money.put(player.getName(), (int) (money.get(player.getName()) + 0.01));
    61. }else{
    62. money.put(player.getName(), (int) 0.01);
    63. }
    64. return true;
    65. }
    66. if (args[2].equalsIgnoreCase("coal")) {
    67. if(money.containsKey(player.getName())){
    68. money.put(player.getName(), (int) (money.get(player.getName()) + 0.005));
    69. }else{
    70. money.put(player.getName(), (int) 0.005);
    71. }
    72. return true;
    73. }
    74. if (args[2].equalsIgnoreCase("brick")) {
    75. if(money.containsKey(player.getName())){
    76. money.put(player.getName(), (int) (money.get(player.getName()) + 0.001));
    77. }else{
    78. money.put(player.getName(), (int) 0.001);
    79. }
    80. return true;
    81. }
    82. if (args[2].equalsIgnoreCase("stick")) {
    83. if(money.containsKey(player.getName())){
    84. money.put(player.getName(), (int) (money.get(player.getName()) + 0.0005));
    85. }else{
    86. money.put(player.getName(), (int) 0.0005);
    87. }
    88.  
    89. return true;
    90. }
    91. if (args[2].equalsIgnoreCase("feather")) {
    92. if(money.containsKey(player.getName())){
    93. money.put(player.getName(), (int) (money.get(player.getName()) + 0.0001));
    94. }else{
    95. money.put(player.getName(), (int) 0.0001);
    96. }
    97. return true;
    98. }
    99.  
    100. }
    101. return false;
    102. }
    103. }
    104.  
     
  2. Offline

    Blackveil

    If you use a CommandExecutor, you need to make sure that the class you are setting as your executor implements CommandExecutor.

    Also, you shouldn't extend JavaPlugin in anything other than your main class.
     
  3. Offline

    teej107

    While what Blackveil says is right, We still don't know the problem though they might be because you are extending every class with JavaPlugin.
     
  4. Offline

    Blackveil

    I also found the issue and I said that in my post aswell, maybe you missed it lol. He never implemented CommandExecutor in his class containing the command that he set as the command executor in the main class, so a command was never even executing. At least now if there are any issues at this point, he should get a stack trace if any errors appear.

    But, extending JavaPlugin isn't going to break his classes, it's just un-necessary.
     
  5. Offline

    teej107

Thread Status:
Not open for further replies.

Share This Page