Delete a world and scheduler

Discussion in 'Plugin Development' started by Mr01Luki, Nov 4, 2014.

Thread Status:
Not open for further replies.
  1. Hello!
    I know that I´m not very good at coding plugins and I started not very long ago with this.
    So I tried to write a little minigame and I have two problems. When the plugin is activated, a world gets created and when the game ends, I want it to get deleted and generated again. But you can only delete empty folders. Probably this is very easy, but I don´t know how to do this.
    The second problem is the Scheduler. This is the first time I use it and there it doesn´t work.
    Here is the code: http://hastebin.com/aqurasiwov.coffee
    When I type "/EgoBattle betreten", it doesn´t work.
    Thank you for your help!
     
  2. Offline

    teej107

    To solve the world deletion problem, make sure you unload the world and you'll have to call a recursive method to delete a folder and its contents.
     
  3. Offline

    RebzO1

    I create and delete worlds in a plugin i wrote (im not that great at coding myself either)
    Below ill put how i do it and maybe it will help you
    I use it to delete then create 'mine worlds' for resource gathering.

    Code:java
    1. @SuppressWarnings("deprecation")
    2. public boolean onCommand(CommandSender sender, Command cmd, String CommandLabel, String[] args){
    3. Player p = (Player) sender;
    4. Location loc = (Bukkit.getServer().getWorld("world").getSpawnLocation());
    5. if (cmd.getName().equalsIgnoreCase("mw-delete")) {
    6. for(Player o : Bukkit.getWorld("mine_world").getPlayers()) {
    7. o.teleport(loc);
    8. }
    9. Bukkit.unloadWorld(Bukkit.getWorld("mine_world"), true);
    10. File file = new File("./mine_world/");
    11. try {
    12. FileUtils.deleteDirectory(file);
    13. } catch (IOException e) {
    14. e.printStackTrace();
    15. }
    16. p.sendMessage(ChatColor.DARK_AQUA + "Map" + ChatColor.RED + " mine_world " + ChatColor.DARK_AQUA + "has been deleted!");
    17. return true;
    18. }
    19.  
    20. if (cmd.getName().equalsIgnoreCase("mw-create")) {
    21. WorldCreator world = new WorldCreator("mine_world");
    22. world.environment(Environment.NORMAL);
    23. world.createWorld();
    24. p.teleport(this.getServer().getWorld("mine_world").getSpawnLocation());
    25. p.sendMessage(ChatColor.RED + "Find a safe location and use /setwarp mine_world");
    26. Bukkit.getServer().dispatchCommand(Bukkit.getServer().getConsoleSender(), "sudo" + p.getName() + "wb set 4000");
    27. Bukkit.broadcastMessage(ChatColor.DARK_AQUA + "Map" + ChatColor.RED + " mine_world " + ChatColor.DARK_AQUA + "has been reset!");
    28. return true;
    29. }


    What i found with this is it doesnt seem to work unless mine_world is in my multiverse config already
    again i hope its of use to you
     
  4. Code:java
    1. package com.github.mr01luki;
    2.  
    3. import java.util.ArrayList;
    4.  
    5. import org.bukkit.Bukkit;
    6. import org.bukkit.ChatColor;
    7. import org.bukkit.Location;
    8. import org.bukkit.WorldCreator;
    9. import org.bukkit.command.Command;
    10. import org.bukkit.command.CommandSender;
    11. import org.bukkit.entity.Player;
    12. import org.bukkit.event.EventHandler;
    13. import org.bukkit.event.Listener;
    14. import org.bukkit.event.entity.EntityDamageEvent;
    15. import org.bukkit.event.entity.PlayerDeathEvent;
    16. import org.bukkit.plugin.java.JavaPlugin;
    17.  
    18. public class EgoBattle extends JavaPlugin implements Listener{
    19.  
    20. //Variablen
    21.  
    22. public static boolean imSpiel = false;
    23. public static boolean Friedenszeitaktiv = true;
    24. public String Prefix = "§7[§1Ego Battle§7] ";
    25.  
    26. //Listen
    27.  
    28. public ArrayList<Player> SpielerimSpiel;
    29.  
    30. public void onEnable() {
    31. this.reloadConfig();
    32. this.getConfig().options().copyDefaults(true);
    33. this.saveConfig();
    34. WorldCreator EgoBattleWeltErsteller = new WorldCreator("EgoBattleWelt");
    35. Bukkit.createWorld(EgoBattleWeltErsteller);
    36. Bukkit.getServer().getWorld("EgoBattleWelt").setAutoSave(false);
    37. Friedenszeitaktiv = true;
    38. }
    39.  
    40. public void onDisable() {
    41. Friedenszeitaktiv = true;
    42. SpielerimSpiel.contains(null);
    43. imSpiel = false;
    44. this.saveConfig();
    45. }
    46.  
    47. @Override
    48. public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) {
    49.  
    50. Player p = null;
    51. if(sender instanceof Player){
    52. p = (Player) sender;
    53. }
    54.  
    55. if(cmd.getName().equalsIgnoreCase("EgoBattle")){
    56.  
    57. if(p != null){
    58.  
    59. if(args.length == 0){
    60. p.sendMessage(Prefix + "/EgoBattle betreten Spiel betreten");
    61. p.sendMessage(Prefix + "/EgoBattle starten Spiel starten");
    62. p.sendMessage(Prefix + "/EgoBattle verlassen Spiel verlassen");
    63. return true;
    64. } else if(args.length == 1){
    65. if(args[0].equalsIgnoreCase("betreten")){
    66. if(p.hasPermission("EgoBattle.spielen")){
    67. if(EgoBattle.imSpiel == true){
    68. p.sendMessage(Prefix + "Das Spiel läuft bereits.");
    69. return true;
    70. } else{
    71. SpielerimSpiel.add(p);
    72. p.sendMessage(Prefix + "Du hast das Spiel betreten.");
    73. for(Player Spieler : SpielerimSpiel){
    74. Spieler.sendMessage(Prefix + ChatColor.GREEN + p.getDisplayName() + ChatColor.GRAY + "hat das Spiel betreten.");
    75. }
    76. if(SpielerimSpiel.size() >= this.getConfig().getInt("EgoBattle.benoetigteSpieler")){
    77. for(int Lobbyzeit = 90; Lobbyzeit > 0; Lobbyzeit--){
    78. Lobbycountdown(Lobbyzeit);
    79. }
    80. imSpiel = true;
    81. Location Hilfsort = new Location(Bukkit.getWorld("EgoBattleWelt"), 0, 0, 0);
    82. Location EgoBattleSpawn = new Location(Bukkit.getWorld("EgoBattleWelt"), 0, Bukkit.getWorld("EgoBattleWelt").getHighestBlockYAt(Hilfsort), 0);
    83. for(Player Spieler : SpielerimSpiel){
    84. Spieler.teleport(EgoBattleSpawn);
    85. }
    86. FriedenszeitCountdown();
    87. }
    88. return true;
    89. }
    90. }
    91. }else if(args[0].equalsIgnoreCase("starten")){
    92. if(p.hasPermission("EgoBattle.starten")){
    93. if(EgoBattle.imSpiel == false){
    94. for(int Lobbyzeit = 11; Lobbyzeit > 0; Lobbyzeit--){
    95. Lobbycountdown(Lobbyzeit);
    96. }
    97. imSpiel = true;
    98. p.sendMessage(Prefix + "Du hast das Spiel gestartet.");
    99. Location Hilfsort = new Location(Bukkit.getWorld("EgoBattleWelt"), 0, 0, 0);
    100. Location EgoBattleSpawn = new Location(Bukkit.getWorld("EgoBattleWelt"), 0, Bukkit.getWorld("EgoBattleWelt").getHighestBlockYAt(Hilfsort), 0);
    101. for(Player Spieler : SpielerimSpiel){
    102. Spieler.teleport(EgoBattleSpawn);
    103. }
    104. FriedenszeitCountdown();
    105. return true;
    106. } else{
    107. p.sendMessage(Prefix + "Das Spiel läuft bereits.");
    108. return true;
    109. }
    110. }
    111. }
    112. }
    113.  
    114. }
    115.  
    116. }
    117.  
    118. return false;
    119. }
    120.  
    121. @SuppressWarnings("deprecation")
    122. public void Lobbycountdown(int Zeit){
    123. Bukkit.getServer().getScheduler().scheduleAsyncDelayedTask(this, new Runnable(){
    124. public void run(){
    125. for(Player alleSpieler : SpielerimSpiel){
    126. alleSpieler.sendMessage(Prefix + "Das Spiel startet in" + Zeit + "Sekunde/n.");
    127. }
    128. }
    129. }, 20L);
    130. }
    131.  
    132. @EventHandler
    133. public void Schaden(EntityDamageEvent event){
    134. if(event.getEntity() instanceof Player){
    135. if(SpielerimSpiel.contains(event.getEntity())){
    136. if(Friedenszeitaktiv == true){
    137. event.setCancelled(true);
    138. }
    139. }
    140. }
    141. }
    142.  
    143. @EventHandler
    144. public void Kill(PlayerDeathEvent event){
    145. Player p = (Player) event.getEntity();
    146. if(SpielerimSpiel.contains(p)){
    147. if(p.getLastDamageCause() instanceof Player){
    148. Player k = p.getKiller();
    149. for(Player Spieler : SpielerimSpiel){
    150. Spieler.sendMessage(Prefix + p.getDisplayName() + "wurde von" + k.getDisplayName() + "aus dem Spiel befördert.");
    151. }
    152. } else{
    153. for(Player Spieler : SpielerimSpiel){
    154. Spieler.sendMessage(Prefix + p.getDisplayName() + "ist ausgeschieden.");
    155. }
    156. }
    157. SpielerimSpiel.remove(p);
    158. p.kickPlayer(Prefix + "Du bist ausgeschieden.");
    159. if(SpielerimSpiel.size() < 2){
    160. Player s = (Player) SpielerimSpiel.get(0);
    161. s.sendMessage(Prefix + "Du hast gewonnen.");
    162. SpielerimSpiel.remove(s);
    163. s.kickPlayer(Prefix + "Du hast gewonnen.");
    164. Friedenszeitaktiv = true;
    165. EgoBattleWeltneugenerieren();
    166. imSpiel = false;
    167. }
    168. }
    169. }
    170.  
    171. public void EgoBattleWeltneugenerieren(){
    172. if(Bukkit.getWorld("EgoBattleWelt").getPlayers().isEmpty() == false){
    173. for(Player alleSpieler : Bukkit.getWorld("EgoBattleWelt").getPlayers()){
    174. alleSpieler.teleport(Bukkit.getWorld("world").getSpawnLocation());
    175. }
    176. }
    177. Bukkit.unloadWorld("EgoBattleWelt", false);
    178. /* File EgoBattleWeltOrdner = new File("./EgoBattleWelt/");
    179. try{
    180. FileUtils.deleteDirectory(EgoBattleWeltOrdner);
    181. } catch(IOException e){
    182. e.printStackTrace();
    183. }*/
    184. WorldCreator EgoBattleWeltErsteller = new WorldCreator("EgoBattleWelt");
    185. Bukkit.createWorld(EgoBattleWeltErsteller);
    186. }
    187.  
    188. @SuppressWarnings("deprecation")
    189. public void FriedenszeitCountdown(){
    190. for(int Friedenszeit = 120; Friedenszeit > 0; Friedenszeit--){
    191. Bukkit.getScheduler().scheduleAsyncDelayedTask(this, new Runnable(){
    192. public void run(){
    193.  
    194. }
    195. }, 20);
    196. }
    197. Friedenszeitaktiv = false;
    198. }
    199. }


    Thank you for your help! :)
    But my "Eclipse" can´t import "FileUtils". Where do you have it from?

    To my second problem: There is a mistake( or two or three) anywhere in my code but I don´t find it. :( Can anyone help me?

    The code is on top of the thread. :)
     
  5. Offline

    RebzO1

    when i wrote this it was flagged as an error when you right click one of the imports should be fileutils
    as for an error i am not very good at trouble shooting work, im new at this so i just keep hammering it till it works
     
Thread Status:
Not open for further replies.

Share This Page