マイクラPE版・JE版でのmcfunction(関数)の違い
マイクラではコマンドを関数化できます。
つまりmcfunctionが使えます。
そのPE版とJE版の違いについて
PE版 - ポケットエディション。統合版とも
JE版 - Javaエディション。主にPC向け
これを深く調べていくと次の違いがありました。
もちろんPE・JEでコマンド構文も違うけど、
それは当たり前なので違いには含めないことにします。
フワッとした全体的な違いです。
1.mcfunctionの配置場所が違う
これが全然違いました。
まずmcfunctionは次の場面だけで使えます。
PE版 - ビヘイビアーパックの中のみ
JE版 - データパックの中のみ
つまり PE版ビヘイビアーパック = JE版データパック
ビヘイビアーパック・データパックはzip形式のデータであり、その中に functions ディレクトリを作って .mcfunction 形式の関数を配置できます。
問題はその配置場所の違いです。
PE版 - ポケットエディションの場合
ビヘイビアーパック直下の /functions の中に .mcfunction を必要なだけ用意すればいい。サブフォルダも可JE版 - JAVAエディションの場合
データパックの中の /[データパック名]/data/functions の中に .mcfunction を必要なだけ作成できる。サブフォルダも可
詳しくは次のマイクラWIKIとか参照
▼ PE版での関数(Bedrock Edition)
▼ JE版での関数(Java Edition)
大前提としてmcfunctionは単体では実行できません。
ビヘイビアーパック・データパックの中でのみ実行可能です。
意味が分からない場合はWIKIを読むべきです。
2.関数呼び出しに名前空間が必要かどうか
こういう違いもある
JE版 - 名前空間がないと関数実行ができない
PE版 - そもそも名前空間という概念がない
例えばJE版では次の場所に .mcfunction を作ります。
▼ JE版でのデータパック内の .mcfunction の例
/[データパック名]/data/functions/hoge.mcfunction
▼ hoge.mcfunctionを呼び出す時は名前空間必要
/function [データパック名]:hoge
これがPE版にないところです。
そもそもPE版だと名前空間という概念もないし、
functionsディレクトリの中の関数を直接名前で呼び出せます。
▼ PE版でのビヘイビアーパック内での .mcfunction の例
/functions/hoge.mcfunction
▼ そのまま関数名だけで実行できる(マイクラ内)
/function hoge
だからPE版だとビヘイビアーパック間で関数名が衝突する、
そういったリスクもあると考えられます。
関数名が衝突したときに何が起こるのか……
それは検証してないので分かりません。今度検証してみたい
その点、JE版では関数名衝突を考えなくていいから安全。
JE版は名前空間の導入でそういう問題を回避している模様です。
3.PEは構文ミスに寛容、JEはとても厳格
これもPE・JE 両方触ってみて気づいたこと
コマンド・構文に対する厳密さが違います。
▼ 例えばmcfunction内に次のコマンドがあるとする
setblock ~ ~ ~ minecraft:stone
コマンド例では ~ ~ と ~ の間に空白が3つあります。
これはPE版では問題なく実行できます。
でもJE版ではなぜか実行できませんでした。
それはJE版では次の厳密なコマンド構文チェックがあるため
2つ以上の空白スペースを許容しない
行頭/行末のスペースも許容しない
PE版と比べてメチャクチャ厳格
この点は次のnoteでも書いたことです。
Java版は空白スペースに対しても厳密に判定します。
もしデータパックで関数が認識されないなら、
空白・スペースに問題がないか確認してみるといいかも
4.PEでは最大10000コマンド、JEでは無制限
あとmcfunctionには最大実行コマンドに制限があります。
PE版では一度に10000コマンドまで実行可能
▼ その根拠というかソース
再帰を含めて最大10000個までのコマンド
例えば hoge.mcfunction があって、その中で fuga.mcfunction を呼び出ししたとしても、全体で呼び出せるコマンド数は10000個までってことです。
だからPE版ではどう頑張っても1度に1万個までしか実行できません。
一方のJava版だと最大コマンド数に制限なし
試しに適当なデータパックを作り、
その中で20000個以上のコマンドを書いてみました。
そしてマイクラ内で実行しても漏れなく実行できました。
恐らくJE版では実質的な最大コマンド数に制限ありません。
目立った違いはこれくらいかという感じ
もし他にあるならこっそり教えてください。
この記事が気に入ったらサポートをしてみませんか?