package tc.oc.commons.bukkit.settings;
import me.anxuiz.settings.SettingManager;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
import tc.oc.api.docs.User;
import java.util.Optional;
/**
* Provides access to player settings for both online and offline players
*/
public interface SettingManagerProvider {
/**
* Return the {@link SettingManager} for an online player,
* which can be used to read and write settings.
*/
SettingManager getManager(Player player);
default Optional<SettingManager> tryManager(CommandSender sender) {
return Optional.ofNullable(sender instanceof Player ? getManager((Player) sender) : null);
}
/**
* Return a {@link SettingManager} for the given {@link User}.
*
* If the user is currently online, their in-memory manager is returned.
* Otherwise, the a read-only manager is returned that extracts settings
* from the given {@link User} document.
*/
SettingManager getManager(User user);
}