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コマンドを使ってプログラミングする苦労からも解放されます!