この記事では、Minecraft Java Edition(バージョン1.20.4)の情報をもとに執筆しています。
そのほかのバージョンや機種などでの動作は保証できません。
こんにちは!
マインクラフターのなつめです。
この記事では、こんな疑問を解決します!
- copy_nameでCustomNameをコピーする
- 実例
copy_nameを使用することで、その意味の通り名前をコピーすることが可能です。
ただし、どの部分を参照しているのかといったことをきちんと把握しなければ、理解が難しくなるため、ぜひこの記事を参考に勉強してくださいね。
それでは、さっそく見ていきましょう!
本記事で紹介するデータパックのサンプルはGitHubにてダウンロードできます。
copy_nameで名前をコピーする
copy_nameを指示することで、名前をコピーすることが出来ます。
もう少し詳しく説明をすると、CustomNameを持ったmobを倒した時にドロップ品に対してそのCustomNameを反映させることが可能です。
「サンプル君」と名付けられたタラを倒したときに、ドロップアイテムに対してcopy_nameを指示しておけば、そのアイテムは「サンプル君」という名前でドロップします。
また適切に書き込めば、チェストなどを壊した際にそのドロップアイテムに対しても名前を反映させることも可能です。
ブロックにはCustomNameが存在しないため、tag内のdisplay.Nameを参照します。
まとめると、参照元と反映元が適切であれば名前をコピーすることが可能で、様々な場面で活用することが出来ます。
実例
ここからは実際の例を見ていきます。
mobを倒した時のルートテーブルとブロックを壊した時のルートテーブルの2通りを紹介するので、ぜひ参考にしてください。
データパックのファイル構成については以下の通りです。
- データパック本体
- data
- minecraft
- loot_tables
- blocks
- jsonファイル
- entities
- jsonファイル
- blocks
- loot_tables
- minecraft
- pack.mcmeta
- data
それぞれのjsonファイルは、デフォルトのルートテーブルを上書きする必要がある点に要注意です。
また、ルートテーブルの作成には生成サイトをおすすめします。
mobをキルした場合
{
"pools": [
{
"rolls": 1,
"bonus_rolls": 0,
"entries": [
{
"type": "minecraft:item",
"name": "minecraft:emerald",
"functions": [
{
"function": "minecraft:copy_name",
"source": "this"
}
]
}
]
}
]
}
mobを倒した場合ということで、今回はタラのドロップアイテムを上書きしたものとします。
タラを倒すことでエメラルドがドロップするようにしており、さらにそのエメラルドの名前はcopy_nameによってタラの名前が反映されます。
copy_nameのsource部分に”this”という記載があるため、タラの名前を参照するようになっている点を覚えておきましょう。
ほかの項目を選んだ場合には、うまく参照できず変化が起きません。
名前付きのタラを召喚する場合には、以下のようなコマンドが必要です。
execute as @a at @s positioned ^ ^0.3 ^0.3 run summon cod ~ ~ ~ {CustomName:'[{"text":"サンプル君"}]'}
ブロック破壊時の場合
ブロック破壊時の場合は、sourceに”block_entity”を指示する必要があります。
タラ(mob)の時とは違い、“this”は使えません。
とはいえ、基本的な書き方については同じです。
以下のように記述します。
{
"type": "minecraft:block",
"pools": [
{
"rolls": 1,
"entries": [
{
"type": "minecraft:item",
"name": "minecraft:diamond",
"functions": [
{
"function": "minecraft:copy_name",
"source": "block_entity"
}
]
}
]
}
]
}
上記をチェストのルートテーブルと置き換えた場合、チェストを壊すことでダイヤモンドが手に入るようになり、その名前はチェストに名付けられていたものと同じになります。
まとめ
というわけで、今回のまとめです。
- copy_nameを指示することで、CustomNameやdisplay.Nameを参照して名前を反映させることが出来る。
この記事は以上になります。
2016年からマイクラを楽しんでおり、最近はクリエイティブモードでコマンドを駆使して遊んでいます!