提供: Minecraft Modding Wiki
2015年9月22日 (火) 11:10時点におけるDrLuigi (トーク | 投稿記録)による版 (ページを追加しました。)
(差分) ← 古い版 | 最新版 (差分) | 新しい版 → (差分)
移動先: 案内検索

この記事は"Minecraft Forge Universal 11.14.3.1450"を前提MODとしています。

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


オーバーワールドに独自のバイオームを追加するサンプルです。 基本的なことは1.7のものを流用しています。

MODのエントリーポイントを作成

  • AddBiome.java
package sample;

import net.minecraftforge.fml.common.Mod;
import net.minecraftforge.fml.common.Mod.EventHandler;
import net.minecraftforge.fml.common.event.FMLInitializationEvent;
import net.minecraftforge.fml.common.event.FMLPostInitializationEvent;
import net.minecraftforge.fml.common.event.FMLPreInitializationEvent;
import net.minecraft.world.biome.BiomeGenBase;
import net.minecraftforge.common.BiomeManager;

@Mod(modid = AddBiome.MODID, name = AddBiome.MODNAME, version = AddBiome.VERSION)
public class AddBiome {
    public static final String MODID = "AddBiome";
    public static final String MODNAME = "AddBiome";
    public static final String VERSION = "1.0.0";

    // バイオームIDを指定
    // ここでは決め打ちにしているが、他MODが追加するバイオームとIDが重複する可能性があるので、
    // 設定ファイルで変更できるようにするか、自動的に割り振るようにするとよい
    public static int biome1ID = 40;
    public static int biome2ID = 41;
    public static int biome3ID = 42;
    public static int biome4ID = 43;

    // 独自のバイオーム。地表ブロックと地中ブロックがバニラとは異なる
    public static final BiomeGenBase biome1 = (new BiomeGenSample1(biome1ID)).setColor(0xff0000).setBiomeName("Sample1");
    public static final BiomeGenBase biome2 = (new BiomeGenSample2(biome2ID)).setColor(0x00ff00).setBiomeName("Sample2");
    public static final BiomeGenBase biome3 = (new BiomeGenSample3(biome3ID)).setColor(0x00ff00).setBiomeName("Sample3");
    public static final BiomeGenBase biome4 = (new BiomeGenSample4(biome4ID)).setColor(0xffff00).setBiomeName("Sample4");

    @EventHandler
    public void preInit(FMLPreInitializationEvent event) {
    }

    @EventHandler
    public void init(FMLInitializationEvent event) {
        // 各種バイオームリストにバイオームを追加
        // 2つ目の引数はバイオーム発生頻度の重み付け。大きいほど頻繁
        BiomeManager.addBiome(BiomeType.DESERT, new BiomeManager.BiomeEntry(biome1, 10));
        BiomeManager.addBiome(BiomeType.ICY, new BiomeManager.BiomeEntry(biome2, 10));
        BiomeManager.addBiome(BiomeType.WARM, new BiomeManager.BiomeEntry(biome3, 10));
        BiomeManager.addBiome(BiomeType.COOL, new BiomeManager.BiomeEntry(biome4, 10));
    }

    @EventHandler
    public void postInit(FMLPostInitializationEvent event) {
    }
}

独自のバイオームを追加

  • BiomeGenSample1 .java

地表ブロックがガラス、地中ブロックが作業台のバイオームです。

package sample;

import net.minecraft.init.Blocks;
import net.minecraft.world.biome.BiomeGenDesert;

public class BiomeGenSample1 extends BiomeGenDesert {
    public BiomeGenSample1(int p_i1986_1_) {
        super(p_i1986_1_);
        this.topBlock = Blocks.glass.getDefaultState();
        this.fillerBlock = Blocks.crafting_table.getDefaultState();
    }
}
  • BiomeGenSample2 .java

地表ブロックがかぼちゃ、地中ブロックが砂利のバイオームです。

package sample;

import net.minecraft.init.Blocks;
import net.minecraft.world.biome.BiomeGenDesert;

public class BiomeGenSample2 extends BiomeGenDesert {
    public BiomeGenSample2(int p_i1986_1_) {
        super(p_i1986_1_);
        this.topBlock = Blocks.pumpkin.getDefaultState();
        this.fillerBlock = Blocks.gravel.getDefaultState();
    }
}
  • BiomeGenSample3 .java

地表ブロックがネザーレンガ、地中ブロックがネザーラックのバイオームです。

package sample;

import net.minecraft.init.Blocks;
import net.minecraft.world.biome.BiomeGenDesert;

public class BiomeGenSample3 extends BiomeGenDesert {
    public BiomeGenSample3(int p_i1986_1_) {
        super(p_i1986_1_);
        this.topBlock = Blocks.nether_brick.getDefaultState();
        this.fillerBlock = Blocks.netherrack.getDefaultState();
    }
}
  • BiomeGenSample4 .java

地表ブロックがメロン、地中ブロックが粘土のバイオームです。

package sample;

import net.minecraft.init.Blocks;
import net.minecraft.world.biome.BiomeGenDesert;

public class BiomeGenSample4 extends BiomeGenDesert {
    public BiomeGenSample4(int p_i1986_1_) {
        super(p_i1986_1_);
        this.topBlock = Blocks.melon_block.getDefaultState();
        this.fillerBlock = Blocks.clay.getDefaultState();
    }
}