Solved Trying to save each arena its own .yml file

Discussion in 'Plugin Development' started by xxmobkiller, Sep 28, 2014.

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

    xxmobkiller

    Hi, I am trying to make my plugin save each arena when i use /arena create <arena> then it save the name and the location to its own .yml the code blow is wha ti got i think i have coded it wrong can anyone please help me?

    Code:java
    1. public FileConfiguration StorageFilef = null;
    2. private File customConfigFile = null;
    3. private TNTWars plugin;
    4.  
    5. public ArenasConfig(TNTWars plugin) {
    6. this.plugin = plugin;
    7. }
    8.  
    9. @SuppressWarnings("deprecation")
    10. public void reloadDataConfig(String name) {
    11. if (customConfigFile == null) {
    12. customConfigFile = new File(plugin.getDataFolder(), "/arenas/" + name + ".yml");
    13. }
    14. StorageFilef = YamlConfiguration.loadConfiguration(customConfigFile);
    15. InputStream defConfigStream = plugin.getResource("/arenas/" + name + ".yml");
    16. if (defConfigStream != null) {
    17. YamlConfiguration defConfig = YamlConfiguration.loadConfiguration(defConfigStream);
    18. StorageFilef.setDefaults(defConfig);
    19. }
    20. }
    21.  
    22. public FileConfiguration getDataConfig(String name) {
    23. if (StorageFilef == null) {
    24. this.reloadDataConfig(name);
    25. }
    26. return StorageFilef;
    27. }
    28.  
    29. public void saveDataConfig(String name) {
    30. if (StorageFilef == null || customConfigFile == null) {
    31. return;
    32. }
    33. try {
    34. getDataConfig(name).save(customConfigFile);
    35. } catch (IOException ex) {
    36. plugin.getLogger().log(Level.SEVERE,"Could not save config to " + customConfigFile, ex);
    37. }
    38. }
     
  2. Offline

    blobic123

    xxmobkiller
    Try changing this

    Code:java
    1. customConfigFile = new File(plugin.getDataFolder(), "/arenas/"+ name +".yml");


    to this

    Code:java
    1. customConfigFile = new File(plugin.getDataFolder() + File.seperator + "arena" + File.seperator, name + ".yml");
     
  3. Offline

    xxmobkiller

    Ok, Thank You man, I'll try that

    Ok that works but now i got a bigger problem, When i use /arena setlobby arena it tells me NullPointerException setlobbycommand java line 14 LINE 14 =
    Code:java
    1. String arena = args[0];
    2. ArenaManager.getManager().getArena(arena).setLobbySpawn(arena, p.getLocation());

    and here what ArenaManager class is
    Code:java
    1.  
    2. private static HashMap<String,Arena> arenas = new HashMap<String,Arena>();
    3. public static ArenaManager am = new ArenaManager();
    4.  
    5. private ArenaManager() {}
    6.  
    7. public static ArenaManager getManager() {
    8. return am;
    9. }
    10.  
    11. public Arena getArena(String i){
    12. for(Arena a : arenas.values()){
    13. if(a.getArenaName() == i){
    14. return a;
    15. }
    16. }
    17. return null;
    18. }
    19.  
    20. public static void loadArenas() {
    21. arenas = new HashMap<String,Arena>();
    22. File directory = new File(TNTWars.getInstance().getDataFolder(), "/arenas/");
    23. if (!directory.exists() || !directory.isDirectory())
    24. return;
    25. for (File f : directory.listFiles()) {
    26. String name = f.getName();
    27. if (name.contains(".yml")) {
    28. String arena = name.replace(".yml", "");
    29. try {
    30. Arena a = new Arena(arena);
    31. arenas.put(arena, a);
    32. } catch (Exception e) {
    33. e.printStackTrace();
    34. }
    35. }
    36. }
    37. }
    38.  
    39.  
    40. CLASS FOR ARENA
    41.  
    42.  
    43. private ArrayList<String> inGamePlayers = new ArrayList<String>();
    44. private ArrayList<String> blueTeam = new ArrayList<String>();
    45. private ArrayList<String> specTeam = new ArrayList<String>();
    46. private ArrayList<String> redTeam = new ArrayList<String>();
    47. private int maxplayers;
    48. private int minplayers;
    49. private boolean inGame;
    50. private Location lobby;
    51. private Location blue;
    52. private Location spec;
    53. private Location red;
    54. private String name;
    55.  
    56. public Arena(String name) {
    57.  
    58. this.name = name;
    59. this.maxplayers = 8;
    60. this.minplayers = 2;
    61. this.inGame = false;
    62. this.lobby = new Location(Bukkit.getWorld("world"), 0.0D, 0.0D, 0.0D, 0F, 0F);
    63. this.blue = new Location(Bukkit.getWorld("world"), 0.0D, 0.0D, 0.0D, 0F, 0F);
    64. this.red = new Location(Bukkit.getWorld("world"), 0.0D, 0.0D, 0.0D, 0F, 0F);
    65. this.spec = new Location(Bukkit.getWorld("world"), 0.0D, 0.0D, 0.0D, 0F, 0F);
    66.  
    67. TNTWars.ac.getDataConfig(name).set("Arena.Name", name);
    68. TNTWars.ac.getDataConfig(name).set("Arena.Schematic", name);
    69. TNTWars.ac.getDataConfig(name).set("Arena.Countdown", 15);
    70. TNTWars.ac.getDataConfig(name).set("Arena.MaxPlayers", maxplayers);
    71. TNTWars.ac.getDataConfig(name).set("Arena.MinPlayers", minplayers);
    72. TNTWars.ac.getDataConfig(name).set("Arena.Protection.Pos1", "POS1");
    73. TNTWars.ac.getDataConfig(name).set("Arena.Protection.Pos2", "POS2");
    74.  
    75. TNTWars.ac.getDataConfig(name).set("Arena.Spawns.Lobby.World", lobby.getWorld().getName());
    76. TNTWars.ac.getDataConfig(name).set("Arena.Spawns.Lobby.X", lobby.getBlockX());
    77. TNTWars.ac.getDataConfig(name).set("Arena.Spawns.Lobby.Y", lobby.getBlockY());
    78. TNTWars.ac.getDataConfig(name).set("Arena.Spawns.Lobby.Z", lobby.getBlockZ());
    79. TNTWars.ac.getDataConfig(name).set("Arena.Spawns.Lobby.Yaw", lobby.getYaw());
    80. TNTWars.ac.getDataConfig(name).set("Arena.Spawns.Lobby.Pitch", lobby.getPitch());
    81.  
    82. TNTWars.ac.getDataConfig(name).set("Arena.Spawns.Blue.World", blue.getWorld().getName());
    83. TNTWars.ac.getDataConfig(name).set("Arena.Spawns.Blue.X", blue.getBlockX());
    84. TNTWars.ac.getDataConfig(name).set("Arena.Spawns.Blue.Y", blue.getBlockY());
    85. TNTWars.ac.getDataConfig(name).set("Arena.Spawns.Blue.Z", blue.getBlockZ());
    86. TNTWars.ac.getDataConfig(name).set("Arena.Spawns.Blue.Yaw", blue.getYaw());
    87. TNTWars.ac.getDataConfig(name).set("Arena.Spawns.Blue.Pitch", blue.getPitch());
    88.  
    89. TNTWars.ac.getDataConfig(name).set("Arena.Spawns.Red.World", red.getWorld().getName());
    90. TNTWars.ac.getDataConfig(name).set("Arena.Spawns.Red.X", red.getBlockX());
    91. TNTWars.ac.getDataConfig(name).set("Arena.Spawns.Red.Y", red.getBlockY());
    92. TNTWars.ac.getDataConfig(name).set("Arena.Spawns.Red.Z", red.getBlockZ());
    93. TNTWars.ac.getDataConfig(name).set("Arena.Spawns.Red.Yaw", red.getYaw());
    94. TNTWars.ac.getDataConfig(name).set("Arena.Spawns.Red.Pitch", red.getPitch());
    95.  
    96. TNTWars.ac.getDataConfig(name).set("Arena.Spawns.Spec.World", spec.getWorld().getName());
    97. TNTWars.ac.getDataConfig(name).set("Arena.Spawns.Spec.X", spec.getBlockX());
    98. TNTWars.ac.getDataConfig(name).set("Arena.Spawns.Spec.Y", spec.getBlockY());
    99. TNTWars.ac.getDataConfig(name).set("Arena.Spawns.Spec.Z", spec.getBlockZ());
    100. TNTWars.ac.getDataConfig(name).set("Arena.Spawns.Spec.Yaw", spec.getYaw());
    101. TNTWars.ac.getDataConfig(name).set("Arena.Spawns.Spec.Pitch", spec.getPitch());
    102.  
    103. TNTWars.ac.saveDataConfig(name);
    104. }
    105.  
    106. public String getArenaName() {
    107. return this.name;
    108. }
    109.  
    110. public int getMaxPlayers() {
    111. return this.maxplayers;
    112. }
    113.  
    114. public int getMinPlayers() {
    115. return this.minplayers;
    116. }
    117.  
    118. public void setInGame(boolean ingame) {
    119. this.inGame = ingame;
    120. }
    121.  
    122. public boolean isInGame() {
    123. return this.inGame;
    124. }
    125.  
    126. public void setMaxPlayers(String name, int max) {
    127. this.maxplayers = max;
    128. TNTWars.ac.getDataConfig(name).set("Arena.MaxPlayers", max);
    129. TNTWars.ac.saveDataConfig(name);
    130. }
    131.  
    132. public void setMinPlayers(String name, int min) {
    133. this.minplayers = min;
    134. TNTWars.ac.getDataConfig(name).set("Arena.MinPlayers", min);
    135. TNTWars.ac.saveDataConfig(name);
    136. }
    137.  
    138. public void setSpecSpawn(String name, Location l) {
    139. this.spec = l;
    140. TNTWars.ac.getDataConfig(name).set("Arena.Spawns.Spec.World", spec.getWorld().getName());
    141. TNTWars.ac.getDataConfig(name).set("Arena.Spawns.Spec.X", spec.getBlockX());
    142. TNTWars.ac.getDataConfig(name).set("Arena.Spawns.Spec.Y", spec.getBlockY());
    143. TNTWars.ac.getDataConfig(name).set("Arena.Spawns.Spec.Z", spec.getBlockZ());
    144. TNTWars.ac.getDataConfig(name).set("Arena.Spawns.Spec.Yaw", spec.getYaw());
    145. TNTWars.ac.getDataConfig(name).set("Arena.Spawns.Spec.Pitch", spec.getPitch());
    146. TNTWars.ac.saveDataConfig(name);
    147. }
    148.  
    149. public Location getSpecSpawn() {
    150. return this.spec;
    151. }
    152.  
    153. public void setBlueSpawn(String name, Location l) {
    154. this.blue = l;
    155. TNTWars.ac.getDataConfig(name).set("Arena.Spawns.Blue.World", blue.getWorld().getName());
    156. TNTWars.ac.getDataConfig(name).set("Arena.Spawns.Blue.X", blue.getBlockX());
    157. TNTWars.ac.getDataConfig(name).set("Arena.Spawns.Blue.Y", blue.getBlockY());
    158. TNTWars.ac.getDataConfig(name).set("Arena.Spawns.Blue.Z", blue.getBlockZ());
    159. TNTWars.ac.getDataConfig(name).set("Arena.Spawns.Blue.Yaw", blue.getYaw());
    160. TNTWars.ac.getDataConfig(name).set("Arena.Spawns.Blue.Pitch", blue.getPitch());
    161. TNTWars.ac.saveDataConfig(name);
    162. }
    163.  
    164. public void setRedSpawn(String name, Location l) {
    165. TNTWars.ac.getDataConfig(name).set("Arena.Spawns.Red.World", l.getWorld().getName());
    166. TNTWars.ac.getDataConfig(name).set("Arena.Spawns.Red.X", l.getBlockX());
    167. TNTWars.ac.getDataConfig(name).set("Arena.Spawns.Red.Y", l.getBlockY());
    168. TNTWars.ac.getDataConfig(name).set("Arena.Spawns.Red.Z", l.getBlockZ());
    169. TNTWars.ac.getDataConfig(name).set("Arena.Spawns.Red.Yaw", l.getYaw());
    170. TNTWars.ac.getDataConfig(name).set("Arena.Spawns.Red.Pitch", l.getPitch());
    171. TNTWars.ac.saveDataConfig(name);
    172. this.red = l;
    173. }
    174.  
    175. public void setLobbySpawn(String name, Location l) {
    176. TNTWars.ac.getDataConfig(name).set("Arena.Spawns.Lobby.World", l.getWorld().getName());
    177. TNTWars.ac.getDataConfig(name).set("Arena.Spawns.Lobby.X", l.getBlockX());
    178. TNTWars.ac.getDataConfig(name).set("Arena.Spawns.Lobby.Y", l.getBlockY());
    179. TNTWars.ac.getDataConfig(name).set("Arena.Spawns.Lobby.Z", l.getBlockZ());
    180. TNTWars.ac.getDataConfig(name).set("Arena.Spawns.Lobby.Yaw", l.getYaw());
    181. TNTWars.ac.getDataConfig(name).set("Arena.Spawns.Lobby.Pitch", l.getPitch());
    182. TNTWars.ac.saveDataConfig(name);
    183. this.lobby = l;
    184. }
    185.  
    186. public Location getBlueSpawn() {
    187. return this.blue;
    188. }
    189.  
    190. public Location getRedSpawn() {
    191. return this.red;
    192. }
    193.  
    194. public Location getLobbySpawn() {
    195. return this.lobby;
    196. }
    197.  
    198. public List<String> getRedTeam() {
    199. return this.redTeam;
    200. }
    201.  
    202. public List<String> getBlueTeam() {
    203. return this.blueTeam;
    204. }
    205.  
    206. public List<String> getSpecTeam() {
    207. return this.specTeam;
    208. }
    209.  
    210. public List<String> getInGamePlayers() {
    211. return this.inGamePlayers;
    212. }
    213.  


    EDIT by Moderator: merged posts, please use the edit button instead of double posting.
     
    Last edited by a moderator: Jun 14, 2016
Thread Status:
Not open for further replies.

Share This Page