84ff0edd28
Build and deploy / Build (push) Has been cancelled
Build and deploy / Update Contributors (push) Has been cancelled
Build and deploy / Deploy (push) Has been cancelled
63 lines
1.2 KiB
Go
63 lines
1.2 KiB
Go
package main
|
|
|
|
import (
|
|
"fmt"
|
|
"log/slog"
|
|
"os"
|
|
|
|
"github.com/df-mc/dragonfly/server"
|
|
"github.com/df-mc/dragonfly/server/player/chat"
|
|
"github.com/df-mc/dragonfly/server/world"
|
|
"github.com/pelletier/go-toml"
|
|
)
|
|
|
|
func main() {
|
|
slog.SetLogLoggerLevel(slog.LevelDebug)
|
|
|
|
chat.Global.Subscribe(chat.StdoutSubscriber{})
|
|
|
|
conf, err := readConfig(slog.Default())
|
|
if err != nil {
|
|
panic(err)
|
|
}
|
|
|
|
srv := conf.New()
|
|
srv.CloseOnProgramEnd()
|
|
|
|
srv.Listen()
|
|
|
|
for p := range srv.Accept() {
|
|
p.SetGameMode(world.GameModeCreative)
|
|
p.Message("Selamat datang!")
|
|
}
|
|
}
|
|
|
|
func readConfig(log *slog.Logger) (server.Config, error) {
|
|
c := server.DefaultConfig()
|
|
var zero server.Config
|
|
|
|
if _, err := os.Stat("config.toml"); os.IsNotExist(err) {
|
|
data, err := toml.Marshal(c)
|
|
if err != nil {
|
|
return zero, fmt.Errorf("encode default config: %v", err)
|
|
}
|
|
|
|
if err := os.WriteFile("config.toml", data, 0644); err != nil {
|
|
return zero, fmt.Errorf("create default config: %v", err)
|
|
}
|
|
|
|
return c.Config(log)
|
|
}
|
|
|
|
data, err := os.ReadFile("config.toml")
|
|
if err != nil {
|
|
return zero, fmt.Errorf("read config: %v", err)
|
|
}
|
|
|
|
if err := toml.Unmarshal(data, &c); err != nil {
|
|
return zero, fmt.Errorf("decode config: %v", err)
|
|
}
|
|
|
|
return c.Config(log)
|
|
}
|