[1.7.10]ワールドに木を生成する方法

Modding・サーバPlugin制作・ツール制作など、開発関連の質問があればこちらにお願い致します。
フォーラムルール
質問関連フォーラムで質問する時は、必ず次のトピックを一読/厳守お願い致します。
viewtopic.php?f=5&t=999
  • (PostNo.233930)

[1.7.10]ワールドに木を生成する方法

投稿記事by sakura303 » 2015年6月03日(水) 20:03

Mod等を今まで作っていたのですが、鉱石などの生成はできたものの、どうしても木の生成ができません。
ソースは ~~.biomeパッケージに作ったり ~~.worldパッケージに作ったりしていろいろ試したり、
3つに分割したり1つにまとめたりもしましたが、
どうにもうまくいきません。ソースコードのサンプルや、記載してあるページを
教えてくださると幸いです。

com.name.world パッケージに作ったソース
package sakura.aldebaran.world;

import java.util.Random;

import sakura.aldebaran.blocks.AldebaranBlocks;
import net.minecraft.init.Blocks;
import net.minecraft.world.World;
import net.minecraft.world.biome.BiomeGenBase;
import net.minecraft.world.chunk.IChunkProvider;
import net.minecraftforge.common.BiomeDictionary;
import cpw.mods.fml.common.IWorldGenerator;

public class WorldGenMatchaTree implements IWorldGenerator {

private int genDim1 = 0;

@SuppressWarnings("deprecation")
@Override
public void generate(Random random, int chunkX, int chunkZ, World world,
IChunkProvider chunkGenerator, IChunkProvider chunkProvider) {

genDim1 = world.provider.dimensionId;

int chunk2X = chunkX << 4;
int chunk2Z = chunkZ << 4;

if ((genDim1 == 0))
{
for(int i = 0; i < i; i++)//tea
{
int PosX = chunk2X + random.nextInt(16);
int PosY = 70 + random.nextInt(30);
int PosZ = chunk2Z + random.nextInt(16);

if (world.getBlockLightValue(PosX, PosY, PosZ) > 11 && world.isAirBlock(PosX, PosY, PosZ) && world.getBlock(PosX, PosY - 1, PosZ) == Blocks.grass)
{
world.setBlock(PosX, PosY, PosZ, AldebaranBlocks.ZontaOre, 0, 2);
}
}

for(int i = 0; i < i; i++)//cassis&camellia
{
int PosX = chunk2X + random.nextInt(16);
int PosY = 60 + random.nextInt(30);
int PosZ = chunk2Z + random.nextInt(16);

BiomeGenBase biome = world.getBiomeGenForCoords(PosX, PosZ);

if (BiomeDictionary.isBiomeOfType(biome, BiomeDictionary.Type.FOREST) && world.getBlock(PosX, PosY - 1, PosZ) == Blocks.grass
&& !world.isBlockNormalCubeDefault(PosX, PosY, PosZ, false))
{
if (BiomeDictionary.isBiomeOfType(biome, BiomeDictionary.Type.FROZEN))
{
world.setBlock(PosX, PosY, PosZ, AldebaranBlocks.ZontaOre, 2, 2);
}
else
{
world.setBlock(PosX, PosY, PosZ, AldebaranBlocks.ZontaOre, 1, 2);
}
}
}
}

}

}
アバター
sakura303
ID:f67d7fd5
水から上がったとこ
 
記事: 5
登録日時: 2014年4月07日(月) 15:01

  • (PostNo.238468)

Re: [1.7.10]ワールドに木を生成する方法

投稿記事by エリンギ » 2015年7月12日(日) 21:54

sakura303 さんが書きました:Mod等を今まで作っていたのですが、鉱石などの生成はできたものの、どうしても木の生成ができません。
ソースは ~~.biomeパッケージに作ったり ~~.worldパッケージに作ったりしていろいろ試したり、
3つに分割したり1つにまとめたりもしましたが、
どうにもうまくいきません。ソースコードのサンプルや、記載してあるページを
教えてくださると幸いです。

com.name.world パッケージに作ったソース
package sakura.aldebaran.world;

import java.util.Random;

import sakura.aldebaran.blocks.AldebaranBlocks;
import net.minecraft.init.Blocks;
import net.minecraft.world.World;
import net.minecraft.world.biome.BiomeGenBase;
import net.minecraft.world.chunk.IChunkProvider;
import net.minecraftforge.common.BiomeDictionary;
import cpw.mods.fml.common.IWorldGenerator;

public class WorldGenMatchaTree implements IWorldGenerator {

private int genDim1 = 0;

@SuppressWarnings("deprecation")
@Override
public void generate(Random random, int chunkX, int chunkZ, World world,
IChunkProvider chunkGenerator, IChunkProvider chunkProvider) {

genDim1 = world.provider.dimensionId;

int chunk2X = chunkX << 4;
int chunk2Z = chunkZ << 4;

if ((genDim1 == 0))
{
for(int i = 0; i < i; i++)//tea
{
int PosX = chunk2X + random.nextInt(16);
int PosY = 70 + random.nextInt(30);
int PosZ = chunk2Z + random.nextInt(16);

if (world.getBlockLightValue(PosX, PosY, PosZ) > 11 && world.isAirBlock(PosX, PosY, PosZ) && world.getBlock(PosX, PosY - 1, PosZ) == Blocks.grass)
{
world.setBlock(PosX, PosY, PosZ, AldebaranBlocks.ZontaOre, 0, 2);
}
}

for(int i = 0; i < i; i++)//cassis&camellia
{
int PosX = chunk2X + random.nextInt(16);
int PosY = 60 + random.nextInt(30);
int PosZ = chunk2Z + random.nextInt(16);

BiomeGenBase biome = world.getBiomeGenForCoords(PosX, PosZ);

if (BiomeDictionary.isBiomeOfType(biome, BiomeDictionary.Type.FOREST) && world.getBlock(PosX, PosY - 1, PosZ) == Blocks.grass
&& !world.isBlockNormalCubeDefault(PosX, PosY, PosZ, false))
{
if (BiomeDictionary.isBiomeOfType(biome, BiomeDictionary.Type.FROZEN))
{
world.setBlock(PosX, PosY, PosZ, AldebaranBlocks.ZontaOre, 2, 2);
}
else
{
world.setBlock(PosX, PosY, PosZ, AldebaranBlocks.ZontaOre, 1, 2);
}
}
}
}

}

}

生成に関してはこちらが(逆さまの木ですが)参考になるかと思われます。
アバター
エリンギ
ID:ec3f0f1f
掘り廃人
 
記事: 1674
登録日時: 2013年11月30日(土) 17:18


Return to 質問:開発・制作関連

x