Minecraftとタートルと僕

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

こちらのページは更新が滞っており、情報が古くなりつつあります。新しいCC情報サイトをはじめましたので、もしよければご参照ください。今後ともよろしくお願い申し上げます。

「百億のマインクラフトと千億のタートル」(https://hevo2.hatenablog.com/)

FS API を使いこなそう(1): CCファイルシステムの基礎

はじめに

これから、ComputerCraftのFS (File System) APIについての解説記事を連載します。

このAPIは一言でいうと、CCコンピュータ内部のファイルやディレクトリ(=フォルダ)を操作するために使います。

参考までに、CC公式WikiとCC非公式日本語WikiのFS APIに関するページを以下に紹介しましょう。

CC非公式日本語Wikiは、残念なことに、更新停止中のためCC1.6で追加された機能は掲載されていません。

そのためこの連載では、CC1.6での追加機能も含めてFS APIを日本語で解説する予定です。

今回はまず基本知識として、CCのファイルシステムの概要を説明します。

CCのファイルシステムの基本

UNIXのシェルやWindowsのコマンドプロンプトに触れたことがあるならば、すぐに理解できます。

ファイルの位置は絶対パス(absolute path)で表現すること

CCのファイルシステムは相対パスをサポートしていません。絶対パスでファイルの位置を示します。

  • たとえば、rom/programs/のように相対パスっぽく書いたとしても、システムは/rom/programs/のように頭に/をつけて解釈します。

CCのファイルシステムで最も上位の階層をルート(ディレクトリ)と呼びます。絶対パスでは/と表現します。

ホームディレクトリ≒ルートディレクトリ

ルートディレクトリではファイルやディレクトリを作ったり消したり、自由に扱うことができます。

ただし、ルートディレクトリは各コンピュータで独立していることに注意しなくてはなりません。

ゲーム内のプレイヤーは、原則として、そのコンピュータの前に行ってコンピュータを開か(起動し)なければルートディレクトリに保存してあるファイルを見ることはできません。

「rom」ディレクトリは全コンピュータで共通

ルートディレクトリの中には「rom」という読み専用(read only)のディレクトリがあります。絶対パスで表現すると/rom/です。

「rom」ディレクトリ内部は全てのコンピュータで共通の内容です(ただし一部例外あり)。様々なシステムプログラムやAPI、そしてhelpファイルなどが入っています。

  • コンピュータに少しだけ詳しい人向けの説明:「/ディレクトリ以下にCCのシステムディレクトリであるromディレクトリがマウントされます」
  • たとえば、現在のディレクトリのファイル一覧を表示する「list」プログラムは、/rom/programs/listに入っています。

ただし、それがタートルなのかコンピュータなのか、あるいは設定ファイルでHTTP機能をONにしているかどうかで「rom」ディレクトリのファイル・ディレクトリ構成が一部変わります。

  • タートルが踊り出す「dance」プログラムは、/rom/programs/turtle/ディレクトリに入っていますが、このディレクトリはタートルにしか存在しません(マウントされません)。

  • HTTP機能をOFF(B:http_enable=false)にしていると、/rom/programs/http/というHTTP関係のプログラムフォルダや、/rom/api/httpというAPIファイルがなくなります(つまりマウントされません)。

(補足)「/rom/」ディレクトリを書き換える方法

読み専用のディレクトリなので、ゲーム内からは「rom」ディレクトリの内部を変更することはできません。

逆に言うと、ゲーム外からならばこのディレクトリ内を変更できます。たとえば、全コンピュータ共通で使えるように「rom」ディレクトリに新しいプログラムをインストールするなど考えられます。

具体的なやり方は以下の通りです。CC1.58について解説していますが、CC1.6以降もほぼ同じやり方で大丈夫なはずです。

  • Minecraft1.6.4とComputerCraftインストールの手順(2) - Minecraftとタートルと僕 の後半、「「/rom/」ディレクトリを編集する方法」を参照のこと。
    • MODファイルが「ComputerCraft1.63.jar」なので、ファイルを展開するために拡張子「jar」を「zip」に書き換えるというひと手間が必要になります。
    • 「resoucepacks」に置くファイル群は、バージョン間で互換性がありません。CC1.58からCC1.6にバージョンアップするときは、「resoucepacks」のファイル群を完全に消してください。

次回のお話

次回は、今回紹介したファイルシステムを操作するために、最初から入っているシステムプログラムについて紹介しましょう。

具体的に言うと以下の7つのプログラムです。かっこ内は、エイリアス機能による別名です。

  • list (=ls =dir)
  • cd
  • makedir
  • copy (=cp)
  • move (=mv)
  • rename
  • delete