Files
Frodding/resources/config.go
cubexteam cd1b1a2e16 fix: handle save error
fix: handle save error
2026-03-04 18:37:01 +03:00

68 lines
1.5 KiB
Go

package resources
import (
"fmt"
"os"
"gopkg.in/yaml.v2"
)
type ConsoleConfig struct {
Debug bool `yaml:"debug"`
}
type PluginsConfig struct {
Folder string `yaml:"folder"`
}
type Config struct {
ServerName string `yaml:"server-name"`
ServerIP string `yaml:"server-ip"`
ServerPort int `yaml:"server-port"`
MaxPlayers int `yaml:"max-players"`
MOTD string `yaml:"motd"`
MotdProtocol int `yaml:"motd-protocol"`
Console ConsoleConfig `yaml:"console"`
Plugins PluginsConfig `yaml:"plugins"`
}
func DefaultConfig() *Config {
return &Config{
ServerName: "Frodding Server",
ServerIP: "0.0.0.0",
ServerPort: 19132,
MaxPlayers: 20,
MOTD: "A Frodding Server",
Console: ConsoleConfig{Debug: false},
Plugins: PluginsConfig{Folder: "plugins"},
}
}
func LoadConfig(path string) (*Config, error) {
cfg := DefaultConfig()
data, err := os.ReadFile(path)
if err != nil {
if os.IsNotExist(err) {
if saveErr := SaveConfig(path, cfg); saveErr != nil {
fmt.Printf("[Frodding] Warning: could not save default config: %v\n", saveErr)
} else {
fmt.Println("[Frodding] Created default server.yml")
}
return cfg, nil
}
return nil, err
}
if err := yaml.Unmarshal(data, cfg); err != nil {
return nil, err
}
return cfg, nil
}
func SaveConfig(path string, cfg *Config) error {
data, err := yaml.Marshal(cfg)
if err != nil {
return err
}
return os.WriteFile(path, data, 0o644)
}