nobashibou’s diary

のんびりまったりゆっくりマイクラしてる人の雑記です

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)というものです。


 

conquestreforged.com

 

※追記もご覧ください。

 

  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を開いてみてください。

f:id:nobashibou:20190915172151p:plain

Notepad++を使用

 上の画像のようになっていると思いますが、重要なのは以下のワンセットです。

   {
            "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も楽です。

f:id:nobashibou:20190915184519p:plain

こんな感じ
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ファイルをダブルクリックすると、このような画面がでてきます。

f:id:nobashibou:20190915190701p:plain

 Chooseをクリックします。

 

f:id:nobashibou:20190915191037p:plain

  このような画面になるので、変換したいワールドを選択します。

 

f:id:nobashibou:20190915191138p:plain

  Skipで大丈夫です。このChooseが何なのかいまいちよくわかっていません

 

f:id:nobashibou:20190915191644p:plain

 Threadsはスレッドをいくつ使うかという指定です。そのままで問題ありません。Startを押しましょう。

 

f:id:nobashibou:20190915192917p:plain

 このような画面がでてきます。この画面が出てこない場合はどこかの手順で間違っていることになります。

 

f:id:nobashibou:20190916081709p:plain

 このような画面になって……

 

f:id:nobashibou:20190916081939p:plain

 名前に-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