投稿日:2017年7月12日
皆さんこんにちは、伊達あずさです。
以前、Custom NPCsの解説の中で、自分が追加した通貨(コイン)をモンスターやダンジョン内の宝箱から入手できるようにする方法について、さらっとだけ触れていました。
今回はそこでは触れる事が出来なかった、具体的なドロップアイテムの変更法についてご紹介させて頂こうと思っています。
ドロップアイテムの変更法はMinecraftのバージョンによって方法が異なるので、今回はMinecraft 1.9以降で使える「Loot Tablesを使った変更法」と、Minecraft 1.7.10 ~ 1.8.9で使える「Loot++を使った変更法」の2つをご紹介します。
Loot Tablesを使ったドロップアイテムの変更方法(Minecraft 1.9以降)
Minecraft 1.9以降にはLoot TablesというEntity(モンスターや動物)やChest(宝箱)からのアイテムドロップを定義したファイルが存在します。
よって、これを書き変えることでドロップアイテムを変更する事が出来ます。
まずはデフォルトのLoot Tablesを入手しましょう。
Loot Tablesはminecraft.jarの中にあります。
(Minecraft 1.10.2のLoot Tablesを入手する場合は「.minecraft\versions\1.10.2\1.10.2.jar」から入手します)
対象となるminecraft.jarを7-Zipなどで開き(7-Zipをインストール後、対象ファイルを右クリック → 7-Zip → 開く(右に小さい三角が付いてない方)と選ぶことでファイルを開くことができる)、「assets\minecraft\loot_tables」をフォルダごとコピーします。
1.10.2の場合であれば、コピーしたloot_tablesの中はこんな感じになっているはずです。
chests:ダンジョンや村などにあるチェストの中身が定義されている
entities:モンスターや動物を倒した際にドロップするアイテムが定義されている
gameplay:釣りで得られるアイテムが定義されている
各フォルダの中にあるファイル(.json)は、非常に分かりやすい名前がつけられているため、どのファイルがどのアイテムドロップを定義しているのか直ぐに理解できると思います。
ここでは試しにゾンビのアイテムドロップを変更してみます。
まず、loot_tables\entities\zombie.jsonをメモ帳などで開きます。
ここに書かれている記載が今現在のゾンビのアイテムドロップ情報です。
この中の記述を修正することで、既存のアイテムドロップを変更することもできるのですが、今回は純粋にドロップするアイテムを追加するだけなので細かい説明は省略します。
では試しに、Custom NPCsで追加されるStone Coinを1-3枚ゾンビが倒れた際にドロップするように設定してみましょう。
{
"pools": [
{
"rolls": 1,
"entries": [
{
"type": "item",
"name": "minecraft:rotten_flesh",
"weight": 1,
"functions": [
{
"function": "set_count",
"count": {
"min": 0,
"max": 2
}
},
{
"function": "looting_enchant",
"count": {
"min": 0,
"max": 1
}
}
]
}
]
},
{
"conditions": [
{
"condition": "killed_by_player"
},
{
"condition": "random_chance_with_looting",
"chance": 0.025,
"looting_multiplier": 0.01
}
],
"rolls": 1,
"entries": [
{
"type": "item",
"name": "minecraft:iron_ingot",
"weight": 1
},
{
"type": "item",
"name": "minecraft:carrot",
"weight": 1
},
{
"type": "item",
"name": "minecraft:potato",
"weight": 1
}
]
},
{
"rolls": 1,
"entries": [
{
"type": "item",
"name": "customnpcs:npcCoinStone",
"functions": [
{
"function": "set_count",
"count": {
"min": 1,
"max": 3
}
}
],
"weight": 1
}
]
}
]
}
赤字の部分が追記した部分です。
これで、ゾンビがStone Coinをドロップ(1-3枚)するようになります。
"name": "customnpcs:npcCoinStone"の部分を変更することでドロップアイテムを変更することができます。
{ "rolls": 1, "entries": [ { "type": "item", "name": "customnpcs:npcCoinWooden", "weight": 8 "functions": [ { "function": "set_count", "count": 5 } ] }, { "type": "item", "name": "customnpcs:npcCoinStone", "weight": 2 }, ] }
先ほどの部分を上記のように変更すれば、80%の確率でWooden Coinが5枚、20%の確率でStone Coinが1枚ドロップするように定義できます。
{
"rolls": 1,
"entries": [
{
"type": "item",
"name": "customnpcs:npcCoinStone",
"functions": [
{
"function": "looting_enchant",
"count": {
"min": 1,
"max": 3
}
}
],
"weight": 1
}
]
}
こんな感じでset_countの部分をlooting_enchantに変えればドロップ増加のエンチャントによって入手個数を増やすこともできます。
(設定した値にドロップ増加のエンチャントレベルが掛け算される)
ただし、looting_enchantのみを設定してしまったこの例の場合、ドロップ増加のエンチャントが無いときにドロップするStone Coinが0枚にならず、1枚に固定されてしまいます。
{ "rolls": 1, "entries": [ { "type": "item", "name": "customnpcs:npcCoinStone", "functions": [ { "function": "set_count", "count": 5 }, { "function": "looting_enchant", "count": 2 } ], "weight": 1 } ] }
ドロップ増加のエンチャントが無い場合のドロップ数をきちんと設定したい場合には、同時にset_countを定義すると良いでしょう。
上の例ですと、ドロップ増加が無い場合に落ちるStone Coinは5枚、ドロップ増加Ⅰが付いていれば5+2×1=7枚、ドロップ増加Ⅲが付いていれば5+2×3=11枚といった感じになります。
{
"rolls": 1,
"entries": [
{
"type": "item",
"name": "customnpcs:npcCoinStone",
"functions": [
{
"function": "set_count",
"count": 5
},
{
"function": "looting_enchant",
"count": 2
}
],
"weight": 1
}
],
"conditions": [
{
"condition": "killed_by_player"
}
]
}
更に、この様な記述を追加すれば、プレイヤーが倒した場合にだけStone Coinをドロップさせるようにすることなんかもできちゃいます。
こんな感じで変更したい宝箱やモンスター(動物)毎にLoot Tablesを書き変えます。
書き変えたloot_tablesはワールドデータのdataフォルダの中に入れることで適用されます。
[シングルプレイの場合]
saves\[ワールド名]\dataの中
(Ex. saves\新規ワールド\data)
[マルチプレイの場合]
[level-name]\dataの中
(Ex. world\data)
ちなみに、Modで追加されたChestやEntityであっても、Mod自体がloot Tablesに対応していれば、同様にドロップアイテムを変更する事が出来ます。(Modのjarファイルを開き、loot_tablesがあれば、同じ方法で修正できる)
Loot++を使ったドロップアイテムの変更方法(Minecraft 1.7.10 ~ 1.8.9)
Minecraft 1.9未満にはLoot Tablesというシステムがないので、Loot++というModを使ってドロップアイテムの変更を行います。
他のMod同様、modsフォルダの中に入れ、一度Minecraftを起動します。
するとconfigフォルダの中にLoot++と言うフォルダが作成されます。
Loot++フォルダには沢山のconfigファイル(.cfg)がありますが、アイテムドロップの変更で重要なのは以下の3ファイルとなります。
chest_content.cfg:ダンジョンや村などにあるチェストの中身を定義する
entity_drops.cfg:モンスターや動物を倒した際にドロップするアイテムを定義する
fishing_loot.cfg:釣りで得られるアイテムが定義を定義する
各cfgファイルの中には記述法に関する説明が書かれているので、その説明通りに修正することでアイテムドロップを変更できます。
試しに先ほど同様、ゾンビからStone Coinを1-3枚入手できるようにしてみましょう。
「config\Loot++\entity_drops.cfg」をメモ帳などで開き、addingの部分を以下のように記述します。
adding {
S:"Drops to add to entities:" <
Zombie-1.0-true-true_____i-customnpcs:npcCoinStone-1-3
}
これで先ほどと同様にゾンビからStone Coinを得る事が出来るようになりました。(プレイヤーが倒した時だけドロップする設定)
ちなみに、Loot++を使えば、他のModで追加されるモンスターや動物のドロップを変更することもできます。
Modで追加されたEntityのId(Ex. Zombie)は、「config\Loot++\IDs\Entity IDs.txt」の中に全てリスト化されているので、そちらをご確認ください。
今回はLoot TablesやLoot++といったModを使ったアイテムドロップの変更法をご紹介しましたが、これ以外にもアイテムドロップを変更する方法はいくつかあるようです。
皆さんもこれらの方法を使って、好きなアイテムを自由にばらまいて見ては如何でしょうか。
Studio POPPOのプログラム兼システム担当です。
ウォーキング・デッド大好き!ダリルかっこいいよっ!主食はキノコです。
スケルトンの弓ドロップがスケルトンのファイルに書かれてないんですがどこに書かれてますか?
スケルトンが落とす弓はLoottableで設定されているものではなく、多分、自身の装備品を落すか落とさないかによって設定されているのではないでしょうか。
調べてみたところMob PropertiesというModならEntityの装備品も設定できそうですが、私も使ったことないので詳しくは分かりません。ごめんなさい。
初心者なのです。1.7.10verをDLしたのですが
chest_content.cfg
entity_drops.cfg
fishing_loot.cfg
のどれも入っていなのです。どうしたらよいでしょうか。
教えてください。お願いします。
こんにちは。
>1.7.10verをDLしたのですが
Loot++を使用したという認識で合ってますか?
Loot++が正しく導入されている場合、configフォルダの中にLoot++というフォルダが作られます。(Loot++を入れた後、1度起動する必要があります)
通常であれば、そのLoot++というフォルダの中に、お探しの3ファイルが入っています。
もしconfigの中にLoot++フォルダが作成されていない場合はLoot++が正しく導入できていないのかもしれません。
Minecraft:1.7.10
forge:forge-1.7.10-10.13.4.1614
Loot++:Loot++-0.24_for_1.7
以上の条件で私の環境では起動が確認できているので、apple penさんの環境と違う点がありましたら、一度この条件で試してみるのも手かもしれません。
すみません。
起動して少し遊んだら見つかりました!
伊達あずささん 本当にありがとうございます!
また質問です。
もはや論外かもしれませんが、でうやってメモ帳で
config\Loot++\entity_drops.cfg などを開くのでしょうか?
教えてください。
すみません。
調べてたら分かりました。
ご迷惑をおかけしました。
質問です
loot_tablesのやり方で書き換えたのですが、メモ帳のまんま放り込んでいいのでしょうか?
教えてください。
こんばんは。
>loot_tablesのやり方で書き換えた
あれ?1.9以降のMinecraftで試されることにしたのでしょうか。
>メモ帳のまんま放り込んでいいのでしょうか?
メモ帳のままというのがminecraft.jarの中から7-Zipを使って取り出したloot_tablesのフォルダ内にあるjsonファイルをメモ帳をつかって内容を書き変えて上書き保存したという意味であればそれでかまいません。
ファイル名(もちろん拡張子も)を元のものから変えないように注意してくださいね。
書き変えたloot_tablesの導入法については本記事を参考にしてみてください。
ありがとうございます!
助かりました!
ルートテーブルの記述の
}
}
]
}
]
},
↑こういう空白ってなんか意味あるんですか?
無知な私にお教えください。お願いします。
人間が記述している時に、開いた括弧を閉じ忘れてしまったりしないように空白を入れて括弧の始まりと終わりが同じ高さに来るようにしています。
記述的には改行や空白は全て無視しても特に問題なく動きます。
上記例ですと・・・「}}]}]},」と書いてあったとしても特に問題はありません。
ちなみに
“entries”: [
]
を
“entries”:
[
]
と書くかどうかは好みによったりしますね。
解説ありがとうございます。
ドロップアイテムの個数なども設定できますか?
コメントありがとうございます。
でもって、ご質問に関してですが、loot_tableでもLoot++でもどちらでも可能です。
loot_tableであれば一番最初の例の赤字部分にある
“function”: “set_count”,
“count”: {
“min”: 1,
“max”: 3
}
この部分を弄ればドロップアイテムの個数が変えられます。
(この例だと1個から3個までをランダムに落とすことになります)
Loot++の場合であれば、
Zombie-1.0-true-true_____i-customnpcs:npcCoinStone-1-3
この文の最後1-3の所を変えればドロップする個数を変えられます。
例えばここを
Zombie-1.0-true-true_____i-customnpcs:npcCoinStone-2-5
とすれば2個から5個までをランダムに落とすようになります。