
Key RequiredUniversal

-- Water Menu GUI with 40 OP Water Mods
local Players = game:GetService("Players")
local TweenService = game:GetService("TweenService")
local RunService = game:GetService("RunService")
local player = Players.LocalPlayer
-- Table of all 40 water mod functions
local waterMods = {}
-- Helper function: get player's position or default
local function getPlayerPos(offset)
offset = offset or Vector3.new(0, 5, 10)
if player.Character and player.Character:FindFirstChild("HumanoidRootPart") then
return player.Character.HumanoidRootPart.Position + offset
else
return workspace.Baseplate.Position + Vector3.new(0,5,0)
end
end
-- 1 Tall Water Tower
waterMods["π° Tall Water Tower"] = function()
local pos = getPlayerPos()
workspace.Terrain:FillBlock(CFrame.new(pos), Vector3.new(4,30,4), Enum.Material.Water)
end
-- 2 Water Car
waterMods["π Water Car"] = function()
local pos = getPlayerPos()
local car = Instance.new("Part")
car.Name = "WaterCar"
car.Size = Vector3.new(8, 2, 4)
car.CFrame = CFrame.new(pos) * CFrame.new(0, 1, 0)
car.Anchored = false
car.Material = Enum.Material.Water
car.Color = Color3.fromRGB(50, 150, 255)
car.CanCollide = true
car.Parent = workspace
local bodyVel = Instance.new("BodyVelocity")
bodyVel.Velocity = player.Character and player.Character.HumanoidRootPart.CFrame.LookVector * 50 or Vector3.new(0,0,50)
bodyVel.MaxForce = Vector3.new(1e5,1e5,1e5)
bodyVel.Parent = car
-- Auto destroy after 20 seconds
delay(20, function() if car then car:Destroy() end end)
end
-- 3 Water Fountain (Fixed)
waterMods["β² Water Fountain"] = function()
local pos = getPlayerPos()
local fountain = Instance.new("Part")
fountain.Name = "WaterFountain"
fountain.Size = Vector3.new(2, 4, 2)
fountain.CFrame = CFrame.new(pos)
fountain.Anchored = true
fountain.Material = Enum.Material.Water
fountain.Color = Color3.fromRGB(120,180,255)
fountain.Transparency = 0.4
fountain.Parent = workspace
local emitter = Instance.new("ParticleEmitter")
emitter.Texture = "rbxassetid://243660364" -- water splash texture
emitter.Rate = 50
emitter.Lifetime = NumberRange.new(1)
emitter.Speed = NumberRange.new(5)
emitter.Parent = fountain
delay(15, function() if fountain then fountain:Destroy() end end)
end
-- 4 Water Pool
waterMods["π Water Pool"] = function()
local pos = getPlayerPos(Vector3.new(0,-1,0))
workspace.Terrain:FillBlock(CFrame.new(pos), Vector3.new(20,3,20), Enum.Material.Water)
end
-- 5 Water Wave
waterMods["π Water Wave"] = function()
local pos = getPlayerPos()
local wave = Instance.new("Part")
wave.Size = Vector3.new(30, 1, 10)
wave.CFrame = CFrame.new(pos) * CFrame.new(0, 0, 15)
wave.Anchored = true
wave.Material = Enum.Material.Water
wave.Color = Color3.fromRGB(50, 100, 255)
wave.Transparency = 0.3
wave.Parent = workspace
delay(10, function() if wave then wave:Destroy() end end)
end
-- 6 Waterfall
waterMods["π§ Waterfall"] = function()
local pos = getPlayerPos()
workspace.Terrain:FillBlock(CFrame.new(pos), Vector3.new(4, 15, 2), Enum.Material.Water)
end
-- 7 Water Tunnel
waterMods["π Water Tunnel"] = function()
local pos = getPlayerPos()
workspace.Terrain:FillBlock(CFrame.new(pos), Vector3.new(10, 5, 5), Enum.Material.Water)
end
-- 8 Water Dome
waterMods["π‘οΈ Water Dome"] = function()
local pos = getPlayerPos()
workspace.Terrain:FillBall(pos, 10, Enum.Material.Water)
end
-- 9 Water Cube
waterMods["π¦ Water Cube"] = function()
local pos = getPlayerPos()
workspace.Terrain:FillBlock(CFrame.new(pos), Vector3.new(10,10,10), Enum.Material.Water)
end
-- 10 Water Bridge
waterMods["π Water Bridge"] = function()
local pos = getPlayerPos()
workspace.Terrain:FillBlock(CFrame.new(pos), Vector3.new(25, 2, 5), Enum.Material.Water)
end
-- 11 Water Pillar
waterMods["ποΈ Water Pillar"] = function()
local pos = getPlayerPos()
workspace.Terrain:FillBlock(CFrame.new(pos), Vector3.new(2,20,2), Enum.Material.Water)
end
-- 12 Water Slide
waterMods["π’ Water Slide"] = function()
local pos = getPlayerPos()
local slide = Instance.new("Part")
slide.Size = Vector3.new(10, 1, 30)
slide.CFrame = CFrame.new(pos) * CFrame.Angles(0,0,math.rad(-30))
slide.Anchored = true
slide.Material = Enum.Material.Water
slide.Color = Color3.fromRGB(100,150,255)
slide.Transparency = 0.4
slide.Parent = workspace
delay(20, function() if slide then slide:Destroy() end end)
end
-- 13 Water Maze
waterMods["π Water Maze"] = function()
local pos = getPlayerPos()
workspace.Terrain:FillBlock(CFrame.new(pos), Vector3.new(40,5,40), Enum.Material.Water)
end
-- 14 Water Cannon
waterMods["πΏ Water Cannon"] = function()
local pos = getPlayerPos()
local cannon = Instance.new("Part")
cannon.Size = Vector3.new(3,3,6)
cannon.CFrame = CFrame.new(pos) * CFrame.Angles(0, math.rad(90), 0)
cannon.Anchored = true
cannon.Material = Enum.Material.Water
cannon.Color = Color3.fromRGB(80, 160, 255)
cannon.Transparency = 0.2
cannon.Parent = workspace
local particle = Instance.new("ParticleEmitter")
particle.Texture = "rbxassetid://243660364"
particle.Speed = NumberRange.new(30)
particle.Lifetime = NumberRange.new(0.5)
particle.Rate = 150
particle.Parent = cannon
delay(10, function() if cannon then cannon:Destroy() end end)
end
-- 15 Water Wave Wall
waterMods["π Water Wave Wall"] = function()
local pos = getPlayerPos()
workspace.Terrain:FillBlock(CFrame.new(pos), Vector3.new(25, 10, 2), Enum.Material.Water)
end
-- 16 Water Tower Explosion
waterMods["π₯ Water Tower Explosion"] = function()
local pos = getPlayerPos()
workspace.Terrain:FillBall(pos, 12, Enum.Material.Water)
end
-- 17 Water Platform
waterMods["π Water Platform"] = function()
local pos = getPlayerPos()
workspace.Terrain:FillBlock(CFrame.new(pos), Vector3.new(15,1,15), Enum.Material.Water)
end
-- 18 Water Balloon
waterMods["π Water Balloon"] = function()
local pos = getPlayerPos()
workspace.Terrain:FillBall(pos + Vector3.new(0, 10, 0), 5, Enum.Material.Water)
end
-- 19 Water Rapids
waterMods["ποΈ Water Rapids"] = function()
local pos = getPlayerPos()
workspace.Terrain:FillBlock(CFrame.new(pos), Vector3.new(20,3,10), Enum.Material.Water)
end
-- 20 Water Pond
waterMods["π¦ Water Pond"] = function()
local pos = getPlayerPos()
workspace.Terrain:FillBlock(CFrame.new(pos), Vector3.new(12,3,12), Enum.Material.Water)
end
-- 21 Water Geyser
waterMods["π Water Geyser"] = function()
local pos = getPlayerPos()
local geyser = Instance.new("Part")
geyser.Size = Vector3.new(4,15,4)
geyser.CFrame = CFrame.new(pos)
geyser.Anchored = true
geyser.Material = Enum.Material.Water
geyser.Color = Color3.fromRGB(120,200,255)
geyser.Transparency = 0.3
geyser.Parent = workspace
local emitter = Instance.new("ParticleEmitter")
emitter.Texture = "rbxassetid://243660364"
emitter.Rate = 80
emitter.Lifetime = NumberRange.new(1)
emitter.Speed = NumberRange.new(20)
emitter.Parent = geyser
delay(20, function() if geyser then geyser:Destroy() end end)
end
-- 22 Water River
waterMods["ποΈ Water River"] = function()
local pos = getPlayerPos()
workspace.Terrain:FillBlock(CFrame.new(pos), Vector3.new(40,5,10), Enum.Material.Water)
end
-- 23 Water Sphere
waterMods["βͺ Water Sphere"] = function()
local pos = getPlayerPos()
workspace.Terrain:FillBall(pos, 15, Enum.Material.Water)
end
-- 24 Water Jetpack
waterMods["π Water Jetpack"] = function()
local hrp = player.Character and player.Character:FindFirstChild("HumanoidRootPart")
if not hrp then return end
local jetpack = Instance.new("BodyVelocity")
jetpack.Velocity = Vector3.new(0, 100, 0)
jetpack.MaxForce = Vector3.new(0, 1e5, 0)
jetpack.Parent = hrp
delay(3, function() jetpack:Destroy() end)
end
-- 25 Water Shield
waterMods["π‘οΈ Water Shield"] = function()
local hrp = player.Character and player.Character:FindFirstChild("HumanoidRootPart")
if not hrp then return end
local shield = Instance.new("Part")
shield.Name = "WaterShield"
shield.Size = Vector3.new(8, 8, 1)
shield.CFrame = hrp.CFrame * CFrame.new(0, 0, -5)
shield.Anchored = true
shield.Transparency = 0.6
shield.Material = Enum.Material.Water
shield.Color = Color3.fromRGB(60, 120, 255)
shield.Parent = workspace
delay(15, function() if shield then shield:Destroy() end end)
end
-- 26 Water Pillars Rain
waterMods["π§οΈ Water Pillars Rain"] = function()
local pos = getPlayerPos(Vector3.new(0, 50, 0))
for i=1,15 do
local pillarPos = pos + Vector3.new(math.random(-20,20), 0, math.random(-20,20))
workspace.Terrain:FillBlock(CFrame.new(pillarPos), Vector3.new(2,15,2), Enum.Material.Water)
end
end
-- 27 Water Wave Surge
waterMods["π Water Wave Surge"] = function()
local pos = getPlayerPos()
workspace.Terrain:FillBlock(CFrame.new(pos), Vector3.new(30,8,8), Enum.Material.Water)
end
-- 28 Water Column
waterMods["ποΈ Water Column"] = function()
local pos = getPlayerPos()
workspace.Terrain:FillBlock(CFrame.new(pos), Vector3.new(3,20,3), Enum.Material.Water)
end
-- 29 Water Blob
waterMods["π§ Water Blob"] = function()
local pos = getPlayerPos()
workspace.Terrain:FillBall(pos + Vector3.new(0,5,0), 7, Enum.Material.Water)
end
-- 30 Water Bubble
waterMods["π΅ Water Bubble"] = function()
local pos = getPlayerPos()
workspace.Terrain:FillBall(pos + Vector3.new(0, 8, 0), 10, Enum.Material.Water)
end
-- 31 Water Spiral (New)
waterMods["π Water Spiral"] = function()
local basePos = getPlayerPos()
for i=1,10 do
local angle = i * math.rad(36)
local offset = Vector3.new(math.cos(angle)*i*2, i*2, math.sin(angle)*i*2)
workspace.Terrain:FillBall(basePos + offset, 2, Enum.Material.Water)
end
end
-- 32 Water Wall
waterMods["π§± Water Wall"] = function()
local pos = getPlayerPos()
workspace.Terrain:FillBlock(CFrame.new(pos), Vector3.new(20, 15, 2), Enum.Material.Water)
end
-- 33 Water Pillar Cluster
waterMods["π³ Water Pillar Cluster"] = function()
local basePos = getPlayerPos()
for x = -5,5,5 do
for z = -5,5,5 do
workspace.Terrain:FillBlock(CFrame.new(basePos + Vector3.new(x,0,z)), Vector3.new(2,15,2), Enum.Material.Water)
end
end
end
-- 34 Water Sphere Cluster
waterMods["βͺ Water Sphere Cluster"] = function()
local basePos = getPlayerPos()
for i=1,5 do
local offset = Vector3.new(math.random(-10,10), math.random(0,10), math.random(-10,10))
workspace.Terrain:FillBall(basePos + offset, 4, Enum.Material.Water)
end
end
-- 35 Water Ring
waterMods["β Water Ring"] = function()
local basePos = getPlayerPos()
for i=1,20 do
local angle = math.rad(i*18)
local offset = Vector3.new(math.cos(angle)*15, 0, math.sin(angle)*15)
workspace.Terrain:FillBall(basePos + offset, 2, Enum.Material.Water)
end
end
-- 36 Water Slide Ramp
waterMods["π· Water Slide Ramp"] = function()
local pos = getPlayerPos()
local slide = Instance.new("Part")
slide.Size = Vector3.new(12, 1, 35)
slide.CFrame = CFrame.new(pos) * CFrame.Angles(0,0,math.rad(-40))
slide.Anchored = true
slide.Material = Enum.Material.Water
slide.Color = Color3.fromRGB(90,160,255)
slide.Transparency = 0.5
slide.Parent = workspace
delay(20, function() if slide then slide:Destroy() end end)
end
-- 37 Water Column Rain
waterMods["π§οΈ Water Column Rain"] = function()
local basePos = getPlayerPos(Vector3.new(0,50,0))
for i=1,12 do
local offset = Vector3.new(math.random(-15,15), 0, math.random(-15,15))
workspace.Terrain:FillBlock(CFrame.new(basePos + offset), Vector3.new(2,20,2), Enum.Material.Water)
end
end
-- 38 Water Wave Explosion
waterMods["π₯ Water Wave Explosion"] = function()
local pos = getPlayerPos()
workspace.Terrain:FillBall(pos, 20, Enum.Material.Water)
end
-- 39 Water Floor
waterMods["π€οΈ Water Floor"] = function()
local pos = getPlayerPos()
workspace.Terrain:FillBlock(CFrame.new(pos), Vector3.new(40, 1, 40), Enum.Material.Water)
end
-- 40 Water Bubble Cluster
waterMods["π΅ Water Bubble Cluster"] = function()
local pos = getPlayerPos()
for i=1,7 do
local offset = Vector3.new(math.random(-10,10), math.random(5,15), math.random(-10,10))
workspace.Terrain:FillBall(pos + offset, 5, Enum.Material.Water)
end
end
-- Create ScreenGui
local screenGui = Instance.new("ScreenGui")
screenGui.Name = "WaterMenuGui"
screenGui.ResetOnSpawn = false
screenGui.Parent = player:WaitForChild("PlayerGui")
-- Main frame
local mainFrame = Instance.new("Frame")
mainFrame.Name = "MainFrame"
mainFrame.Size = UDim2.new(0, 320, 0, 450)
mainFrame.Position = UDim2.new(0.5, -160, 0.5, -225)
mainFrame.BackgroundColor3 = Color3.fromRGB(20, 60, 180)
mainFrame.BackgroundTransparency = 0.15
mainFrame.BorderSizePixel = 0
mainFrame.AnchorPoint = Vector2.new(0.5, 0.5)
mainFrame.Parent = screenGui
mainFrame.ClipsDescendants = true
mainFrame.Visible = false
-- Rounded corners
local uicorner = Instance.new("UICorner")
uicorner.CornerRadius = UDim.new(0, 14)
uicorner.Parent = mainFrame
-- Title
local title = Instance.new("TextLabel")
title.Name = "Title"
title.Size = UDim2.new(1, 0, 0, 45)
title.BackgroundTransparency = 1
title.Text = "π§ Water Menu"
title.Font = Enum.Font.GothamBold
title.TextSize = 26
title.TextColor3 = Color3.fromRGB(220, 240, 255)
title.Parent = mainFrame
-- Close button
local closeBtn = Instance.new("TextButton")
closeBtn.Name = "CloseBtn"
closeBtn.Text = "β"
closeBtn.Font = Enum.Font.GothamBold
closeBtn.TextSize = 24
closeBtn.TextColor3 = Color3.fromRGB(255, 100, 100)
closeBtn.BackgroundTransparency = 1
closeBtn.Size = UDim2.new(0, 40, 0, 40)
closeBtn.Position = UDim2.new(1, -45, 0, 5)
closeBtn.Parent = mainFrame
closeBtn.MouseButton1Click:Connect(function()
mainFrame.Visible = false
end)
-- Scrolling frame for buttons
local scrollFrame = Instance.new("ScrollingFrame")
scrollFrame.Name = "ScrollFrame"
scrollFrame.Size = UDim2.new(1, -20, 1, -60)
scrollFrame.Position = UDim2.new(0, 10, 0, 50)
scrollFrame.CanvasSize = UDim2.new(0, 0, 0, 0)
scrollFrame.ScrollBarThickness = 6
scrollFrame.BackgroundTransparency = 1
scrollFrame.Parent = mainFrame
local layout = Instance.new("UIListLayout")
layout.Parent = scrollFrame
layout.SortOrder = Enum.SortOrder.LayoutOrder
layout.Padding = UDim.new(0, 6)
-- Function to create a mod button
local function createModButton(modName, modFunction)
local btn = Instance.new("TextButton")
btn.Name = modName:gsub("%s", "") .. "Btn"
btn.Size = UDim2.new(1, 0, 0, 45)
btn.BackgroundColor3 = Color3.fromRGB(40, 120, 220)
btn.TextColor3 = Color3.fromRGB(230, 250, 255)
btn.Font = Enum.Font.GothamSemibold
btn.TextSize = 20
btn.Text = modName
btn.AutoButtonColor = true
btn.ClipsDescendants = true
local btnCorner = Instance.new("UICorner")
btnCorner.CornerRadius = UDim.new(0, 8)
btnCorner.Parent = btn
-- Hover Tween
btn.MouseEnter:Connect(function()
TweenService:Create(btn, TweenInfo.new(0.15), {BackgroundColor3 = Color3.fromRGB(60,160,255)}):Play()
end)
btn.MouseLeave:Connect(function()
TweenService:Create(btn, TweenInfo.new(0.25), {BackgroundColor3 = Color3.fromRGB(40,120,220)}):Play()
end)
btn.MouseButton1Click:Connect(function()
spawn(function()
modFunction()
end)
end)
btn.Parent = scrollFrame
end
-- Add buttons for all water mods
for modName, modFunc in pairs(waterMods) do
createModButton(modName, modFunc)
end
-- Adjust canvas size dynamically
layout:GetPropertyChangedSignal("AbsoluteContentSize"):Connect(function()
scrollFrame.CanvasSize = UDim2.new(0, 0, 0, layout.AbsoluteContentSize.Y + 10)
end)
-- Draggable mainFrame
local dragging
local dragInput
local dragStart
local startPos
mainFrame.InputBegan:Connect(function(input)
if input.UserInputType == Enum.UserInputType.MouseButton1 then
dragging = true
dragStart = input.Position
startPos = mainFrame.Position
input.Changed:Connect(function()
if input.UserInputState == Enum.UserInputState.End then
dragging = false
end
end)
end
end)
mainFrame.InputChanged:Connect(function(input)
if input.UserInputType == Enum.UserInputType.MouseMovement then
dragInput = input
end
end)
RunService.RenderStepped:Connect(function()
if dragging and dragInput then
local delta = dragInput.Position - dragStart
mainFrame.Position = UDim2.new(
startPos.X.Scale,
startPos.X.Offset + delta.X,
startPos.Y.Scale,
startPos.Y.Offset + delta.Y
)
end
end)
-- Toggle menu with keybind (Right control)
local UserInputService = game:GetService("UserInputService")
UserInputService.InputBegan:Connect(function(input, gameProcessed)
if not gameProcessed and input.KeyCode == Enum.KeyCode.RightControl then
mainFrame.Visible = not mainFrame.Visible
end
end)
-- Auto show menu on start for demo
mainFrame.Visible = true



half these are js blocks
@0nyxx appreciate this bro workπΉ
no there actual water liarrr