こんばんは。Nakanishiです。
Discordサーバーを運営中です。
一緒にゆるくMod制作を楽しみませんか?
※)日本語での会話ができる方のみ参加可能です。
条件に合わない方は参加をご遠慮ください。
前回のおさらい
木材のボタンを追加しました。
JavaでMinecraftのModを作ろう☆ 木材編⑨ 〜ボタンを作ろう〜 - NakanishiのForge1.20.1のJavaMod開発講座
今回は感圧板を作っていこうと思います。
①JSONファイルを用意しよう
テクスチャは木材編①で扱った【pale_oak_planks.png】を使います。
なので見た目で必要なものは【models/block】【models/item】【blockstates】になります。
まず、【models/block】から作っていきます。感圧板の【models/block】は押される前と押された後の2種類必要になります。
pale_oak_pressure_plate.json例)
{
"parent": "minecraft:block/pressure_plate_up",
"textures": {
"texture": "nakanishi_mod:block/pale_oak_planks"
}
}

pale_oak_pressure_plate_down.json例)
{
"parent": "minecraft:block/pressure_plate_down",
"textures": {
"texture": "nakanishi_mod:block/pale_oak_planks"
}
}

これで【models/block】は完成です。次に【models/item】を作っていきます。
pale_oak_pressure_plate.json例)
{
"parent": "nakanishi_mod:block/pale_oak_pressure_plate"
}

これで【model】は完成です。次に【blockstate】を作っていきます。
pale_oak_pressure_plate.json例)
{
"variants": {
"powered=false": {
"model": "nakanishi_mod:block/pale_oak_pressure_plate"
},
"powered=true": {
"model": "nakanishi_mod:block/pale_oak_pressure_plate_down"
}
}
}

これで【blockstate】は完成で、見た目のJSONファイルは完成です。
②CLASSファイルを作ろう
今回は名前を【Block_Pale_Oak_Pressure_Plate】にしました。

感圧板は【PressurePlateBlock】というクラスを使います。
例)
extends PressurePlateBlock

赤線が引かれてますので、仮のパラメータと引数を表示させてあげましょう。

そうすると【Properties】と【BlockSetType】の他に、【Sensitivity】という引数を要求されます。
💡ポイント
・【Sensitivity】とは、どのエンティティが乗ったら反応するかを指しています。【EVERYTHING】にすると、木材の感圧板のように矢やアイテムでも反応し、【MOBS】にすると、石の感圧板のようにモブが乗った状態のみ反応します。
例)
super(Sensitivity.EVERYTHING,
Properties.copy(Blocks.OAK_PRESSURE_PLATE),
BlockSetType.OAK);

ここまで書けたら、レジストリ登録をしていきます。
ブロック登録例)
public static final RegistryObject<Block> PALE_OAK_PRESSURE_PLATE = BLOCKS.register("pale_oak_pressure_plate", Block_Pale_Oak_Pressure_Plate::new);

アイテム登録例)
public static final RegistryObject<Item> PALE_OAK_PRESSURE_PLATE = BLOCK_ITEMS.register("pale_oak_pressure_plate"
, () -> new BlockItem(Blocks.PALE_OAK_PRESSURE_PLATE.get(), new Item.Properties()));

これで【Pale Oak Pressure Plate】がゲーム内に反映されました。
それでは残りの登録もしていきましょう。
③設定を追加しよう
まず翻訳から追記していきます。
追記例)
"item.nakanishi_mod.pale_oak_pressure_plate": "Pale Oak Pressure Plate",
"block.nakanishi_mod.pale_oak_pressure_plate": "Pale Oak Pressure Plate"

次にクリエイティブタブのリストに追記します。

次にサバイバルモードで破壊した際にドロップするように、【loot_table】を追加します。
pale_oak_pressure_plate.json例)
{
"type": "minecraft:block",
"pools": [
{
"bonus_rolls": 0.0,
"conditions": [
{
"condition": "minecraft:survives_explosion"
}
],
"entries": [
{
"type": "minecraft:item",
"name": "nakanishi_mod:pale_oak_pressure_plate"
}
],
"rolls": 1.0
}
],
"random_sequence": "nakanishi_mod:blocks/pale_oak_pressure_plate"
},

今度はタグ登録をしていきます。【wooden_pressure_plates.json】に追記していきます。
場所は
【resources/data/minecraft/tags/blocks/wooden_pressure_plates.json】
になります。
例)
{
"values": [
"nakanishi_mod:pale_oak_pressure_plate"
]
}

【wooden_pressure_plates】は斧の適正ツールに入っているので【mineable】の追記は不要です。
それでは動作確認をしてみましょう。

感圧板に乗るとドアが開きました。

アイテムが乗ってもドアが開きました。

適正ツールは斧になってます。
これで感圧板の完成です。
ここまでお疲れ様でした☆
次回は樹皮を剝いだ原木・木の作り方について書いていこうと思います。
こちらは斧の設定を追加する必要があるので、2記事に分けて書こうと思います。
もしこの記事が参考になった、または「JavaでMod制作を始めてみたい!」と思っていただけたら、ぜひ読者登録をお願いします。
それではまた次回お会いしましょう。
ここまでお読みいただき、ありがとうございました。