提供: Minecraft Modding Wiki
2020年10月11日 (日) 12:40時点におけるRedice (トーク | 投稿記録)による版 (ページの作成:「{{前提MOD|reqmod="Fabric API 0.3.2 build 230~"}} {{チュートリアル難易度|difficulty=1|clear=none}} {{チュートリアルカテゴリー|difficulty=0|type=O…」)
(差分) ← 古い版 | 最新版 (差分) | 新しい版 → (差分)
移動先: 案内検索

この記事は"Fabric API 0.3.2 build 230~"を前提MODとしています。

Stone pickaxe.png
中級者向けのチュートリアルです。
C none.png
Oreに関係のあるチュートリアルです。

ワールド上で鉱石のようにブロックを生成する方法

動作確認済みのバージョン:1.16.3

鉱石を生成する

ソースコード

  • SampleMod.java
package com.example.ore;

import net.fabricmc.api.ModInitializer;
import net.minecraft.item.Item;
import net.minecraft.block.Block;
import net.minecraft.item.BlockItem;
import net.minecraft.item.ItemGroup;
import net.minecraft.util.Identifier;
import net.minecraft.util.registry.Registry;

public class SampleMod implements ModInitializer
    {
        /**
         * ModID文字列
         */
        public static final String MOD_ID = "samplemod";

        //鉱石作成
	public static ConfiguredFeature<?, ?> ORE_OAK_LOG_OVERWORLD = Feature.ORE
        .configure(new OreFeatureConfig(
          OreFeatureConfig.Rules.BASE_STONE_OVERWORLD,
          Blocks.OAK_LOG.getDefaultState(),
          9)) //鉱石(生成物)の最大サイズ
        .decorate(Decorator.RANGE.configure(new RangeDecoratorConfig(
          0, 
          0, //鉱石(生成物)Y座標の最小レベル
          64))) //鉱石(生成物)Y座標の最大レベル
        .spreadHorizontally()
        .repeat(20); // 1チャンクあたりの鉱石(生成物)の数

        @Override
        public void onInitialize()
        {
		//つくった鉱石(生成物)を登録
		Registry.register(BuiltinRegistries.CONFIGURED_FEATURE, new Identifier(MOD_ID, "ore_oak_log_overworld"), ORE_OAK_LOG_OVERWORLD);
        }
    }
}
  • samplemod.mixins.json
{
  "required": true,
  "minVersion": "0.8",
  "package": "com.github.ptom76.trialmod.mixin",
  "compatibilityLevel": "JAVA_8",
  "mixins": [
    "DefaultBiomeFeaturesMixin"
  ],
  "client": [
    "MixinMain"
  ],
  "injectors": {
    "defaultRequire": 1
  }
}

解説

public static final Block SAMPLE_BLOCK = new Block(FabricBlockSettings.of(Material.METAL).build());

素材を金属として設定。 ブロックを作成。

Registry.register(Registry.BLOCK, new Identifier(MOD_ID, "sample_block"), SAMPLE_BLOCK);
Registry.register(Registry.ITEM, new Identifier(MOD_ID, "sample_block"), new BlockItem(SAMPLE_BLOCK, new Item.Settings().group(ItemGroup.MISC)));

ブロックIDとアイテムIDの登録。 ブロックをアイテムとしてクリエイティブタグ、ItemGroup.MISC(その他)に登録。