MOD作成 - 簡単なブロックを追加する
ModIdやメインクラスのjavaファイル名などの各自で異なる部分はいちいち説明しないのでご注意を。
左のPackage Explorerから「src/main/java > com.masec.newmod」を右クリック、「New > Package」を押します。
Name:の「com.masec.newmod」の右に「.block」を書き足して「Finish」

作った「com.masec.new_mod.block」を右クリックして「New > Class」を押します。
クラス名はアイテム名と揃えます。今回は「TestIngotBlock」にしました。

● クラスのコード
作られたファイルを編集して、一旦ここまで作ります。
package com.masec.newmod.block;
import net.minecraft.block.Block;
import net.minecraft.block.material.Material;
public class TestIngotBlock extends Block {
public TestIngotBlock() {
super(Properties.of(Material.METAL));
}
}
書き換える場所をマーカーで示しました。
各自で違うところをマーカーしたやつ
桃色でマーカーしたところはブロックの素材を指定する部分です。以下から選んでください。
よくわからない項目は変数名を適当に訳しています。
| 変数 | 概要 |
|---|---|
| AIR | 空気 |
| STRUCTURAL_AIR | 構造的な空気 |
| PORTAL | ポータル |
| CLOTH_DECORATION | 布のデコレーション |
| PLANT | 植物 |
| WATER_PLANT | 水棲植物 |
| REPLACEABLE_PLANT | 置き換えられる植物 |
| REPLACEABLE_FIREPROOF_PLANT | 置き換えられる防火植物 |
| REPLACEABLE_WATER_PLANT | 置き換えられる水棲植物 |
| WATER | 水 |
| BUBBLE_COLUMN | 気泡 |
| LAVA | マグマ |
| TOP_SNOW | 雪 |
| FIRE | 炎 |
| DECORATION | 装飾 |
| WEB | クモの巣 |
| BUILDABLE_GLASS | 建築可能なガラス |
| CLAY | 粘土 |
| DIRT | 土 |
| GRASS | 草ブロック |
| ICE_SOLID | 氷塊 |
| SAND | 砂 |
| SPONGE | スポンジ |
| SHULKER_SHELL | シュルカーの殻 |
| WOOD | 木 |
| NETHER_WOOD | ネザーの木 |
| BAMBOO_SAPLING | タケノコ |
| BAMBOO | 竹 |
| WOOL | ウール |
| EXPLOSIVE | 爆発物 |
| LEAVES | 葉 |
| GLASS | ガラス |
| ICE | 氷 |
| CACTUS | サボテン |
| STONE | 石 |
| METAL | 金属 |
| SNOW | 雪ブロック |
| HEAVY_METAL | 重い金属 |
| BARRIER | バリアブロック |
| PISTON | ピストン |
| CORAL | サンゴ |
| VEGETABLE | 野菜 |
| EGG | (カメの)卵 |
| CAKE | ケーキ |
● ブロックの性質
以下のように super() の閉じカッコの前で改行して、一行に一つずつブロックの性質を書き加えていきます。
・.strength(float, float)
採掘にかかる秒数、爆発耐性を指定します。
・.harvestTool(ToolType)
採掘の適性ツールを指定します。 ToolType.AXE、 ToolType.HOE、 ToolType.PICKAXE、 ToolType.SHOVEL から選びます。
・.harvestLevel(Int)
アイテムドロップの適性ツールを指定します。0が木、1が石、2が鉄、3がダイヤ、4がネザライトです。
・.sound(SoundType)
破壊などのサウンドを指定します。以下から選んでください。
詳細
| 変数 | 概要 |
|---|---|
| WOOD | 木 |
| GRAVEL | 砂利 |
| GRASS | 草 |
| LILY_PAD | ハスの葉 |
| STONE | 石 |
| METAL | 金属 |
| GLASS | ガラス |
| WOOL | 羊毛 |
| SAND | 砂 |
| SNOW | 雪 |
| LADDER | ハシゴ |
| ANVIL | 金床 |
| SLIME_BLOCK | スライムブロック |
| HONEY_BLOCK | ハチミツブロック |
| WET_GRASS | 水棲植物 |
| CORAL_BLOCK | サンゴ |
| BAMBOO | 竹 |
| BAMBOO_SAPLING | タケノコ |
| SCAFFOLDING | 足場ブロック |
| SWEET_BERRY_BUSH | スイートベリーの茂み |
| CROP | 作物 |
| HARD_CROP | 固い作物(ビートルート) |
| VINE | ツタ |
| NETHER_WART | ネザーウォート |
| LANTERN | ランタン |
| STEM | ネザーの木 |
| NYLIUM | ナイリウム |
| FUNGUS | ネザーのキノコ |
| ROOTS | ネザーの草 |
| SHROOMLIGHT | シュルームライト |
| WEEPING_VINES | 歪んだツタ |
| TWISTING_VINES | 深紅のツタ |
| SOUL_SAND | ソウルサンド |
| SOUL_SOIL | ソウルソイル |
| BASALT | 玄武岩 |
| WART_BLOCK | ウォートブロック |
| NETHERRACK | ネザーラック |
| NETHER_BRICKS | ネザーレンガ |
| NETHER_SPROUTS | ネザースプラウト |
| NETHER_ORE | ネザーの鉱石(クォーツ) |
| BONE_BLOCK | 骨ブロック |
| NETHERITE_BLOCK | ネザライトブロック |
| ANCIENT_DEBRIS | 古代のがれき |
| LODESTONE | ロードストーン |
| CHAIN | チェーン |
| NETHER_GOLD_ORE | ネザー金鉱石 |
| GILDED_BLACKSTONE | 金入りブラックストーン |
その他のコンポーネント
詳細
・.noCollission()
当たり判定をなくす
・.noOcclusion()
オクルージョンを無効にする
・.friction(float)
摩擦を指定する
・.speedFactor(float)
上を歩いた時の速度を指定する
・.jumpFactor(float)
上に乗ったときのジャンプ力を指定する
・.lightLevel(int)
光源レベルを指定する
・.instabreak()
草花のように一瞬で壊せるようにする
・.randomTicks()
ランダムティックの影響を受けるようにする
・.dynamicShape()
・.noDrops()
壊しても何もドロップしないようにする
アイテムのパッケージを追加したときと同様に、 「com.masec.newmod.init」を右クリックしてクラスを新規作成します。クラス名は「BlockInit」です。
● クラスのコード
これもまた、作られたファイルを編集してこうなります。
package com.masec.newmod.init;
import com.masec.newmod.NewMod;
import com.masec.newmod.block.TestIngotBlock;
import net.minecraft.block.Block;
import net.minecraftforge.fml.RegistryObject;
import net.minecraftforge.registries.DeferredRegister;
import net.minecraftforge.registries.ForgeRegistries;
public class BlockInit {
public static final DeferredRegister BLOCKS = DeferredRegister.create(ForgeRegistries.BLOCKS, NewMod.MOD_ID);
public static final RegistryObject TEST_INGOT_BLOCK =BLOCKS.register("test_ingot_block", () -> new TestIngotBlock());
}
書き換える場所をマーカーで示しました。
各自で違うところをマーカーしたやつ
桃色でマーカーしたところはこのファイルで初めて定義しています。雰囲気を合わせて自分のものに置き換えてください(大文字とか) 「"test_ingot_block"」のほうはコマンドなどで使われる、アイテムのidとなります。
アイテムとしてのブロックを追加しないと、/setblockだけできて/giveできないということになります。バニラだとネザーポータルとかそうですね。
ItemInit.javaを開いて以下の行を書き加えます。各自で異なる部分に注意してください。
アイテムの時のように、メインクラスのファイルに少し書き加えます。
各自で名前が違うと思いますが「NewMod.java」を開きます。
これを書き加えて終わりです。上のほうは各自で書き換える部分がありますね。
Package Explorerから「src/main/resources」を右クリックして「data.new_mod.loot_table.blocks」というパッケージを作ります。

その中に「test_ingot_block.json」を作ります。
Package Explorerから「src/main/resources」を右クリックしてパッケージを作ります。名前は「assets.new_mod.blockstates」のようにします。
同様に、models.blockも追加します。

● モデル/テクスチャ
「assets.new_mod.blockstates」に「test_ingot_block.json」を作ります。ファイル名はブロックのIDです。
「assets.new_mod.models.block」にも「test_ingot_block.json」を作ります。ファイル名はブロックのIDです。
ブロックのアイテム用に「assets.new_mod.models.item」にも「test_ingot_block.json」を作ります。ファイル名はブロックのIDです。
Eclipseからちょっと出て、はじめに作ったフォルダの「src/main/resources/assets/newmod/textures」に
「blocks」フォルダを作り、テクスチャを入れます。テクスチャの名前は「test_ingot_block.png」のようにします。
最後はEclipseに戻り、「src/main/resources」を右クリックして「Refresh」します。
このように、きれいなブロックが追加できました。

