public static void Build(Chunk chunk, BlockPos pos, TerrainGen terrainGen) { int leaves = terrainGen.GetNoise(pos.x + chunk.pos.x, 0, pos.z + chunk.pos.z, 1f, 2, 1) + 1; for (int x = -leaves; x <= leaves; x++) { for (int y = 3; y <= 6; y++) { for (int z = -leaves; z <= leaves; z++) { TerrainGen.SetBlock(chunk, "leaves", pos.Add(x, y, z), true); } } } for (int y = 0; y <= 5; y++) { TerrainGen.SetBlock(chunk, "log", pos.Add(0, y, 0), true); } }
//same tree every time public void CreateTree(int x, int y, int z, Chunk chunk, bool upsideDown, string company, int height) { StockInventory inven = GameObject.Find("StockDatabase").GetComponent <StockInventory>(); Company c = (Company)inven.companyTranslation[company]; int seas = GameObject.Find("Clock").GetComponent <Calendar>().month; List <double> list = (List <double>)inven.stocksValue[c]; double curr = list[seas]; double min = c.min; double inc = c.incrementer; double temp = (curr - min) / inc; int type = (int)temp; type = Mathf.Min(type, 4); type = Mathf.Max(type, 0); //create leaves if (height >= 3) { for (int xi = -2; xi <= 2; xi++) { for (int yi = height; yi <= height + 4; yi++) { for (int zi = -2; zi <= 2; zi++) { if (!upsideDown) { Block leavesBlock; //TODO change leaf color if (type == 0) { leavesBlock = new BlockLeaves0(); //leavesBlock.SetCompany(company); } else if (type == 1) { leavesBlock = new BlockLeaves1(); } else if (type == 2) { leavesBlock = new BlockLeaves2(); } else if (type == 3) { leavesBlock = new BlockLeaves3(); } else { leavesBlock = new BlockLeaves4(); } //BlockGreenLeaves leavesBlock = new BlockGreenLeaves(); leavesBlock.SetCompany(company); //TerrainGen.SetBlock(x + xi, y + yi, z + zi, leavesBlock, chunk, true); SetBlock(x + xi, y + yi, z + zi, leavesBlock); } else { TerrainGen.SetBlock(x - xi, y - yi, z - zi, new BlockOrangeLeaves(), chunk, true); } } } } } //create trunk //replace height avg // int height = 6; for (int yt = 0; yt < height; yt++) { if (!upsideDown) { Block block = GetCompanyBlock(company); SetBlock(x, y + yt, z, block, chunk, true); SetBlock(x, y + yt, z, block); } else { SetBlock(x, y - yt, z, new BlockWhiteWood(), chunk, true); } } }
public virtual void SetBlock(int x, int y, int z, Block block) { terrain.SetBlock(x, y, z, block); }