Please help! on warp sign coding

Discussion in 'Plugin Development' started by ClydetorkleGaming, Nov 2, 2013.

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

    GusGold

    ClydetorkleGaming likes this.
  2. GusGold I uploaded my plugin to my server and I still doesn't work. When I put the warp name on line 1, and right click it, it doesn't do anything even after I have set the warp.
     
  3. Offline

    GusGold

    @CltdetorkleGaming Because we're always .getLine(1) the warp name needs to be on line 2(index 1)
     
    ClydetorkleGaming likes this.
  4. Offline

    Blah1

    ClydetorkleGaming
    Why not try something like this?
    Code:java
    1. @EventHandler
    2. public void onPlayerInteract(PlayerInteractEvent event) {
    3. if(event.getAction() == Action.RIGHT_CLICK_BLOCK){
    4. if (event.getClickedBlock().getState() instanceof Sign) {
    5. Sign s = (Sign) event.getClickedBlock().getState();
    6. Player p = event.getPlayer();
    7. String argg = s.getLine(1).toLowerCase();
    8. if (s.getLine(o).equals("[Warp]"))
    9. switch (argg){
    10. case "spawn":
    11. try{
    12. World w = Bukkit.getServer().getWorld(SettingsManager.getData().getString("warps." + s.getLine(1) + ".world"));
    13. double x = SettingsManager.getData().getDouble("warps." + s.getLine(1) + ".x");
    14. double y = SettingsManager.getData().getDouble("warps." + s.getLine(1) + ".y");
    15. double z = SettingsManager.getData().getDouble("warps." + s.getLine(1) + ".z");
    16. p.teleport(new Location(w, x, y, z));
    17. p.sendMessage("Successfully warped!");
    18. }catch (Exception e){
    19. p.sendMessage("Could not find warp " + WordUtils.capitalize(argg));
    20. }
    21. break;
    22. case "shop":
    23. //Same for shop
    24. break;
    25. default:
    26. p.sendMessage("Could not find warp!");
    27.  
    28. }
    29. }
    30. }
    31. }
     
  5. Blah1 so this will allow me to enter warp on line 1, and the warp name on line 2, so it can be right clicked to warp to that specified warp?
     
  6. Offline

    Blah1

    Yeah. I haven't tested it and you should probably add permission on the sign create event.
     
  7. Blah1 The problem seems to be onSignChangeEvent, it seems to not want to get the string for the warp coordinates.
     
  8. Offline

    Blah1

    you don't have to get the coordinates onSignChangeEvent.
     
  9. Blah1 Well I changed it to where it only does a spawn sign, but it still doesn't work. The reason I did this was to start off more basic see if a spawn sign plugin would work.
    Code:java
    1. package me.clydetorklegaming.warpandspawn;
    2.  
    3. import java.util.HashMap;
    4.  
    5. import org.bukkit.ChatColor;
    6. import org.bukkit.Location;
    7. import org.bukkit.block.Sign;
    8. import org.bukkit.entity.Player;
    9. import org.bukkit.event.EventHandler;
    10. import org.bukkit.event.Listener;
    11. import org.bukkit.event.block.Action;
    12. import org.bukkit.event.block.SignChangeEvent;
    13. import org.bukkit.event.player.PlayerInteractEvent;
    14.  
    15. public class MainListener implements Listener{
    16.  
    17. public static MainListener plugin;
    18.  
    19. public final HashMap<Location, String> signs = new HashMap<Location, String>();
    20.  
    21. @EventHandler
    22. public void onSignChange(SignChangeEvent event) {
    23. Player p = event.getPlayer();
    24. if(event.getLine(1).equalsIgnoreCase("[Spawn]"));
    25. event.setLine(2, "Click here");
    26. event.setLine(3, "to go to");
    27. event.setLine(4, "spawn");
    28. p.sendMessage(ChatColor.GREEN + "Sucessfully set spawn sign");
    29. }
    30.  
    31. @EventHandler
    32. public void onPlayerInteract(PlayerInteractEvent event) {
    33. Player p = event.getPlayer();
    34. if (!(event.getAction() == Action.RIGHT_CLICK_BLOCK)) return;
    35. if (event.getClickedBlock().getState() instanceof Sign) {
    36. Sign s = (Sign) event.getClickedBlock().getState();
    37. if (s.getLine(0).equalsIgnoreCase("[Spawn]")) {
    38. if(signs.containsKey(event.getClickedBlock().getLocation())) {
    39. p.teleport(p.getWorld().getSpawnLocation());
    40. p.sendMessage(ChatColor.GREEN + "Sucessfully teleproted to spawn");
    41. }
    42. }
    43. }
    44. }
    45. }


    Blah1 Neither the onsignchangeevent or onplayerinteractevnt work, what could cause this?

    EDIT by Moderator: merged posts, please use the edit button instead of double posting.
     
    Last edited by a moderator: Jun 5, 2016
  10. Offline

    Blah1

    ClydetorkleGaming lines start from 0 and go to 3. So event.getline(0).equals...
    And why do you even have the hashmap? Since you didn't initiate it the code will stop at line 38...
    Get rid of the hashmap and fix the lines so it start from 0 on lines 24-27
     
  11. Blah1 If i remove the hash map then it gives signs an error.

    Blah1 Know when i enter [spawn] it doesn't set the other lines of text, the right click doesn't work either.
    Code:java
    1. package me.clydetorklegaming.warpandspawn;
    2.  
    3. import java.util.HashMap;
    4.  
    5. import org.bukkit.ChatColor;
    6. import org.bukkit.Location;
    7. import org.bukkit.block.Sign;
    8. import org.bukkit.entity.Player;
    9. import org.bukkit.event.EventHandler;
    10. import org.bukkit.event.Listener;
    11. import org.bukkit.event.block.Action;
    12. import org.bukkit.event.block.SignChangeEvent;
    13. import org.bukkit.event.player.PlayerInteractEvent;
    14.  
    15. public class MainListener implements Listener{
    16.  
    17. public static MainListener plugin;
    18.  
    19. public final HashMap<Location, String> signs = new HashMap<Location, String>();
    20.  
    21. @EventHandler
    22. public void onSignChange(SignChangeEvent event) {
    23. Player p = event.getPlayer();
    24. if(event.getLine(0).equalsIgnoreCase("[Spawn]"));
    25. signs.put(event.getBlock().getLocation(),event.getPlayer().getName());
    26. event.setLine(1, "Click");
    27. event.setLine(2, "to go to");
    28. event.setLine(3, "spawn");
    29. p.sendMessage(ChatColor.GREEN + "Sucessfully set spawn sign");
    30. }
    31.  
    32. @EventHandler
    33. public void onPlayerInteract(PlayerInteractEvent event) {
    34. Player p = event.getPlayer();
    35. if (!(event.getAction() == Action.RIGHT_CLICK_BLOCK)) return;
    36. if (event.getClickedBlock().getState() instanceof Sign) {
    37. Sign s = (Sign) event.getClickedBlock().getState();
    38. if (s.getLine(0).equalsIgnoreCase("[Spawn]")) {
    39. if(signs.containsKey(event.getClickedBlock().getLocation())) {
    40. p.teleport(p.getWorld().getSpawnLocation());
    41. p.sendMessage(ChatColor.GREEN + "Sucessfully teleproted to spawn");
    42. }
    43. }
    44. }
    45. }
    46. }


    Blah1 http://dev.bukkit.org/bukkit-plugins/warpsigns/ this is what I'm wanting to code but Ive had so many problems with trying to do this. Could you please help, I have no clue how to even fix what I messed up earlier. Im wanting to combine this with my WarpandSpawn plugin.

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

    Blah1

    have your registered your events? Let me see your main class.
     
  13. Blah1 This is my main class that has my commands:
    Code:java
    1. package me.clydetorklegaming.warpandspawn;
    2.  
    3. import me.clydetorklegaming.warpandspawn.SettingsManager;
    4.  
    5. import org.bukkit.Bukkit;
    6. import org.bukkit.ChatColor;
    7. import org.bukkit.Location;
    8. import org.bukkit.World;
    9. import org.bukkit.command.Command;
    10. import org.bukkit.command.CommandSender;
    11. import org.bukkit.entity.Player;
    12. import org.bukkit.plugin.java.JavaPlugin;
    13.  
    14. public class Main extends JavaPlugin {
    15.  
    16. SettingsManager settings = SettingsManager.getInstance();
    17.  
    18. public void onEnable() {
    19. getConfig().options().copyDefaults(true);
    20. saveConfig();
    21. settings.setup(this);
    22. }
    23.  
    24. public boolean onCommand(CommandSender sender, Command cmd, String commandLabel, String[] args) {
    25.  
    26. if (!(sender instanceof Player)) {
    27. sender.sendMessage(ChatColor.RED + "This plugin is for players only!");
    28. return true;
    29. }
    30.  
    31. Player p = (Player) sender;
    32.  
    33.  
    34. if (cmd.getName().equalsIgnoreCase("setspawn")) {
    35. if(sender.hasPermission("ws.setspawn")){
    36.  
    37. SettingsManager.getData().set("spawn.world", p.getLocation().getWorld().getName());
    38. SettingsManager.getData().set("spawn.x", p.getLocation().getX());
    39. SettingsManager.getData().set("spawn.y", p.getLocation().getY());
    40. SettingsManager.getData().set("spawn.z", p.getLocation().getZ());
    41. settings.saveData();
    42. p.sendMessage(ChatColor.GREEN + "Successfully set spawn!");
    43. return true;
    44. }else{
    45. p.sendMessage(ChatColor.RED + "You do not have permission!");
    46.  
    47.  
    48. }
    49.  
    50. if (cmd.getName().equalsIgnoreCase("spawn")) {
    51. if (SettingsManager.getData().getConfigurationSection("spawn") == null) {
    52. p.sendMessage(ChatColor.RED + "The spawn has not been set!");
    53. return true;
    54. }
    55. World w = Bukkit.getServer().getWorld(SettingsManager.getData().getString("spawn.world"));
    56. double x = SettingsManager.getData().getDouble("spawn.x");
    57. double y = SettingsManager.getData().getDouble("spawn.y");
    58. double z = SettingsManager.getData().getDouble("spawn.z");
    59. p.teleport(new Location(w, x, y, z));
    60. p.sendMessage(ChatColor.GREEN + "Welcome to spawn!");
    61. }
    62. }
    63.  
    64. if (cmd.getName().equalsIgnoreCase("setwarp")) {
    65. if(sender.hasPermission("ws.setwarp")){
    66.  
    67. if (args.length == 0) {
    68. p.sendMessage(ChatColor.RED + "Please specify a name!");
    69. return true;
    70. }
    71. SettingsManager.getData().set("warps." + args[0] + ".world", p.getLocation().getWorld().getName());
    72. SettingsManager.getData().set("warps." + args[0] + ".x", p.getLocation().getX());
    73. SettingsManager.getData().set("warps." + args[0] + ".y", p.getLocation().getY());
    74. SettingsManager.getData().set("warps." + args[0] + ".z", p.getLocation().getZ());
    75. settings.saveData();
    76. p.sendMessage(ChatColor.GREEN + "Set warp " + args[0] + "!");
    77. }else{
    78. p.sendMessage(ChatColor.RED + "You do not have permission!");
    79.  
    80. }
    81. }
    82.  
    83. if (cmd.getName().equalsIgnoreCase("warp")) {
    84. if (args.length == 0) {
    85. p.sendMessage(ChatColor.RED + "Please specify a name!");
    86. return true;
    87. }
    88. if (SettingsManager.getData().getConfigurationSection("warps." + args[0]) == null) {
    89. p.sendMessage(ChatColor.RED + "Warp " + args[0] + " does not exist!");
    90. return true;
    91. }
    92. World w = Bukkit.getServer().getWorld(SettingsManager.getData().getString("warps." + args[0] + ".world"));
    93. double x = SettingsManager.getData().getDouble("warps." + args[0] + ".x");
    94. double y = SettingsManager.getData().getDouble("warps." + args[0] + ".y");
    95. double z = SettingsManager.getData().getDouble("warps." + args[0] + ".z");
    96. p.teleport(new Location(w, x, y, z)); }
    97.  
    98. if (cmd.getName().equalsIgnoreCase("delwarp")) {
    99. if(sender.hasPermission("ws.delwarp")){
    100.  
    101. if (args.length == 0) {
    102. p.sendMessage(ChatColor.RED + "Please specify a name!");
    103. return true;
    104. }
    105. if (SettingsManager.getData().getConfigurationSection("warps." + args[0]) == null) {
    106. p.sendMessage(ChatColor.RED + "Warp " + args[0] + " does not exist!");
    107. return true;
    108. }
    109. SettingsManager.getData().set("warps." + args[0], null);
    110. settings.saveData();
    111. p.sendMessage(ChatColor.GREEN + "Successfully removed warp " + args[0] + "!");
    112. }else{
    113. p.sendMessage(ChatColor.RED + "You do not have permission!");
    114.  
    115.  
    116. }
    117. }
    118. return true;
    119. }
    120. }
    121.  
    122.  


    @Blah1 How do I register events?​

    EDIT by Moderator: merged posts, please use the edit button instead of double posting.
     
    Last edited by a moderator: Jun 5, 2016
  14. Offline

    GusGold

    ClydetorkleGaming
    Add to your Listenclass:
    Code:java
    1. public MainListener(Main instance){
    2. plugin = instance;
    3. plugin.getServer().getPluginManager.registerEvents(plugin, this);
    4. }

    and then in your main class, initialize it in your onEnable by adding:
    Code:java
    1. new MainListener(this);


    Woops, plugin needs to go last...

    EDIT by Moderator: merged posts, please use the edit button instead of double posting.
     
    Last edited by a moderator: Jun 5, 2016
  15. Offline

    Blah1

    Add this in your onEnable:
    MainListener ml = new MainListener();
    Bukkit.getServer().getPluginManager.registerEvents(ml, this);

    And get rid of line 17 in your MainListener class.
     
  16. GusGold I get an error on line 21 where it says .getserver
    Code:java
    1. package me.clydetorklegaming.warpandspawn;
    2.  
    3. import java.util.HashMap;
    4.  
    5. import org.bukkit.ChatColor;
    6. import org.bukkit.Location;
    7. import org.bukkit.block.Sign;
    8. import org.bukkit.entity.Player;
    9. import org.bukkit.event.EventHandler;
    10. import org.bukkit.event.Listener;
    11. import org.bukkit.event.block.Action;
    12. import org.bukkit.event.block.SignChangeEvent;
    13. import org.bukkit.event.player.PlayerInteractEvent;
    14.  
    15. public class MainListener implements Listener{
    16.  
    17. public final MainListener plugin;
    18.  
    19. public MainListener(MainListener instance){
    20. plugin = instance;
    21. plugin.getServer().getPluginManager.registerEvents(this, plugin);
    22.  
    23. }
    24.  
    25. public final HashMap<Location, String> signs = new HashMap<Location, String>();
    26.  
    27. @EventHandler
    28. public void onSignChange(SignChangeEvent event) {
    29. Player p = event.getPlayer();
    30. if(event.getLine(0).equalsIgnoreCase("[Spawn]"));
    31. signs.put(event.getBlock().getLocation(),event.getPlayer().getName());
    32. event.setLine(1, "Click");
    33. event.setLine(2, "to go to");
    34. event.setLine(3, "spawn");
    35. p.sendMessage(ChatColor.GREEN + "Sucessfully set spawn sign");
    36. }
    37.  
    38. @EventHandler
    39. public void onPlayerInteract(PlayerInteractEvent event) {
    40. Player p = event.getPlayer();
    41. if (!(event.getAction() == Action.RIGHT_CLICK_BLOCK)) return;
    42. if (event.getClickedBlock().getState() instanceof Sign) {
    43. Sign s = (Sign) event.getClickedBlock().getState();
    44. if (s.getLine(0).equalsIgnoreCase("[Spawn]")) {
    45. if(signs.containsKey(event.getClickedBlock().getLocation())) {
    46. p.teleport(p.getWorld().getSpawnLocation());
    47. p.sendMessage(ChatColor.GREEN + "Sucessfully teleproted to spawn");
    48. }
    49. }
    50. }
    51. }
    52. }


    Blah1 I get an error on line 21 where it says .getserver
    Code:java
    1. package me.clydetorklegaming.warpandspawn;
    2.  
    3. import java.util.HashMap;
    4.  
    5. import org.bukkit.ChatColor;
    6. import org.bukkit.Location;
    7. import org.bukkit.block.Sign;
    8. import org.bukkit.entity.Player;
    9. import org.bukkit.event.EventHandler;
    10. import org.bukkit.event.Listener;
    11. import org.bukkit.event.block.Action;
    12. import org.bukkit.event.block.SignChangeEvent;
    13. import org.bukkit.event.player.PlayerInteractEvent;
    14.  
    15. public class MainListener implements Listener{
    16.  
    17. public final MainListener plugin;
    18.  
    19. public MainListener(MainListener instance){
    20. plugin = instance;
    21. plugin.getServer().getPluginManager.registerEvents(this, plugin);
    22.  
    23. }
    24.  
    25. public final HashMap<Location, String> signs = new HashMap<Location, String>();
    26.  
    27. @EventHandler
    28. public void onSignChange(SignChangeEvent event) {
    29. Player p = event.getPlayer();
    30. if(event.getLine(0).equalsIgnoreCase("[Spawn]"));
    31. signs.put(event.getBlock().getLocation(),event.getPlayer().getName());
    32. event.setLine(1, "Click");
    33. event.setLine(2, "to go to");
    34. event.setLine(3, "spawn");
    35. p.sendMessage(ChatColor.GREEN + "Sucessfully set spawn sign");
    36. }
    37.  
    38. @EventHandler
    39. public void onPlayerInteract(PlayerInteractEvent event) {
    40. Player p = event.getPlayer();
    41. if (!(event.getAction() == Action.RIGHT_CLICK_BLOCK)) return;
    42. if (event.getClickedBlock().getState() instanceof Sign) {
    43. Sign s = (Sign) event.getClickedBlock().getState();
    44. if (s.getLine(0).equalsIgnoreCase("[Spawn]")) {
    45. if(signs.containsKey(event.getClickedBlock().getLocation())) {
    46. p.teleport(p.getWorld().getSpawnLocation());
    47. p.sendMessage(ChatColor.GREEN + "Sucessfully teleproted to spawn");
    48. }
    49. }
    50. }
    51. }
    52. }
    53.  


    EDIT by Moderator: merged posts, please use the edit button instead of double posting.
     
    Last edited by a moderator: Jun 5, 2016
  17. Offline

    GusGold

  18. Offline

    Blah1

    ClydetorkleGaming Bukkit.getServer()
    EDIT: Put this instead of line 20:
    Code:java
    1. public Main plugin;
    2.  
    3. public Spleef(Main plugin){
    4. this.plugin = plugin;
    5. }


    And put line 21 in your onEnable (Main Class)
    BTW I know that there's a lot of ways to get the Main class and register evets, etc. but this is the way I learned it so... lol
     
  19. GusGold never mind now the error is on line 20, 21 where it says plugin
    Code:java
    1. package me.clydetorklegaming.warpandspawn;
    2.  
    3. import java.util.HashMap;
    4.  
    5. import org.bukkit.Bukkit;
    6. import org.bukkit.ChatColor;
    7. import org.bukkit.Location;
    8. import org.bukkit.block.Sign;
    9. import org.bukkit.command.CommandSender;
    10. import org.bukkit.entity.Player;
    11. import org.bukkit.event.EventHandler;
    12. import org.bukkit.event.Listener;
    13. import org.bukkit.event.block.Action;
    14. import org.bukkit.event.block.SignChangeEvent;
    15. import org.bukkit.event.player.PlayerInteractEvent;
    16.  
    17. public class MainListener implements Listener {
    18.  
    19. public MainListener(Main instance){
    20. plugin = instance;
    21. plugin.getServer().getPluginManager.registerEvents(this, plugin);
    22. }
    23.  
    24.  
    25. public final HashMap<Location, String> signs = new HashMap<Location, String>();
    26.  
    27. @EventHandler
    28. public void onSignChange(SignChangeEvent event) {
    29. Player p = event.getPlayer();
    30. if(event.getLine(0).equalsIgnoreCase("[Spawn]"));
    31. signs.put(event.getBlock().getLocation(),event.getPlayer().getName());
    32. event.setLine(1, "Click");
    33. event.setLine(2, "to go to");
    34. event.setLine(3, "spawn");
    35. p.sendMessage(ChatColor.GREEN + "Sucessfully set spawn sign");
    36. }
    37.  
    38. @EventHandler
    39. public void onPlayerInteract(PlayerInteractEvent event) {
    40. Player p = event.getPlayer();
    41. if (!(event.getAction() == Action.RIGHT_CLICK_BLOCK)) return;
    42. if (event.getClickedBlock().getState() instanceof Sign) {
    43. Sign s = (Sign) event.getClickedBlock().getState();
    44. if (s.getLine(0).equalsIgnoreCase("[Spawn]")) {
    45. if(signs.containsKey(event.getClickedBlock().getLocation())) {
    46. p.teleport(p.getWorld().getSpawnLocation());
    47. p.sendMessage(ChatColor.GREEN + "Sucessfully teleproted to spawn");
    48. }
    49. }
    50. }
    51. }
    52. }
     
  20. Offline

    Blah1

    Alright just give me you main class and I'll fix this for you :p
     
  21. Code:java
    1. package me.clydetorklegaming.warpandspawn;
    2.  
    3. import me.clydetorklegaming.warpandspawn.SettingsManager;
    4.  
    5. import org.bukkit.Bukkit;
    6. import org.bukkit.ChatColor;
    7. import org.bukkit.Location;
    8. import org.bukkit.World;
    9. import org.bukkit.command.Command;
    10. import org.bukkit.command.CommandSender;
    11. import org.bukkit.entity.Player;
    12. import org.bukkit.plugin.java.JavaPlugin;
    13.  
    14. public class Main extends JavaPlugin {
    15.  
    16. SettingsManager settings = SettingsManager.getInstance();
    17.  
    18. public void onEnable() {
    19. Bukkit.getServer().getPluginManager.registerEvents(this);
    20. new MainListener(this);
    21.  
    22. }
    23.  
    24.  
    25. public boolean onCommand(CommandSender sender, Command cmd, String commandLabel, String[] args) {
    26.  
    27. if (!(sender instanceof Player)) {
    28. sender.sendMessage(ChatColor.RED + "This plugin is for players only!");
    29. return true;
    30. }
    31.  
    32. Player p = (Player) sender;
    33.  
    34.  
    35. if (cmd.getName().equalsIgnoreCase("setspawn")) {
    36. if(sender.hasPermission("ws.setspawn")){
    37.  
    38. SettingsManager.getData().set("spawn.world", p.getLocation().getWorld().getName());
    39. SettingsManager.getData().set("spawn.x", p.getLocation().getX());
    40. SettingsManager.getData().set("spawn.y", p.getLocation().getY());
    41. SettingsManager.getData().set("spawn.z", p.getLocation().getZ());
    42. settings.saveData();
    43. p.sendMessage(ChatColor.GREEN + "Successfully set spawn!");
    44. return true;
    45. }else{
    46. p.sendMessage(ChatColor.RED + "You do not have permission!");
    47.  
    48.  
    49. }
    50.  
    51. if (cmd.getName().equalsIgnoreCase("spawn")) {
    52. if (SettingsManager.getData().getConfigurationSection("spawn") == null) {
    53. p.sendMessage(ChatColor.RED + "The spawn has not been set!");
    54. return true;
    55. }
    56. World w = Bukkit.getServer().getWorld(SettingsManager.getData().getString("spawn.world"));
    57. double x = SettingsManager.getData().getDouble("spawn.x");
    58. double y = SettingsManager.getData().getDouble("spawn.y");
    59. double z = SettingsManager.getData().getDouble("spawn.z");
    60. p.teleport(new Location(w, x, y, z));
    61. p.sendMessage(ChatColor.GREEN + "Welcome to spawn!");
    62. }
    63. }
    64.  
    65. if (cmd.getName().equalsIgnoreCase("setwarp")) {
    66. if(sender.hasPermission("ws.setwarp")){
    67.  
    68. if (args.length == 0) {
    69. p.sendMessage(ChatColor.RED + "Please specify a name!");
    70. return true;
    71. }
    72. SettingsManager.getData().set("warps." + args[0] + ".world", p.getLocation().getWorld().getName());
    73. SettingsManager.getData().set("warps." + args[0] + ".x", p.getLocation().getX());
    74. SettingsManager.getData().set("warps." + args[0] + ".y", p.getLocation().getY());
    75. SettingsManager.getData().set("warps." + args[0] + ".z", p.getLocation().getZ());
    76. settings.saveData();
    77. p.sendMessage(ChatColor.GREEN + "Set warp " + args[0] + "!");
    78. }else{
    79. p.sendMessage(ChatColor.RED + "You do not have permission!");
    80.  
    81. }
    82. }
    83.  
    84. if (cmd.getName().equalsIgnoreCase("warp")) {
    85. if (args.length == 0) {
    86. p.sendMessage(ChatColor.RED + "Please specify a name!");
    87. return true;
    88. }
    89. if (SettingsManager.getData().getConfigurationSection("warps." + args[0]) == null) {
    90. p.sendMessage(ChatColor.RED + "Warp " + args[0] + " does not exist!");
    91. return true;
    92. }
    93. World w = Bukkit.getServer().getWorld(SettingsManager.getData().getString("warps." + args[0] + ".world"));
    94. double x = SettingsManager.getData().getDouble("warps." + args[0] + ".x");
    95. double y = SettingsManager.getData().getDouble("warps." + args[0] + ".y");
    96. double z = SettingsManager.getData().getDouble("warps." + args[0] + ".z");
    97. p.teleport(new Location(w, x, y, z)); }
    98.  
    99. if (cmd.getName().equalsIgnoreCase("delwarp")) {
    100. if(sender.hasPermission("ws.delwarp")){
    101.  
    102. if (args.length == 0) {
    103. p.sendMessage(ChatColor.RED + "Please specify a name!");
    104. return true;
    105. }
    106. if (SettingsManager.getData().getConfigurationSection("warps." + args[0]) == null) {
    107. p.sendMessage(ChatColor.RED + "Warp " + args[0] + " does not exist!");
    108. return true;
    109. }
    110. SettingsManager.getData().set("warps." + args[0], null);
    111. settings.saveData();
    112. p.sendMessage(ChatColor.GREEN + "Successfully removed warp " + args[0] + "!");
    113. }else{
    114. p.sendMessage(ChatColor.RED + "You do not have permission!");
    115.  
    116.  
    117. }
    118. }
    119. return true;
    120. }
    121. }
    122.  
    123.  

    GusGold or Blah1 could you possible coyly my code and edit it because I'm confused cause I'm being told so many things. That would be great if you could, when I enter the code I get errors.
    Code:java
    1. ackage me.clydetorklegaming.warpandspawn;
    2.  
    3. import java.util.HashMap;
    4.  
    5. import org.bukkit.ChatColor;
    6. import org.bukkit.Location;
    7. import org.bukkit.block.Sign;
    8. import org.bukkit.entity.Player;
    9. import org.bukkit.event.EventHandler;
    10. import org.bukkit.event.Listener;
    11. import org.bukkit.event.block.Action;
    12. import org.bukkit.event.block.SignChangeEvent;
    13. import org.bukkit.event.player.PlayerInteractEvent;
    14.  
    15. public class MainListener implements Listener{
    16.  
    17. public final MainListener plugin;
    18.  
    19. public MainListener(MainListener instance){
    20. plugin = instance;
    21. plugin.getServer().getPluginManager.registerEvents(this, plugin);
    22.  
    23. }
    24.  
    25. public final HashMap<Location, String> signs = new HashMap<Location, String>();
    26.  
    27. @EventHandler
    28. public void onSignChange(SignChangeEvent event) {
    29. Player p = event.getPlayer();
    30. if(event.getLine(0).equalsIgnoreCase("[Spawn]"));
    31. signs.put(event.getBlock().getLocation(),event.getPlayer().getName());
    32. event.setLine(1, "Click");
    33. event.setLine(2, "to go to");
    34. event.setLine(3, "spawn");
    35. p.sendMessage(ChatColor.GREEN + "Sucessfully set spawn sign");
    36. }
    37.  
    38. @EventHandler
    39. public void onPlayerInteract(PlayerInteractEvent event) {
    40. Player p = event.getPlayer();
    41. if (!(event.getAction() == Action.RIGHT_CLICK_BLOCK)) return;
    42. if (event.getClickedBlock().getState() instanceof Sign) {
    43. Sign s = (Sign) event.getClickedBlock().getState();
    44. if (s.getLine(0).equalsIgnoreCase("[Spawn]")) {
    45. if(signs.containsKey(event.getClickedBlock().getLocation())) {
    46. p.teleport(p.getWorld().getSpawnLocation());
    47. p.sendMessage(ChatColor.GREEN + "Sucessfully teleproted to spawn");
    48. }
    49. }
    50. }
    51. }
    52. }
    53.  
    54.  
     
  22. Offline

    Blah1

    ClydetorkleGaming Main class?

    Alright. Give this a try:
    Main:
    Code:java
    1. package me.clydetorklegaming.warpandspawn;
    2.  
    3. import me.clydetorklegaming.warpandspawn.SettingsManager;
    4.  
    5. import org.bukkit.Bukkit;
    6. import org.bukkit.ChatColor;
    7. import org.bukkit.Location;
    8. import org.bukkit.World;
    9. import org.bukkit.command.Command;
    10. import org.bukkit.command.CommandSender;
    11. import org.bukkit.entity.Player;
    12. import org.bukkit.plugin.java.JavaPlugin;
    13.  
    14. public class Main extends JavaPlugin {
    15.  
    16. SettingsManager settings = SettingsManager.getInstance();
    17.  
    18. public void onEnable() {
    19. settings.setup(this);
    20. MainListener ml = new MainListener(this);
    21. Bukkit.getServer().getPluginManager().registerEvents(ml, this);
    22. getCommand("setwarpspawn").setExecutor(ml);
    23. }
    24. // Change all the "SettingManagers" to settings.
    25.  
    26.  
    27. public boolean onCommand(CommandSender sender, Command cmd, String commandLabel, String[] args) {
    28.  
    29. if (!(sender instanceof Player)) {
    30. sender.sendMessage(ChatColor.RED + "This plugin is for players only!");
    31. return true;
    32. }
    33.  
    34. Player p = (Player) sender;
    35.  
    36.  
    37. if (cmd.getName().equalsIgnoreCase("setspawn")) {
    38. if(sender.hasPermission("ws.setspawn")){
    39.  
    40. SettingsManager.getData().set("spawn.world", p.getLocation().getWorld().getName());
    41. SettingsManager.getData().set("spawn.x", p.getLocation().getX());
    42. SettingsManager.getData().set("spawn.y", p.getLocation().getY());
    43. SettingsManager.getData().set("spawn.z", p.getLocation().getZ());
    44. settings.saveData();
    45. p.sendMessage(ChatColor.GREEN + "Successfully set spawn!");
    46. return true;
    47. }else{
    48. p.sendMessage(ChatColor.RED + "You do not have permission!");
    49.  
    50.  
    51. }
    52.  
    53. if (cmd.getName().equalsIgnoreCase("spawn")) {
    54. if (SettingsManager.getData().getConfigurationSection("spawn") == null) {
    55. p.sendMessage(ChatColor.RED + "The spawn has not been set!");
    56. return true;
    57. }
    58. World w = Bukkit.getServer().getWorld(SettingsManager.getData().getString("spawn.world"));
    59. double x = SettingsManager.getData().getDouble("spawn.x");
    60. double y = SettingsManager.getData().getDouble("spawn.y");
    61. double z = SettingsManager.getData().getDouble("spawn.z");
    62. p.teleport(new Location(w, x, y, z));
    63. p.sendMessage(ChatColor.GREEN + "Welcome to spawn!");
    64. }
    65. }
    66.  
    67. if (cmd.getName().equalsIgnoreCase("setwarp")) {
    68. if(sender.hasPermission("ws.setwarp")){
    69.  
    70. if (args.length == 0) {
    71. p.sendMessage(ChatColor.RED + "Please specify a name!");
    72. return true;
    73. }
    74. SettingsManager.getData().set("warps." + args[0] + ".world", p.getLocation().getWorld().getName());
    75. SettingsManager.getData().set("warps." + args[0] + ".x", p.getLocation().getX());
    76. SettingsManager.getData().set("warps." + args[0] + ".y", p.getLocation().getY());
    77. SettingsManager.getData().set("warps." + args[0] + ".z", p.getLocation().getZ());
    78. settings.saveData();
    79. p.sendMessage(ChatColor.GREEN + "Set warp " + args[0] + "!");
    80. }else{
    81. p.sendMessage(ChatColor.RED + "You do not have permission!");
    82.  
    83. }
    84. }
    85.  
    86. if (cmd.getName().equalsIgnoreCase("warp")) {
    87. if (args.length == 0) {
    88. p.sendMessage(ChatColor.RED + "Please specify a name!");
    89. return true;
    90. }
    91. if (SettingsManager.getData().getConfigurationSection("warps." + args[0]) == null) {
    92. p.sendMessage(ChatColor.RED + "Warp " + args[0] + " does not exist!");
    93. return true;
    94. }
    95. World w = Bukkit.getServer().getWorld(SettingsManager.getData().getString("warps." + args[0] + ".world"));
    96. double x = SettingsManager.getData().getDouble("warps." + args[0] + ".x");
    97. double y = SettingsManager.getData().getDouble("warps." + args[0] + ".y");
    98. double z = SettingsManager.getData().getDouble("warps." + args[0] + ".z");
    99. p.teleport(new Location(w, x, y, z)); }
    100.  
    101. if (cmd.getName().equalsIgnoreCase("delwarp")) {
    102. if(sender.hasPermission("ws.delwarp")){
    103.  
    104. if (args.length == 0) {
    105. p.sendMessage(ChatColor.RED + "Please specify a name!");
    106. return true;
    107. }
    108. if (SettingsManager.getData().getConfigurationSection("warps." + args[0]) == null) {
    109. p.sendMessage(ChatColor.RED + "Warp " + args[0] + " does not exist!");
    110. return true;
    111. }
    112. SettingsManager.getData().set("warps." + args[0], null);
    113. settings.saveData();
    114. p.sendMessage(ChatColor.GREEN + "Successfully removed warp " + args[0] + "!");
    115. }else{
    116. p.sendMessage(ChatColor.RED + "You do not have permission!");
    117.  
    118.  
    119. }
    120. }
    121. return true;
    122. }
    123. }
    124.  


    MainListener:
    Code:java
    1. package me.clydetorklegaming.warpandspawn;
    2.  
    3. import java.util.HashMap;
    4.  
    5. import me.MirrorRealm.kKits.Main;
    6. import org.bukkit.Bukkit;
    7. import org.bukkit.ChatColor;
    8. import org.bukkit.Location;
    9. import org.bukkit.World;
    10. import org.bukkit.block.Sign;
    11. import org.bukkit.command.Command;
    12. import org.bukkit.command.CommandExecutor;
    13. import org.bukkit.command.CommandSender;
    14. import org.bukkit.entity.Player;
    15. import org.bukkit.event.EventHandler;
    16. import org.bukkit.event.Listener;
    17. import org.bukkit.event.block.Action;
    18. import org.bukkit.event.block.SignChangeEvent;
    19. import org.bukkit.event.player.PlayerInteractEvent;
    20.  
    21. public class MainListener implements Listener, CommandExecutor {
    22. private Main plugin;
    23.  
    24. public MainListener(Main plugin){
    25. this.plugin = plugin;
    26. }
    27. public final HashMap<Location, String> signs = new HashMap();
    28.  
    29. @EventHandler
    30. public void onSignChange(SignChangeEvent event) {
    31. Player p = event.getPlayer();
    32. if(event.getLine(0).equalsIgnoreCase("[Spawn]"));
    33. signs.put(event.getBlock().getLocation(),event.getPlayer().getName());
    34. event.setLine(1, "Click");
    35. event.setLine(2, "to go to");
    36. event.setLine(3, "spawn");
    37. p.sendMessage(ChatColor.GREEN + "Sucessfully set spawn sign");
    38. }
    39. public boolean onCommand(CommandSender sender, Command cmd, String commandLabel, String[] args){
    40. Player player = (Player) sender;
    41. if (cmd.getName().equalsIgnoreCase("setwarpspawn")){
    42. plugin.getConfig().set("setspawn.world", player.getLocation().getWorld().getName());
    43. plugin.getConfig().set("setspawn.x", Double.valueOf(player.getLocation().getX()));
    44. plugin.getConfig().set("setspawn.y", Double.valueOf(player.getLocation().getY()));
    45. plugin.getConfig().set("setspawn.z", Double.valueOf(player.getLocation().getZ()));
    46. plugin.getConfig().set("setspawn.yaw", Float.floatToIntBits(player.getLocation().getYaw()));
    47. plugin.getConfig().set("setspawn.pitch", Float.floatToIntBits(player.getLocation().getPitch()));
    48. player.sendMessage(ChatColor.GREEN + "Set warp: Spawn");
    49. plugin.saveConfig();
    50. }
    51. return true;
    52. }
    53. @EventHandler
    54. public void onPlayerInteract(PlayerInteractEvent event) {
    55. Player p = event.getPlayer();
    56. if (event.getAction().equals(Action.RIGHT_CLICK_BLOCK)){
    57. if (event.getClickedBlock().getState() instanceof Sign) {
    58. Sign s = (Sign) event.getClickedBlock().getState();
    59. if (s.getLine(0).equalsIgnoreCase("[Spawn]")) {
    60. try{
    61. World w = Bukkit.getServer().getWorld(plugin.getConfig().getString("setspawn.world"));
    62. double x = plugin.getConfig().getDouble("setspawn.x");
    63. double y = plugin.getConfig().getDouble("setspawn.y");
    64. double z = plugin.getConfig().getDouble("setspawn.z");
    65. float yaw = Float.intBitsToFloat((Integer) plugin.getConfig().getInt("setspawn.yaw"));
    66. float pitch = Float.intBitsToFloat((Integer) plugin.getConfig().getInt("setspawn.pitch"));
    67. final Location spawn = new Location(w,x,y,z,yaw,pitch);
    68. event.getPlayer().teleport(spawn);
    69. }catch (Exception e){
    70. event.getPlayer().sendMessage(ChatColor.RED + "Could not find warp : Spawn");
    71. }
    72. }
    73. }
    74. }
    75. }
    76. }
    77.  

    Don't forget to add you commands to the plugin.yml

    EDIT by Moderator: merged posts, please use the edit button instead of double posting.
     
    Last edited by a moderator: Jun 5, 2016
  23. Blah1 Thanks i will try that! :)

    Blah1 It gives MainListener an error asking to make an unemplemented method or make it abstract, what do i do?
    Code:java
    1. public class MainListener implements Listener, CommandExecutor {


    EDIT by Moderator: merged posts, please use the edit button instead of double posting.
     
    Last edited by a moderator: Jun 5, 2016
  24. Offline

    Blah1

    You probably took out the command section. If you did just remove "CommandExecutor"
     
  25. Blah1 I think that was it because i remove the setwarpspawn command because i already had one. So now will the onsignchangevent and onplayerinteractevent work correctly?
     
  26. Offline

    Blah1

  27. Blah1 If i wanted to make the color and text of the spawn sign configurable would it be like:
    Code:
    SettingsManager.getConfig.getDouble("message");
    event.setLine(1)
     
  28. Offline

    Blah1

    Code:
    event.setLine(1, ChatColor.translateAlternateColorCodes('&', plugin.getConfig().getString("sign.color"));
    
     
  29. Offline

    boysnnoco

    Btw your original code wasn't working because you where trying to do sign.getLink(0).equalsIgnoreCase("[Warp]") and the W in warp is capital so nothing can be equalignoringcase to Warp! :)
     
Thread Status:
Not open for further replies.

Share This Page