package net.glowstone.io;

import java.io.File;
import net.glowstone.GlowWorld;

/**
 * Interface for providers of world data storage, including chunks and various metadata.
 */
public interface WorldStorageProvider {

    /**
     * Initializes the storage to correspond to the given world.
     *
     * @param world The world to use.
     */
    void setWorld(GlowWorld world);

    /**
     * Gets the folder holding the world data, if the filesystem is being used.
     *
     * @return The world folder, or null.
     */
    File getFolder();

    /**
     * Gets the {@link ChunkIoService} for this world, to be used for reading and writing chunk data.
     *
     * @return The {@link ChunkIoService}.
     */
    ChunkIoService getChunkIoService();

    /**
     * Gets the {@link WorldMetadataService} for this world, to be used for reading and writing world metadata (seed, time, so on).
     *
     * @return The {@link WorldMetadataService}.
     */
    WorldMetadataService getMetadataService();

    /**
     * Gets the {@link PlayerDataService} for this world, to be used for reading and writing data for online and offline players.
     *
     * @return The {@link PlayerDataService}.
     */
    PlayerDataService getPlayerDataService();

    /**
     * Gets the {@link StructureDataService} for this world, to be used for reading and writing data for structures.
     *
     * @return The {@link StructureDataService}.
     */
    StructureDataService getStructureDataService();

    /**
     * Gets the {@link ScoreboardIoService} for this world, to be used for reading and writing data for scoreboards.
     *
     * @return The {@link ScoreboardIoService}.
     */
    ScoreboardIoService getScoreboardIoService();

    /**
     * Gets the {@link PlayerStatisticIoService} for this world, to be used for reading and writing player statistics.
     *
     * @return The {@link PlayerStatisticIoService}.
     */
    PlayerStatisticIoService getPlayerStatisticIoService();

    /**
     * Gets the {@link FunctionIoService} for this world, to be used for reading and writing functions.
     *
     * @return The {@link FunctionIoService}.
     */
    FunctionIoService getFunctionIoService();
}

@@ -646,16 +646,23 @@
 ng chunk
+%0A     *
  data.%0A 
@@ -862,16 +862,23 @@
  writing
+%0A     *
  world m
@@ -1119,24 +1119,31 @@
 writing data
+%0A     *
  for online 
@@ -1375,24 +1375,31 @@
 writing data
+%0A     *
  for structu
@@ -1627,16 +1627,23 @@
 ing data
+%0A     *
  for sco
@@ -1873,16 +1873,23 @@
  writing
+%0A     *
  player 
@@ -2129,16 +2129,23 @@
  writing
+%0A     *
  functio

Fix CheckStyle issues in io/WorldStorageProvider.java (#674)