Minecraft In Unity, Coal and Iron

I have a terrain generator that i got off of this site.

I have textures and stuff, and im not using there svn download since its messed up so I download there older one which is available here

http://sourceforge.net/projects/minepackage/files/WhereToGetTheStuff.txt/download

Well that txt file has the download link in it. I understand alot of it but im still confused on how to add stuff like coal into it. I have the textures and i set the texture options to what is required.

In the WorldData.cs I have this for the specific coal texture
SetBlockUVCoordinates(BlockType.Coal, 9,9,9);

The 9th element in the WorldGameObject Script/Prefab is set to look like this

World_Textures(Variable)

  • Size 10
  • Element 0 - Grass
  • Element 1 - Grass
  • Element 2 - Grass
  • I think you get the picture
  • Element 9 - Coal

In the Block.cs Script I Have this, plus more but this is all thats needed

public enum BlockType : byte

{

    TopSoil=0,

    Dirt=1,

    Light = 2,

    Lava = 3,

    Leaves=4,

    Stone = 5,

	Bark = 6,

	Water = 7,

	Coal = 8,

    Air = 255



}

For the DualLayerTerrainWithMediumValleys.cs How could i implement coal being placed at random? I was looking at the TreeScript that have and I noticed how they did the Random and in the DualLayerTerrainWithMediumValleys.cs I found this

if (sunlit)

                            {

                                blockType = BlockType.TopSoil;

                                chunk.TopSoilBlocks.Add(new IntVect(blockX, blockY, z));

                                sunlit = false;

                            }

                            else

                            {

                                blockType = BlockType.Dirt;

                                if (caveNoise < 0.2f)

                                {

									

									

										

											blockType = BlockType.Stone;	

										

                                }

                            }

Which would explain how it generates stone… I think, but i played around with that script for hours on end so how would i set up coal with it?

This is what i tried (FOR THAT SECTION OF CODE!)

if (sunlit)

                            {

                                blockType = BlockType.TopSoil;

                                chunk.TopSoilBlocks.Add(new IntVect(blockX, blockY, z));

                                sunlit = false;

                            }

                            else

                            {

                                blockType = BlockType.Dirt;

                                if (caveNoise < 0.2f)

                                {

									

									

									if (random.RandomRange(1, 100) < 99)

										{

											blockType = BlockType.Coal;	

											

										}

									else

									{

										blockType = BlockType.Stone;

									}

										

                                }

                            }

Which was basically a copy a paste from the terrain generation and i got this error

Assets/MineCraft/Scripts/TerrainGenerationMethods/DualLayerTerrainWithMediumValleys.cs(61,77): error CS0103: The name `random' does not exist in the current context

So where that function began I put Random random, in between the parameters so it looked like this

public void GenerateTerrain(WorldData worldData, Random random, Chunk chunk, int noiseBlockOffset)

Which sadly resulted in another error

Assets/MineCraft/Scripts/TerrainGenerationMethods/DualLayerTerrainWithMediumValleys.cs(3,16): error CS0535: `DualLayerTerrainWithMediumValleys' does not implement interface member `ITerrainGenerationMethod.GenerateTerrain(WorldData, Chunk, int)'

After I put the random code in, before i added it to the parameters in when i started going with my gut so i have no idea if i was even doing it somewhat right.

Thanks in Advanced

The tool is looking for a ‘Random’ class to generate the random values. Parsing in unity’s random isn’t going to work if they use different methods.

You could create a wrapper that wraps unity’s Random class with a class of your own to translate their method calls into methods that exist in Unity’s Random Class…

i.e.

public class MC_Random()
{
    private int m_seed = 1337;

    public MC_Random()
    {
        Random.seed = m_seed;
    }
    // not sure this is what they are requesting
    public float forRange(float p_min, float p_max)
    {
        float result = UnityEngine.Random.Range(p_min, p_max);
        // do other random code
        return result;
    }
}