1.8のOreGenEvent利用による鉱石生成

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

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

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


[編集] OreGenEventを利用した鉱石生成

IWorldGeneretor利用よりも簡易的な鉱石生成のやり方
もちろん鉱石でなくても生成できる。
BlockPosやfmlパッケージ下のクラスパス等に気をつければ1.8以前でも利用可能である。

[編集] ソースコード

  • SampleOreGeneratorCore.java
package mods.gensample;
 
import省略
 
@Mod(modid="SampleOreGenerator",
     acceptedMinecraftVersions = "[1.8,1.8.9]")
public class SampleOreGeneratorCore
{
	/**
	Eventの登録を行う。
	*/
	@EventHandler
	public void init(FMLInitializationEvent event){
		MinecraftForge.ORE_GEN_BUS.register(this);
	}
 
	@SubscribeEvent
	public void generateOrePre(OreGenEvent.Pre event){
		WorldGenerator bedrockGen = new WorldGenMinable(Blocks.bedrock.getDefaultState(), 9);
		if(TerrainGen.generateOre(event.world, event.rand,bedrockGen, event.pos, OreGenEvent.GenerateMinable.EventType.CUSTOM))
			genStandardOre1(event.world, event.pos, 20, bedrockGen, 0, 96, event.rand);
	}
 
	/**
	 Standard ore generation helper. Generates most ores.
	 */
	protected void genStandardOre1(World world, BlockPos pos, int size, WorldGenerator generator, int minY, int maxY, Random rnd){
		int l;
 
		if(maxY < minY){
			l = minY;
			minY = maxY;
			maxY = l;
		}else if(maxY == minY){
			if(minY < 255){
				++maxY;
			}else{
				--minY;
			}
		}
 
		for(l = 0; l < size; ++l){
			BlockPos blockpos = pos.add(rnd.nextInt(16), rnd.nextInt(maxY - minY) + minY, rnd.nextInt(16));
			generator.generate(world, rnd, blockpos);
		}
	}
 
	/**
	 Standard ore generation helper. Generates Lapis Lazuli.
	 */
	protected void genStandardOre2(World world, BlockPos pos, int size, WorldGenerator generator, int minY, int maxY, Random rnd){
		for(int l = 0; l < size; ++l){
			BlockPos blockpos = pos.add(rnd.nextInt(16), rnd.nextInt(maxY) + rnd.nextInt(maxY) + minY - maxY, rnd.nextInt(16));
			generator.generate(world, rnd, blockpos);
		}
	}
}

[編集] 解説

genStandardOre等のメソッドの引数は読んで字の如しである。
WorldGeneratorのところには通常、WorldGenMinableが入るがそれ以外でも全く問題はない。
参考になるバニラのソースとしては、net.minecraft.world.biome.BiomeDecorator.java#generateOresなどがある。

チュートリアル
個人用ツール