package minecraft import ( "fmt" "io" "net/http" "os" "path/filepath" "zlh-agent/internal/state" "zlh-agent/internal/provcommon" ) func InstallMinecraftVanilla(cfg state.Config) error { dir := provcommon.ServerDir(cfg) if err := os.MkdirAll(dir, 0o755); err != nil { return fmt.Errorf("mkdir server dir: %w", err) } url := provcommon.BuildArtifactURL(cfg.ArtifactPath) dest := filepath.Join(dir, "server.jar") resp, err := http.Get(url) if err != nil { return fmt.Errorf("download vanilla: %w", err) } defer resp.Body.Close() if resp.StatusCode != http.StatusOK { return fmt.Errorf("bad status %s", resp.Status) } out, err := os.Create(dest) if err != nil { return fmt.Errorf("create server.jar: %w", err) } defer out.Close() if _, err := io.Copy(out, resp.Body); err != nil { return fmt.Errorf("write server.jar: %w", err) } // 🔹 NEW: verify + self-repair (java, server.jar, start.sh, etc.) if err := VerifyMinecraftInstallWithRepair(cfg); err != nil { return fmt.Errorf("vanilla install verification failed: %w", err) } return nil }