提供: 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. | + | acceptedMinecraftVersions = "[1.8,1.8.9]") |
public class SampleOreGeneratorCore | public class SampleOreGeneratorCore | ||
{ | { | ||
27行目: | 27行目: | ||
} | } | ||
− | + | @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行目: | ||
==解説== | ==解説== | ||
− | + | genStandardOre等のメソッドの引数は読んで字の如しである。<br> | |
WorldGeneratorのところには通常、WorldGenMinableが入るがそれ以外でも全く問題はない。<br> | WorldGeneratorのところには通常、WorldGenMinableが入るがそれ以外でも全く問題はない。<br> | ||
− | 参考になるバニラのソースとしては、net.minecraft.world.biome.BiomeDecorator.java#generateOresなどがある。 | + | 参考になるバニラのソースとしては、net.minecraft.world.biome.BiomeDecorator.java#generateOresなどがある。 |
2019年9月30日 (月) 22:21時点における最新版
この記事は"Minecraft Forge Universal 11.14.0.xxx~"を前提MODとしています。 |
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などがある。