1
私は、ミニクラフトサーバーとのやりとりを処理するHaskellスクリプトを書いてみたいです。Minecraftサーバーマネージャー
サーバーにコマンドを送信するには、server.cmd
というファイルがあります。最初の1行目のコマンドをサーバーで実行する必要があります(例:stop
)。
だから、ここに私のコードは次のとおりです。
-- servermanager.hs
{-# OPTIONS_GHC -fno-warn-warnings-deprecations #-}
module ServerManager where
import System.Process
import System.Exit
import GHC.IO.Handle
import Control.Monad
import System.Posix.Unistd
managerfile :: FilePath
managerfile = "manager.cmd"
serverfile :: FilePath
serverfile = "server.cmd"
main :: IO()
main = do
(Just hin, _, _, _) <- createProcess (proc "java" ["-jar", "minecraft_server.1.8.9.jar", "nogui"]) {cwd = Just "/home/tekkkz/Downloads", std_in = CreatePipe, std_out = CreatePipe}
sleep 20
servercmd <- readFile serverfile
case servercmd of
"stop" -> do
putStrLn ">> [S] Stop"
hPutStr hin "stop"
_ -> return()
それは、文字列をのをプリントアウトしますが、サーバーを停止していない、私のserver.cmdをファイルに「停止」がある場合...なぜ?