提供: Minecraft Modding Wiki
2022年1月15日 (土) 09:45時点におけるVillager (トーク | 投稿記録)による版 ((priority = EventPriority.HIGH)を追加)
(差分) ← 古い版 | 最新版 (差分) | 新しい版 → (差分)
移動先: 案内検索

この記事は"Minecraft Forge 1.16-36.0.x~"を前提MODとしています。

Wood pickaxe.png
初心者向けのチュートリアルです。
C item.png
Itemに関係のあるチュートリアルです。


ここでは、1.16.xの鉱石の生成方法を解説します。

ソース[編集]

SampleMod.java

/*パッケージ・インポートは省略*/
@Mod(SampleMod.MOD_ID)
public class SampleMod {
    public static final String MOD_ID = "sample";

    public SampleMod() {
        MinecraftForge.EVENT_BUS.register(new ModEventBus())
    }

    public static final Block sample_ore = new Block(AbstractBlock.Properties.create(Material.ROCK)
        )
        .setRegistryName(new ResourceLocation(SampleMod.MOD_ID, "sample_ore"));

    public static class ModEventBus {
        @SubscribeEvent(priority = EventPriority.HIGH)
        public void BiomeLoadingEvent(final BiomeLoadingEvent event) {
            event.getGeneration.addFeature(GenerationStage.Decoration.UNDERGROUND_ORES,
                Feature.ORE.withConfiguration(
                new OreFeatureConfig(OreFeatureConfig.FillerBlockType.BASE_STONE_OVERWORLD, SampleMod.sample_ore.defaultBlockState(), 10))
                .range(30).square().count(10)))
        }
    }

   /*ブロックの登録等省略*/
}

解説[編集]

1.13から、@ModにはMOD_IDだけ記述するようになったので注意です。

ブロックの追加・登録方法は、1.16のブロック追加をご覧ください。

Modメインクラスに引数なしのコンストラクタを追加してあのように書くと、ModEventBusがいろいろなeventが動きます。

そこでBiomeLoadingEventのメソッドを作って、event.getGeneration一つ一つにaddFeatureをして鉱石を追加します。

OreFeatureConfigのコンストラクタは、(置き換え元ブロック, 置き換え先ブロック状態, 1回に生成される最大の数)です。

.range()で最大生成高度を設定します。

.square()は謎です。

.count()で1チャンク当たりの生成回数を設定します。