{-# LANGUAGE OverloadedStrings #-} module Network.Loshadka.Settings (Settings, port, responses, command, readSettings) where import Network.Loshadka.Jar import Network.Loshadka.Message (pack) import Network.Loshadka.Protocol import Network.Loshadka.Properties import Network.Loshadka.Version import Network.Loshadka.WhiteList import Prelude hiding (max) import Network (PortNumber) import Data.Aeson (encode) import Data.List (intercalate) data Settings = Settings { command :: String , port :: PortNumber , responses :: Responses } readSettings :: String -> [String] -> IO Settings readSettings path args = do j <- findJar path p <- readProps path v <- readVersion path w <- readWhiteList path let c = formCommand j args in return $ parse p v w c formCommand :: String -> [String] -> String formCommand jar args = "java " ++ intercalate " " (tail args) ++ " -jar " ++ jar ++ " nogui" parse :: Properties -> Version -> [Player] -> String -> Settings parse (m, p, m', _) v _ c = Settings { command = c , port = p , responses = Responses { ping = pack $ encode p' , start = pack "Restarting..." , denied = pack "Access denied" } } where p' = Ping { version = v , players = Players { max = m', online = 0 } , description = Description { text = m } }