1.8のバイオーム追加

提供:Minecraft Modding Wiki
移動: 案内, 検索

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

Wood 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,
     acceptedMinecraftVersions = AddBiome.ACCEPTED_MC_VERSION)
public class AddBiome {
    public static final String MODID = "AddBiome";
    public static final String MODNAME = "AddBiome";
    public static final String VERSION = "1.0.0";
    public static final String ACCEPTED_MC_VERSION = "[1.8,1.8.9]";
 
    // バイオーム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();
    }
}
チュートリアル
個人用ツール