読者です 読者をやめる 読者になる 読者になる

Minecraftとタートルと僕

PCゲームMinecraftのMOD「ComputerCraft」の情報を集めたニッチなブログです。

CCのディレクトリを理解する(応用編)

基本が理解できたところで実際に応用に入ろう。
具体的には、ゲームを起動しつつも外部からCCコンピュータ内のファイルをいじれるようにしよう。

名前をつけてやろう

設置したコンピュータを撤去すると中に保存したファイルは消えちゃうのです。そのためにCCではフロッピーというのものがあるのですが、面倒すぎてやってられっかー!となるので楽をする方法を紹介しましょう。

まずは「label」コマンドでラベルを付けましょう。

CCコンピュータ(またはタートル)に「LovelyTurtle」というラベルをつける
> label set LovelyTurtle

これでこのコンピュータは、作成したばかりの一般コンピュータ(インベントリで複数スタック可能)から、「LovelyTurtle」という名前を持つ個体(複数スタック不可)だと世界に認識されました。

壊してアイテム化しても作ったプログラムは消えませんし、タートルならば、補給した燃料も残ったままになります。
ここで、「作ったプログラムが消えない」という点に注目してみましょう。

セーブフォルダ内にファイル保存場所ができる

ラベルをつけることでMinecraftセーブフォルダにこのコンピュータ用のフォルダとファイルが作成されます。

別ウィンドウでMinecraftのsavesフォルダを開いてみましょう。
「%appdata%\.minecraft\saves\」の中にその世界の名前(ゲームスタート時に自分でつけたはず)のフォルダがあって、その中に「computer」というフォルダがあるはずです。
(※Minecraft1.5.2以前のバージョンです。1.6.x以降のバージョンでは、設定によりセーブフォルダの位置が異なっている場合があります)

そのフォルダを開くと番号名のフォルダと、「labels.txt」というテキストファイルがあります。

内部処理的には、コンピュータにラベルを付けてあげることで一意なIDが自動的に割り振られます。
そしてそのIDとあなたがコンピュータにつけたラベルの対応表が「labels.txt」です。
メモ帳とかで覗いてみるとIDとラベル名が並んで書かれています。

さてここで、さきほどの「LovelyTurtle」君のIDが「1」だとしましょう。
このフォルダには「1」というフォルダがあるはずです。
実はこの「1」フォルダはゲーム内のコンピュータ「LovelyTurtle」の「/」ルートディレクトリに対応しているのです。

つまり、「IDが1」のコンピュータのルート直下に「test1」というプログラムを保存した場合、「1」フォルダの中に「test1」というファイルが保存されてことになります。

正確に言うと以下のように対応です。

  • IDが1のコンピュータ内のファイル(絶対パス表現)「/test1
  • Windowsでは「%appdata%\.minecraft\saves\(世界の名前)\computer\1\test1

これでゲーム外からファイル管理できる

このファイルをメモ帳とかのエディタで編集すれば、ゲーム内でもそのまま反映されます。
また、別のコンピュータ(たとえばIDが2)に「test1」ファイルをコピーしたかったら「2」フォルダの中にコピーしてあげればいいのです。

やふー! これでゴミ屑のようなフロッピーに頼ることなくファイル管理できますね。
貧弱なeditコマンドを使ってプログラミングする苦労からも解放されます!