ノーマルビュー

Received — 2020年6月17日 ナポアンのマイクラ

マインクラフトのゲーム機版が消えるまで

2020年6月17日 10:53

マインクラフトはかつて、パソコンでしか遊べないゲームでした。しかし2011年にスマホ向けに「ポケットエディション」が配信。トイレの中で遊んでいるPVを覚えている人はいますか? まだ開発が始まったばかりですし、スマホの性能も今とは大違いですので、当時のPEの内容はPC版には遠く及びませんでした。

そして2012年5月に、初のゲーム機版である「Minecraft: Xbox 360 Edition」が発売されます。先述したとおり、これは4J Studiosが移植開発を担当しました。ゲーム機版はできるだけPC版に近い内容を目指して開発されており、当時はPEとゲーム機版では内容の差は一目瞭然でした。

ところがスマホ版は爆発的な人気になり、プレイヤーはどんどんアップデートを求めるようになります。Mojangもそれは認識しており、結果PEは驚異的な速さでアップデートがされ、どんどん要素が充実していきました。

一方で、色々なゲーム機でマイクラを遊びたいという要望も絶えません。みるみるうちにマイクラを遊べるゲーム機が増えていきました。ユーザーの要望にちゃんと応えてくれるMojangと4Jは素晴らしい会社ですよね。

そうそう、MicrosoftがMojangを買収したことを忘れてはいけませんね。2014年のMSによる買収以来、PEの開発にMicrosoft Studiosが参加し、Windows10へPEが移植されました。(スマホとWin10のクロスマルチプレイはこの頃からできていました) またPEは0.12~1.0までの怒涛の大型アップデートを経て、ゲーム機版にない要素まで追加され、もはやJava版にすらない要素まで追加されはじめました。何ページにも渡るアップデート内容をまとめていた頃が懐かしい。

アプリ進化しすぎ

色々な機種に移植されたゲーム機版。進化しまくったスマホ版。「ゲーム機とスマホで一緒に遊べたらいいのに…!」それは多くのクラフターにとっての夢でした。そこで開発陣はとある妙案を思いつきます。

ゲーム機で動かせばよくね

「スマホ版をゲーム機で動かせばいいのでは…?」

そう、昨年のE3で発表された「Better Together Update」は、ざっくり言えば「スマホ版をゲーム機に移植するプロジェクト」なんです。

昨年の9月にPC版は「Java版」になりました。スマホ版の名前が「Minecraft」になり、さらにXboxOneに新しい「Minecraft」が配信されました。

そして2018年6月21日。幾度もの延期を経て、ついにNintendoSwitchに、『Minecraft』が配信されました。めっちゃ壮大なストーリーでしょ?

これが現在のグループ分けです。PS4は当初、クロスマルチプレイには参加できませんでしたが、現在は統合版が配信されたため、問題なく一緒にプレイできます。

投稿 マインクラフトのゲーム機版が消えるまでasobinon に最初に表示されました。

統合版のfillコマンドの置換・設置モードについて [Minecraft]

2020年6月17日 09:32

悪用は厳禁だが、マインクラフトではどうしても「ブロックを一気に置きたい」という場面に遭遇する。そんな時に便利なのが「fill」コマンドだ。この記事では、スイッチやスマホの統合版Minecraftにおける「fillコマンド」の使い方を解説する。

fillコマンドの構文

//指定したブロックで領域の全てまたは一部を埋める
/fill <始点x y z> <終点x y z> <設置するブロックのID> [設置するブロックのデータ値] [既存のブロックの扱い] [置換するブロックのID] [置換するブロックのデータ値]

 

始点x y z と 終点x y z (必須)

ブロックで埋める領域の向かい合う角の座標を指定する。相対座標を使って、コマンドの実行場所から相対的に領域を指定することもできる。(相対座標の書き方はこちらを参照)

領域は指定された座標よりプラス方向に拡張される。このため、値が小さい方の座標は領域の境界になり、大きい方の座標より1つ大きい座標まで領域になる。よって、領域は

(大きいx - 小さいx + 1) × (大きいy - 小さいy + 1) × (大きいz - 小さいz +1 )

となる。

例えば、0 0 0 0 0 0と書いた場合、領域は無くなるのではなく、体積が1ブロック(幅1ブロックの立方体)の領域を指定する。0 0 0 1 1 1や1 1 1 0 0 0は体積が8ブロック(幅2ブロックの立方体)の領域を指定する。

 

設置するブロックのID (必須)

領域を埋めるブロックのIDを指定する。(Java版と違いminecraft:を付けるとエラーになるので注意)

 

設置するブロックのデータ値 (任意)

領域を埋めるブロックのデータ値を指定する。

 

既存のブロックの扱い (任意)

以下の中から1つを選んで書く。指定しない場合はreplaceになる。

destroy : 指定された範囲を全て埋める。既存のブロック(種類が変わってないものも含めて)はエンチャントされていないシャベルまたはピッケルで破壊された扱いになり、アイテム化する。(ツタのようなハサミでしか採取できないブロックはドロップしない。液体ももちろんドロップしない。)

hollow : 指定した範囲で箱を作るように、外側だけブロックを設置し、中身は空気になる。(中身のブロックは消される) もし領域が小さすぎて内側に相当するブロックが無い場合は、replaceのように動作する。

keep : 指定範囲内の空気のみを、指定したブロックに置き換える。(既存のブロックはそのまま保持される)

outline : hollowのように箱を作るが、中は元のブロックが残される。

replace : 指定範囲内の、後述する[置換するブロックのID]引数で指定したブロックだけを置き換える。

 

置換するブロックのID と 置換するブロックのデータ値 (任意)

この引数は、[既存のブロックの扱い]がreplaceの時のみ有効。
置換するブロックのIDとデータ値を指定する。データ値を指定しない場合は、データ値に関係無くIDが合致するブロックが置換される。IDもデータ値も指定しない場合は、領域内の全てのブロックが置換される。

 

使用例

画像1
/fill ~ ~ ~ ~3 ~3 ~10 stone 0 hollow

コマンドを実行した座標から南に10m、横幅が4メートルの石のトンネルを作る。なおトンネルの入口と出口は自分で壊さないといけない。

画像2

/fill ~ ~ ~ ~10 ~10 ~10 concrete 0 replace stone

コマンドを実行した座標の南東と上に10mの範囲内の、焼石をコンクリートに置換する。

投稿 統合版のfillコマンドの置換・設置モードについて [Minecraft]asobinon に最初に表示されました。

asobinonについて

2020年6月17日 07:06

asobinonをご覧の皆さん。突然編集者が変わってしまい申し訳ありません。

現在、ナポアンは勉強のため更新を控えています。そのため、私、0505Keitanが代理で管理をすることになりました。

これからもasobinonをよろしくお願いいたします。

投稿 asobinonについてasobinon に最初に表示されました。

Received — 2020年6月16日 ナポアンのマイクラ

マイクラ完全新作「ダンジョンズ」5月26日発売。日本語対応も確定

2020年4月1日 14:03

Mojang ABとXbox Game Studiosによる新作「マインクラフト: ダンジョンズ」の発売が、海外で5月26日に決定した。新型コロナウイルスの流行による発売延期を示唆していたが、やっと発売日が落ち着いた。価格はたったの「19.99ドル」。ストーリーモードと違って日本語に翻訳されることが確定しているので安心しよう。

 

マイクラダンジョンズ、世界情勢を鑑みて発売時期の変更を示唆

かつては「4月中の発売」を目指して開発されていたが、昨今のパンデミックでどうしても開発体制を見直す必要があり、発売時期の変更が示唆されていた。

 

製品の詳細と発売日

Gather your friends and gear up for adventure: Minecraft Dungeons is coming out May 26th on Nintendo Switch, PlayStation 4, Windows, Xbox One and Xbox Game Pass! Pre-order your copy now:

https://t.co/A2UnaxJtzypic.twitter.com/q9VTPXs2Ps

— Minecraft Dungeons (@dungeonsgame) March 31, 2020

昨日ついに発売日が発表された。5月26日。TLoU2やゼノブレイドリマスターと同じ週。

A great many of you signed up for our limited closed beta, and the randomly-selected lucky participants have now received an email with further instructions. For more info about Minecraft Dungeons, please check out our FAQ:

https://t.co/1pHNOPK98upic.twitter.com/u8a3XpTweN

— Minecraft Dungeons (@dungeonsgame) March 25, 2020

先日一部の人だけが参加できるクローズドベータテストが開始され、同時に価格など製品の詳細が公開された。概要をまとめると

  • 通常版は19.99ドル
  • ヒーローエディションは29.99ドル。将来的に発売される2つのDLCが含まれる
  • Nintendo Switch/PS4/Xbox One/Windows10対応
  • PC/XboxのXbox Game Pass加入者は追加料金無しで遊べる
    • さらにDLCが最大10%割引される
  • まだ全プラットフォームでの予約は始まっていない
  • クロスプラットフォームプレイは将来のアップデートで対応

その価格から「買ったら終わりのダウンロードソフト」のような印象を受けるが、上記サイトには「無料アップデートの配信を予定している」と明記されているので安心しよう。

Minecraft Dungeons FAQ – Home
https://help.minecraft.net/hc/en-us/articles/360041345271-Minecraft-Dungeons-FAQ

その他の詳細な製品情報は上記サイトをチェックしよう。(英語)

 

ローカライズは大丈夫?→大丈夫です

公式サイトはちゃんと翻訳されている。

今日のニンテンドーダイレクトで、日本語に翻訳されたマインクラフトダンジョンズの画面が初めて公開されました。価格等は未定ですが、ストーリーモードのような日本無視作品にはならないので安心ですねhttps://t.co/fmfv9QYKv6 pic.twitter.com/I7BxthvMoC

— NAPOAN.COM (@napoandotcom) March 26, 2020

そして肝心のゲーム内容も、しっかり翻訳されていることが先日のニンテンドーダイレクトミニで確定した。ちゃっかりCERO: Aのレーティングももらっている。ストーリーモードみたいなことにはならないから安心だ!

投稿 マイクラ完全新作「ダンジョンズ」5月26日発売。日本語対応も確定asobinon に最初に表示されました。

CDの曲がiPhoneで再生・ダウンロードできない時の対処法

2020年3月28日 00:15

macOSのミュージックアプリ(旧iTunes)でCDを取り込んだものの、iPhone/iPadでダウンロードや再生ができない。曲名が表示されているのに「この曲が同期されていないデバイスがあります」と出てしまう。そんな時は拡張子をm4aにそろえて、それでもダメなら変換し直してみよう。

せっかくPCに曲を取り込んで、ライブラリ同期もONにしたのに、iPhoneで見るとダウンロードされていない。

再生できないし、ダウンロードしようとしても「この曲が同期されていないデバイスがあります」と出てしまう。そんな時はどうすべきなのか紹介する。

 

まずは拡張子をチェック

こちらが今回「パソコンで聞けるのにスマホで聞けない」問題が発生したCD。原因は「iOSのミュージックアプリが.mp4の拡張子を音楽として認識してくれない」ことである。macOS側では何の警告も出ないので、余計ややこしい。パット見では問題がないのである。

同期に問題がある音楽を右クリックして、「情報を見る」を押してみよう。

「ファイル」をクリック。AACではなく「MPEG-4ビデオファイル」となってしまっている。PCやウォークマンはこのままでも再生できるが、iPhone/iPadでは再生できないのだ。

「ファイル」タブの下の方には、アドレスが書かれている。そこを右クリックして、「Finderで表示」をクリックしよう。

するとこんな感じで「全部MP4になっている」はずだ。mp4もm4aも中身は変わらないが、iOSはなぜか「mp4」を無視してしまう。

そこで、ファイルの拡張子をAppleの「m4a」にそろえてみることにした。

 

MacのFinderで拡張子を一気に変える方法

Finderメニューの「環境設定」を開く。

「拡張子を変更する前に警告を表示」のチェックを外す。

MP4ファイルを全部選択して右クリック。「○○項目の名前を変更...」をクリック。

「mp4」を「m4a」に置換する。(もしかしたらmp4という名前の入った音楽があるかもしれないので、両方にドットを付けたほうがいいかもしれない)

これでmp4がm4aに変わった。しかし...

 

それでもダメなら「AACバージョンを作成」をクリック

筆者の場合はなぜかm4aに変えただけではiOSに同期されなかった。最終手段として、PC側で変換し直すことにした。

ミュージックアプリ(PC)で曲を全選択。

「ファイル」→「変換」→「AACバージョンを作成」。ファイルの複製が心配だが、筆者の場合は勝手に新しいファイルで置換された。

流石にApple側で変換してもられば、iPhoneでも無事再生できるはずだ。もしここで同期がうまく行かない場合、PC側のミュージックの環境設定で「ライブラリ同期」をオン・オフしてみよう。

 

投稿 CDの曲がiPhoneで再生・ダウンロードできない時の対処法asobinon に最初に表示されました。

マイクラダンジョンズ、世界情勢を鑑みて発売時期の変更を示唆

2020年3月18日 13:38

マインクラフトの開発元Mojangによる新作ゲーム「マインクラフト: ダンジョンズ」の開発体制が、新型コロナウイルスに少なからぬ影響を受けているようだ。公式Twitterによれば、開発チームは「4月中の発売」を目指しているものの、同時に発売時期の変更を示唆している。

 

発売時期の変更を示唆

As we’re working from home to do our part in protecting our community, our workflows will unfortunately be impacted. We’re working hard to deliver Minecraft Dungeons in April, but we’re also re-evaluating our timeline to make sure we bring you the best game possible. Stay tuned! pic.twitter.com/77964UwFpB

— Minecraft Dungeons (@dungeonsgame) March 17, 2020

「コミュニティを守る役目を果たすため、リモートワークを実施していますが、ワークフローが不運ながら影響を受ける見通しです。マインクラフト: ダンジョンズを4月中にお届けできるよう全力を尽くしていますが、同時に、最良のゲームをお届けできるように予定の見直しも行っています。詳しい情報は後ほど!」

 

Minecraft Dungeons について | Minecraft
https://www.minecraft.net/ja-jp/about-dungeons/

公式サイトの表記は「2020年春」となっているが、現在開発チームは「4月」を目標に開発を進めているとのこと。しかし昨今のパンデミックの影響は避けられず、当然当初の予定に変更が生じている。

 

公式Twitterでは新情報が随時公開されている

Burn them all! With the right combination of weapons, armour and enchantments, you’ve got everything you need to turn your enemies to toast. pic.twitter.com/F4X0u8es21

— Minecraft Dungeons (@dungeonsgame) March 4, 2020

公式Twitter(英語のみ)では、装備のカスタマイズやエンチャントについてよく分かる動画が公開されている。炎の矢、めっちゃつよそう

Enchantments make everything better! And when it comes to hammering your way through a zombie horde: a whole lot more electrifying. pic.twitter.com/ob8fBMEAMb

— Minecraft Dungeons (@dungeonsgame) March 11, 2020

こちらは本編にない「ハンマー」と、雷を落とすエンチャントの紹介。これらが本編に輸入される時は来るのだろうか。

マイクラダンジョンズ: 自動生成を取り入れたレベルデザインの詳細が公開

「マインクラフト: ダンジョンズ」は、NintendoSwitch/PS4/Windows10/XboxOneで発売予定。発売時期については公式Twitterを随時チェックしよう。

投稿 マイクラダンジョンズ、世界情勢を鑑みて発売時期の変更を示唆asobinon に最初に表示されました。

新しいXboxでマイクラを動かすとこうなる。詳細なスペックが公開

2020年3月16日 22:30

あらゆるゲームが劇的に変わる可能性を秘めた、次世代機「Xbox Series X」の詳細なスペックがお披露目された。NVME SSDや最大120FPSのサポートが目玉だが、ビジュアルで分かりやすい部分として「ハードウェアアクセラレーテッドDirextXレイトレーシング(DXR)」が挙げられる。Xbox公式サイトにて分かりやすい具体例が掲載されているので、簡単に紹介する。

 

Xbox Series X: A Closer Look at the Technology Powering the Next Generation
https://news.xbox.com/en-us/2020/03/16/xbox-series-x-tech/

Xbox公式Twitterおよび公式サイトにて、一斉に「Series X」のスペックの詳細や、用語解説の記事が公開された。同時にEuroGamerのテック部門「Digital Foundry」にて超絶詳しい解説が投稿されているので、英語に明るい人はそちらもチェックしてみて欲しい。

 

これ、ゲーム機です

以下の画像は同じくDigital Foundryの動画より。マインクラフトが「DXR」でいかに変化するか見てみよう。

 

詳細なスペック

「PS4 Proとほぼ同じ高さで、横と奥が15センチ」である。

CPU 8x Cores @ 3.8 GHz (3.66 GHz w/ SMT) Custom Zen 2 CPU
GPU 12 TFLOPS, 52 CUs @ 1.825 GHz Custom RDNA 2 GPU
Die Size 360.45 mm2
Process 7nm Enhanced
メモリ 16 GB GDDR6 w/ 320mb bus
メモリ帯域幅 10GB @ 560 GB/s, 6GB @ 336 GB/s
内部ストレージ 1 TB Custom NVME SSD
I/O スループット 2.4 GB/s (Raw), 4.8 GB/s (Compressed, with custom hardware decompression block)
拡張ストレージ 1 TB Expansion Card (matches internal storage exactly)
外部ストレージ USB 3.2 External HDD Support
光学ドライブ 4K UHD Blu-Ray Drive
パフォーマンスターゲット 4K @ 60 FPS, Up to 120 FPS

 

 

高い処理能力によって可能になったDXR対応

これはXbox Series XのSoCである。AMDのZen2 CPUとRDNA2クラスGPUにより、現時点で地球上のゲーム機で最強の処理能力を誇るわけだが、その恩恵は単なる「解像度とフレームレートの向上」だけにとどまらず、新たなテクノロジーの導入を可能にした。

 

Minecraftのテクニカルディレクター・Clayton Vaught氏によるデモである。(実際のゲーム内容ではない) ドット絵で描かれていた立体が、DXRを適用すれば、もはや「画面の向こうにブロックが存在する」かのような現実感のある風景に様変わりする。

DXRによって、光源(溶岩)と物体の距離や光の反射はリアルタイムで計算される。マインクラフトのようなインタラクティブなゲームでも、「リアルっぽい」ではなく「実際の計算を元にした」リアルな光の表現が可能となるのだ。

 

開発中の画像だが、「Gears 5」はSeriesX版が開発中で、もちろん次世代のスペックに合わせて様々な変更が取り入れられている。具体的には、

  • OneXで30FPSだったカットシーンが4K60FPSで動作
  • ロード時間が劇的に高速化
  • コンタクトシャドウ(物体の影に深みを与える)、植物それぞれのシャドウが友好に

などなど。そして開発中のGears5(SX版)は既に100FPS以上で動作しており、現在マルチプレイモードで120FPS動作ができるよう改善中とのこと。もはやPCである。

何より素晴らしいのは、Gears5のSX版は、One版所有者なら無料で入手可能という点だ。果たしてPS5の互換でも同様の試みがなされるか、気になって眠れない!

 

クイックレジュームがすごい

素早くゲームを再開できる恐ろしい機能のデモ。未来だ。

 

公式サイトを読もう!英語だけど

公式サイトでは他にも、遅延を最小化するための様々な工夫など、語り尽くせないSeriesXの魅力が解説されている。コンソールゲーマーは英語の勉強がてら読破しよう。

投稿 新しいXboxでマイクラを動かすとこうなる。詳細なスペックが公開asobinon に最初に表示されました。

リアルイベント「Minecraft Festival」が来年に開催延期、アプデ生放送は継続

2020年3月16日 13:41

日本語で開催告知がなかったため、あまり多くの人に知られないままの中止となった。

Minecraftのリアルイベント「Minecraft Festival」は当初、今年の9月末にフロリダ州オーランドでの開催が予定されていた。しかし昨今の新型コロナウイルスの流行により準備に支障が生じていることから、開催が「2021年秋」に延期された。ただ、アップデート内容などを発表する「Minecon Live」改め「Minecraft Live」は、9月に放送が予定されている。

 

フェスティバルってなんだよ

Interactive exhibits, competitive tournaments, exclusive merch and all your favourite creators: we’ll take a small break from inflating square balloons to tell you all about the event of the year: Minecraft Festival!

https://t.co/gHdEUNDkMcpic.twitter.com/8wZk3xdgH1

— Minecraft (@Minecraft) February 27, 2020

日本語で発表されなかったためあまり話題にならなかったが、先月末にこのような画像とともに「Minecraft Festival」の開催が発表された。記事の内容を簡単に紹介する。

Welcome to Minecraft Festival | Minecraft
https://www.minecraft.net/ja-jp/article/welcome-minecraft-festival
  • 9月末に「Minecraft Festival」を開催するよ!
  • 何千人ものゲストを招待!
  • 展示やトーナメント、限定商品の販売などなど!
  • コンテンツクリエイターやMojangの開発者に会えるよ!
  • 参加者全員にBE/JE両方で使えるマントをあげるよ!
  • 3日間開催するよ!

また、昨年も開催された「MINECON Live」が「Minecraft Live」に改名されたこともこの記事で発表された。なおMinecraft Liveは当初、フェスティバル会場から直接放送する予定だった。

またチケットの価格表も掲載され、1日60ドル、3日まとめて165ドルで一般チケットが販売されるほか、限定バッジや早期入場が付いた「ゴールドパッケージ」、加えてラウンジ利用権などが付いた「ダイヤモンドパッケージ」の販売も発表された。今見るとなかなか強気の価格設定だな。

 

「2021年秋」に開催延期

Home - Minecraft Festival
https://www.minecraftfestival.com/

You were excited. We were excited. But after conversations with our partners, we’ve had to make the difficult decision to postpone Minecraft Festival. All is not lost, though: Minecraft Live will still be streaming plenty of exciting announcements!

https://t.co/7fQMAbCdIZpic.twitter.com/xtCrd1lns6

— Minecraft (@Minecraft) March 5, 2020

今年開催を予定していたMinecraft Festivalですが
来年に延期することになりました

Minecraft Liveは開催予定ですので
9月のライブ配信をお楽しみに!

詳細に関しては以下のリンクをご確認くださいhttps://t.co/rs9tQSTeua pic.twitter.com/XatMLIHGJL

— Minecraft Japan (@minecraftjapan) March 9, 2020

延期の告知は日本語でも発表されている。

我々のパートナーやプロデューサー、出展予定の方々は世界中にいらっしゃるため、直接会って話し合うなど、現在は必要な協力体制を十分に築けない状況となっています。このような状況がいつまで続き、いつ必要な協力体制がまた築けるかが正確にわからないため、Minecraft Festival を延期するという結論に至りました。

Home - Minecraft Festival
https://www.minecraftfestival.com/

公式サイトも併せて更新され、開催時期は「2021年秋」に変わった。

 

ゲーム関連イベントの変更が相次ぐ

マインクラフトだけでなく、様々なゲームに関連するイベントに、新型コロナウイルスの流行が影響している。最もインパクトが大きいものは「E3中止」である。文字通り、「中止」。

E3 has always been an important moment for Team Xbox. Given this decision, this year we'll celebrate the next generation of gaming with the @Xbox community and all who love to play via an Xbox digital event. Details on timing and more in the coming weeks https://t.co/xckMKBPf9h

— Phil Spencer (@XboxP3) March 11, 2020

Xbox Series-Xの発売が待ち遠しいXboxに関しては、オンラインイベントの開催が発表されている。他の例を挙げれば、スクウェア・エニックスやUbisoftも別の方法での発表を検討中だ。

注目のSIEは、未だに沈黙を守り続けている。こんな状態で堂々と発表会は開催できないだろうから、ソニーファンは忍耐が必要になるだろう。(なおPS4は2月20日に発表された)

E3中止を受けたゲームメーカー各社の対応。スクエニ、任天堂が新たな方法を、マイクロソフト、ユービーアイなどがオンライン発表の検討を表明 - ファミ通.com
https://www.famitsu.com/news/202003/12194436.html

色々と不安なことが多いが、健康が第一。どうしても暇なら、当サイトが無料開放しているRealmで遊んでみることをおすすめする。

投稿 リアルイベント「Minecraft Festival」が来年に開催延期、アプデ生放送は継続asobinon に最初に表示されました。

「Loot Table (ドロップ表)」の使い方 Part3 エラーへの対処法

2020年2月22日 12:50

Loot Table解説のPart3です。今回は、ドロップ表自作においてエラーが出た際の対処法を解説します。Part1およびPart2も合わせてご覧ください。

 

自作ルートテーブルのエラーを確認する手順と、各種エラーの原因

SublimeText最高

Loot tableの書き方はマスターできましたか。設定項目が豊富なので、色々設定していくうちにjsonが半端じゃない長さになるはずです。私にとってはSublime Textの構文チェック機能の有り難みを改めて感じることができました...

アイテムが出てこない場合は

しかしテキストエディタに頼ってもミスをする時だってあります。頑張ってルートテーブルを書いたのに、アイテムが出てこない... そんな時は次の点を確認しましょう。

  • プレイ中にLoot tableのJSONを編集したなら → F3+Tキーを押そう
  • 押してもアイテムが出てこない → 以下の手順でログを確認しよう


EditProfileから設定変更

エラーログを確認するには、マイクラを起動する前にランチャーで「Edit Profile」から設定画面を開きます。「Launcher Visibility」にチェックを入れて、Keep the launcher openを選んでSave Profileをクリックします。

 

JSONの記法が間違っている場合のエラーメッセージと対処法

エラーログを確認しよう

するとゲーム内でルートテーブルを読み込んだ際に、エラーログがランチャーに表示されます。... at line 26と書かれているので、読み込んだルートテーブルの26行目に異常があるということです。

コンマ忘れに気付いた

jsonファイルを開いて、該当する行を探すとありました。カッコの間のコンマを忘れていました。

よくやるミス

他によくやってしまうミスとして、「カッコ内の最後の項目にコンマを付けてしまう」がありますね。項目を追加したけれどやっぱりいいや、と消した際にコンマを消し忘れるんですよ。

 

「Couldn't find resource table ○○」エラーの対処法

ルートテーブルを指定する際のエラー

Couldn't find resource table ○○というエラーが出た場合は、コマンドでルートテーブルを指定した際の、ファイル名やフォルダーの指定が間違っていたということです。

フォルダーの構造とファイル名に注意

セーブデータの「data」→「loot_tables」フォルダ内の構造とファイル名と、ルートテーブルを指定する記述が合致しているか確認しましょう。

おさらい: Loot tableを指定するコマンドのNBTタグの書き方
  • チェスト/トラップチェスト/ホッパー/チェスト付きトロッコ/ホッパー付きトロッコの場合:
    {LootTable:"フォルダ名:ファイル名(.json抜き)"}
  • Mobのドロップアイテムとして指定する場合:
    {DeathLootTable:"フォルダ名:ファイル名(.json抜き)"}
※フォルダの中にさらにフォルダを作った場合は、「フォルダ:フォルダ/フォルダ/ファイル名(.json抜き)」という風に書きます。

 

参考にさせて頂いたページ様

Loot table - Minecraft Wiki
http://minecraft.gamepedia.com/Loot_table
1.9 - Custom Loot Tables - Minecraft Forum
http://www.minecraftforum.net/forums/minecraft-discussion/redstone-discussion-and/command-blocks/2546347-1-9-custom-loot-tables
▲LootTableのJSONの記法が使用例とともに分かりやすく解説されています。Skylinerwさん、素晴らしい解説をありがとうございました!
(その他、公式Wikiの様々なページの情報をもとに執筆しました。)

投稿 「Loot Table (ドロップ表)」の使い方 Part3 エラーへの対処法asobinon に最初に表示されました。

「Loot Table (ドロップ表)」の使い方 Part2 JSONの書き方と条件分岐

2020年2月22日 12:50

Loot Table解説のPart2です。今回はJSONの書き方を解説します。「運効果を持っていればこのアイテムが出やすい」「スコアボードの値に応じてアイテムを出す」「燃やして死んだらアイテムのNBTタグを変える」「アイテムにランダムで指定したエンチャントを付ける」など、様々な「function」と「condition(条件)」の使い方を解説しています。Part1Part3も合わせてご覧ください。

[2020/2/22追記] 1.14仕様に更新しました。1.13以前ではこの方式は使えないので注意してください。

 

ここからは、オリジナルのLoot table(ドロップ表)を自作する手順とJSONファイルの書き方を解説します。サンプルをコピペして少しずつ弄っていけば誰でも思い通りのルートテーブルが作れるはずなので、是非諦めずに自作に挑戦してみてください。

(簡単にJSONを生成するツールもありますが、また別の機会に紹介するかもです)

 

LootTableを作成する場所とは。セーブデータ内のフォルダの構造を解説

「データパック」の作成手順/フォルダ構成/使い方 (Java版1.13)
データパック作成解説
https://napoan.com/data-pack-perfect-guide/

まずは▲の記事を参考に、あなたのワールドの中に「データパック」を作ってください。

データパックを作る際に名前空間フォルダを作りますが、バニラのルートテーブルを上書きしたい場合は「minecraft」に、そうでない場合は英数字で好きな名前を付けてください。

そして名前空間フォルダの中に、loot_tablesという名前のフォルダを作成します。

loot_tablesフォルダの中にルートテーブルのJSONを入れていくわけですが、この中にさらにフォルダを作成して、JSONを整理することもできます。もちろんloot_tablesフォルダ直下にJSONを入れても構いません。

そこに新規テキストファイルを作成して、小文字の英数字とアンダーバーで名前を付け、末尾に.jsonを付けてください。

 

jsonの編集にはメモ帳ではなく高機能なテキストエディタを使おう

テキストエディタについて

作成したJSONファイルをいよいよ編集していくのですが、ここで注意点を1つ。Windows付属の「メモ帳」はおすすめしません。こういう文書ファイルでは一文字のミスも許されませんから、自動整形だとか構文チェックをしてくれる多機能なエディタでjsonファイルを開くことをお勧めします。

ちなみに私は「Sublime Text 3」にMaterialってテーマを適用して使ってます。

 

ルートテーブルの基本の書き方。アイテムのスロット数と出現確率を設定するには

まずは以下のサンプルをコピペしてjsonに貼り付けてみましょう。

{
    "pools": [
        {
            "rolls": 3,
            "bonus_rolls":2,
            "entries": [
                {
                    "type": "item",
                    "name": "minecraft:stone",
                    "weight": 2
                },
                {
                    "type": "item",
                    "name": "minecraft:diamond",
                    "weight": 1
                }
            ]
        }
    ]
}

基本的な書き方が分かっていただけたかと思います。「pools」の中に「entries」があり、その中にアイテムを書いていくんです。

  • "pools": [] - 四角カッコの中にアイテムのパターンを書きます。
    • "rolls": 数値 - 出現する項目の数を設定します。アイテム自体の数量ではなく、例えばチェストなら占有するスロットの数です。
    • "bonus_rolls": 数値 - バージョン1.9で追加された「運(luck)」効果を持っていた際に追加で出てくるアイテムの数です。luck効果は/effect @p minecraft:luck 100 0 trueで自分に付与できます。
    • "entries": [] - 四角カッコの中にアイテムなどの項目を書きます。
      • "type": "タイプ" - アイテムの場合は"item", 他のルートテーブルを呼び出す際は"loot_table", 何もない場合は"empty"と書きます。
      • "name": "何か" - typeをitemにした場合はアイテムID、loot_tableにした場合はminecraft:chests/nether_bridgeのようにloot tableを指定します。
      • "weight": 数値 - そのアイテムの出やすさです。weightが多いほど出やすく、少ないほどレアになります。
サンプル1の結果

"roll": 数値でアイテムの量(というよりスロットの数)を指定するのですが、いつも同じ数のアイテムが出てくるってつまらないですよね。出てくるアイテムの量をランダムにするにはどうすれば良いのでしょうか。

{
    "pools": [
        {
            "rolls": {
                "min": 1,
                "max": 5
            },
            "bonus_rolls": {
                "min": 1,
                "max": 3
            },
            "entries": [
                {
                    "type": "item",
                    "name": "minecraft:stone",
                    "weight": 2
                },
                {
                    "type": "item",
                    "name": "minecraft:diamond",
                    "weight": 1
                }
            ]
        }
    ]
}

違いがお分かり頂けましたか? そう、「"rolls"」の中にさらにカッコが増えてますね。その中に「"min"」「"max"」の値を書くことで、出てくるアイテムの最小の量と最大の量を設定できるんです。「"bonus_rolls"」の数値も同じように最小値と最大値を設定できます。


「Quality」の意味

バージョン1.9では「luck」という新効果が追加されたことはご存知ですよね。この運効果が付いている間だけ、特定のアイテムが出てくる確率を上げる(=特定のアイテムの量を増やす)にはどうすれば良いのでしょうか。

{
    "pools": [
        {
            "rolls": {
                "min": 1,
                "max": 5
            },
            "bonus_rolls": {
                "min": 1,
                "max": 3
            },
            "entries": [
                {
                    "type": "item",
                    "name": "minecraft:stone",
                    "weight": 2
                },
                {
                    "type": "item",
                    "name": "minecraft:diamond",
                    "weight": 1,
                    "quality": 5
                }
            ]
        }
    ]
}

"quality": 数値という項目をダイヤモンドに設定しています。すると以下のようにアイテムの出やすさが増えます。

"quality"を設定した際のluck効果のレベルに応じたアイテムの出やすさの変化の式
アイテムの出やすさ: "weight"の値 + ("quality"の値 × luck効果のレベル)

例えば"weight"が3"quality"が5プレイヤーの「運」がレベル2だった場合は「3+(5*2) = 13」となり、最終的なアイテムの出やすさは「13」となります。プレイヤーの運レベルが高ければ、"quality"をちょっと変えただけで大きく出やすさが変わるんです。

1ページ目でも述べましたが、このルートテーブルをチェストなどに設定した場合は「初めて開けて中身を見た時」にluck効果を持っていればアイテムが増えます。設置/設定時の効果は中身の決定に影響しません。

 

アイテムのまとまり、「pool」とは

{
    "pools": [
        {
            "rolls": 11,
            "entries": [
                {
                    "type": "item",
                    "name": "minecraft:stone",
                    "weight": 10
                },
                {
                    "type": "item",
                    "name": "minecraft:diamond",
                    "weight": 1
                }
            ]
        },
        {
            "rolls": 3,
            "entries": [
                {
                    "type": "item",
                    "name": "minecraft:stick",
                    "weight": 2
                },
                {
                    "type": "item",
                    "name": "minecraft:paper",
                    "weight": 1
                }
            ]
        }
    ]
}

▲このルートテーブルでは、"pool": []の中に複数のまとまり(pool)がありますよね。こういう風に複数のpoolに分けて書くことで、アイテムの出やすさ(weightとquality)の比較をバラバラに行えるんです。

poolの意味

上記ルートテーブルでは、「焼石:ダイヤ=10:1」「棒:紙=2:1」という2つの「pool」で別々に出やすさの比較が行われます。上手に「pool」を分けて、アイテムの出やすさを思い通りに操りましょう。

 

基本的な「functions」の使い方

名前を付けたりなど、NBTタグを設定したりしたい

アイテムを出現させることはできたものの、アイテムはすっぴんのまま。エンチャント効果を付けたり、NBTタグを使って名前や説明文を付けたりスタック数を設定したりするにはどうすれば良いのでしょうか。

 

アイテムにランダムまたは指定したエンチャント効果を指定した確率で付与するには

{
    "pools": [
        {
            "rolls": {
                "min": 1,
                "max": 5
            },
            "bonus_rolls": {
                "min": 1,
                "max": 3
            },
            "entries": [
                {
                    "type": "item",
                    "name": "minecraft:stone",
                    "weight": 2
                },
                {
                    "type": "item",
                    "name": "minecraft:diamond_chestplate",
                    "weight": 1,
                    "quality": 5,
                    "functions": [
                        {
                            "function": "minecraft:enchant_randomly",
                            "enchantments": [
                                "minecraft:protection",
                                "minecraft:fire_protection",
                                "minecraft:unbreaking"
                            ]
                        }
                    ]
                }
            ]
        }
    ]
}

ここで新しく「functions」が出てきました。この「functions」内に色々書けば各種設定ができるわけです。上記ルートテーブルでは"function": "minecraft:enchant_randomly"と書くことで「enchant_randomly(ランダムにエンチャントする)」機能を設定しています。その下に"enchantments": ["エンチャントID","エンチャントID"]と書けば付与されるエンチャントの種類を指定できます。上記の場合は耐性、火炎耐性、耐久力エンチャントの内1つだけが付与されます。

{
    "pools": [
        {
            "rolls": {
                "min": 1,
                "max": 5
            },
            "bonus_rolls": {
                "min": 1,
                "max": 3
            },
            "entries": [
                {
                    "type": "item",
                    "name": "minecraft:stone",
                    "weight": 2
                },
                {
                    "type": "item",
                    "name": "minecraft:diamond_chestplate",
                    "weight": 1,
                    "quality": 5,
                    "functions": [
                        {
                            "function": "minecraft:enchant_randomly"
                        },
                        {
                            "function": "minecraft:enchant_randomly"
                        },
                        {
                            "function": "minecraft:enchant_randomly"
                        }
                    ]
                }
            ]
        }
    ]
}

"enchantments"を指定しない"minecraft:enchant_randomly"を書けば、そのアイテムに適合するエンチャントがそれぞれ1つだけ付与されます。上記のように書けば適合するエンチャントが3つ付くわけです。

 

{
    "pools": [
        {
            "rolls": {
                "min": 1,
                "max": 5
            },
            "bonus_rolls": {
                "min": 1,
                "max": 3
            },
            "entries": [
                {
                    "type": "item",
                    "name": "minecraft:diamond_chestplate",
                    "weight": 1,
                    "quality": 5,
                    "functions": [
                        {
                            "function": "minecraft:enchant_with_levels",
                            "levels": 30
                        }
                    ]
                },
                {
                    "type": "item",
                    "name": "minecraft:diamond_leggings",
                    "weight": 1,
                    "quality": 5,
                    "functions": [
                         {
                            "function": "minecraft:enchant_with_levels",
                            "levels": {
                                "min": 10,
                                "max": 30
                            },
                            "treasure": true
                        }
                    ]
                }
            ]
        }
    ]
}

▲今度は"minecraft:enchant_with_levels"というfunctionを使ってみましょう。"levels"で指定したレベルに応じたエンチャント効果が付与されます。最小レベルと最大レベルを指定することも可能です。また、"treasure": trueと書けば「Mending(修繕)(修繕)」や「Frost Walker(氷上歩行)」などのトレジャーエンチャント(エンチャント台では付けられない効果)も出てくるようになります。

 

アイテムの数(スタック内の量)を指定するには

{
    "pools": [
        {
            "rolls": {
                "min": 1,
                "max": 5
            },
            "bonus_rolls": {
                "min": 1,
                "max": 3
            },
            "entries": [
                {
                    "type": "item",
                    "name": "minecraft:diamond",
                    "weight": 1,
                    "functions": [
                        {
                            "function": "minecraft:set_count",
                            "count": 5
                        }
                    ]
                },
                {
                    "type": "item",
                    "name": "minecraft:gold_ingot",
                    "weight": 2,
                    "quality": 5,
                    "functions": [
                         {
                            "function": "minecraft:set_count",
                            "count": {
                                "min": 1,
                                "max": 5
                            }
                        }
                    ]
                }
            ]
        }
    ]
}

"minecaft:set_count"を使えば、"count"アイテムの数を指定できます(スタックされた数)。これも最小値と最大値を指定可能。

一つの項目に何個も書いてしまった場合は、最後に書いてある数値が適用されます。

 

アイテムのデータ値を指定するには

{
    "pools": [
        {
            "rolls": {
                "min": 1,
                "max": 5
            },
            "bonus_rolls": {
                "min": 1,
                "max": 3
            },
            "entries": [
                {
                    "type": "item",
                    "name": "minecraft:wool",
                    "weight": 2,
                    "quality": 5,
                    "functions": [
                        {
                            "function": "minecraft:set_data",
                            "data": 5
                        }
                    ]
                },
                {
                    "type": "item",
                    "name": "minecraft:wool",
                    "weight": 2,
                    "quality": 5,
                    "functions": [
                        {
                            "function": "minecraft:set_data",
                            "data": {
                                "min": 6,
                                "max": 10
                            }
                        }
                    ]
                }
            ]
        }
    ]
}

羊毛など、同じIDでも色々な種類があるアイテムは「データ値」で種類を指定しますね。ルートテーブルでは、"minecraft:set_data"というfunctionでデータ値を指定します。"data"の数値にはもちろん最小値と最大値を指定できます。

一つの項目に何個も書いてしまった場合は、最後に書いてある数値が適用されます。

※1.13ではデータ値が廃止されるため、このfunctionは使えません

 

アイテムのダメージ値を指定するには

{
    "pools": [
        {
            "rolls": {
                "min": 1,
                "max": 5
            },
            "bonus_rolls": {
                "min": 1,
                "max": 3
            },
            "entries": [
                {
                    "type": "item",
                    "name": "minecraft:diamond_shovel",
                    "weight": 2,
                    "quality": 5,
                    "functions": [
                        {
                            "function": "minecraft:set_damage",
                            "damage": 0.5
                        }
                    ]
                },
                {
                    "type": "item",
                    "name": "minecraft:diamond_pickaxe",
                    "weight": 2,
                    "quality": 5,
                    "functions": [
                        {
                            "function": "minecraft:set_damage",
                            "damage": {
                                "min": 0.2,
                                "max": 0.9
                            }
                        }
                    ]
                }
            ]
        }
    ]
}
耐久値を設定

道具アイテムの残りの耐久値は"minecraft:set_damage"というfunctionで設定します。"damage"の値は0~1までで、1なら耐久値が満タンで、0なら残りの耐久値が無し、つまり壊れているという意味です。

一つの項目に何個も書いてしまった場合は、最後に書いてある数値が適用されます。

 

アイテムのNBTタグを指定するには

{
    "pools": [
        {
            "rolls": {
                "min": 1,
                "max": 5
            },
            "bonus_rolls": {
                "min": 1,
                "max": 3
            },
            "entries": [
                {
                    "type": "item",
                    "name": "minecraft:diamond_shovel",
                    "weight": 2,
                    "quality": 5,
                    "functions": [
                        {
                            "function": "minecraft:set_nbt",
                            "tag": "{ench:[{id:32,lvl:3}]}"
                        }
                    ]
                },
                {
                    "type": "item",
                    "name": "minecraft:diamond_pickaxe",
                    "weight": 2,
                    "quality": 5,
                    "functions": [
                        {
                            "function": "minecraft:set_name",
                            "name": "つよいツルハシ"
                        },{
"function": "minecraft:set_lore", "lore": [{"text":"使ってみなよ"}]
}
                    ]
                }
            ]
        }
    ]
}
NBTタグを設定するには

普段giveコマンドなどで使っているNBTタグをルートテーブル内で使うには"minecraft:set_nbt"というfunctionを使います。"tag"内にNBTタグを書くのですが、ダブルクオーテーションを使う際はバックスラッシュでエスケープするのを忘れずに!

ちなみに、一つの項目に何個もNBTタグを書いた場合は合成されます。しかし同じNBTタグが複数書かれていたら、最後に書かれている物が適用されます。

※2020年2月22日追記 名前と説明文は"minecraft:set_name"および"minecraft:set_lore"で指定する形式に変わっています。natu様、ご指摘ありがとうございました。

 

アイテムの属性(手に持つ/装備すると発動する効果)を指定するには

属性を設定したアイテムとは

アイテムのNBTタグの「AttributeModifiers」はご存じですか。だいぶ前の記事で解説した、「手に持ったり装備したりするとHPなどの能力が強化される」やつです。ルートテーブルでは、あの機能をわざわざNBTタグに書かなくても「function」として設定できるんです。

{
    "pools": [
        {
            "rolls": 1,
            "entries": [
                {
                    "type": "item",
                    "name": "minecraft:diamond_chestplate",
                    "weight": 1,
                    "functions": [
                        {
                            "function": "minecraft:set_attributes",
                            "modifiers": [
                                {
                                    "attribute": "generic.maxHealth",
                                    "name": "Add health!",
                                    "amount": {
                                        "min": 2,
                                        "max": 5
                                    },
                                    "operation": "addition",
                                    "slot": [
                                        "chest"
                                    ]
                                },
                                {
                                    "attribute": "generic.attackDamage",
                                    "name": "Add power!",
                                    "amount": {
                                        "min": 2,
                                        "max": 5
                                    },
                                    "operation": "addition",
                                    "slot": [
                                        "chest"
                                    ]
                                }
                            ]
                        }
                    ]
                }
            ]
        }
    ]
}

"minecraft:set_attributes"というfunctionを使えば能力の変化を設定できます。

  • "modifiers: []" - 四角カッコの中に効果を書きます。それぞれの効果は1つづつカッコで囲みます。
    • "attribute": "属性名" - 効果名を書きます。公式Wikiの属性一覧ページを参考にして下さい。
    • "name": "好きな名前" - 自由に属性の名前を書きます。書かなければエラーになるので必ず何か書いて下さい。
    • "amount": {"min": 最小値, "max": 最大値} - 効果の強さを指定します。"amount": 数値 と書けば一定の強さの効果になります。
    • "operation": "効果の働き方" - 効果の増減の計算方法を指定します。
      • "addition" - 増減結果 = 元の値 + amountの数値
      • "multiply_base" - 増減結果 = 元の値 + (元の値 × amountの数値)
      • "multiply_total" - 増減結果 = 元の値 × (1 + amountの数値)
    • "slot": ["スロット名"] - アイテムを持つ/装備する場所を指定します。"mainhand","offhand","head","chest","legs","feet"が指定できます。
      1つの効果に複数スロットを指定しても、適用されるのはランダムでどれか1つなのでご注意下さい!

計算式についてはこちらのページが大変参考になりました: Minecraft Japan Wiki - コマンド/データタグ

「ドロップ増加(looting)」エンチャントを使って倒した際のアイテム増加量を設定するには

{
    "pools": [
        {
            "rolls": {
                "min": 1,
                "max": 5
            },
            "bonus_rolls": {
                "min": 1,
                "max": 3
            },
            "entries": [
                {
                    "type": "item",
                    "name": "minecraft:diamond",
                    "weight": 1,
                    "quality": 5,
                    "functions": [
                        {
                            "function": "minecraft:looting_enchant",
                            "count": 5
                        }
                    ]
                },
                {
                    "type": "item",
                    "name": "minecraft:gold_ingot",
                    "weight": 1,
                    "quality": 5,
                    "functions": [
                         {
                           "function": "minecraft:looting_enchant",
                            "count": {
                                "min": 2,
                                "max": 10
                            }
                        }
                    ]
                }
            ]
        }
    ]
}

"minecraft:looting_enchant"というfunctionに"count"で値を設定すれば、「ドロップ増加」エンチャントの付いた剣でMobを倒した際に、「ドロップ増加」のレベル × 設定した値の分だけドロップアイテムの数が増えます。

一つの項目に何個も書いた場合は、数値が合計されます。

 

基本的な条件(conditions)の書き方

それぞれのアイテムにエンチャントを付けたり数を指定したりする方法はもうマスターできたかと思います。次は、それぞれの「pool(まとまり)」やアイテムが出現する「条件」、すなわち「conditions」の書き方を解説します。

なんと「プレイヤーに倒された時だけダイヤモンドを落とす」「エンティティのスコアに応じてデータ値やNBTタグを決める」など色々ハイテクなことが出来ちゃいます。うまく活用すれば可能性は無限大...!

 

プレイヤーに倒されたかどうかの条件

{
    "pools": [
        {
            "rolls": 5,
            "entries": [
                {
                    "type": "item",
                    "name": "minecraft:stick",
                    "weight": 1
                }
            ],
            "conditions": [
                {
                    "condition": "minecraft:killed_by_player",
                    "inverse": true
                }
            ]
        },
        {
            "rolls": 3,
            "entries": [
                {
                    "type": "item",
                    "name": "minecraft:diamond",
                    "weight": 1
                }
            ],
            "conditions": [
                {
                    "condition": "minecraft:killed_by_player"
                }
            ]
        }
    ]
}

▲「pool(まとまり)」を2つ用意しています。それぞれのpoolに"conditions: []"「このまとまりが出現する条件」を設定してあります。

"minecraft:killed_by_player"というconditionでは、「プレイヤーに倒されたか」を条件に出来ます。"inverse": trueと書けば条件を反転でき、ここでは「プレイヤーに殺されていない場合は棒を出す」仕様になっています。

 

{
    "pools": [
        {
            "rolls": 3,
            "entries": [
                {
                    "type": "item",
                    "name": "minecraft:diamond",
                    "weight": 1,
                    "conditions": [
                        {
                            "condition": "minecraft:killed_by_player"
                        }
                    ]
                },
                {
                    "type": "item",
                    "name": "minecraft:stick",
                    "weight": 1,
                    "conditions": [
                        {
                            "condition": "minecraft:killed_by_player",
                            "inverse": true
                        }
                    ]
                }
            ]
        }
    ]
}

condition(条件)はpoolごとではなく"entries": []内の項目ごとにも設定できます。上記ルートテーブルではプレイヤーに倒されたらダイヤモンド、それ以外の場合は棒を落とします。

 

{
    "pools": [
        {
            "rolls": 1,
            "entries": [
                {
                    "type": "item",
                    "name": "minecraft:diamond",
                    "weight": 1,
                    "functions": [
                        {
                            "function": "minecraft:set_name",
                            "name": "倒してくれてありがとう",
                            "conditions": [
                                {
                                    "condition": "minecraft:killed_by_player"
                                }
                            ]
                        },
                        {
                            "function": "minecraft:set_name",
                            "name":"僕は自滅しちゃったよ",
                            "conditions": [
                                {
                                    "condition": "minecraft:killed_by_player",
                                    "inverse": true
                                }
                            ]
                        }
                    ]
                }
            ]
        }
    ]
}

▲さらになんと"functions": []のfunctionそれぞれに条件を設定できるんです。上記ルートテーブルでは、プレイヤーが倒した際は「倒してくれてありがとう」、自滅してドロップする時は「僕は自滅しちゃったよ」という風に同じアイテムでも名前を死に方によって切り替える、という超絶ハイテクなことを実現しちゃってます。バニラでこんな事ができるようになるとは...

 

それぞれのpool、項目、functionの出現確率を設定するには

{
    "pools": [
        {
            "rolls": 1,
            "entries": [
                {
                    "type": "item",
                    "name": "minecraft:diamond",
                    "weight": 1,
                    "functions": [
                        {
                            "function": "minecraft:set_name",
                            "name" :"70%の確率で出るダイヤモンド"
                        },
                        {
                            "function": "minecraft:set_lore",
                            "lore": [{"text":"50%の確率でこの説明文が追加される"}],
                            "conditions": [
                                {
                                    "condition": "minecraft:random_chance",
                                    "chance": 0.5
                                }
                            ]
                        }
                    ],
                    "conditions": [
                        {
                            "condition": "minecraft:random_chance",
                            "chance": 0.7
                        }
                    ]
                }
            ]
        }
    ]
}

"minecraft:random_chance"というconditionを使えば、"chance"で指定した値が出現確率になります。"chance"は0~1まで指定可能で、例えば"chance": 0.5なら50%の確率でそのpoolや項目やfunctionが適用されるわけです。

 

「ドロップ増加」エンチャント使用時の出現確率の増加量を設定するには

{
    "pools": [
        {
            "rolls": 1,
            "entries": [
                {
                    "type": "item",
                    "name": "minecraft:diamond",
                    "weight": 1,
                    "functions": [
                        {
                            "function": "minecraft:set_name",
                            "name":"70%の確率で出るダイヤモンド"
                        },
                        {
                            "function": "minecraft:set_lore",
                            "lore" :[{"text":"50%の確率でこの説明文が追加される"}],
                            "conditions": [
                                {
                                    "condition": "minecraft:random_chance_with_looting",
                                    "chance": 0.5,
                                    "looting_multiplier": 0.05
                                }
                            ]
                        }
                    ],
                    "conditions": [
                        {
                            "condition": "minecraft:random_chance_with_looting",
                            "chance": 0.7,
                            "looting_multiplier": 0.1
                        }
                    ]
                }
            ]
        }
    ]
}

先程解説した"minecraft:random_chance""minecraft:random_chance_with_looting"に置き換えれば、追加で"looting_multiplier"という値が設定可能になります。この"looting_multiplier"は「ドロップ増加エンチャントのレベルに応じて増えるchance値の量」を意味しています。

ドロップ増加エンチャント使用時のrandom_chanceの量を求める式
出現確率: "chance"の値 + ("looting_multiplier"の値 × ドロップ増加のレベル)

例えば本来の"chance": 0.7のアイテムに"looting_multiplier": 0.1を設定して、ドロップ増加レベル3の剣で倒した場合は0.7 + (0.1*3) = 1.0ということで出現確率は100%になるんです。

 

倒した人/Mobや倒されたMobの状態(燃えているかどうか)を条件にするには

{
    "pools": [
        {
            "rolls": 1,
            "entries": [
                {
                    "type": "item",
                    "name": "minecraft:diamond",
                    "weight": 1,
                    "functions": [
                        {
                            "function": "minecraft:set_name",
                            "name":焼死した証",
                            "conditions": [
                                {
                                    "condition": "minecraft:entity_properties",
                                    "entity": "this",
                                    "properties": {
                                        "minecraft:on_fire": true
                                    }
                                }
                            ]
                        },
                        {
                            "function": "minecraft:set_name",
                            "name":"焼死してない証",
                            "conditions": [
                                {
                                    "condition": "minecraft:entity_properties",
                                    "entity": "this",
                                    "properties": {
                                        "minecraft:on_fire": false
                                    }
                                }
                            ]
                        }
                    ]
                }
            ]
        }
    ]
}

▲"minecraft:entity_properties"という条件で、倒した人/Mob、倒されたMobがどんな状態だったかを条件にできます。"entity""this"と書けば倒されたMob、"killer"と書けばそいつを倒した他のMob、"killer_player"と書けばそいつを倒したプレイヤーの状態を条件にします。今のところ判定できるのは「火が付いているか: true/false」だけです。

 

倒した人/Mobや倒されたMobのスコアボードの値を条件にするには

{
    "pools": [
        {
            "rolls": 1,
            "entries": [
                {
                    "type": "item",
                    "name": "minecraft:diamond",
                    "weight": 1,
                    "functions": [
                        {
                            "function": "minecraft:set_name",
                            "name":"test1が1だった証",
                            "conditions": [
                                {
                                    "condition": "minecraft:entity_scores",
                                    "entity": "this",
                                    "scores": {
                                        "test1": 1
                                    }
                                }
                            ]
                        },
                        {
                            "function": "minecraft:set_name",
                            "name":"test1が1でtest2が1以上3以下だった証",
                            "conditions": [
                                {
                                    "condition": "minecraft:entity_scores",
                                    "entity": "this",
                                    "scores": {
                                        "test1": 1,
                                        "test2": {
                                            "min": 1,
                                            "max": 3
                                        }
                                    }
                                }
                            ]
                        }
                    ]
                }
            ]
        }
    ]
}

▲"minecraft:entity_scores"を使えば、なんと倒されたMobなどのスコアボードの値を条件にドロップアイテムを決められるんです! これは革命的でしょ。entity_propertiesの時と同様、"entity"に"this"と書けば倒されたMob、"killer"と書けばそいつを倒した他のMob、"killer_player"と書けばそいつを倒したプレイヤーのスコアを条件にします。

"scores: []"内には複数のオブジェクトを書くことができ、それぞれ最小値と最大値も設定できます。これとscoreboardコマンドを合わせて使えば、例えば「○○を装備して倒せばダイヤモンドが落ちる!」など複雑なシステムが作れますね。ワクワクしてきちゃった。

 

Mobを焼いて殺した際に精錬済みのアイテムが出てくるようにするには

焼死時に精錬済みのドロップアイテムを出すには

例えば牛を殺した際、普通なら生肉が出てきますが、焼いて殺せば焼き肉が出てきますよね。こんな「焼死時は精錬したアイテムが出てくる」機能をLoot tableで使ってみましょう。例えば「原木」をドロップするルートテーブルがあるとすれば、焼死時は原木を精錬した「木炭」が出てくるようになります。

{
    "pools": [
        {
            "rolls": 1,
            "entries": [
                {
                    "type": "item",
                    "name": "minecraft:log",
                    "weight": 1,
                    "functions": [
                        {
                            "function": "minecraft:furnace_smelt",
                            "conditions": [
                                {
                                    "condition": "minecraft:entity_properties",
                                    "entity": "this",
                                    "properties": {
                                        "minecraft:on_fire": true
                                    }
                                }
                            ]
                        }
                    ]
                }
            ]
        }
    ]
}

▲アイテムに応じた精錬済みアイテムを出すには、"minecraft:furnace_smelt"というfunctionと、先程解説した"minecraft:entity_properties"というcondition(条件)を合わせて使います。上記ルートテーブルをMobに設定すれば、普通に死んだ場合は原木、燃え死んだ場合は木炭を落とします。


Part3では、アイテムが出てこない場合の対処法を解説します。 >>

 

参考にさせて頂いたページ様

Loot table - Minecraft Wiki
http://minecraft.gamepedia.com/Loot_table
1.9 - Custom Loot Tables - Minecraft Forum
http://www.minecraftforum.net/forums/minecraft-discussion/redstone-discussion-and/command-blocks/2546347-1-9-custom-loot-tables
▲LootTableのJSONの記法が使用例とともに分かりやすく解説されています。Skylinerwさん、素晴らしい解説をありがとうございました!
(その他、公式Wikiの様々なページの情報をもとに執筆しました。)

投稿 「Loot Table (ドロップ表)」の使い方 Part2 JSONの書き方と条件分岐asobinon に最初に表示されました。

❌