はじめに
先日のマインクラフトver1.21.20のアップデートにより、「ホリデークリエイターの特徴」が削除されてアドオン制作界隈に激震が走った件については記憶に新しいでしょう。それに伴い、多くのアイテムが使用できなくなってしまいました。この件についての詳細は、こちらの記事をご覧ください。
したがって、旧来のアイテムについては何らかの変更が必要になります。本記事では、何もしないアイテム・食べ物・武器について、具体的にコードのどの部分を変更すればよいかについて解説します。なお、アドオンそのものの制作方法については本記事では省略しますので、ご存じない方はまずこちらの記事を閲覧なさることをお勧めします。
また、本記事の内容はYoutube動画でも発信しておりますので、宜しければご覧ください。
コードの修正点
以下では、アプデ後でも有効な具体的なコードを示しながら、修正事項について解説します。
何もしないアイテム
{
"format_version": "1.21.10",
"minecraft:item": {
"description": {
"identifier": "test:test_item"
},
"components": {
"minecraft:icon": "test_item"
}
}
}
こちらについては複雑な変更点はありません。format_versionを1.21.10に変更すればOKです。また、minecraft:iconの書き方が変更になっている点には注意しましょう。
食べ物
{
"format_version": "1.21.10",
"minecraft:item": {
"description": {
"identifier": "test:curry",
"menu_category":{
"group":"itemGroup.name.crop",
"category":"nature"
}
},
"components": {
"minecraft:icon":"curry",
"minecraft:use_modifiers": {
"use_duration": 1.6,
"movement_modifier": 0.35
},
"minecraft:use_animation": "eat",
"minecraft:food":{
"can_always_eat": true,
"nutrition" : 3,
"saturation_modifier": 0.6
}
}
}
}
食べ物についてはやや変更点が多めです。format_versionを1.21.10に変更したうえで、menu_categoryを配置する必要があります。また、minecraft:iconの記述方法が変更になっていますので、注意しましょう。本件については動画内でも言及しております。

また、use_modifersといってアイテムを使用する時間などを設定する必要があります。さらに、minecraft:food内のsaturation_modifierについてはString型ではなくFloat型(数値を指定)になっている点にも留意しましょう。
武器
{
"format_version": "1.21.10",
"minecraft:item": {
"description": {
"identifier": "test:test_sword",
"menu_category":{
"group":"itemGroup.name.crop",
"category":"nature"
}
},
"components": {
"minecraft:max_stack_size":1,
"minecraft:hand_equipped":true,
"minecraft:enchantable":{"value":10,"slot":"sword"},
"minecraft:icon":"test_sword",
"minecraft:damage": 25
}
}
}
こちらも食べ物と凡そ同様です。特に解説の必要はないかと思います。
ジェネレーターもある
上記のようなアイテムについては、自動生成するWEBアプリを作成しました。これを用いることで、感覚的&楽にオリジナルアイテムを作成することができます。是非、ご覧ください:
その他のアイテム
その他のアイテム、例えば「使うことができるアイテム」などはeventsやon_consumeが削除されている都合上、ScriptAPIの使用が必須となってきます。ScriptAPIとは、プログラミング言語の一種であるJavascriptを用いて、マインクラフトのシステムを制御できる機能のことです。例えば、
function kansu(item,command){
server.world.beforeEvents.itemUse.subscribe(ev => {
if (ev.itemStack.typeId == item){
ev.source.runCommandAsync(command);
}
});
}
のようにアイテムを使用した際にコマンドを実行する関数を制作するといった方法が考えられます。ScriptAPIについてはこちらも併せてご覧ください。
また、以下の記事では、ScriptAPIにおいてよく使われるフレーズをまとめております。こちらもご覧いただくと、ScriptAPIに関する知識が深まります。
また、公式のアナウンスにもありますが、「カスタムコンポーネント(Custom component)」を用いるのも一つの方法です。こちらもAPIスクリプトに依存し、アップデート後でも動作可能です。カスタムコンポーネントおよびScriptAPIについての詳細はいずれ記事にする予定ですので、少々お待ちください。
おすすめの本
前述の通り、ScriptAPIはプログラミング言語のひとつ、Javascriptをベースとしたシステムです。したがって、これを扱う上でJavascriptに関する文法・構文知識が必須となります。ネット上に存在する情報を断片的に拾いながら習得することも可能ですが、それよりも一冊の本を読んで体系的・網羅的な情報を身につけることのほうが一般的です。ここでは、Javascriptを習得する上で私がお勧めする本を1冊提示します。
こちらはJavascriptの習得に向けて私が実際に購入した本であり、この一冊でJavascriptに関する基本的な情報を体系的に得ることができました。決して安くはないですが、私自身この本だけで習得が完結したことを考慮すると、非常に満足のいく買い物だったと考えています。
おしまい
というところで本記事の解説を終わります。記事内に誤りがありましたらご指摘をお願いします。