提供: Minecraft Modding Wiki
2016年3月19日 (土) 10:34時点における新人もっだー (トーク | 投稿記録)による版
移動先: 案内検索

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

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


オーバーワールドに独自のバイオームを追加するサンプルです。

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

  • AddBiome.java
package sample;

import cpw.mods.fml.common.Mod;
import cpw.mods.fml.common.Mod.EventHandler;
import cpw.mods.fml.common.event.FMLInitializationEvent;
import cpw.mods.fml.common.event.FMLPostInitializationEvent;
import cpw.mods.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;

    
    

    @EventHandler
    public void preInit(FMLPreInitializationEvent event) {
    }

    @EventHandler
    public void init(FMLInitializationEvent event) {
        // 各種バイオームリストにバイオームを追加
        // 2つ目の引数はバイオーム発生頻度の重み付け。大きいほど頻繁
        // 独自のバイオーム。地表ブロックと地中ブロックがバニラとは異なる
    BiomeGenBase biome1 = (new BiomeGenSample1(biome1ID))
    .setColor(0xff0000)
    .setBiomeName("Sample1");
    BiomeManager.desertBiomes.add(new BiomeManager.BiomeEntry(biome1, 10));
    
    BiomeGenBase biome2 = (new BiomeGenSample2(biome2ID))
    .setColor(0x00ff00)
    .setBiomeName("Sample2");
    BiomeManager.desertBiomes.add(new BiomeManager.BiomeEntry(biome1, 10));

    BiomeGenBase biome3 = (new BiomeGenSample3(biome3ID))
    .setColor(0x00ff00)
    .setBiomeName("Sample3");
    BiomeManager.warmBiomes.add(new BiomeManager.BiomeEntry(biome3, 10));
    
    BiomeGenBase biome4 = (new BiomeGenSample4(biome4ID))
    .setColor(0xffff00)
    .setBiomeName("Sample4");
    BiomeManager.coolBiomes.add(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;//自作ブロックも可
        this.fillerBlock = Blocks.crafting_table;
    }
}
  • 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;
        this.fillerBlock = Blocks.dirt;
    }
}
  • 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;
        this.fillerBlock = Blocks.netherrack;
    }
}
  • 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;
        this.fillerBlock = Blocks.clay;
    }
}