Minecraftとタートルと僕

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

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

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

ComputerCraft1.6プレリリース版を少しだけ触ってみた

ComputerCraft1.6pr0

つい先日、ComputerCraft1.6のプレリリース版がベータテスター向けに公開されたので、
ダウンロードして少しだけ触ってみました。

ついでに少しだけLuaプログラム側も覗いてみました。

はまったところ

  • saveフォルダは、「saves\ワールド名\computer」から「saves\ワールド名\computercraft」に変更かな? 最初、ファイルが見つからないのであせりました。
    • f:id:hevohevo:20140129221841p:plain:w400

ポケットコンピュータ

  • ポケットコンピュータのIDは0に固定されているのかな?
    • 初期状態だとまだ周辺機器もついていないみたい
    • この画像はAdvancedのほうだけど、枠の色が金じゃなくて白のままですね。これもバグなんでしょうか。
    • f:id:hevohevo:20140129230515p:plain:w400
  • レシピは金りんごwww
  • f:id:hevohevo:20140129230918p:plain:w300f:id:hevohevo:20140129230922p:plain:w300

"paste"イベントの実装

f:id:hevohevo:20140129224310p:plain:w500

きたこれ! もしかしてついにコピー&ペースト正式実装ですか?

でも残念ながら、このコードだと改行コード入りのテキストをコピペすることを想定してないように見えます。
はやく、複数行コピーしたいです・・・。

peripheral.find関数について

気になるのが、peripheral.find(機器名) という関数。1.6pr0時点でのソースはこちら。

function find( sType, fnFilter )
	local tResults = {}
	for n,sName in ipairs( peripheral.getNames() ) do
		if peripheral.getType( sName ) == sType then
			local wrapped = peripheral.wrap( sName )
			if fnFilter == nil or fnFilter( sName, wrapped ) then
				table.insert( tResults, wrapped )
			end
		end
	end
	return unpack( tResults )
end

仕様的には次のような感じですね。

  • peripheral.find(機器タイプ名, ファンクションフィルタ?)
    • 装着されている全周辺機器の中に機器タイプ名に合致する周辺機器をみつけたらその関数群をwrapして返す。
    • 「fnFilter」ってなんでしょうか? functionFilterで合っているのかな。関数を引数として与えるのでしょうか。


機能的に不満な点

  • やっぱり、各周辺機器にgetSide()関数はありませんでした><
  • ついでに、AdvancedMonitorと普通のMonitorを区別つけることもできません("Monitor"でどちらも反応する)。

同じような周辺機器が複数隣接しているときにそれらを使い分けるのがきつそうですね。

h2peripheral.find()を作ってしまいますか。

その他

あとはCC公式フォーラムの情報を流し読み。

  • チャンネル65533を使って、repeatチャンネルなるものが実装されているみたい
    • おそらく、複数の無線コンピュータを経由して遠くにメッセージを届かせるためかな?
  • 「In love with window api」などど言っている人がいますね。
    • まだそのAPIは触っていないけれど、楽しみ。

まとめ

まだまだ開発途中なので、これからが楽しみです。