cocricotで1.7.10から1.12.2にワールドデータを(大体)移すやり方
はじめに
cocricotの1.12.2のmodが配信され、1.12.2で建築する人も大分多くなったように思います。cocricotを使ったり動作の軽量化をしたりするためにも、私も1.12.2でプレイしたいのですが、1.7.10のcocricotで作業途中のワールドがあるため、これをどうにかしない限り本腰を入れられません。このデータを1.12.2に移せればなぁ、と思っていました。1.7.10以前のマイクラにしかないメタデータをフル活用しているため、1.12.2へはワールドデータが通常移せないのです。
しかしながら、1.7.10のconquestから1.12.2のconquest reforgedへ移行する際にはメタデータの問題を例外的に回避することができます。それが下のリンクのページにあるConverter for Minecraft 1.7 Conquest Metadata to Conquest Reforged Mod(以下converter)というものです。
※追記もご覧ください。
1.7.10以降ではメタが使えずブロック数が減ってしまうために、conquestではmodでブロックを補いました(cocricotと同じですね)。このconverterは1.7.10と1.12.2のconquestで共通のテクスチャを持つブロックに対して変換をしてくれます。何が何に変換できるかは内部ファイルで指定されていますが、ソフトウェアの中を覗いてみたところ、cocricot向け(それ以外でも)に改造が可能みたいです。この記事はその解説です。
また何が何に変換するかを指定するのは手作業になる都合上、使用しているメタの種類数が少ないワールドの方が移行が簡単です。
あと必ずワールドデータなど全てバックアップを取っておきましょう。USBなどの外部メディアやクラウドなどに保存しとけば、PCがたとえ壊れても安心です。
mappngs.jsonの解説
converterをダウンロードして、中を見てみましょう。jarファイルなので、zipファイルと同じように解凍できます。元のjarファイルはとっておいてください。解凍されたファイルにあるmappings.jsonを開いてみてください。
上の画像のようになっていると思いますが、重要なのは以下のワンセットです。
{
"name": "minecraft:stone",
"min": 1,
"max": 1,
"biome": -1,
"to": {
"name": "conquest:stone_full_14",
"data": 6
}
},
変換前のブロックと変換後のブロックの指定をしています。これを書き換えることで、cocricot用のものが作れます。一番最後のワンセットには最終行のカンマはありません。注意しましょう。また、変換前と変換後の指定を行わないと、1.7.10特有のブロックは変換後に消滅します。
各行について解説していきます。
2行目のminecraft:stoneは変換の対象になるブロックのblockstatesを表しています。blockstatesとはプログラム上のブロック名みたいなものです(おそらく)。一つのブロックIDにつき一つ割り当てられています。バニラにあるブロックのblockstatesを調べるのは以下のサイトでできます。
minecraft-ids.grahamedgecombe.com
尚、cocricotでctmが割り当てられているブロックのブロックIDとblockstatesの対応表を後に記します。
3行目、4行目のminとmaxの値はメタデータの値を表しています。なぜminとmaxという形で指定しているかは謎です。
5行目のbiomeの値はバイオームIDを表しています。-1の場合は、全てのバイオームが対象になります。ctmのプロパティで使われるバイオームの表記とバイオームIDとの対応表を後に記します。
7行目のconquest:stone_full_14は変換後のブロックのblockstatesを表しています。1.12.2でblockstatesを調べるには、マイクラを起動してF3キーを押してデバッグ画面を表示させ、ブロックに視点を合わせると、そのブロックのblockstatesがデバッグ画面の右下に表示させることができます。F3+Hを押してから、インベントリを開いてブロックにカーソルを合わせることでもできるみたいです。
8行目のdataの値は変換後のブロックのメタデータの値を表しています。
私の場合、なぜかblockstatesの最後一文字だけ確認できない状況になったので、cocricotMOD for 1.12.2 v0.3\assets\cocricotmod\blockstatesのあたりからそれっぽい名前のファイル名を探しました。
上記のワンセットを繰り返す以外では、以下のような記述が必要となります。
{
"blocks": [(変換前のブロックと変換後のブロックのワンセットを必要な分だけ繰り返す)
],
"copy_below": [],
"remove_blocks": {}
}
私の場合、エクセルに自分のワールドで変更が必要なブロックを書き出し、VBAでmappings.jsonを作成しました。変更が必要なブロックの種類が少ないほど、1.7.10のブロックと1.12.2のブロックの対応表を作るのは楽になり、mappings.jsonも楽です。
converterの中身のいじり方
mappings.jsonを用意できたら(死ぬほど大変ですが)、それをconverterの中にあるmappings.jsonに直接上書きします。大抵のzip解凍ソフトにはjarファイルを解凍せずに、中身を閲覧したり、上書きしたりする機能があります。jarファイルは一旦解凍すると、再度圧縮しても使い物にならないので、ご注意ください。
次に、1.12.2でcocricotのmodが導入された環境で適当にワールドを作ります。スーパーフラットで構いません。そのワールドデータにあるlevel.datをconverterにあるlevel.datに上書きします。level.datにはブロックIDとblockstatesの対応表が入っており、それを参照してブロックを変換していると思われます。cocricotのmodが導入された環境で生成されるlevel.datには、cocricotで追加されるブロックのブロックIDとblockstatesの対応表が入っています。元々のlevel.datはconquest用のものなので今回は使用できません。
ここまでやれば、converterの準備が終わります。
converterの使い方
jarファイルなので実行にはjavaが必要です。ダウンロードしていない場合はしましょう。
https://www.java.com/ja/download/
jarファイルをダブルクリックすると、このような画面がでてきます。
Chooseをクリックします。
このような画面になるので、変換したいワールドを選択します。
Skipで大丈夫です。このChooseが何なのかいまいちよくわかっていません
Threadsはスレッドをいくつ使うかという指定です。そのままで問題ありません。Startを押しましょう。
このような画面がでてきます。この画面が出てこない場合はどこかの手順で間違っていることになります。
このような画面になって……
名前に-convertedが加えられた変換後のワールドが生成されます。これで1.12.2で使用できます。
できないこと色々
上記のようにすれば一応は変換ができます。ただし変換が難しいものもあります。
1つ目は1.7.10にはあって1.12.2にはないブロックの存在です。これに関してはcocricotの制作者であるきぃこさんが対応していくということをおっしゃっています。温かく待ちましょう。一時的な対応策としては、似通ったブロックに変換するといいと思います。また、テクスチャをいじるという手もあります。
2つ目は1.7.10にも1.12.2に同様のブロックがあるけれども、微妙に仕様の違うブロックの存在です。例えば、1.7.10での階段の手すり(101:5など)は1.12.2では3種のブロックを使うことによって、ctmのごり押しから改善がなされています。こうしたものは直接の変換ができず、手作業などで対応する必要があります。
3つ目は1.7.10においてctmを使い複数の画像を同じブロックに対してランダムに出現させていて、1.12.2ではそれぞれが独立したブロックになっているものです。例えば船の模型と地球儀は1.7.10では同じ39:6となっており、ランダムで(厳密には座標に依存して)描画されています。1.12.2ではそれぞれ独立したブロックとなっており、1対1対応ではないので、上記の方法ではどうにもなりません。
終わりに
この記事が誰かの建築の一助となれたら幸いです。願わくば、cocricotに1.7.10のブロックが追加された後で、全てのブロックを変換できるmappings.jsonを誰かが配布してほしい(他力本願)。ともあれ、お読みいただきありがとうございました。
なお、この記事で不利益を被ったとしても責任を負いかねますので、ご理解の程お願い申し上げます。
追記
8行目のdataの解説を追加しました。すっかり書いたつもりになっていて、書き忘れていたのは大変恥ずかしい限りです。
ついでとはいってなんですが、実際に私がデータ移行に使ったexcelファイルとmappings.jsonを配布します。これで許して
excelファイル
cocricot converter_sample.xlsm - Google ドライブ
マクロでmappings.jsonが出力されます。
mappings.json
mappings(sample).json - Google ドライブ
(2020/05/21)
どうやらConquest Reforgedが1.15向けの新たなModを出したのに合わせて、それ向けにデータを変換できるWorldConverterを配布しているようです。
この記事で解説しているのは、Conquest ReforgedのサイトのDownloadsのWorldConvertersの左側、1.7.10->ModからダウンロードできるConquest Reforged 1.7.10-1.10.2 Converter.jarです。1.10.2って書いてありますけど全然1.12.2にもいけちゃいます。
ところで、今見たらサイトの見出しがConverter for Minecraft 1.7 Conquest Metadata to Conquest Reforged ModからWorldConvertersに変わっていて、時代の流れを感じています。まさか複数形になっているとは…。
(2021/05/20)
対応表
cocricotでctmが割り当てられているブロックのブロックIDとblockstatesの対応表です。
blockID | blockstates |
1 | minecraft:stone |
2 | minecraft:grass |
3 | minecraft:dirt |
4 | minecraft:cobblestone |
5 | minecraft:planks |
12 | minecraft:sand |
13 | minecraft:gravel |
14 | minecraft:gold_ore |
15 | minecraft:iron_ore |
16 | minecraft:coal_ore |
17 | minecraft:log |
20 | minecraft:glass |
21 | minecraft:lapis_ore |
22 | minecraft:lapis_block |
23 | minecraft:dispenser |
24 | minecraft:sandstone |
30 | minecraft:web |
31 | minecraft:tallgrass |
35 | minecraft:wool |
37 | minecraft:yellow_flower |
38 | minecraft:red_flower |
39 | minecraft:brown_mushroom |
40 | minecraft:red_mushroom |
42 | minecraft:iron_block |
43 | minecraft:double_stone_slab |
44 | minecraft:stone_slab |
45 | minecraft:brick_block |
47 | minecraft:bookshelf |
48 | minecraft:mossy_cobblestone |
49 | minecraft:obsidian |
53 | minecraft:oak_stairs |
56 | minecraft:diamond_ore |
57 | minecraft:diamond_block |
58 | minecraft:crafting_table |
65 | minecraft:ladder |
66 | minecraft:rail |
67 | minecraft:stone_stairs |
70 | minecraft:stone_pressure_plate |
72 | minecraft:wooden_pressure_plate |
77 | minecraft:stone_button |
78 | minecraft:snow_layer |
80 | minecraft:snow |
84 | minecraft:jukebox |
85 | minecraft:fence |
89 | minecraft:glowstone |
95 | minecraft:stained_glass |
96 | minecraft:trapdoor |
98 | minecraft:stonebrick |
101 | minecraft:iron_bars |
102 | minecraft:glass_pane |
106 | minecraft:vine |
107 | minecraft:fence_gate |
108 | minecraft:brick_stairs |
109 | minecraft:stone_brick_stairs |
112 | minecraft:nether_brick |
114 | minecraft:nether_brick_stairs |
120 | minecraft:end_portal_frame |
121 | minecraft:end_stone |
125 | minecraft:double_wooden_slab |
126 | minecraft:wooden_slab |
128 | minecraft:sandstone_stairs |
129 | minecraft:emerald_ore |
133 | minecraft:emerald_block |
134 | minecraft:spruce_stairs |
135 | minecraft:birch_stairs |
136 | minecraft:jungle_stairs |
139 | minecraft:cobblestone_wall |
145 | minecraft:anvil |
154 | minecraft:hopper |
155 | minecraft:quartz_block |
156 | minecraft:quartz_stairs |
158 | minecraft:dropper |
159 | minecraft:stained_hardened_clay |
160 | minecraft:stained_glass_pane |
161 | minecraft:leaves2 |
162 | minecraft:log2 |
163 | minecraft:acacia_stairs |
164 | minecraft:dark_oak_stairs |
171 | minecraft:carpet |
172 | minecraft:hardened_clay |
173 | minecraft:coal_block |
354 | minecraft:cake |
380 | minecraft:cauldron |
390 | minecraft:flower_pot |
ctmで用いられるバイオームの表記とバイオームIDの対応表です。PlateauMは存在しないバイオームですが、20:14、30:3、30:8、44:4、44:12、101:1、101:4、106、108:0~7、128:8~15、172:0のプロパティで記述されています。MesaPlateauMの誤植だと思います。おちゃめ
biomes | biomeID |
Ocean | 0 |
Plains | 1 |
SunflowerPlains | 129 |
Desert | 2 |
DesertM | 130 |
ExtremeHills | 3 |
ExtremeHillsM | 131 |
Forest | 4 |
FlowerForest | 132 |
Taiga | 5 |
TaigaM | 133 |
Swampland | 6 |
SwamplandM | 134 |
River | 7 |
Hell | 8 |
Sky | 9 |
FrozenOcean | 10 |
FrozenRiver | 11 |
IcePlains | 12 |
IcePlainsSpikes | 140 |
IceMountains | 13 |
MushroomIsland | 14 |
MushroomIslandShore | 15 |
Beach | 16 |
DesertHills | 17 |
ForestHills | 18 |
TaigaHills | 19 |
ExtremeHillsEdge | 20 |
Jungle | 21 |
JungleM | 149 |
JungleHills | 22 |
JungleEdge | 23 |
JungleEdgeM | 151 |
DeepOcean | 24 |
StoneBeach | 25 |
ColdBeach | 26 |
BirchForest | 27 |
BirchForestM | 155 |
BirchForestHills | 28 |
BirchForestHillsM | 156 |
RoofedForest | 29 |
RoofedForestM | 157 |
ColdTaiga | 30 |
ColdTaigaM | 158 |
ColdTaigaHills | 31 |
MegaTaiga | 32 |
MegaSpruceTaiga | 160 |
MegaTaigaHills | 33 |
MegaSpruceTaigaHills | 161 |
ExtremeHills+ | 34 |
ExtremeHills+M | 162 |
Savanna | 35 |
SavannaM | 163 |
SavannaPlateau | 36 |
SavannaPlateauM | 164 |
Mesa | 37 |
Mesa(Bryce) | 165 |
MesaPlateauF | 38 |
MesaPlateauFM | 166 |
MesaPlateau | 39 |
MesaPlateauM | 167 |
PlateauM | 167 |