提供: Minecraft Modding Wiki
移動先: 案内検索
(ソースコード)
 
(2人の利用者による、間の3版が非表示)
2行目: 2行目:
 
{{チュートリアル難易度|difficulty=0|clear=none}}
 
{{チュートリアル難易度|difficulty=0|clear=none}}
 
{{チュートリアルカテゴリー|type=World}}
 
{{チュートリアルカテゴリー|type=World}}
 
+
{{forge|version=1.8}}
 
==OreGenEventを利用した鉱石生成==
 
==OreGenEventを利用した鉱石生成==
 
<p>[[IWorldGeneretor]]利用よりも簡易的な鉱石生成のやり方<br>
 
<p>[[IWorldGeneretor]]利用よりも簡易的な鉱石生成のやり方<br>
16行目: 16行目:
  
 
@Mod(modid="SampleOreGenerator",
 
@Mod(modid="SampleOreGenerator",
     acceptedMinecraftVersions = "[1.8,1.8.8]")
+
     acceptedMinecraftVersions = "[1.8,1.8.9]")
 
public class SampleOreGeneratorCore
 
public class SampleOreGeneratorCore
 
{
 
{
27行目: 27行目:
 
}
 
}
  
@SubscribeEvent
+
@SubscribeEvent
 
public void generateOrePre(OreGenEvent.Pre event){
 
public void generateOrePre(OreGenEvent.Pre event){
 
WorldGenerator bedrockGen = new WorldGenMinable(Blocks.bedrock.getDefaultState(), 9);
 
WorldGenerator bedrockGen = new WorldGenMinable(Blocks.bedrock.getDefaultState(), 9);
71行目: 71行目:
  
 
==解説==
 
==解説==
<p>genStandardOre等のメソッドの引数は読んで字の如しである。<br>
+
genStandardOre等のメソッドの引数は読んで字の如しである。<br>
 
WorldGeneratorのところには通常、WorldGenMinableが入るがそれ以外でも全く問題はない。<br>
 
WorldGeneratorのところには通常、WorldGenMinableが入るがそれ以外でも全く問題はない。<br>
参考になるバニラのソースとしては、net.minecraft.world.biome.BiomeDecorator.java#generateOresなどがある。</p>
+
参考になるバニラのソースとしては、net.minecraft.world.biome.BiomeDecorator.java#generateOresなどがある。

2019年9月30日 (月) 22:21時点における最新版

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

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

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などがある。