Run it
Copy the script and paste it into your executor.
Players = :()
RunService = :()
UserInputService = :()
Workspace = :()
player = Players.LocalPlayer
mouse = player:()
playerGui = player:()
oldGui = playerGui:()
oldGui
oldGui:()
oldPreview = Workspace:()
oldPreview
oldPreview:()
BLOCK_SIZE = .(, , )
USE_GRID_SNAP =
GRID_SIZE =
MAX_PLACE_DISTANCE =
BLOCK_TYPES = {
{ Name = , Material = .Material.Ground, Color = .(, , ) },
{ Name = , Material = .Material.Grass, Color = .(, , ) },
{ Name = , Material = .Material.Slate, Color = .(, , ) },
{ Name = , Material = .Material.Sand, Color = .(, , ) },
{ Name = , Material = .Material.Snow, Color = .(, , ) },
{ Name = , Material = .Material.Ice, Color = .(, , ) },
{ Name = , Material = .Material.WoodPlanks, Color = .(, , ) },
{ Name = , Material = .Material.Metal, Color = .(, , ) },
{ Name = , Material = .Material.Glass, Color = .(, , ), Transparency = },
{
Name = , Material = .Material.CrackedLava, Color = .(, , ),
Light = { Color = .(, , ), Range = , Brightness = },
},
{
Name = , Material = .Material.Neon, Color = .(, , ),
Light = { Color = .(, , ), Range = , Brightness = },
},
}
selectedType = BLOCK_TYPES[]
placedFolder = Workspace:()
placedFolder
placedFolder = .()
placedFolder.Name =
placedFolder.Parent = Workspace
previewPart = .()
previewPart.Name =
previewPart.Size = BLOCK_SIZE
previewPart.Anchored =
previewPart.CanCollide =
previewPart.CanQuery =
previewPart.Transparency =
previewPart.Material = .Material.ForceField
previewPart.Color = .(, , )
previewPart.Parent = Workspace
isValidPlacement =
camera = Workspace.CurrentCamera
(position)
USE_GRID_SNAP
position
.(
.(position.X / GRID_SIZE + ) * GRID_SIZE,
.(position.Y / GRID_SIZE + ) * GRID_SIZE,
.(position.Z / GRID_SIZE + ) * GRID_SIZE
)
raycastParams = RaycastParams.()
raycastParams.FilterType = .RaycastFilterType.Exclude
raycastParams.FilterDescendantsInstances = { previewPart }
isDeleteMode =
lastHitInstance =
RunService.RenderStepped:(()
character = player.Character
character
raycastParams.FilterDescendantsInstances = { previewPart, character }
origin = camera.CFrame.Position
direction = camera.CFrame.LookVector * MAX_PLACE_DISTANCE
result = Workspace:(origin, direction, raycastParams)
result
lastHitInstance = result.Instance
lastHitInstance =
isDeleteMode
canDelete = lastHitInstance ~= lastHitInstance:(placedFolder)
canDelete
previewPart.Size = lastHitInstance.Size + .(, , )
previewPart.CFrame = lastHitInstance.CFrame
previewPart.Color = .(, , )
previewPart.Size = BLOCK_SIZE
hitPosition = result (result.Position + result.Normal * (BLOCK_SIZE.Y / ))
(origin + camera.CFrame.LookVector * MAX_PLACE_DISTANCE)
previewPart.CFrame = .((hitPosition))
previewPart.Color = .(, , )
isValidPlacement = canDelete
previewPart.Size = BLOCK_SIZE
hitPosition
result
hitPosition = result.Position + result.Normal * (BLOCK_SIZE.Y / )
isValidPlacement =
hitPosition = origin + camera.CFrame.LookVector * MAX_PLACE_DISTANCE
isValidPlacement =
previewPart.CFrame = .((hitPosition))
previewPart.Color = isValidPlacement selectedType.Color .(, , )
)
screenGui = .()
screenGui.Name =
screenGui.ResetOnSpawn =
screenGui.IgnoreGuiInset =
screenGui.DisplayOrder = -
screenGui.Parent = playerGui
reticle = .()
reticle.Name =
reticle.Size = .(, , , )
reticle.AnchorPoint = .(, )
reticle.Position = .(, , , )
reticle.BackgroundColor3 = .(, , )
reticle.BackgroundTransparency =
reticle.ZIndex =
reticle.Parent = screenGui
reticleCorner = .()
reticleCorner.CornerRadius = .(, )
reticleCorner.Parent = reticle
placeButton = .()
placeButton.Name =
placeButton.Size = .(, , , )
placeButton.Position = .(, -, , )
placeButton.BackgroundColor3 = .(, , )
placeButton.TextColor3 = .(, , )
placeButton.Font = .Font.GothamBold
placeButton.TextSize =
placeButton.Text =
placeButton.AutoButtonColor =
placeButton.ZIndex =
placeButton.Parent = screenGui
placeCorner = .()
placeCorner.CornerRadius = .(, )
placeCorner.Parent = placeButton
modeButton = .()
modeButton.Name =
modeButton.Size = .(, , , )
modeButton.Position = .(, -, , )
modeButton.BackgroundColor3 = .(, , )
modeButton.TextColor3 = .(, , )
modeButton.Font = .Font.GothamBold
modeButton.TextSize =
modeButton.Text =
modeButton.AutoButtonColor =
modeButton.ZIndex =
modeButton.Parent = screenGui
modeCorner = .()
modeCorner.CornerRadius = .(, )
modeCorner.Parent = modeButton
textureFrame = .()
textureFrame.Name =
textureFrame.Size = .(, , , )
textureFrame.AnchorPoint = .(, )
textureFrame.Position = .(, , , )
textureFrame.ScrollingDirection = .ScrollingDirection.Y
textureFrame.AutomaticCanvasSize = .AutomaticSize.Y
textureFrame.CanvasSize = .(, , , )
textureFrame.ScrollBarThickness =
textureFrame.ZIndex =
textureFrame.BackgroundColor3 = .(, , )
textureFrame.BackgroundTransparency =
textureFrame.Parent = screenGui
textureCorner = .()
textureCorner.CornerRadius = .(, )
textureCorner.Parent = textureFrame
listLayout = .()
listLayout.FillDirection = .FillDirection.Vertical
listLayout.Padding = .(, )
listLayout.HorizontalAlignment = .HorizontalAlignment.Center
listLayout.SortOrder = .SortOrder.LayoutOrder
listLayout.Parent = textureFrame
padding = .()
padding.PaddingLeft = .(, )
padding.PaddingRight = .(, )
padding.PaddingTop = .(, )
padding.PaddingBottom = .(, )
padding.Parent = textureFrame
textureButtons = {}
()
_, entry (textureButtons)
isSelected = entry.blockType == selectedType
entry.stroke.Thickness = isSelected
entry.stroke.Color = isSelected .(, , ) .(, , )
i, blockType (BLOCK_TYPES)
button = .()
button.Name = blockType.Name
button.LayoutOrder = i
button.Size = .(, , , )
button.BackgroundColor3 = blockType.Color
button.BackgroundTransparency =
button.AutoButtonColor =
button.Text = blockType.Name
button.TextSize =
button.Font = .Font.GothamBold
button.TextColor3 = .(, , )
button.ZIndex =
button.TextStrokeTransparency =
button.Parent = textureFrame
btnCorner = .()
btnCorner.CornerRadius = .(, )
btnCorner.Parent = button
stroke = .()
stroke.Thickness =
stroke.Color = .(, , )
stroke.Parent = button
button.Activated:(()
selectedType = blockType
()
)
.(textureButtons, { button = button, stroke = stroke, blockType = blockType })
()
modeButton.Activated:(()
isDeleteMode = isDeleteMode
isDeleteMode
modeButton.Text =
modeButton.BackgroundColor3 = .(, , )
placeButton.Text =
placeButton.BackgroundColor3 = .(, , )
modeButton.Text =
modeButton.BackgroundColor3 = .(, , )
placeButton.Text =
placeButton.BackgroundColor3 = .(, , )
)
placeButton.Activated:(()
isDeleteMode
lastHitInstance lastHitInstance:(placedFolder)
lastHitInstance:()
isValidPlacement
newBlock = .()
newBlock.Size = BLOCK_SIZE
newBlock.CFrame = previewPart.CFrame
newBlock.Anchored =
newBlock.CanCollide =
newBlock.Material = selectedType.Material
newBlock.Color = selectedType.Color
newBlock.Transparency = selectedType.Transparency
newBlock.Parent = placedFolder
selectedType.Light
light = .()
light.Color = selectedType.Light.Color
light.Range = selectedType.Light.Range
light.Brightness = selectedType.Light.Brightness
light.Parent = newBlock
)
stamper tool create things

Universal