//static LibNoise.Primitive.SimplexPerlin mountains = new LibNoise.Primitive.SimplexPerlin("lol".GetHashCode(), NoiseQuality.Standard); //static LibNoise.Primitive.ImprovedPerlin caves = new LibNoise.Primitive.SimplexPerlin("lol".GetHashCode(), NoiseQuality.Standard); public static void Populate(ushort[] blocks, int chunkx, int chunky, bool save = false, bool erase = false) { string id; ushort cacheindex; Dictionary <ushort, string> idscache = new Dictionary <ushort, string>(); const double TreeSpawnChance = 0.01D; for (int z = 0; z < Chunk.Depth; z++) { for (int y = 0; y < Chunk.Height; y++) { for (int x = 0; x < Chunk.Width; x++) { cacheindex = blocks[x + Chunk.Width * y + Chunk.Width * Chunk.Height * z]; if (!idscache.TryGetValue(cacheindex, out id)) { id = ItemCache.GetIdentifier(cacheindex); idscache.Add(cacheindex, id); } if (id == "winecrash:grass" && GeneratorRandom.NextDouble() < TreeSpawnChance) { } } } } }
private static string ToJSON(ushort[] blocks) { Dictionary <string, int> distinctIDs = new Dictionary <string, int>(64); int[] blocksRef = new int[Chunk.TotalBlocks]; int chunkIndex = 0; int paletteIndex = 0; for (int z = 0; z < Chunk.Depth; z++) { for (int y = 0; y < Chunk.Height; y++) { for (int x = 0; x < Chunk.Width; x++) { string id = ItemCache.GetIdentifier(blocks[x + Chunk.Width * y + Chunk.Width * Chunk.Height * z]); if (!distinctIDs.ContainsKey(id)) { distinctIDs.Add(id, paletteIndex++); } blocksRef[chunkIndex++] = distinctIDs[id]; } } } return(JsonConvert.SerializeObject(new JSONChunk() { Palette = distinctIDs.Keys.ToArray(), Data = blocksRef }, Formatting.None)); }