hayanasa’s Flower Factory

マイクラ建築勢向けのMOD/Plguin解説がメインです。8割自己満足です。引用などご自由にどうぞ。たまに関係ないことを書くかもしれません。

1.7.10建築勢向け Thermosサーバー構築方法

※WorldEdit木の斧でブロックを左クリックするとブロックを破壊してしまう問題について加筆。記事の一番下を参照。(2018/5/15)

 

f:id:hayanasa:20190205203642p:plain

環境選び

建築勢が自分用のサーバーを使っているのを見たことがあると思います。サーバーを建てるメリットとしては、「プラグインが使える」「他の人と一緒に遊べる」の二つが大きいですが、プラグインを使うためだけに自分用サーバーを立てている人も多いです。自分用にサーバーを立てて遊ぶ場合は、よく躓くポイントとされる「ポート開放」がいらないので難易度は一気に下がります。

 

なお、マルチプレイをしたい(人を呼びたい)という場合はサーバーを立ててポート開放を行う必要があります。その場合の環境選びはこちらも参考にしてみてください。

 

(古かった情報を一部項目を削除しました)

 

Thermosサーバー

現状、1.7.10でプラグインサーバーを建てたいならばThermosサーバーの一択と言えます。

SpigotやCraftBukkitは現状1.7.10版を正式な手段で入手できないっぽい(ビルドしようとしても1.7.10はできない模様。Cauldron(通称大釜)は開発停止で古く、しかもjava7でないと動かない)

Thermosはとても簡単に構築できるうえ、観覧車MODやMCTE、RTMなどといったブロック/アイテム追加系MODなどを使えるというのが大きなポイントです。 

 

1.ファイルをダウンロード

こちらからファイルをダウンロードします。少し下の「Thermos Build 57 (ALPHA)」を使ったほうが良いです(2018/5/15現在。詳細は後述)。「Thermos-1.7.10-1614-server.jar」と「libraries.zip」の二つをダウンロードし、Cドライブ直下に「Thermos」などの名前でフォルダを作成し、この二つを入れ、zipの方を解凍しておきます。

f:id:hayanasa:20180507194604p:plain

2.起動用スクリプトの作成

「Run」などといった自分のわかりやすい名前でテキストファイルを作成し、 

f:id:hayanasa:20180507195033p:plain

テキストファイルを開いて以下の文章を記述し、

java -XX:+UseG1GC -XX:+UseFastAccessorMethods -XX:+OptimizeStringConcat -XX:MetaspaceSize=1024m -XX:MaxMetaspaceSize=2048m -XX:+AggressiveOpts -XX:MaxGCPauseMillis=10 -XX:+UseStringDeduplication -Xms4G -Xmx6G -XX:hashCode=5 -Dfile.encoding=UTF-8 -jar Thermos-1.7.10-1614-server.jar --log-strip-color

拡張子を.txtから.batに変更します(Run.txtをRun.batに変更)。

f:id:hayanasa:20180507195254p:plain

完成したbatファイルをダブルクリックして起動すると処理が行われます。このように色々準備されて、黒いウインドウに白文字で色々書かれたウインドウが出ていれば成功です。黒いウインドウに「stop」と入力しEnterキーを押すことでサーバーを安全に終了できます。

f:id:hayanasa:20180507195347p:plain

pluginsフォルダにプラグイン、modsフォルダにMODを入れ*1、起動し直します。

あとはマイクラを立ち上げて、サーバーアドレスに「localhost」と指定すればサーバーに入れます。お疲れ様でした。

サーバーの基本的な操作やコマンドはBukkit系サーバーとほとんど共通しているので色々検索して探してみて下さい。これはどのサーバーでも共通ですが、終了するときは前述の通り「stop」を入力して終了させて下さい。サーバーが動いているウインドウを「×ボタン」などで強制終了してしまうとワールドがセーブされずに巻き戻る可能性があります。

 

参考サイト(公式解説):Thermos by CyberdyneCC

ma_bo_do_huさん(@Morpheus_tohu)に解説用スクリーンショットを提供して頂きました。

Thermosでよくあるトラブル

・起動しない!

→エラー内容にもよるのですが、javaが32bitだと起動しないみたいです。64bitをインストールすると解決するはずです。別の原因がありそうな場合は、コンソールに表示されているエラーコードを検索してみると解決策が見つかるかもしれません。batファイルの最後に改行して「pause」と書き足すと、コンソールが勝手に閉じずにエラーコードが読めるようになります。

 

・WorldEditのバイオーム変更が効かない!

→サーバー側のmodsフォルダにForge版WorldEditも一緒に導入すると治るみたいです。クライアント側にも同じものを入れて下さい。

 

・Multiverseでワールド追加(/mv import)できない!

→Bukkit系サーバーと違い、サーバーフォルダ直下にワールドデータを入れるのではなく、「world」フォルダ内に追加したいワールドデータを入れるとimportできます。

 

・使えないプラグインがある!

→すべてのBukkitプラグインが使えるわけではありません。あきらめましょう。

 

・WorldEdit木の斧でブロックを左クリックするとブロックを破壊してしまう問題

→「Thermos Build 58 (ALPHA)」がどうも駄目みたいです。さきほどのこちらのページを少し下にスクロールすると、「Thermos Build 57 (ALPHA)」があるのでそちらを使うと解決します。(Thermos-1.7.10-1614-server.jarをダウンロードしてきて置き換えるだけで起動しましたが、エラーが出るので一応構築し直したほうが良いかもしれない…?librariesも置き換えましたが同じエラーが出たまま)

※木の斧ツールを設定で剣に変更するという解決策もあるようです(デフォルトの仕様として、剣を持っているとクリエイティブでも左クリックでブロックが壊れない)。なるほど。

 

他にもなにかありましたら教えていただければ追記させていただきます。

*1:ブロックやアイテムを追加するMODは基本的にサーバー側に"も"入れる必要があります。OptifineやミニマップなどはクライアントMODと呼ばれ、サーバー側には入れる必要はありません。

建築勢のためのかんたんマクロMOD解説2(応用、実例)

基本編はこちら。

「ちょっとした便利なアイデアや具体例の紹介をしつつ、前回説明しきれなかった細かい事項や、スクリプトの書き方を補足していく」といった方向で解説をしていきます。結構突っ込んで文量も増えてしまいましたが。今回もWorldEdit(WE)のコマンドが基本ですが、他にもVoxelSniper (VS)や他のプラグインのコマンド例も一部紹介しています。

なお今回の記事では、「変数、定数、関数」あたりのワードがちょくちょく出て来るのですが、前回も紹介させて頂いたこちらの記事で非常にわかりやすく解説されているので、深く理解したい場合は複数タブで開いておいて行ったり来たりすると良いと思われます。

例によって本記事では1.7.10環境でやっているので、最新版だと多少表示が変わっていたり日本語対応していたり機能が結構増えていたりします。

ですが基本は同じですし、こちらで紹介しているものは全て新しいバージョンでも使えるので、環境に合わせて臨機応変に色々試してみてください。

専用GUIを作成する

前回はチャット画面にボタンを設置する方法を紹介しましたが、あまりボタンを置きすぎても肝心のチャットが見づらくなってしまいます。ボタンを置ける専用GUIを作ることができるので、そちらに逃がしてやるという手もありますのでご紹介します。

まずはこのように新しいGUIを準備します。

f:id:hayanasa:20180310091746p:plain

f:id:hayanasa:20180310091819p:plain

f:id:hayanasa:20180310091834p:plain

次に、任意キーやボタンにGUIを開くマクロを登録します。

f:id:hayanasa:20180310092041p:plain

実行するとGUIが開きます。右下の設定アイコンを押せば、チャット画面と同じようにボタンなどを配置できます。

f:id:hayanasa:20180310092149p:plain

参考までに筆者の1.7.10環境では、WEやその他よく使うものはチャット画面に配置し、別途VoxelSniperやWEブラシといった機能は専用GUIにまとめています。キーバインドで開きます。

散らかってますが雰囲気だけでも参考に…ならないなこれ

f:id:hayanasa:20180310093148p:plain f:id:hayanasa:20180310093210p:plain

マクロ設定(Config)を切り替えてもチャット画面のGUIのボタン配置を変えることはできないのですが、このように専用GUIを作っておくことで対処できそう。

矢印キーに移動系コマンドを割り当てる(簡単な条件分岐)

↑↓←→キー及びPageUp、PageDownキーに、それぞれ前後左右上下への//moveと//shiftを割り当てます。

普通に押すと//moveを行い、CTRLと同時に押すと//shiftするようになっています。

 

とりあえず「→」キーに設定してみます。

「→」キーのキーバインド設定画面を開きます。

上の方に「Conditional Macro」と言う項目があるので、そちらを選択します。

f:id:hayanasa:20180308203925p:plain

そしてこのように記入。

コントロールキーではなく他のキーにしたい場合は、「CTRL」の部分を「ALT」や「SHIFT」、または「KEY_Z」(A〜Zなどどのキーでも指定できます)といった具合に変更してみてください。

f:id:hayanasa:20180308203938p:plain

このように簡単な条件分岐なら、スクリプトを書かなくても使えます。

CTRLという定数には、CTRLキーを押しているか否か(TRUE、FALSE)が保持されています。

範囲選択をして、実際に右にブロックを動かしたりCTRLを押して選択範囲だけ動かしたりできているか試してみましょう。

 

一応コマンドの解説…

「r」というのは方向指定。この場合は右。「-s」というのは、moveする際に選択範囲も同時に移動するというオプション指定です。//stackでも使えます。

なお、実は1個だけ動かす場合はいちいち「1」と指定しなくてもいいんですがわかりやすいようにあえて指定してます。いちいちすいません。

 

「←」キーにも同じように設定します。方向指定である「r」の部分を「l」(小文字のL)に変えれば左に動くようになります。 

f:id:hayanasa:20180308203951p:plain

前、後、上、下も同じように設定してみましょう。方向指定はそれぞれf、b、u、dです。

(fは省略可能です。なお、それぞれforward、back、up、down、の頭文字です)

  

実際に前後左右上下に動かして試してみましょう。革命が貴方を待っています。 たぶん。

CTRLと同時に押せば範囲選択だけ動いているはずです。

 

ちなみに筆者の環境では同じような感じで「//stack 1 r -s」といった具合でチャット画面にボタンとしておいてます。これもまた便利。こういう場合でボタンを連続で押したいときはボタン設定欄の「Don't close GUI on click」にチェックを入れておくと便利です。

f:id:hayanasa:20180308204045p:plain

・マクロMODでコマンドを連続実行すると遅延がかかるようになっていますが、これは設定で切れます。様子を見て適切な設定を見極めてください。負荷がかかるような誤爆やコマンド乱発にはくれぐれも注意。キーバインド一覧の左上からマクロMOD設定画面を開き、Enable flood protectionのチェックを外すだけ。

・後述する「スクリプト」を組めば、CTRL以外のキーも使ってもっと細かい場合分けをして、//shiftの他に//expandやら//contractも自由自在に扱えるように…なんてこともできそう。筆者の環境だと、//outset 1や//inset 1をキーバインドして使っているので、あまり必要性を感じておらずやってませんが。アイデアだけ置いておきます。 

火薬、矢を持っている時は/u、それ以外の時は//undo(条件分岐例2)

//undoをキーバインドしている人は多いと思いまが、その際に条件分岐を行い、火薬か矢を持っている場合にはVSのundoコマンドである「/u」を発動させようという試みです。

とりあえず矢印キーの時と同じくConditional Macroを選択し、こんな感じで書いてやれば動きます。 

コピペ用→ (ITEM="gunpowder")||(ITEM="arrow")

f:id:hayanasa:20180308204558p:plain

ITEMは、現在持っているアイテムIDを保持している定数です。条件の記法などは最初に紹介させて頂いた記事で詳しく解説されています。

分からなくてもとりあえず丸写しすれば動くのが良いところですね!

/bと/sizeもこんな感じで指定してやると捗ります。

f:id:hayanasa:20180309214447p:plain

持っているアイテムのIDを自動で入力させる(type)

typeという関数の紹介です。特定の文字列をチャット欄に自動入力(送信ではない)してくれます。typeを使う際は、必ずチャット画面のボタンに設置するようにし、「Don't close GUI on click」をチェックしてください。ミスるとめっちゃバグって(要はチャット画面閉じたあとに勝手にキーがタイピングされてしまう状態になって)ビビります。怖ければどうでもいいシングルワールドで試してみてください。 

f:id:hayanasa:20180308204645p:plain

定数に入ってる値を確認したりコピーできたりするのが強いです。

例えばこれだと持ってるアイテムのIDとダメージ値をチャット欄に出力してくれます。

$${type(%ITEMIDDMG%)}$$

f:id:hayanasa:20180308204901p:plain

他の例としては、$${type(//hcyl %ITEMIDDMG% );}$$のように用意しておけばコマンド入力を補助するような形で便利になったりします。チャット欄で↑キーで履歴を遡って何度も入力したいようなコマンドなんかはこの方式が便利な気がします。自分のスタイルにあった方式を探してみてください。

ちなみに$${log(%ITEMIDDMG%)}$$とするとログに水色の文字列として出力してくれます。これはクライアント側にしか表示されていないのでマルチでも他の人には見えません。皆に見えるよう発言したければ$${echo(%ITEMIDDMG%)}$$のようにすれば良いです。

任意の定数や変数の中にどういう文字列が入っているのか確認したいなどに便利です。

f:id:hayanasa:20180308204937p:plain

次はちょっと工夫してみましょう。

inventoryup();という、ホットバーの選択を指定数だけ右にずらす関数を使用します。

コピペ用→$${type(%ITEMIDDMG%);type(",");inventoryup(1);}$$

f:id:hayanasa:20180308204957p:plain

これは説明より動画で見たほうが早そう。「//set 」は自分で入力し、最後の「,」も自分で消しています。

これ、ConquestReforgedみたいなブロック追加MODとか使ってる環境だとめっちゃ便利です。

 

typeはわりと設定が楽なのにかなり融通が効くので、上手く使うと非常に捗ります。大事なことなのでもう一度書きますが、必ずチャット画面のボタンに設置するようにし、「Don't close GUI on click」をチェックしてください。やらかすと結構ビビります。

持っているブロックのメタ値を指定してセットする(ロットメタの//set簡易対応)

前回の記事でエンターキーで手持ちブロックを//setする方法$${echo(//set %ITEMIDDMG%);}$$を紹介しましたが、これ実は1.7.10でお馴染みのLotMetaBlockModで追加されたメタブロックには対応してません。いろいろ考えたのですが、アイテムIDだけマクロMODに取得してもらい、メタ値は自分で入力するという方式が一番楽です。

$${prompt(&input, "$$[meta]");echo(//set %ITEM%:%&input%);}$$

任意のキーにこれを入れておくだけ。今回のように数値入力をするようなものはテンキーやその近くのキーにキーバインドすると便利です。promptだの変数だのに関しては後述します。

 

筆者の環境ではこれにプラスして、直近のメタ指定//set履歴を残しておいて別のキーで一発で設置できるようにしています。テンキーの「+」キーでメタ指定//set発動、テンキーの「.」キーで直近のメタブロックを設置、と言った具合にキーバインドしてます。エンターに近いし数字入力も楽なので便利。

さっきの代わりにこちらを設定し、$${prompt(&input, "$$[meta]");echo(//set %ITEM%:%&input%);@&metaset=%ITEM%:%&input%}$$

別のキーにこれを設定します。$${echo("//set %@&metaset%");}$$

@&metasetと名付けたグローバル変数を使い、「設置したブロックIDと入力したメタ値をつなげた文字列」を保存して、ふたつ目のマクロでそれを利用しています。グローバル変数については次で。

トグルで切り替えを行う(グローバル変数)

マクロの処理を終えても値を保持していたい時や、先ほどのように別々のマクロで値を受け渡したい時にはグローバル変数を使います。

例では透明状態、非透明状態の切り替えを一つのボタン(キー)で行います。

コピペ用

@invisibilityset

$${echo(/effect %PLAYER% 14 0); @invisibilityset=0;}$$

$${echo(/effect %PLAYER% 14 9999); @invisibilityset=1;}$$

f:id:hayanasa:20180309215147p:plain

@invisibilitysetと名付けたグローバル変数を利用して条件分岐を行っています。0はFALSE、1はTRUEと同義です。

キーを何度か押してみましょう。透明、非透明状態が交互に切り替われば成功。

 

グローバル変数は同一ゲームフォルダ内で共通して使えるので、別々のマクロで使ったりワールドやサーバーをまたいで使ったりできます。マイクラを終了して再度起動しても保存されてます。共通なので変数名かぶりには要注意。

グローバル変数を使えるようになると一気にできることが一気に増えて便利です。

例えばこんなことも。

…やたら凝ったわりにクソ使いづらくて消しましたが。

たくさん試行錯誤して最強の環境を創りあげましょう!筆者もまだまだ迷走試行錯誤中です。

ミュートワードを設定してログを静かにする(チャットフィルター)

チャットログを監視し、特定の単語がある行を表示させなくします。

ここのEdit Chat Filterを選択し、 

f:id:hayanasa:20180309215407p:plain

IFMATCHES(%CHATCLEAN%, "消したい文字列");FILTER();ENDIF();

これを好きなだけ並べていくだけ。

f:id:hayanasa:20180309215414p:plain

日本語でもコピペすればいけます。?????となってもたぶん大丈夫。

ここに書いた単語と一致する部分がある場合、その行がまるごと表示されなくなります。

 

 

ワールドに入った瞬間になんかする(Events)

キーバインドやボタン以外にも、何かが起きたら何かを実行するという設定ができます。

今回は例として、ワールドに入った瞬間に色々やってもらう設定をしてみましょう。

おなじみキーバインド設定画面をひらき、上にある右向きの三角マークを押します。

f:id:hayanasa:20180309215514p:plain

色々なイベントに対応しているのがわかります。ゲーム(ワールド)に参加したとき、チャット送信した時、体力が変わった時…などなど。とりあえずonJoinGameというところをクリックします。

f:id:hayanasa:20180309215540p:plain

あとはキーバインドやボタンと同じように実行したいコマンドやスクリプトを入力するだけ。設定が済んだらワールドに入りなおして確認してみましょう。筆者は//sel extendを実行したり、特定のグローバル変数のリセットを行ったりということをしています。

 

ワールドに入った瞬間に使いたい機能をまとめたスクリプトを書いておくと便利かもしれません。ただしマルチ鯖で使うときなんかは色々要注意ですが。 

特定スロットに特定のアイテムを用意する(setslotitem)

giveコマンドと違ってアイテムを持っていても指定したスロットに上書きできるので便利。処理もコマンドを送信するわけではなくクライアント依存なのでサーバー側に余計な負荷をかけません。

コピペ用→$${setslotitem(arrow,0,1);setslotitem(gunpowder,1,1);}$$

画像だと大文字なのはミスですが特に関係なく動きます。

f:id:hayanasa:20180308210217p:plain

f:id:hayanasa:20180308210231p:plain

setslotitem(アイテムID,ホットバー番号,個数);

という指定の仕方です。今回は二つ並べていますが、さらに追加すれば好きなだけ増やせます。もちろん一個消して一つだけにしてもOKです。

ホットバー番号(0〜8)やアイテムを好きなものに変えてみたりしましょう。

ブラシセットを一発で準備する(簡単なスクリプト)

上の応用編です。ブラシ用アイテムの用意だけでなく、ブラシ設定コマンドも同時にやってもらいましょう。

書きたいものが長くなってしまう場合、テキストファイルにスクリプトを書いて読み込む、ということができます。

テキストファイルは、ゲームフォルダ/liteconfig/common/macros内に.txt形式でおくと利用できます。今回はBrush.txtというファイルを作り、中にスクリプトを書いていきます。 余計なところに全角スペースなどが入ると動かなくなる場合があるので注意。 

setslotitem(arrow,0,1);
setslotitem(gunpowder,1,1);
setslotitem(ghast_tear,2,1);
setslotitem(reeds,3,1);
setslotitem(clay_ball,4,1);
setslotitem(gold_ingot,5,1);
setslotitem(feather,8,1);
slot(3);
wait(2t);
echo(/br smooth 3);
slot(4);
wait(2t);
echo(/br cyl grass 5|/mask <air);
slot(5);
wait(2t);
echo(/br sphere stone 5|/mask sand);
slot(6);
wait(2t);
echo(/br sphere sand 5|/mask !air);

 

あとは、好きなキーやボタンにスクリプトを割り当てれば完了。このように書きます。

f:id:hayanasa:20180309222648p:plain

やたら長いだけでやってることは単純です。

まずsetslotitem();でアイテムを準備します。slot();はホットバーのスロット選択を指定した場所に移動する関数ですが、こちらは1~9で指定するのでsetslotitemと1つズレます。どうしてこうなった

遅延を挟まないと上手く動かないので、wait();で遅延を挟んでいます。wait(2t);で2tick待つという指定になります。もし上手く動かなかったらこの辺を調整してみると良いかも。echo();はお馴染み、中に書いてある文字列を送信してくれる関数ですね。中で|で区切ると複数に分けて送ってくれます。

f:id:hayanasa:20180309215745p:plain

はい便利。

当然ですが実行中にマウスホイールを弄ったりしてスロット選択位置を変えてしまうとおかしくなりますので注意。 

植樹用葉っぱブラシをワンタッチで準備する(スクリプトで入力機能を使う場合)

木を作るためのWE葉っぱブラシを用意するスクリプトです。個人的にはかなり高頻度で使うので参考までに紹介します。マクロ起動→葉っぱの種類指定→サイズ指定→ブラシ設定コマンド送信、と言った具合で動きます。

setslotitem(emerald,%INVSLOT%-1,1);
setslotitem(log,%INVSLOT%,1);
prompt(&input,"$$[leaves[18:4,18:5,18:6,18:7,161:4,161:5,161:6,161:7]]");
prompt(&rad,"$$[radius[1,1.5,2,3,4]]");
echo("/br sphere 15%%&input%,85%air %&rad%|/mask 0");

一行目で選択スロットにエメラルドを用意し、二行目で次のスロットに原木を用意しています。%INVSLOT%は選択スロット番号(1~9)が入っている定数です

promptは「入力画面を出してその値を変数に入れる」という関数です。スクリプトだと$$?のような書き方はそのまま使うことはできず、これを使う必要があります。

ここでは「&input」と「&rad」という二つの変数を使用しています。変数名は任意です。

promptで取得した値がそれぞれの変数に入るので、それらを使って/brコマンドを実行しています。

ちょっと%のせいで見づらいのですが、青地の部分が変数になっています。変数の中身を取り出して文字として使いたい場合は%〜%のように囲ってやる必要があります。

実際にどういうコマンドが出力されているのかというと、例えば18:41と選択していくとこんな感じ。

/br sphere 15%18:4,85%air 1

/mask 0

 

あくまで自分用のものを紹介しているだけなので汎用性はあまり考えていません、好みに応じて色々弄ってってみてください。

 

・promptを使う場合、ボタンを押した後にチャット画面が閉じられないような場合に上手く動きません。Don't close GUI on clickのチェックがもし入っていたら外しましょう。それでも不具合か何かで上手く行かない場合はスクリプトの一行目にgui();と入れてみてください。開いているGUIを閉じる関数です。

その他細々とした便利な機能や裏ワザなど

fov(視野)を選んで設定

 例:$${prompt(&input,"$$[fov[30,42,54,70]]");fov(%&input%);}$$

 ちょっとした補足ですが、選択肢表示画面でも手打ちで好きな文字を入力することができます。

 

方角を指定してピッタリ向く

 例:$${prompt(&yaw, "$$[yaw[0,90,180,-90]]");look(%&yaw%,,);}$$

 look(ヨー,ピッチ,向くのにかける時間);と指定します。

  

ウインドウサイズの指定

 例:$${setres(1280,720);}$$

 

クリックするとGUIを閉じれるというだけの空ボタン

 何も入ってない半透明なボタンをチャット画面の真ん中に置いてます。

 クリックでチャット画面を閉じれるので地味に結構便利。

 f:id:hayanasa:20180309223206p:plain

 

今持っているブロックから次のスロットにあるブロックにreplaceする

#slot1=%INVSLOT%;
#slot2=%INVSLOT%+1;
getslotitem(%#slot1%,&item1,,&itemdmg1);
getslotitem(%#slot2%,&item2,,&itemdmg2);
echo(//re %&item1%:%&itemdmg1% %&item2%:%&itemdmg2%);

f:id:hayanasa:20180309223124p:plain

f:id:hayanasa:20180309223140p:plain

 

BiomeEdit用ブラシ設定

 バイオームを選択すると、枯れ木を用意してBiomeEditの設定コマンドを送信してくれるようなマクロです。

 指定しているバイオームはcocricot環境用+αなので環境に応じて変えると良いと思います。半径も固定ですが"round 2"にしてあるバージョンのボタンも作ってあります。いちいち数字選んだり入れたりするの面倒なので…。好みに応じていろいろ変えてみてください。

 $${prompt(&input, "$$[Biome[plains,forest,river,extreme_hills,ocean,jungle,deep_ocean,jungle_hills,desert]]");echo(/be brush %&input% round 0);setslotitem(deadbush,9,1);}$$

 これくらいの長さならtxtファイルにしなくてもいけます。

 

おわりに

例によってやたら長くなってしまいましたがお疲れ様でした。わからないことや指摘などあればお気軽にコメント宜しくお願いします。素敵な建築ライフをお祈り申し上げます。そしてマクロMODの素晴らしさをぜひとも広めてください。

建築勢のためのかんたんマクロMOD解説

Macro/Keybind Mod(通称マクロMOD)というMODの解説になります。

本記事は1.7.10環境で解説していますが、最新バージョンにも十分対応できると思います(変更点は多いですがほとんどが追加要素です)

 

はじめに

コマンドを好きなキーや画面内のボタンに登録しておくことで、入力の手間を省いて簡単に使えるようにするMODです。学んでいけばもっともっと色々な事ができます。

とにかく便利です、個人的にはこれがもし使えなくなったとしたら建築勢辞めるかもしれません。流石に盛りましたがとにかく便利です。

 

概要

基本的にはWorldEditのよく使うコマンドを登録していくという方向でやっていきます。

本記事を追ってマクロMODの設定を進めていけば、便利な環境をゲットするとともに、マクロMODの基礎的な事項を学べるようになっています。

割り当てるキーやコマンドなどは環境や好みに応じて変えてください。

 

準備

Forge、Liteloder環境(前提MOD)

Macro/Keybind Mod(1.7.10用)

WorldEdit(MOD版でもPlugin版でも可)

上記の3つがあればとりあえず大丈夫です。導入法はここでは解説しませんが、「Liteloader Forge」などで検索すれば詳しい解説記事がたくさん出てきます。

ついでにWEの選択範囲を可視化する「WorldEditCUI」があると非常に便利です。個人的には必須レベル。

1.7.10のおすすめMODはこちら

 

目次

 

初期設定 

マクロMODを導入してから初めてクライアントを起動すると、このような画面が出てきます。Configure Keysを押し、キーを設定しましょう。

f:id:hayanasa:20180305211702p:plain

f:id:hayanasa:20180305211757p:plain

Macro activateはマクロMODキーコンフィグを表示させるキーになります。今回は「@」を入力して設定しました(このキーは環境によって表記が違うらしい?)。

Macro Overrideは後述。

Settings key comboは何回かクリックすると切り替わります、とりあえずDisabledにしておきましょう。

設定を終えて適当なワールドに入ってみましょう、このようなメッセージが出ると思います。

f:id:hayanasa:20180305212057p:plain

マクロMODの設定は複数作っておいて切り替えて使うことができます(次の記事で解説予定)。とりあえずこのままDefault Configrationに設定していけばどの環境でも共通で使えます。

コマンドをキーに割り当てる

早速キーバインドをしてみましょう。今回の例では「Backspaceキー」に「//set 0」を設定してみましょう。

Macro Activateキー(先ほどの設定では@キー)を押します。

このような画面が出てくるので、Aキーを模したアイコンをクリックしましょう。

f:id:hayanasa:20180305212821p:plain

キーバインド一覧が表示されます。赤文字はバニラや別MODですでに機能が設定されているキーです。

f:id:hayanasa:20180305212856p:plain

設定したいキーであるBackspaceキーを入力します。画面内の対象のキーをクリックしてもOKです。

すでにBackspaceキーに別の機能が割り当てられている場合は、あいている他のキーを使ってください。重複させることもできますが詳しくは後述。

Backspaceキーの設定画面が表示されるので、下の入力欄に「//set 0」を入力します。Saveをクリック、Escで画面を閉じれば設定終了です。

f:id:hayanasa:20180305213046p:plain

試しに範囲選択をしてからBackspaceキーを押してみましょう、成功しましたか?

f:id:hayanasa:20180305213411p:plain

チャット画面にボタンを設置する

キーバインドの他にも、画面内にボタンを設定することができます。よく開くであろうチャット画面にコマンドを設定してみましょう。Tキーを押してチャット画面を開くと、右下に見慣れない黄緑色の設定アイコンが表示されますので、クリックします。

f:id:hayanasa:20180305213811p:plain

左下にある+マークのアイコンをクリックして、Add Buttonをクリックします。

f:id:hayanasa:20180305214000p:plain

黄色い枠が表示されるので、ボタンを置きたい場所でクリックします。

f:id:hayanasa:20180305214052p:plain

Display Textに好きな文字を入力します。自分がわかりやすいような名前を付けておくと良いです。例では自分の持ち物を消去する「/clear」コマンドを入れるので、「clear」と名づけました。色などを変えたければ下の設定を弄ってみてください。

f:id:hayanasa:20180305214522p:plain

このように作ったボタンが表示されますので、ボタンを左クリックして設定画面を開き、設定したいコマンドをを入力してSave。

f:id:hayanasa:20180305214656p:plain

このように、設定すると黄色く表示されます。この画面でボタンをクリックすると、名前や色を変えられる設定画面を開くこともできます。

f:id:hayanasa:20180305214727p:plain

Escでゲーム画面に戻り、チャット画面を開くとボタンが設定されているのがわかります。

f:id:hayanasa:20180305234239p:plain

ボタンを左クリックでコマンドが実行されます。正常に設定されたか試してみましょう。

 

なお、@で表示される画面にボタンを置くことができます。自分で好きなだけボタン用ページを作って任意の手段で開くこともできます。これに関しては次回で解説します。

Overrideでマウスを活用する

別の機能が割り当てられているキーにマクロMODのキーバインドを設定していた場合、Overrideキーと同時に押してやることでマクロMODの機能を発動することができます。

これを利用すると、マウスや押しやすいキーにも機能を追加することができて非常に便利です。

 

まずはキーコンフィグでOverrideキーを指定します。よく使うので押しやすい場所をおすすめします。筆者の環境では左ALTキーに設定しています。

f:id:hayanasa:20180305215139p:plain

 マウスに色々機能を持たせてみましょう。筆者の環境では左クリックに//hpos1、右クリックに//hpos2を割り当てています。教えてもらった手法ですが、木斧いらずで範囲選択ができるようになるので非常に便利です。あとはホイールクリックに/jを設定しテレポート無双してみたり。

設定方法は先程の解説と全く同じなのでやってみてください。したのようにマウスの絵が書いてある所の各ボタンを押すと設定できます。

設定が終わるとオレンジ色になっているのがわかります。このように、Overrideキーを使う必要がある場合はオレンジ色で表示されます。

f:id:hayanasa:20180305222854p:plain

 

ゲーム画面に戻り、Overrideキーを押すとこのように左下に緑のアイコンが表示されます。

f:id:hayanasa:20180305223520p:plainOverrideキーを押したまま、左クリック、視線を移動、右クリック、と順番に実行して範囲選択をしてみましょう。

f:id:hayanasa:20180305223253p:plain

はい便利!ありがとうございます!

さらに先ほど設定したBackspaceキーを押して//set 0を実行すれば一瞬でブロックを消せるという寸法です。このように設定と工夫次第で圧倒的な時間短縮を実現できるのがマクロMODの強みです。

環境やキーの組み合わせによっては、一度Overrideキーを離してから再び押さないと反応しない場合や、そもそも反応しない場合もあるみたいです。

複数のコマンドを連続実行する

このようにコマンドを「|」で区切ると、複数のコマンドを連続で実行することができます。

f:id:hayanasa:20180305223918p:plain

この例だと、一回キーを押すだけでコピー反転ペーストをやってくれます。負荷などには注意。

入力画面や選択画面を表示させる

任意の数値を入力するコマンドなどで便利な方法です。

例えばこのように設定すると…

f:id:hayanasa:20180305224718p:plain

実行すると入力画面が表示されます。

f:id:hayanasa:20180305224756p:plain

例えば5000と入力してEnterキーを押すと、時間が5000に設定されます。もちろん数字だけでなく文字も入力することもできます。

 

他にも任意の選択肢を表示させることもできます。

例えばこのように入力すると… 

コピペ用→/time set $$[time[0,2500,5000,7500,10000,12500,15000]]

f:id:hayanasa:20180305225443p:plain

このように選択肢が表示されます。ダブルクリックすると選択できます。

f:id:hayanasa:20180305225607p:plain

工夫次第で様々なことができそうですね。

こういうのも便利です。//sel $$[mode[cuboid,extend,poly,ellipsoid,sphere,cyl,convex]]

 

他にも色々ありますが便利そうなものを抜粋して紹介します。

$$uでログインしているプレイヤー一覧の選択肢を表示させられるので、例えば「/tp $$u」と設定すれば、プレイヤーを選んで簡単にTPできます。

$$i:dでブロック一覧を表示させられるので、例えば「//set $$i:d」と設定すれば、ブロックを選んで//setできます。

 

色々な情報を取得して使う

様々な情報を取得し、マクロに組み込んで使うことができます。わかりやすい例として、手に持っているアイテムを//setするマクロを、Enterキーに設定してみます。

コピペ用→$${echo(//set %ITEMIDDMG%);}$$

f:id:hayanasa:20180305231247p:plain

いきなり難しそうな文字になってしまいましたが、とりあえず理解しなくてもとりあえずこのまま打てば使えますのでやってみてください。

範囲選択をして、置きたいブロックを持ったらEnterキーを押してみましょう。無事に持ってるアイテムが設置されれば成功です。

f:id:hayanasa:20180305231446p:plain

 

こちらの灰色文字は細かい話なので読み飛ばし可。マクロMOD側では様々な定数が用意されていて、今回はその一つである%ITEMIDDMG%を利用しています。これは持っているアイテムのIDとダメージ値を保持している定数なので、そのまま//setコマンドに使えるというわけです。

定数を使うためには、スクリプトを組んでやる必要があります。スクリプトを記述する場合は$${ }$$で囲う必要があります。スクリプトでecho();という関数を使うことで、中に記述したコマンドを実行することができます(正確にはカッコ内の記述をチャット送信するという機能です)。

 

スクリプトの書き方(関数、変数、定数など)についてはこちらの記事などで詳しく解説されています。筆者も新しくスクリプトを組むときなど度々お世話になっています。

配布マップのためのコマンド技法(Macro/Keybind mod 応用):逃亡のための計画書 - ブロマガ

おわりに

今回紹介した機能を使うだけでもかなり便利になったと思います。ですが、もう少し突っ込むとさらに便利になります。

 

次回の記事では、

・個人的に便利なちょっとしたアイデアや具体例の紹介

・簡単なスクリプトの紹介と書き方の解説

・説明しきれなかった機能やもう少し突っ込んだ話

などを盛り込んでいく予定です。質問やリクエストなどあればお気軽にコメントください。

1.7.10建築環境で便利なMOD/Pluginの紹介

自分が1.7.10建築用の環境で入れているMOD及びプラグインをとりあえず全部紹介します。

有名なものでも好みや競合などの諸事情で入れてないものもありますので、他の記事もチェックしておくとより良いと思われます。

量が量なのでリンクは貼ってませんが、もしもどこにあるのかが分かりにくいようなものがあれば質問していただければ付け足します。

なお、ブロック(建材)追加系MODは載せてません。

f:id:hayanasa:20180222183516j:plain

 

MOD

クライアントMOD(サーバーに導入せず使えるMOD。シングルでも使える)

・BetterFoliage 植物などの見栄えが良くなる。葉っぱの見た目がもさもさするなど

・BetterPlacement ブロックを置く時の挙動を変更する。高速で移動しながらブロックを面に貼り付けるように置いて行くような場合に隙間なく設置できる。クセは強めだが個人的にはもう手放せないMODの一つ。

・FreezeCam カメラ(視点)を固定できる、など

・OptiFine いわずもがな、描画関係の設定を細かく調整

・ReAuth クライアント起動後にも画面内でログイン処理を行える。再起動せずに、アカウントを変えたり無効なセッションを(再ログインで)回避したりできる。

・ResourcePackOrganizer リソースパック選択画面で、リソースパックをフォルダ分けできるようになる

・ShoulderSurfingReloaded 三人称視点のカメラ位置を変更できる。遠くから視野絞って俯瞰で撮影、といったことができる

・Quickhotbar インベントリを列ごとに順に入れ替えて、ホットバーを切り替える

・ TooManyItems クリエイティブ支援MOD。アイテム取り出しや各種コマンドショートカットなど

 

クライアントMODのうち、Liteloaderを前提としたMOD。(=Litemod)

・DaFlight 飛行速度や慣性の調節など、飛行関係の設定を細かく調整できる

・Macro/Keybind Mod 好きなコマンドを特定キーや画面内ボタンに割り当てる、スクリプトを組んで高度な処理を行わせる…etc。解説記事執筆予定。

・VoxelMap 地図MOD。全体地図を表示させて好きな位置にテレポートできる機能が便利

・WorldEditCUI WorldEditの範囲選択を可視化

 

サーバー側に、対応する専用プラグインを入れる必要があるMOD

・LotMetaBlockMod ブロックのメタ値変更(なおシングルで使えるバージョンもあるそうです)。*1

 

サーバーにも同じものを入れなれば使えないMOD、その他

・KleeSlabs 重なったハーフの片側だけを壊せるようになる

・MetaChanger シングルでメタ値やバイオームを変更できる(アイテムが追加されます)

・WorldEdit(forge版) シングル用のWorldEdit。サーバーにPlugin版WorldEditが入っている場合は、クライアント側にこのMODがあるかどうかは関係なく、Plugin版WorldEditを使用できます。

 

動画撮影向けMOD

・CameraStudio コマンドでなめらかにカメラ移動

・Minema 時間をかけて撮影することで低スペックでも綺麗な動画が撮れる

・ReplayMod リプレイデータを保存し、後からカメラワークを設定して動画撮影できる 

 

Plugin

(一応ほとんどCraftBukkitサーバー、Thermosサーバーの両方で使用していますが、後者では一部使えないものがあります、ちょっと把握しきれてないですゴメンナサイ)

 

・Airplacer 空中にブロックを置ける

・AsyncWorldEdit WE負荷軽減、通常浮かせられないブロックを浮かせることが出きる…etc

・AsyncWorldEditInjector ↑に必要なプラグイン

・AutoSaveWorld 定期的にワールドデータを保存

・BiomeEdit リログいらずのバイオーム変更

・Chairs 階段に座れるようになる

・ExtendViewDistance 描画距離拡張

・ReflectionUtil ↑の前提プラグイン 

・Hats ブロックを頭にかぶれる

・HanbunBreaker 重ねた半ブロックを半分壊せるようになるプラグイン

・LotMetaBlockPlugin 前述のLotMetaBlockModと対応するプラグイン

・LunaChat チャットのローマ字を日本語に変換

・Multiverse-Core ワールドの複数管理

・MushPlace キノコや花などを自由に設置できる、自壊も防ぐ(ThermosやCauldronには対応していないようです)

・TSP_A_EasySelectPainting 絵画を右クリックすることで絵を順番に変更できる

・TSP_A_Replacer 羽を持って左クリックでブロック取得、対象ブロックを右クリックすると取得したブロックに置き換わる

・TSP_A_MetadataChanger ブロックのメタを変更できる

・TSP_A_Jumper.jar コンパスを持って右クリックすることで視線の方向に一定距離TPする。飛行速度も変更できる

(TSP系プラグインは、たくさんある中から自分の欲しい機能を持つものを選んで導入するようになっています。とりあえず自分が使ってるのを抜粋)

・TSP_D_NoExprodeTNT

・TSP_D_NoExprodeTNTCart

・TSP_D_NoFormFarmlandByEntity

・TSP_N_NoDecayLeaves

・TSP_N_NoGrowCactus

・TSP_N_NoMeltIce

・TSP_N_NoMeltSnow

・TSP_N_NoPhysicsAnvil

・TSP_N_NoPhysicsMushroom

・TSP_N_NoSpreadFire

・TSP_N_NoSpreadMushroom

・TSP_N_NoSpreadMycelium

・TSP_N_NoStructureSapling

 

・VoxelSniper 地形や造形物制作向けのコマンド群を追加するプラグイン

・Worldedit(Bukkit版) 建築向けのコマンド群を追加するプラグイン

 

・ManySmallTweaks トラップドアなど特定ブロックを空中におけるようになる


あとは厳密にはプラグインではないのですが、

BuildCommands というWorldEditの拡張機能のようなものを導入しています。

 

おわりに 

とりあえずは以上です。

もっと詳細な解説が欲しい場合はリクエストいただければ別記事で書けるかもしれません。
本記事のコメント(アカウント無くても送れます)か、TwitterのリプかDMでお気軽に送ってください。

*1:自分の環境では、クライアント側にLotMetaBlockMod-2.0.4、サーバー側にLotMetaBlockPlugin-2.0.2を導入しています。シングルで使うことはあまりないのでシングル対応版は試したことないです…

"テクスチャ混ぜる"のをちょっと踏み込んで解説

 

 

f:id:hayanasa:20180220203450p:plain

前回↓の記事の続きになります。

hayanasa.hatenablog.com

 

はじめに
この記事はMinecraft Java Edition1.7.10でメタを使ったリソースパック(cocricot、TenderWorld、Conquestなど)を使っている人向けの記事です。が、一応1.7.10以降にも応用はできます。

どちらにしろOptifine環境が前提です。さらにこの解説ではメタブロックを扱えることも前提としています。このあたりは解説しませんので申し訳ないですが自分で検索してください。

当然ですが、各リソースパックの規約はよく読みましょう。特に配布するといった場合は注意が必要です。製作者様方への敬意も忘れずに。そもそも弄ること自体が禁止だったりするものもありますので注意。

 

概要
テクスチャ混ぜ解説その2です。

今回は実例を通して、よく使いそうなプロパティファイルの書き方を色々解説していきます。

ある程度プロパティを自由にいじれるようになるのが目標です。個人的には前回よりもうちょっと見やすい解説をするのが目標です。前回で基本は解説したのである程度は省きます。

Halcyon Days v1.2 [1.6-1.7](以下ハルシ)

Tender World[1.7.10]verβ8_ 軽量版 (以下テンダー)

の二つをお借りしています。ベースは前回と同じcocricot_1.7.10c_v2.0.1(以下コクリ)。

前回から引き続いてmy_addonを弄っていきます。

 

f:id:hayanasa:20180215213613p:plain

前回も紹介させていただきましたが、プロパティの記述法はこちらの記事が非常に参考になります。

ch.nicovideo.jp

 

解説

 

 

バイオーム指定してみる(biomes)

実は凄い簡単で、プロパティファイルに「biomes=Ocean」とか付け足すだけでいけます。
「biomes=Plains Ocean DeepOcean」みたいにスペースで区切ると複数指定もできます。
単体でも"biomes"じゃないと反応してくれませんので注意。

参考に、ハルシの蜘蛛の巣メタの花を移植。
Halcyon Days v1.2 [1.6-1.7]/assets/minecraft/mcpatcher/ctm/cobweb/内から持ってきています。

f:id:hayanasa:20180220161514p:plain

プロパティの中身は以下の通り。

tiles=9-13
method=random
metadata=12
biomes=Ocean

バイオームを変えて試してみましょう。環境によってはリログを忘れずに。

どちらも蜘蛛の巣メタ12です。左がplainsで、右がocean。

f:id:hayanasa:20180220202834p:plain

 

さらに、同じフォルダ内にblock30a.properties、block30b.properties…といった具合にプロパティを複製し、tilesなどの記述を変えてbiomes=以下も変えれば、さらに色々なバイオームで分けることもできます。

例として先ほどと同じフォルダにblock30a.propertiesを追加して以下のように書きました。

tiles=9
method=fixed
metadata=12
biomes=DeepOcean

f:id:hayanasa:20180220202903p:plain

画像は左からplains、ocean,deepoceanになっています。

 

なお、読み込まれる順番によっては上手く反映されない場合があったりするらしいので、バイオームを指定したプロパティはできるだけ若い名前にしたり、入れるフォルダを変えたりして、先に読み込まれるようにしてみると良いかもしれません。

もしくは、matchTilesを使うと強制的に読み込ませることができるそうです、蜘蛛の巣の場合はmatchTiles=cobwebという記述を一行入れるだけ。

二段花を蜘蛛の巣化(vertical)

verticalというメソッドの解説になります。これを使うと、ブロックを縦につなげたときにテクスチャを変化させられます。よくある蜘蛛の巣メタを縦に積むと石像になったりするアレ。 

ここでは実例としてハルシの二段花を蜘蛛の巣メタに入れてみます。

Halcyon Days v1.2 [1.6-1.7]/assets/minecraft/textures/blocksから、double_plant_rose_bottom.png、double_plant_rose_top.png、flower_tulip_red.pngの三枚を持ってきて名前を変えました。

f:id:hayanasa:20180220162901p:plain

tiles=0 1 1 2
method=vertical
metadata=6

 

tilesはこのように複数指定すると、左から順番に読み込まれます。読み込まれた順で、下、真ん中、上、単体の時、と言った具合にテクスチャが貼られます。

実際に重ねてみるとこうなります。今回の場合3つ以上重ねることは想定していません。

f:id:hayanasa:20180220163126p:plain

上手く工夫すれば蜘蛛の巣やキノコに当てる小物を増やせます。コンクエストの鳥を重ねると空飛ぶ鳥に変化するというのもこの技術が使われています。

horizontal(横に繋がる)も同じ感じ。

ランダム表示なやつをメタにいれてランダムじゃなくしてみる(random,faces) 

ハルシの、野菜などが入ってる木箱(重ねたオークのハーフ、ID125:0)をスポンジメタに移行してみます。

f:id:hayanasa:20180220163402p:plain

このブロックは座標ごとにランダムで中に入ってるものが変わるようになっています。method=randomという機能です。

今回はそれを分離してスポンジメタに割り当ててやり、好きなものを自由に設置できるようにしてみます。

早速ハルシの中身を探してみましょう。〜〜/ctm/wood_oak 内に、block125のプロパティが4つありました。

f:id:hayanasa:20180220163550p:plain

試しにblock125.propertiesを覗いてみます。一行目にfaces=sidesとあるのが見えると思います、これはtilesで指定されている画像をブロックの側面に割り当てるという意味の指定になります。

つまりtilesで指定されている64.png〜67.pngがブロックの側面を構成するテクスチャとなりますので、コピペして持ってきます。

次にblock125a.propertiesを開きます。faces=topとあるので、70.png〜78.pngが上面に貼られるテクスチャだとわかります。全部やると多いので、今回は70〜73だけ持ってきましょう。

block125b.propertiesも開いて同じようにやってみてください。cは別のメタなので今回はスルーします。

 

フォルダの中身はこうなりました。

f:id:hayanasa:20180220163912p:plain

[ ]でくくられているのはファイル名です、間違えて書かないように注意

[block19.properties]

faces=sides
tiles=64-67
method=random
weights=10 10 10 80
metadata=3-6

 

[block19a.properties]

faces=bottom
tiles=68
method=fixed
metadata=3-6

 

[block19b.properties]

faces=top
tiles=70
method=fixed
metadata=3

 

[block19c.properties]

faces=top
tiles=71
method=fixed
metadata=4

 

[block19d.properties]

faces=top
tiles=72
method=fixed
metadata=5

 

[block19e.properties]

faces=top
tiles=73
method=fixed
metadata=6

 

f:id:hayanasa:20180220164209p:plain

 

block19.propertiesにあるweights=10 10 10 80という指定ですが、random指定した際にどのような割合でテクスチャを使用するかを指定してます。

 

TenderWorldの時計テクスチャを無理やり一つにまとめてみる(repeat)

method=repeatの解説ついでに、ちょっと個人的に便利だった小ネタをついでに紹介します。

TenderWorldの時計、カッコイイですよね。元々はメタ7個に分けて割り当てられてるものを組み合わせて使うようになっています。

f:id:hayanasa:20180220190615p:plain


これを無理やり簡易的に一つのメタにまとめて導入してみようという試みです。そのまま導入したい場合は今までの知識でできるはずですので挑戦してみてください。

 

repeatというmethodは、横幅と縦幅を指定し、その大きさでテクスチャのパターンを繰り返す方式です。自然物でよく使われています。
座標が固定されてしまうので今回のようなケースだとこんな感じでちょっと制限がついてしまいます。

f:id:hayanasa:20180220191719p:plain


フォルダの中身とプロパティはこんな感じ。

画像はTenderWorld[1.7.10]verB8_/assets/minecraft/mcpatcher/ctm/meta/ore/LapisLazuli Ore/ より

f:id:hayanasa:20180220191918p:plain

[block19.properties]

tiles=0-24
method=repeat
width=5
height=5
metadata=11

 

ちょっと工夫すればこういうこともできたり。余白を挟んで横には7つづつリピートするようにしています。

f:id:hayanasa:20180220193056p:plain

f:id:hayanasa:20180220192950p:plain

[block19a.properties]

tiles=25 0-4 25 25 5-9 25 25 10-14 25 25 15-19 25 25 20-24 25
method=repeat
width=7
height=5
metadata=12

 

まあメタに空きがあれば素直にそのまま移植したほうがいいですよね

 

TenderWorld本棚の移植(若干複雑なフォルダ構成の場合の対処)

テンダーの本棚メタ(47:8、47:9)を移植してみます。

フォルダを探して覗いてみた所…膨大な数のプロパティファイルがあります。 

TenderWorld[1.7.10]verB8_/assets/minecraft/mcpatcher/ctm/meta/bookshelf/meta8-9/

 

どうやらmethod=ctmを利用して空のテクスチャを割り当てた後に、matchTilesを使ってmethod=randomでテクスチャを上書きしているような感じみたいです。

とりあえず全部コピーしてきて、プロパティの名前を変えていきます。metadataをすべて書き換えるのは流石に面倒なので、metadataの数字だけは元のものと揃えることにします。103:8、103:9(スイカメタ)に割り当てていきます。

f:id:hayanasa:20180220194021p:plain

がんばって名前を変え、リソパを反映…おっと、何かがおかしいですね。

f:id:hayanasa:20180220194319p:plain


このような場合は別のフォルダにあるプロパティからテクスチャを指定しているという事なので、それも探して持ってこないといけません。

ブロック置き場を眺めた所、どうやら作業台メタ0と同じテクスチャを使っているようなので、フォルダを漁ってみます。

TenderWorld[1.7.10]verB8_/assets/minecraft/mcpatcher/ctm/workbench/

に、block47aa.properties〜block47ad.propertiesが見つかると思います。

このように別のフォルダからもプロパティで指定していたり、ということはわりとあるようです。リソパの容量削減テクニックみたいなものでしょうか。

記述を覗くと100.png〜203.pngを使っていることがわかるので、それらの画像ファイルと4つのプロパティをコピーして持ってきます。名前がかぶっているので先ほどのフォルダは別のフォルダに置きました。先ほどと同じようにプロパティの名前を変更します。中身は弄っていません。

f:id:hayanasa:20180220200828p:plain

(一応参考までに。フォルダ構成としてはctmフォルダ内にに103_melonというフォルダを作成、さらにその中にmeta8-9とmeta8-9workbenchという二つのフォルダを作って分けています)

f:id:hayanasa:20180220201332p:plain

無事反映されました。

 

このように別フォルダから指定する必要が出てきた場合、データの読み込み順によっては上手く行かなかったりする場合があるかもしれません。そういった場合は同じ階層にフォルダを置き、フォルダの名前を前後させてやったりと試してみれば解決するかもしれません。今回の場合はmatchTilesで指定されているので気にしなくても大丈夫でしたが。

 

おわりに 

前回に引き続き、少しでも参考になれば幸いです。

もっと詳しく解説しているページはいくらでもあるので、是非やりたいことに応じて探してみてください。本記事で少しでもリソパ弄りの敷居が下がっていれば幸いです。

 

わからないことがあればコメントかTwitterのDM(@hayanasa)で連絡いただければ個別で対応するか追加で記事を書きますTwitterのDMが一番早く気づきます。
より良い記事にしたいので些細なことでも是非お気軽に質問してください
スペルミスなどの初歩的なミスがないかは予めチェックしておいてくださると助かります。できるだけ状況を詳しく書いて頂けるとやり取りがスムーズになるかと思いますのでよろしくお願いします。

ミスや間違っている記述やこうしたほうがいいなどあれば指摘して頂けると大変嬉しいです。解説記事に関しては素人なので是非。

"テクスチャ混ぜる"のをめっちゃ噛み砕いて解説

f:id:hayanasa:20180215212333p:plain

はじめに
この記事はMinecraft Java Edition1.7.10でメタを使ったリソースパック(cocricot、TenderWorld、Conquestなど)を使っている人向けの記事です。が、一応1.7.10以降にも応用はできます。

どちらにしろOptifine環境が前提です。さらにこの解説ではメタブロックを扱えることも前提としています。このあたりは解説しませんので申し訳ないですが自分で検索してください。

当然ですが、各リソースパックの規約はよく読みましょう。特に配布するといった場合は注意が必要です。製作者様方への敬意も忘れずに。そもそも弄ること自体が禁止だったりするものもありますので注意。

 

概要
いわゆる「テクスチャ混ぜる」のをやってみたいけどよくわからん!って人向けの解説をめっちゃ噛み砕いて解説してみます。多少回りくどいかもしれませんが仕様です。本記事に沿ってやればなんとなくノリがつかめると思います。僕もちょっと前までというかむしろ今でも初心者同然なんでそんな感じです。


今回行うのは「スポンジメタ1と2に、それぞれHalcyonDaysの鉄ブロックと金ブロックのテクスチャを割り当てる」という作業です。
流石にもうちょっと色々やりたかったのですが、解説が細かくしすぎて文量が…。やたら長くなってしまいましたが、作業自体は単純ですぐに終わりますのでご安心ください。

実際にやる作業は青文字で示してあるので、青文字(とその前後)だけ追えばとりあえず完成はします。

 

ちなみに僕はこのページを見ながら、cocricot様の中身を覗いたりしてフォルダ構造やプロパティの書き方を覚えました。
cocricotは非常にフォルダ構造がわかりやすいので、リソパ弄り初心者に親切です。時間ある人は自力でやってみるのも良いかもしれません。なおConquestは弄るのが難しいので最初はオススメしません。

 

構築するリソパ方式について
いわゆる「テクスチャを混ぜる」という作業ですが、ベースとなるリソパの中身自体を編集する方法と、自分用のリソパを構築して色々足していき、ベースとなるリソパに重ねて使う方法の二通りがあります。あるよね?
個人的には、ちょっと足すくらいだったら後者のほうが扱いやすいし管理だったり配布だったりもしやすいかなと思うので、本記事では後者でやっていきます。多少回りくどいですが。


(この方法が一般的かどうかは知りませんが、フォルダ構造や最低限必須な要素を勉強しやすそうという狙いもあったり。前者でも基本さえ抑えておけば作業自体は似たような感じです。目的や状況に応じて使いやすい方を選んでください)

f:id:hayanasa:20180215213613p:plain

この方式の場合だと↑こんな感じに重ねて使います。上にある方が優先されるので必ず追加リソパを上にしましょう
下に置くリソパはバニラ(無し)でも他のものでも何でも良いです。

なおConquestを下に置きたい場合ちょっと話がややこしいのですが、とりあえずスポンジメタを1、2ではなく4、5に変えれば大丈夫です。詳しくは後述。
今回はcocricotの上に重ねて使うことを一応想定してます。

 

準備
すぐ確認できるようマイクラも起動しておいてサンプルワールドを開いておきましょう。
環境によりますが拡張子を表示する設定にしたほうが良いかも?

細かい話全部突っ込むとわかりづらいので色々後述します。

今回の解説で使っているリソースパック様のリンクはこちら。
Halcyon Days v1.2[1.6-1.7]
cocricot_1.7.10c_v2.0.1
どちらも規約は必ず自分でもチェックしてください。
バージョンは多少前後しても大丈夫だと思います。

移植元のリソパ(今回の場合Halcyon Days)はあらかじめzip状態から解凍しておきましょう。7zipとか使えるならそのままでもいいです。

前述の通り、以下実際に作業する部分は青文字にしてあります。

 

それではやってみよう
resourcepacksフォルダ内に、好きな名前(そのままリソパの名前になります)でフォルダを作ります。ここではとりあえずmy_addonという名前で。

そのフォルダの中に、assetsというフォルダと、pack.mcmetaというテキストファイルを置きます。

pack.mcmetaは何処かのリソパからファイルごとコピペしてくるのが楽です。中身を開いて「description: "〜〜"」の〜〜をいじってやると、リソパ選択画面での灰色の部分の文字が変わります。

実を言うと、この二つのファイルさえあれば、マイクラ内のリソパとして認識されて一覧に表示されます。欲しければ同じ所にpack.pngという名でアイコン画像を置きます。

(リソパをzipにする必要は別にないです。別にしてもいいですが圧縮方法によってはフォルダの階層が変わってしまいリソパとして反映されなくなったりするかも)

assetsの中にminecraftというフォルダ、minecraftの中にmcpatcherというフォルダ、mcpatcherの中にctmというフォルダを作っていきます。

f:id:hayanasa:20180215232931p:plain

このようなフォルダ構造になるはずです。当然スペルミスあると反映されませんので注意。
基本的に足したいテクスチャはctmフォルダ内にフォルダを作って突っ込んでいく事になると思います(後述)。

 

テクスチャの追加
それではここからいよいよテクスチャの追加です。
以下のように割り当てていきます

カッコ内はブロックID:メタ
鉄ブロック(42)→スポンジメタ1(19:1)
金ブロック(41)→スポンジメタ2(19:2)


先ほど作ったctmフォルダ内に19_sponge」というフォルダを作ります。フォルダ名は何でも良いですが、わかりやすくブロックIDとブロック名を書きました(cocricotリスペクト)。実は別に作らなくてもできるんですが作ったほうがわかりやすいし管理しやすいです。

最近のバージョンだと大文字が使えなかったりするので注意。1.7.10ではたしか大丈夫ですが。


「19_sponge」の中に「meta1」、「meta2」というフォルダを作ってください。これもフォルダ名は何でも大丈夫です。一応これも無くても大丈夫なんですが今回はわかりやすいように作りましょう。

 

f:id:hayanasa:20180215232549p:plain

階層はこうなってればOK。

これで受け入れ体制が整ったので、Halcyon Daysのフォルダを開きます。リソパ内の欲しいテクスチャの探し方ですが、メタブロックだったりCTM利用ブロック(並べるとテクスチャが変化して繋がるもの)は、基本的に「〜〜/assets/minecraft/mcpatcher/ctm」フォルダ内を探せばあります。それ以降のフォルダ構成はリソパごとにまちまち。

そうでなければ〜〜/assets/minecraft/textures/block内にあります。アイテムだったりは別の場所ですが今回は省略。色々覗いてみるとなんとなく分かると思います。

 

鉄ブロック
HalcyonDaysの中身を覗いて鉄ブロックのテクスチャを探した所、「ctm」内の「iron」フォルダにありました。鉄ブロックのIDは42なので、入っている画像(0~47すべて)と、block42.propertiesファイルをコピーして、「meta1」フォルダ内にペーストします。


propertiesファイルの名前を「block19.properties」に変更します。こうすることでスポンジ(ID19)に割り当てられます。
propertyファイルを開き、最後の行に「metadata=1」を書き足します(もちろんカッコはいりません)。こうすることでメタ1に割り当てられます。

↓こうなればOK。

 faces=all
 tiles=0-11 12-23 24-35 36-46
 method=ctm
 metadata=1

 

とりあえずこれでテクスチャ追加ができたはずです。リソースパックを読み込んでみましょう。スポンジのメタ1が鉄ブロックになってるはずです。並べるとちゃんとつながりますよね?(これがいわゆるCTMです)
反映されてなければフォルダ構造や誤字をチェックしてみてください。

 

propertiesファイルにいろいろ書かれてる要素については、前述したこちらのページで詳しく解説されていますので、後で目を通してみると良いかもしれません。これ理解して書き換えればもっといろいろできたりします。

 

金ブロック
ハルシの金ブロックはどうやらctmフォルダ内には無いようです。そういう場合は前述の〜〜/assets/minecraft/textures/blocks内を探しましょう。gold_block.pngがそうなので、meta2フォルダ内にコピーして0.pngに名前を変えます。

meta1内にあるblock19.propertiesをコピーし、meta2内にペーストし、以下の内容に書き換えます。

 faces=all
 tiles=0
 method=fixed
 metadata=2

 

作業はこれで終わりですお疲れ様でした。

このように、1枚だけのテクスチャをブロックに割り当てる時はmethod=fixedを使います。基本形です。

 

おわりに
f:id:hayanasa:20180215212333p:plain

 

リソパを読み込み直し、スポンジのメタ1とメタ2にそれぞれハルシの鉄ブロックと金ブロックが反映されていれば成功です。無事追加できましたか?

リソパ読み込みはリソパ選択画面を開いてから完了を押せばできます(環境によって違うんでしたっけ?うろ覚え)。もしできなければ一度抜いて戻して完了を押すか、プレイ画面でF3+Tを押すことでもできます。

 

とりあえずはメタを使ったリソパ弄りの基本はこんな感じです。より細かい話は次の記事で。

hayanasa.hatenablog.com

あとは有名リソパの構造を覗いてみたり前述のこのページを見たりして色々研究してみると良いと思います。

 

基本的に、フォルダ構造さえ合っていれば、欲しいテクスチャの画像とプロパティファイルをコピペしてきて、propertiesファイルを割り当てたいブロックIDとメタ値に書き換えれば追加はできるはずです。キノコや蜘蛛の巣だったり石壁だったり他のブロックも同じ。あとはプロパティの仕組みを覚えると色々改変できたりもします。今回の金ブロックのように、プロパティファイルがない場合は自分で書きましょう。

 

リソパ自体の中身を弄る方式でもこれは一緒です。競合するものを削除する必要性は出てきますが。

 

わからないことがあればコメントかTwitterのDM(@hayanasa)で連絡いただければ個別で対応するか追加で記事を書きますTwitterのDMが一番早く気づきます。
より良い記事にしたいので些細なことでも是非お気軽に質問してください
スペルミスなどの初歩的なミスがないかは予めチェックしておいてくださると助かります。できるだけ状況を詳しく書いて頂けるとやり取りがスムーズになるかと思いますのでよろしくお願いします。

ミスや間違っている記述やこうしたほうがいいなどあれば指摘して頂けると大変嬉しいです。解説記事に関しては素人なので是非。

 

後述

・Conquestについて
ポピュラーな割にフォルダ構造が難しいと話題のConquest。ブロックIDごとではなく、材質の名前でフォルダ分けされている上にmatchTilesとかよーわからんプロパティが出てきたりして上書きが効かなかったりして難易度高め。
まあでもどんなリソパでも基本的には空いてるメタを探してとりあえず突っ込んでみれば大丈夫です(コンクだとスポンジの1〜3が埋まってしまってるので避ける)。こんくらい適当でもわりとなんとかなるんです。コンクだけに。

今回のようにリソパを重ねて使う方式だと、競合する場合に対象を「削除する」という選択肢がとれないというのが欠点ですね。

 

・mcpatcherフォルダとtexturesフォルダについて
texturesフォルダはバニラ状態のものであり、リソパの根幹となっている部分です。mcpatcherフォルダはOptifineの機能でそれらを上書きしています。


texturesの方をいじれば手に持った時にも反映されますし、例えばオークの木材のテクスチャを変えれば、木材やハーフ階段フェンス感圧板などなど全てに影響します。(今回の場合だと、〜〜/resourcepacks/my_addon/assets/minecraft/textures/blocks/plunks_oak.png と言う感じで導入)
ですが、cocricotの場合はオーク木材がほとんどctmフォルダにあるもので上書きされているので一見変化はないです。あいてるメタには反映されてますが。なので今回のケースだとオークの木材テクスチャを入れ替えたい場合ctmフォルダのほうであれこれしてやる必要が出てきます。
cocricotを開いてみて、「〜〜/ctm/05.planks/meta0」内などを見てもらえばなんとなく理解できると思います。この辺も解説したほうが良いのかな…?
要は同じ画像を使って同じフォルダ内に複数のブロックのプロパティファイルを置くこともできますよーみたいな感じ。

コンクの例も含めて、色々ごっそり入れ替えたい場合はリソパ自体をいじっていく方式のほうが楽かもしれないです。おそらくその方が読み込みも早くなるはず。

 

・新verについて
1.8以降では、いわゆるメタが使えなくなりました(正しく言うと、メタ値が実装されていないブロックではメタを使うことができなくなりました)。
ですが、CTMプロパティの書き方は基本変わらないので、本記事の解説である程度理解していればすぐ順応できると思います。新しい機能もあったりします。既存リソパを覗いてみましょう。
あと確かフォルダに大文字使うと反映されなかったりします。
ちなみに3Dテクスチャは触ったこと無いので全然わかりません

 

・pack_formatについて

pack.mcmeta内のpack_formatですが、この数字を弄ることで対応してることになっているバージョンを指定できます。1.7.10なら「1」で大丈夫です。

新しいバージョンで「古いバージョンです」云々言われるようだったらここの数字いじれば回避できます。別にいじらなくても使えますが。1.8以降は「2」、1.11以降は「3」。

 

・アイテムなどを変えたい

ブロック以外のテクスチャを変えたい場合はtexture内を色々見てみて同じようにフォルダ作って同じように名前つけた画像はっつけとけば変更できます。この辺はもうバニラと同じなんで非公式日本wikiの解説とか見てみたら良いと思います。