Actor:BindToMessageParallel("Generation", function(Message)
task.desynchronize()
print("Working")
local Start = Message[1]
local End = Message[2]
local BlockScale = Message[3]
local TrrainThreshhold = Message[4]
local WaterEnabled = Message[5]
local WorldSize = Message[6]
local Seed = Message[7]
for z = Start, End do
for x = 1, WorldSize do
local NoiseTrrain = math.noise(x * 0.1, Seed, z * 0.1) * BlockScale
NoiseTrrain = math.clamp(NoiseTrrain, -6, 6)
NoiseTrrain = (NoiseTrrain > TrrainThreshhold and TrrainThreshhold or NoiseTrrain) / TrrainThreshhold
NoiseTrrain = (1 - NoiseTrrain)
local Vector3Position = Vector3.new(x * BlockScale, NoiseTrrain * BlockScale, z * BlockScale)
local Position = CFrame.new(Vector3Position)
local Size = Vector3.new(BlockScale, BlockScale, BlockScale)
local Material
if Position.Y >= 17 then
Material = Enum.Material.Rock
Terrain:FillBlock(Position - Vector3.new(0, BlockScale * 5, 0), Vector3.new(BlockScale, (BlockScale * 12) - NoiseTrrain, BlockScale), Enum.Material.Ground)
elseif Position.Y <= 0.5 and WaterEnabled then
Material = Enum.Material.Water
Terrain:FillBlock(Position - Vector3.new(0, BlockScale * 5, 0), Size, Enum.Material.Rock)
Terrain:FillBlock(Position - Vector3.new(0, BlockScale * 7, 0), Vector3.new(BlockScale, (BlockScale * 12) - NoiseTrrain, BlockScale), Enum.Material.Ground)
else
Material = Enum.Material.Grass
Terrain:FillBlock(Position - Vector3.new(0, BlockScale * 5, 0), Vector3.new(BlockScale, (BlockScale * 12) - NoiseTrrain, BlockScale), Enum.Material.Ground)
local TreeNoise = math.noise(x * 0.01, Seed, z * 0.01)
if math.abs(TreeNoise) >= 0.2 and GetClosest(Vector3Position, TreesFolder) > 40 then
local TreeRaycastPos = Vector3.new(Vector3Position.X, Vector3Position.Y + 100, Vector3Position.Z)
TreeRaycastPos += Vector3.new(BlockScale,BlockScale,BlockScale)*0.5
local Data = workspace:Raycast(TreeRaycastPos, Vector3.new(0, -1000, 0), NewRaycastParams)
print(Data)
if Data then
local NewTree = Tree:Clone()
NewTree:PivotTo(CFrame.new(Data.Position))
NewTree.Parent = workspace.Trees
print("Tree")
end
end
end
Terrain:FillBlock(Position, Size, Material)
end
end
task.synchronize()
Actor:Destroy()
end)
-# And the trees still don't work