偶然发现我的世界居然还有声音,听着感觉还蛮不错的,就想着写个程序提取出来吧。

我的世界资源目录:
%AppData%.minecraft\
~/Library/Application Support/minecraft/
~/.minecraft/

索引文件目录:
assets/indexes/

资源内容目录:
assets/objects/

package main

import (
    "encoding/json"
    "fmt"
    "io/fs"
    "log"
    "os"
    "path/filepath"
    "strings"
)

type AssetInfo struct {
    Hash string `json:"hash"`
    Size int    `json:"size"`
}

type Assets struct {
    Objects map[string]AssetInfo `json:"objects"`
}

func main() {
    var as Assets

    // 加载文件列表
    data, err := os.ReadFile("1.16.json")
    if err != nil {
        log.Fatal(err)
    }
    if err := json.Unmarshal(data, &as); err != nil {
        log.Fatal(err)
    }

    for k, v := range as.Objects {
        if !strings.HasSuffix(k, ".ogg") {
            continue
        }

        log.Println(k)

        // 创建文件夹
        dirpath, _ := filepath.Split(k)
        if err := os.MkdirAll(dirpath, os.ModePerm); err != nil {
            continue
        }

        // 复制文件
        data, err := os.ReadFile(fmt.Sprintf("../objects/%s/%s", v.Hash[:2], v.Hash))
        if err != nil {
            continue
        }
        if err := os.WriteFile(k, data, fs.ModePerm); err != nil {
            log.Println(err)
        }
    }
}

标签: none

添加新评论