進捗管理datapackを作ろう2

スポンサーリンク
Minecraft

前回分かった現状のバージョンでは動かなった箇所。ベースとなる進捗サポートデータパックを修正してみよう。

スポンサーリンク

データの抽出

minectaft-jar-extractorでデータを抽出した。

進捗、すなわち「advancements」の内容が見たいだけなので、他にもあるとは思う。

node環境が必要ではあるが、使用したい場合は各自でセットアップされたい。

node extract_datafolder.js 1.19.2 output tmp

extract_datafolder.jsでバージョン指定をすればdataフォルダが抽出できる。出力に指定したディレクトリ配下に「バージョン名/data」とディレクトリが生成されその下に各種ファイル群ができる。

その中のadvancementsが進捗ファイルであるので、その中身を見る。

冒険の時間は、「adventure/adventuring_time.json」
モンスター狩りの達人は、「adventure/kill_all_mobs.json」
バランスの取れた食事は、「husbandry/balanced_diet.json」
猫大全集は、「husbandry/complete_catalogue.sjon」
2匹ずつは、「husbandry/breed_all_animals.json」
みんなで町に跳び込もうは、「husbandry/leash_all_frog_variants.json」
ホットな観光地は、「nether/explore_nether.json」

と、各ファイルごとにcriteriaが記載されている。

元々のdatapckは1.17をターゲットにしていたので比較してみよう

1.17
["minecraft:river": {
      "trigger": "minecraft:location",
      "conditions": {
        "location": {
          "biome": "minecraft:river"
        }
      }
    }
]
1.19.2
["minecraft:river": {
      "conditions": {
        "player": [
          {
            "condition": "minecraft:entity_properties",
            "entity": "this",
            "predicate": {
              "location": {
                "biome": "minecraft:river"
              }
            }
          }
        ]
      },
      "trigger": "minecraft:location"
    }
]

と、全然違う。まぁこれでは動くはずがないだろう。

参考までに既存のjson。1.17と同じ形といえよう。

{
	"display": {
		"icon": {
			"item": "minecraft:oak_boat"
		},
		"frame": "task"
		,
		"title": {
			"translate": "biome.minecraft.river"
		}, 
		"description": {
			"text":"river",
			"color": "dark_gray"
		}, 
		"show_toast": false,
		"announce_to_chat": false
	},
	"parent": "advancement_supports:_adventuring_time/temperate/plains", 
	"criteria": {
		"plain": {
			"trigger": "minecraft:location",
			"conditions": {
				"biome":"minecraft:river"
			}
		}
	}, 
	"rewards": {
		"function": "advancement_supports:foundbiome/river"
	}
}

結局、全部書き直すならプログラム書いた方が速そう。

pythonを書く

jsonを読み込んでjsonを書き出すだけなので、そんなに大したことはないだろう。

json以外に決めるべき内容を定義づける必要はある。displayの中身(icon,frame,title,description)と、parentとなるものは決めるべきだろう。

なんとなくそれっぽいのはできた

とりあえず冒険の時間だけ。

作ったプログラムは↓。

大した事やっていないし、もっと良いやり方ある。minectaft-jar-extractorあたりと連携すればもっと効率化はできそうではあるが、そこまで作りこむものでもないので。

アイコンを指定するのが面倒。結局はこれに尽きる。(csv参照

まとめ

ちゃんと直せば動く。

この勢いだとやることもないので、次回で完結する予定。

コメント

タイトルとURLをコピーしました