Minecraftとタートルと僕

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

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

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

クリエイティブモードを強烈にクリエイティブにするComputerCraft1.7 がリリースされました

はじめに

2月16日にComputerCraft1.7がリリースされました。

さあ、ダウンロードしてインストールしましょう。

なお、Minecraft1.7.10用ですのでご注意を!

ComputerCraft | Programmable Computers for Minecraft f:id:hevohevo:20150221201311j:plain:w400

なにが新しいの?

念のためWhat's Newを適当和訳しておきますね。「」内は僕のコメントです。

  • コマンドコンピュータ(Command Computer)を追加
    • 「使えるのはクリエイティブモードだけです」
  • 新しいAPIを追加: commands
    • 「コマンドコンピュータだけが使えるAPIです」
  • 新しいプログラムを追加: commands, exec
    • 「commandsプログラムは、使えるコマンド一覧を表示します」
    • 「execプログラムは、引数でコマンドを与えたら実行します」
      • 「例)コンソール画面で> exec time set 700
  • textutils.seriaizeJSON( Table )関数を追加
    • 「JSON!JSON! テーブル→JSON形式に変換の模様。コマンドでJSON使うよね」
    • 「マイクラのオプションとして認識されるには、シリアライズ化したJSON文字列から「"」を削らないといけないかもしれません。string.gsub(json_str, "\"", "")のように」(こちらについては現在試行錯誤中)
  • ILuaContext.executeMainThreadTask() 周辺機器開発者向けに追加
    • 「CCの周辺機器を開発しているmodder向け」
  • 金床でディスクドライブとプリンターの名前変更をできるように
  • HD texture packsの問題を解決
    • 「高解像度のテクスチャで不具合起こしていたのかな?」
  • いろんなバグを修正
  • ゲーム内ヘルプシステムに全ての新しい機能をドキュメント化した
    • 「コンソール画面でhelpコマンドを使ってみよう」

Command Computer !!

1.6系統から1.7系統へとメジャーバージョンアップしたわけですが、その目玉は、クリエイティブモードのときだけ作成できるCommand Computerです。

クリエイティブモードでは、(チート的に便利な)様々なコマンドを使うことができますが、Command ComputerはそのコマンドをLuaプログラムを使って実行できます。

どんなことができるのかは、この動画を見たほうが早いかも。雰囲気はつかめるはずです。

Command Computer: Command Blocks ComputerCraft Style - YouTube

動画中で紹介されたSummon(サモン、召喚)プログラムは面白いですね。

モニターを右クリックしたら、コマンドを使って鉄柵を四方に設置し、ゾンビを召還しています。

もう一度右クリックしたら、柵だけ消し去っているようですね。ギャー!ゾンビーキター!

Commands API

Command Computerでは、用意されたcommands APIを使って、各種コマンドを実行することができます。

たとえば、以下のようなバニラのコマンドに対応するのは、

/time set 700

以下のような関数です。

-- Lua Program
commands.time("set", 700)

commands APIにtime()関数が用意されているので、引数"set"700を与えて実行しているわけですね。

え? 引数が文字列か数字かをいちいち区別するのが面倒だって?  これまで培ってきた、溜め込んできた「コマンド群」資産をできるだけそのまま利用したいだって?

もう仕方ないなぁのび太くんは。

次のように手抜きしてプログラム書いてもいいのよ?

-- Lua Program
commands.exec("time set 700")

commands.exec()関数は与えた引数文字列をそのままコマンドとして解釈してくれるみたいですね。すばらしい。これだけあれば他の関数いらないんじゃないかな。引数はstring.format()で連結すればいいし。

こんなプログラム組んでみた

想像が広がりんぐ

これまで、マインクラフトのコマンドはシンプルすぎてそれを組み合わせるのに非常に苦労していました。

コマンドブロックを使うにしても、覚えさせておくことができるコマンドは1ブロックあたり1つだけなので、複雑な作業をさせるために、複数のコマンドブロックを用意し複雑なレッドストーン回路を組んでロジックを組み立てていました。

今回のCommand Computerの実装によって、1台のCommand Computerと1つのLuaプログラムだけでそれらが代替できるようになります。

便利すぎて味気ない? ええ、その気持ちは良くわかります。でもクリエイティブモード限定ですし! 住み分け、住み分けw

このように、今回のバージョンアップはメジャー番号を上げるにふさわしい意義深いバージョンアップだったと思います。

クリエイティブモードをより創造的にできるCC1.7を、僕は歓迎します!