package net.glowstone.io.nbt;
import net.glowstone.GlowServer;
import net.glowstone.io.ScoreboardIoService;
import net.glowstone.scoreboard.GlowScoreboard;
import net.glowstone.scoreboard.NbtScoreboardIoReader;
import net.glowstone.scoreboard.NbtScoreboardIoWriter;
import java.io.File;
import java.io.IOException;
/**
* An implementation of the {@link ScoreboardIoService} which reads and writes scoreboards
* in NBT form
*/
public final class NbtScoreboardIoService implements ScoreboardIoService {
/**
* The root directory of the scoreboard
*/
private final File dir;
private final GlowServer server;
private static final String SCOREBOARD_SAVE_FILE = "scoreboard.dat";
public NbtScoreboardIoService(GlowServer server, File dir) {
this.server = server;
this.dir = dir;
}
@Override
public GlowScoreboard readMainScoreboard() throws IOException {
return NbtScoreboardIoReader.readMainScoreboard(new File(dir, SCOREBOARD_SAVE_FILE));
}
@Override
public void writeMainScoreboard(GlowScoreboard scoreboard) throws IOException {
NbtScoreboardIoWriter.writeMainScoreboard(new File(dir, SCOREBOARD_SAVE_FILE), scoreboard);
}
@Override
public void unload() throws IOException {
save();
}
@Override
public void save() throws IOException {
writeMainScoreboard(server.getScoreboardManager().getMainScoreboard());
}
}