This code unloads the world, resets it, and teleports the player back to the world. After that, durabilities are out of sync. Cannot break blocks. That may cause the issue.
Level level = is.getWorld();
for(Player player : level.getPlayers().values()) {
PlayerManager.toSpawn(player);
}
try {
level.unload(true);
} catch (Exception ex) {
ex.printStackTrace();
}
File one = new File (Server.getInstance().getDataPath() + "/worlds/" + id);
File two = new File("/home/CloudNet/local/Maps/Skyblock/preset");
File regionfolder = new File(Server.getInstance().getDataPath() + "worlds/" + id + "/db");
File worldfolder = new File(Server.getInstance().getDataPath() + "worlds/" + id);
FileUtils.deleteDirectoryContents(regionfolder);
FileUtils.deleteDirectoryContents(worldfolder);
worldfolder.delete();
one.delete();
org.iq80.leveldb.util.FileUtils.copyDirectoryContents(two, one);
Server.getInstance().loadLevel(String.valueOf(id));
p.teleport(Server.getInstance().getLevelByName(String.valueOf(id)).getSafeSpawn());