PCでの開発を前提に作成されたようです。
初期Verにはif文などがありません。
こちらの方が情報提供と説明をしてくださいました。
サンプルファイルはこちら:pass:2525
- 拡張子は.jsで保存すること。
- JavaScriptというプログラミング言語である
- 文字エンコードは[UTF-8]
さすがにコレは聞いたことあるでしょう。
- あきらめるな!
変数に日本語は使用できません
変数はデータを入れる箱のようなものです。
アイテムID等をいちいち入力するのは面倒だったら
変数はデータを入れる箱のようなものです。
アイテムID等をいちいち入力するのは面倒だったら
//変数【Stick】に280を代入。(280をStickという箱にしまう) var Stick = 280;
//変数にx,y,z(指定した座標)にあるブロックのIDを代入する var hensuu = getTile(x,y,z);
変数の名前は基本的にローマ字ならなんでもいいのですが、
いくつかの例外があり、予約語と呼ばれるものがあります
予約語一覧
これらの語は変数の名前に指定できないので注意してください
いくつかの例外があり、予約語と呼ばれるものがあります
予約語一覧
これらの語は変数の名前に指定できないので注意してください
do = 15; //←NG don = 15; //←OK
習うより慣れろ。です。
一、IDを代入する
以下のコードを入力してください。
改行して
更に改行して
更に改行して
function useItem(X, Y, Z, ItemID, BlockID, Side) {
改行して
//棒(Stick)にID:280を代入するコード Stick = 280;変数Stickに280を代入しました。
更に改行して
Grass = 2;変数Grassに芝土のID:2を代入しました。
更に改行して
Dirt = 3;変数Dirtに土のID:3を代入しました。
二、前提を入力[その1]
更に2つ改行して、前提1の
//前提1 //もし持っているアイテムが棒(ID280)なら〜を入力。(Stickという箱から280を取り出す) if (ItemID == Stick) {を入力します。
前提を入力[その1-1]
更に改行して、前提1-1の
//前提1-1 //もしタップしたブロックが芝付き土だったなら〜する if (BlockID == Grass) {を入力します。
その1-1の前提が守れていた場合の行動
更に改行して
//土に置換する setTile(X, Y, Z, Dirt, 0);
前提を入力[その1-2]
更に改行して、前提1-2の
//前提1-2 //もしタップしたブロックが土だったなら〜する } else if (BlockID == Dirt) {を入力します。
その1-2の前提が守れていた場合の行動
更に改行して
//芝付き土に置換する setTile(X, Y, Z, Grass, 0);コードを打ちます。
三、違った場合の前提
更に改行して
//タップしたブロックが芝付き土でも芝無し土でもなかったら〜する } else if (BlockID != Grass && BlockID != Dirt) {を入力。
四、違った場合の行動
更に改行して
//文章を表示する clientMessage("タップしたブロックは土ではありません");
五、仕上げ
更に改行して
おしまい
} } }
おしまい
六、完成時の状態
注釈も加えて(間は改行した場所)
function useItem(X, Y, Z, ItemID, BlockID, Side) { Stick = 280; //変数Stickに280を代入 Grass = 2; Dirt = 3; if (ItemID == Stick) { //もし持っているアイテムが棒(アイテムID280)なら if (BlockID == Grass) { //もしタップしたブロックが芝付き土だったら setTile(X, Y, Z, Dirt, 0); //芝無し土に置換 } else if (BlockID == Dirt) { //もしタップしたブロックが芝無し土だったら setTile(X, Y, Z, Grass, 0); //芝付き土に置換 } else if (BlockID != Grass && BlockID != Dirt) { //タップしたブロックが芝付き土でも芝無し土でもなかったら clientMessage("タップしたブロックは土ではありません"); //文章を表示 } } }
=左辺、または右辺を、右辺、または左辺に代入する
また例としていくつか挙げていきます
算術演算子の後ろに=をつけます。
すると、
右辺に左辺を加算した結果を右辺に※をつけた変数に代入する。
なので、
A+Bの答えを※Aに代入します。
Aが3
Bが5なら、
+=や
-=のように、
算術演算子の後ろに=をつけます。
すると、
A+=Bだった場合、
右辺に左辺を加算した結果を右辺に※をつけた変数に代入する。
なので、
A+Bの答えを※Aに代入します。
Aが3
Bが5なら、
3+=5 =8で
A+=B=※Aということですね。
これは数字が○○以上、もしくは以下のとき○○する、という処理をしたいときに使います。
※if文の条件式に使われます
基本的に演算子の両辺に数字、もしくは変数を記述します
また例としていくつか挙げていきます
※if文の条件式に使われます
基本的に演算子の両辺に数字、もしくは変数を記述します
また例としていくつか挙げていきます
<これは左辺の数字が右辺未満のときに処理を実行します 例:if(A < B){ 【処理】 }
<=これは左辺の数字が右辺以下のときに処理を実行します 例:if(A <= B){ 【処理】}
>これは左辺の数字が右辺より【大きい】ときにに処理を実行します 例:if(A > B){ 【処理】} ※未満の逆
>=これは左辺の数字が右辺以上のときにに処理を実行します 例:if(A >= B){ 【処理】}
==これは左辺と右辺が等しいときにに処理を実行します 例:if(A == B){ 【処理】} ※文字列の場合は:if("あいうえお" == B){ 【処理】}
!=これは左辺と右辺が等しくないときにに処理を実行します 例:if(A!=B){ 【処理】}
JavaScriptに関する知識がある程度ある方はこちらを見た方が速いかもしれません
→コードまとめ
blocklauncharの組み込み関数のリファレンスです
→http://seesaawiki.jp/mcpemodders/d/%A5%EA%A5%D5%A5...
【これ】すると〜させる文(if文)
if(itemid == ID){もし持っているものが【IDだったら】〜
if(blockid == ID){もしタップしたブロックが【ID】だったら〜
setTile(x,y,z,ID,damage);【ID】【damage】に置換
}else if(blockId!=【ID】 && blockId!=【ID(2)】)タップしたブロックが【ID】でも【ID(2)】でもなかったら〜
function procCmd(cmd){
if(cmd == "コマンド")/コマンド
すると〜する
〜すると【これ】する文
setTile(x,y,z,ブロックID,ダメージ値);
x y z座標のブロックをIDのブロックに置換する(タップした場合のみ指定が無い場合はそれを置換する。)
このコードに限ったことではありませんが、座標を指定するコードは
setTile(x+2,y-2,z+2,8,0);や
setTile(x+変数,y-変数,z-2);のように演算と組み合わせて書くことも出来ます
Level.setTime(好きな時間);
【 0 】が早朝、【 14000 】が深夜となります(【】は要らない)
Level.setGameMode(0か1);
0はサバイバル、1はクリエイティブ
変数 = Level.getChestSlot(x,y,z,slot);
指定の座標に存在するチェストの指定のスロットのアイテムIDを代入
変数 = Level.getChestSlotCount(x,y,z,slot);
指定の座標に存在するチェストの指定したスロットのアイテムの個数を代入
変数 = Level.getChestSlotData(x,y,z,slot);
指定の座標に存在するチェストの指定したスロットのアイテムのダメージ値を代入
変数 = Level.getData(x,y,z);
指定した座標に存在するブロックのダメージ値を代入
変数 = Level.getGameMode();
現在のゲームモードを代入
0ならサバイバル1ならクリエイティブ
変数 = Level.getSignText(x,y,z,行);
指定した座標に存在する看板の指定した行のテキストを代入
Level.destroyBlock(x,y,z, true);
指定した座標のブロックを破壊
Level.spawnMob(x,y,z,32,"mob/zombie.png"); Level.spawnMob(x,y,z,34,"mob/skeleton.png"); Level.spawnMob(x,y,z,35,"mob/spider.png"); Level.spawnMob(x,y,z,33,"mob/creeper.png");
それぞれゾンビ,スケ,クモ,クリーパーをスポーンさせるコード
Level.dropItem(x,y,z,アイテムのジャンプ,ID,ドロップ数,ダメージ値);
指定した座標にアイテムをドロップさせる
アイテムのジャンプには0を入れると跳ねずにドロップする
addItemInventory(【アイテムID】,【個数】);
インベントリーに【ID】を【個数】追加する
(【】は要らない)
clientMessage("文字列");チャット欄に表示(日本語可)
clientMessage(変数);変数の中身を表示
clientMessage("文字列" + 変数 + "文字列");このように書くことも出来る
clientMessage(ChatColor.YELLOW + "It's the " + ChatColor.RED + "Red " + ChatColor.GREEN + "Green " + ChatColor.YELLOW + "show!");色付きのテキストを表示
変数 = getTile(x,y,z);
指定した座標のブロックIDを代入
変数 = getPlayerX(); 変数 = getPlayerY(); 変数 = getPlayerZ();
それぞれプレイヤーのX,Y,Z座標を代入
preventDefault();
ユーティリティをタップしたときにメニューを開かなくする
ModPE.saveData("キー",変数);
変数を保存
変数 = ModPE.readData("キー");
キーに対応した変数を変数に代入
ModPE.removeData("キー");
キーに対応した変数を削除
ModPE.setItem(ID,テクスチャネーム,ダメージ値,name);
新しいアイテムの追加
マインクラフトpeのアプリを解凍した中に存在する【items.meta】ファイルに書かれている名前を入力すれば画像を読み込みます
例:ModPE.setItem(500, "emelard", 0, "エメラルド");
ModPE.setFoodItem(ID,テクスチャネーム,ダメージ値,回復量,name);
新しいアイテムの追加
- 回復量 のように書くことで食べたときにダメージを受けるようになります
追加アイテムのテクスチャ適用方法
まず、ドット絵の作成ソフトで、16x16のpngファイルを作成します。
次に、scriptファイルの置かれているフォルダに、「テクスチャ」フォルダを作成します。
そして、その中に、「assets」フォルダを作り、さらにその中に「images」フォルダを作り、またその中に、
「items-opaque」フォルダを作ってその中にテクスチャをほぞんします。(ダメージ値によって変化させる場合は横に並べます。そのとき
左からダメージ値が0,1,2,3,...となります)
最後に、テクスチャネームにテクスチャの拡張子を抜いたなまえを入れます。
これたぶんもともとのテクスチャをPE本体から吸い出して横並びになるように新アイテムのテクスチャをつなげ、
1番目のテクスチャのIDで再登録(再定義といったほうがわかりやすい人もいるかも)し、ダメージ値で指定したらたらいくらでも新アイテムを追加できると思います。
(ダメージ値にも上限があるのかもしれませんが)
その他
//説明等の注釈を入れる際に使う(プログラムには影響しない)
function useItem(x,y,z,itemId,blockId,side){
アイテムをタップした際に処理が実行される
名前 = ID;前述した文の後につける。
function attackHook(attacker,victim){
mobを殴った際に処理が実行される
function deathHook(murderer, victim){
mobを殺した際に処理が実行される
function newLevel(){
ワールドに入ったら処理が実行される
function leaveGame(){
ワールドから出たら処理が実行される
function modTick(){
一秒経過すると20回処理が実行される
不明な文
【Level.dropItem(x,y,z,0,変数,ドロップ数,Level.getData());】 タップしたブロックを破壊したあとに記述する処理、ここで書かれている変数とはgetTileが代入された変数のこと、ドロップするアイテムは原則タップされたブロックで、指定はできない?(少なくとも筆者には分からないです)
while(条件式){
処理;
}
条件式が満たされている限り処理を繰り返します
条件式のところに1を入れると無限ループします
for(代入; 条件式; 増減式;){
処理;
}
代入 → 条件式の判定 true → 処理を実行 → 増減式を実行 → 条件式の判定...
false → ループを抜ける
という順で実行されます
サンプル
i=0;
while(i<10){
i++;
処理;
}
for(i=0; i<10; i++){
処理;
}
function createModPEDir(){
SDcard = android.os.Environment.getExternalStorageDirectory();
MCPEdata = new java.io.File(SDcard.getAbsolutePath(), "【ファイルを作成するディレクトリ】"); //例:games/com.mojang/
Folder = new java.io.File(MCPEdata, "Script"); //【Script】というフォルダーを作成
Folder.mkdirs();
Data = new java.io.File(Folder,"Data.txt"); //フォルダー【Script】の中に【Data.txt】というファイルを
Data.createNewFile (); //作成
var outWrite = new java.io.OutputStreamWriter (new java.io.FileOutputStream (Data));
outWrite.append ("MOD"); //ファイル【Data.txt】に【MOD】と書き込む
outWrite.close();
}
情報交換板での皆さんの情報提供により、ブロックを追加するコード、及び制作レシピ追加コードの書き方が判明しました
step1.
まずは面ごとのテクスチャ、名前、透過性などを指定します
例
Block.defineBlock(84, "new block",
[["iron_block",0],
["jukebox_top",0],
["iron_block",0],
["iron_block",0],
["iron_block",0],
["gold_block",0]], 5, false, 31);
このように書くと側面は一つを除いてすべて鉄ブロックのテクスチャ(残り一つは金ブロック)
上面はジュークボックスのテクスチャ、下面は鉄ブロックのテクスチャの不透過ブロック
となります
つまり
Block.defineBlock(ID, "名前",
[["側面1",0],
["上面",0],
["側面2",0],
["側面3",0],
["下面",0],
["側面4",0]], 5, 透過性, 31);
のように記述します(5,31部分には形状タイプや対応ツールに応じた数字が入るようですが、筆者は現在あまりそれらに詳しくないので
そのうち)
テクスチャ指定部分にはいる文字列に関してはここを参照ここ
step2.
次に制作に必要なアイテムなどを指定します
ModPE.addCraftRecipe(84, 1, 0, [42,0,41,0,331,0,331,0,331,0]);
このように書くと、鉄ブロック1,金ブロック1,レッドストーン3でアイテムID84のアイテムが手に入る、ということになります
つまり
ModPE.addCraftRecipe(制作後のアイテムID, 個数, ダメージ値, [ID,ダメージ値...略]);
のように記述します
step3.
次は破壊にかかる時間の指定です
Block.setDestroyTime(84, 1);
このように書くと、ブロックID84を破壊するには1秒かかるということになります
つまり
Block.setDestroyTime(ブロックID, 秒数);
のように記述します
これでブロックの追加は完成ですが、他にもブロックの形や性質をいじる処理が存在します
Block.setShape(ブロックID,0,0,0,1,1/10,1); ブロックをカーペット状に
Block.setColor(ブロックID,COLOR); 詳しくは不明 カラーに関してはここを参照とのこと
Block.setLightLevel(ブロックID, 1〜15); ブロックを光源化 1〜15は明るさレベルです
step1.
まずは面ごとのテクスチャ、名前、透過性などを指定します
例
Block.defineBlock(84, "new block",
[["iron_block",0],
["jukebox_top",0],
["iron_block",0],
["iron_block",0],
["iron_block",0],
["gold_block",0]], 5, false, 31);
このように書くと側面は一つを除いてすべて鉄ブロックのテクスチャ(残り一つは金ブロック)
上面はジュークボックスのテクスチャ、下面は鉄ブロックのテクスチャの不透過ブロック
となります
つまり
Block.defineBlock(ID, "名前",
[["側面1",0],
["上面",0],
["側面2",0],
["側面3",0],
["下面",0],
["側面4",0]], 5, 透過性, 31);
のように記述します(5,31部分には形状タイプや対応ツールに応じた数字が入るようですが、筆者は現在あまりそれらに詳しくないので
そのうち)
テクスチャ指定部分にはいる文字列に関してはここを参照ここ
step2.
次に制作に必要なアイテムなどを指定します
ModPE.addCraftRecipe(84, 1, 0, [42,0,41,0,331,0,331,0,331,0]);
このように書くと、鉄ブロック1,金ブロック1,レッドストーン3でアイテムID84のアイテムが手に入る、ということになります
つまり
ModPE.addCraftRecipe(制作後のアイテムID, 個数, ダメージ値, [ID,ダメージ値...略]);
のように記述します
step3.
次は破壊にかかる時間の指定です
Block.setDestroyTime(84, 1);
このように書くと、ブロックID84を破壊するには1秒かかるということになります
つまり
Block.setDestroyTime(ブロックID, 秒数);
のように記述します
これでブロックの追加は完成ですが、他にもブロックの形や性質をいじる処理が存在します
Block.setShape(ブロックID,0,0,0,1,1/10,1); ブロックをカーペット状に
Block.setColor(ブロックID,COLOR); 詳しくは不明 カラーに関してはここを参照とのこと
Block.setLightLevel(ブロックID, 1〜15); ブロックを光源化 1〜15は明るさレベルです
関数はminecraftpe用に作られた組み込み関数(function newLevel()など)とは別に、自分でも作ることができます。
ここではその関数の使い方や書き方についての説明です
自作関数の作り方-
function 好きな名前(引数){処理}
関数はこのように書くことで作ることができます
また、作った関数は好きなタイミングで呼び出すことができます
引数は関数を呼び出す際に指定することでさまざまな値を利用できますが、省略することも可能です
function newLevel(){
myfunction();
}
このように書くと、ワールドに入ると関数myfunctionが実行される。ということになります
コードのなかでよく使う処理などは関数にまとめておけば関数名();だけでその処理を呼び出すことができるので、
コードを大きく短縮化できます
引数について-
引数は関数を呼び出す際に()のなかに呼び出す関数のなかで使いたい値を指定することで
その値に応じた処理を実行することができます
function newLevel(){
myfunction("ようこそ");
}
function leaveGame(){
myfunction("さようなら");
}
function myfunction(talk){
print(talk);
}
このように書くと、ワールドに入った際は「ようこそ」と表示され、ワールドから出た際は「さようなら」と表示されます
順序としては
ワールドに入る↓
引数「ようこそ」をmyfunctionへ送る↓
myfunctionは「ようこそ」を受け取り、変数talkに代入しprintで表示
のようになっています
ここではその関数の使い方や書き方についての説明です
自作関数の作り方-
function 好きな名前(引数){処理}
関数はこのように書くことで作ることができます
また、作った関数は好きなタイミングで呼び出すことができます
引数は関数を呼び出す際に指定することでさまざまな値を利用できますが、省略することも可能です
function newLevel(){
myfunction();
}
このように書くと、ワールドに入ると関数myfunctionが実行される。ということになります
コードのなかでよく使う処理などは関数にまとめておけば関数名();だけでその処理を呼び出すことができるので、
コードを大きく短縮化できます
引数について-
引数は関数を呼び出す際に()のなかに呼び出す関数のなかで使いたい値を指定することで
その値に応じた処理を実行することができます
function newLevel(){
myfunction("ようこそ");
}
function leaveGame(){
myfunction("さようなら");
}
function myfunction(talk){
print(talk);
}
このように書くと、ワールドに入った際は「ようこそ」と表示され、ワールドから出た際は「さようなら」と表示されます
順序としては
ワールドに入る↓
引数「ようこそ」をmyfunctionへ送る↓
myfunctionは「ようこそ」を受け取り、変数talkに代入しprintで表示
のようになっています
ここではウィンドウやボタンの表示などの説明です
まずウィンドウやボタンを利用する上で必ず無くてはならないコードがあります
activity = com.mojang.minecraftpe.MainActivity.currentMainActivity.get();
activity.runOnUiThread(new java.lang.Runnable({ run: function() {
最初にこの文を記述します
次に
try{
と入力します
これは例外処理と言って、try{内に記述した処理の中に例外を発生させる要因が見つかったとき、
(この場合で言えばandroid端末のバージョン不足でボタン等を利用できなかった場合)
try{内の処理を無視して}catch{内の処理を実行します
ここからtry{内にボタン等を利用するコードを記述します
function SetButton(){
activity = com.mojang.minecraftpe.MainActivity.currentMainActivity.get();
activity.runOnUiThread(new java.lang.Runnable({ run: function() {
try{
ButtonWindow = new android.widget.PopupWindow();
ButtonLayout = new android.widget.RelativeLayout(activity);
Button = new android.widget.Button(activity);
Button.setText("ここにはボタンに表示したい文字を入れます");
Button.setOnClickListener(new android.view.View.OnClickListener(){
onClick: function(view) {
explode(getPlayerX(),getPlayerY(),getPlayerZ(),1.0);
}});
ButtonLayout.addView(Button);
ButtonWindow.setContentView(ButtonLayout);
ButtonWindow.setWidth(android.widget.RelativeLayout.LayoutParams.WRAP_CONTENT);
ButtonWindow.setHeight(android.widget.RelativeLayout.LayoutParams.WRAP_CONTENT);
ButtonWindow.setBackgroundDrawable(new android.graphics.drawable.ColorDrawable(android.graphics.Color.TRANSPARENT));
ButtonWindow.showAtLocation(activity.getWindow().getDecorView(), android.view.Gravity.RIGHT | android.view.Gravity.BOTTOM, 0, 0);
}catch(problem){
print("エラーが発生しました" + problem);
}}}));
}
function DeleteButton(){
activity = com.mojang.minecraftpe.MainActivity.currentMainActivity.get();
activity.runOnUiThread(new java.lang.Runnable({ run: function() {
if(ButtonWindow != null) {
ButtonWindow.dismiss();
Buttonwindow = null;
}
}}));
}
function newLevel(){
ButtonWindow = null;
SetButton();
}
function leaveGame(){
DeleteButton();
}
- ここまで-
これはワールドに入ると右下にボタンが設置され、ボタン押すと爆破されるスクリプトです。
DL→こちら
順を追って説明します
ButtonWindow = new android.widget.PopupWindow();
ButtonLayout = new android.widget.RelativeLayout(activity);
まずこれらの文でandroid端末の画面上のレイアウトを取得します
後々ボタンを設置する際にはこれらを元にボタンを設置します
Button = new android.widget.Button(activity);
Button.setText("ここにはボタンに表示したい文字を入れます");
この文でボタンを作成し、ボタンに表示される文字を記述します
例のように長すぎるとボタンもその分大きくなってしまうので注意してください
Button.setOnClickListener(new android.view.View.OnClickListener(){
onClick: function(view) {
explode(getPlayerX(),getPlayerY(),getPlayerZ(),1.0);
}});
ここでボタンがタップされた際の処理を記述します
例ではプレイヤーの座標が爆発するように書かれています
また、この文章は無くてもかまいません
ただ文字を表示するだけの用途としてボタンを使うのもいいかもしれません
ButtonLayout.addView(Button);
ButtonWindow.setContentView(ButtonLayout);
ButtonWindow.setWidth(android.widget.RelativeLayout.LayoutParams.WRAP_CONTENT);
ButtonWindow.setHeight(android.widget.RelativeLayout.LayoutParams.WRAP_CONTENT);
ButtonWindow.setBackgroundDrawable(new android.graphics.drawable.ColorDrawable(android.graphics.Color.TRANSPARENT));
ButtonWindow.showAtLocation(activity.getWindow().getDecorView(), android.view.Gravity.RIGHT | android.view.Gravity.BOTTOM, 0, 0);
これらの文でボタンを設置しています
この場合は右下に設置されますが、
ButtonWindow.showAtLocation(activity.getWindow().getDecorView(), android.view.Gravity.RIGHT | android.view.Gravity.BOTTOM, 0, 0);
のRIGHTをLEFTにすれば左下に表示されますし、BOTTOMをTOPにすれば右上に表示されます
細かく設定したいのであれば0,0の値を弄ると効果的です
}catch(problem){
print("エラーが発生しました" + problem);
}}}));
}
所謂例外が発生した際の処理です
変数problemでエラーメッセージを受け取り、printで表示しています
function newLevel(){
ButtonWindow = null;
SetButton();
}
ワールドに入った際にButtonWindowにnullを代入し、上記の処理が記述された関数SetButton()を呼び出します
nullを代入しているのはボタン設置の有無を判別するためです
別の変数にfalseや0等を利用するのもありです
次にボタンを消す処理です
function DeleteButton(){
activity = com.mojang.minecraftpe.MainActivity.currentMainActivity.get();
activity.runOnUiThread(new java.lang.Runnable({ run: function() {
if(ButtonWindow != null) {
ButtonWindow.dismiss();
Buttonwindow = null;
}
}}));
}
特段説明は不要と思いますが、上記で説明したように変数ButtonWindowでボタン設置の有無を判別し、
.dismiss()でボタンを消しています
function leaveGame(){
DeleteButton();
}
ワールドから出た際に上記のボタンを消す処理を実行します
DL→こちら
編集中
var ctx = com.mojang.minecraftpe.MainActivity.currentMainActivity.get(); ctx.runOnUiThread(new java.lang.Runnable({ run: function(){ try{ var dya = new android.app.Dialog(ctx); var menu = new android.widget.LinearLayout(ctx); var scroll = new android.widget.ScrollView(ctx); dya.setTitle("タイトル"); menu.setOrientation(android.widget.LinearLayout.VERTICAL); scroll.addView(menu); dya.setContentView(scroll); dya.show(); }catch(emr){ print(emr); } }}));
このページへのコメント
ブロックの回りにモンスターをスポーンさせたいのですがどうしたらいいですか?
plus.google.com/111051147296795207236/posts/bDvX4Wz763D>>ryo
これを参考にしてみては?
どなたかmobの形を決める(カスタムモデル?)の文の説明を載せてくれませんか?自分で調べるんですけど難しくてわかりません。
連投スイマセンが、
ついでに追加ブロックコードについての話ですが、自分なりに判る範囲で纏めたテキストがあるので良ければどうぞ。
●ttps://www.dropbox.com/s/mdglhlar2kqbghk/%E3%83%96%E3%83%AD%E3%83%83%E3%82%AF%E8%BF%BD%E5%8A%A0%E3%82%B3%E3%83%BC%E3%83%89%E7%BA%8F%E3%82%81.txt
>>POKEさん
もう必要ないかもしれませんが一応…
フードの追加は
ModPE.setFoodItem(ID,"テクスチャ指定アイテム名",指定番号,回復値,"表示アイテム名");
IDは任意の数字。
テクスチャ指定アイテム名はitems.metaファイルをテキストエディタ等で開いてテクスチャ指定してる纏まりに書かれてるアイテム名。
指定番号は、テクスチャ指定してる纏まりで一つのアイテム名で複数のテクスチャ指定の数字がある場合は、最初の0から順に番号を指定する。大概は0のままで大丈夫。
回復値は食べると数値分回復する。ハート1個分は2。数字の前に-(マイナス)を付けるとダメージ値になる。
表示アイテム名は任意の名前で。
例: ModPE.setFoodItem(367,"rotten_flesh",0,2,"腐った肉");