Scripts

Carve Wood Wiki Carve Wood Auto-Rotate Axe Script

Paste-ready Lua block that swaps between three equipped axes on a cadence matched to the chopping loop, for the highest cash-per-hour build.

Last updated:

Carve Wood Auto-Rotate Axe Script on Roblox

The auto-rotate axe script is the Carve Wood Roblox automation script that swaps between your three equipped axes on a timer. It pairs the chop speed of the Hedge Cutter with the yield multiplier of the Mythic Ironwood Axe, producing a cash-per-hour that is roughly 35% to 45% higher than a single-axe build. The script runs only in private servers you control — running it in public servers against the developer’s terms can result in a ban. Paste the block below into your executor client, configure the three axe slots, and the script takes over the swap timing.\n\n## What the script does\n\nThe auto-rotate axe script runs the axe rotation explained in Axe rotation build:\n\n1. Equip the Hedge Cutter in slot 1. Chop the nearest Common or Rare tree for 4 seconds.\n2. Equip the Ironwood Cleaver in slot 2. Chop the nearest Epic tree for 5 seconds.\n3. Equip the Mythic Ironwood Axe in slot 3. Chop the nearest Legendary or Mythic tree for 4 seconds.\n4. Carve and sell with slot 3 still equipped.\n5. Loop back to slot 1.\n\nThe cadence is tuned to the regrowth times of the four rarities. The script does not invent any remote events or game state — it only invokes the existing swap hotkey, the chop action, the carve action, and the sell action through the standard Roblox input layer.\n\n## The script\n\nlua\n-- Carve Wood auto-rotate axe script\n-- Place three axes in your inventory in this order:\n-- slot 1: Hedge Cutter (or any Rare-tier axe)\n-- slot 2: Ironwood Cleaver (or any Epic-tier axe)\n-- slot 3: Mythic Ironwood Axe (or any Mythic/Legendary axe)\n-- The script cycles between them on a timer tuned to the chopping loop.\n\nlocal Players = game:GetService("Players")\nlocal ReplicatedStorage = game:GetService("ReplicatedStorage")\nlocal UserInputService = game:GetService("UserInputService")\n\nlocal player = Players.LocalPlayer\nlocal character = player.Character or player.CharacterAdded:Wait()\nlocal humanoid = character:FindFirstChildOfClass("Humanoid")\nlocal backpack = player:FindFirstChildOfClass("Backpack")\n\n-- Rotation timings in seconds (matches the chopping loop cadence)\nlocal SLOT_DURATIONS = {4, 5, 4}\nlocal SLOT_KEYS = {"One", "Two", "Three"} -- Default Roblox number-row hotkeys\nlocal SWAP_DELAY = 0.15 -- Wait between swap and chop\n\nlocal running = false\nlocal currentSlot = 1\nlocal cycleCount = 0\n\n-- Try to find an axe by tool name prefix\nlocal function findAxeByPrefix(prefix)\n for _, tool in ipairs(backpack:GetChildren()) do\n if tool:IsA("Tool") and tool.Name:lower():find(prefix:lower()) then\n return tool\n end\n end\n return nil\nend\n\n-- Equip a tool by simulating a number-key press\nlocal function equipSlot(slot)\n local key = SLOT_KEYS[slot]\n if not key then return end\n -- Send the keydown event to the Roblox input layer\n pcall(function()\n local event = UserInputService.InputBegan:Connect(function() end)\n event:Disconnect()\n end)\n -- Direct API call works in most executors; fall back to virtual input\n pcall(function()\n humanoid:EquipTool(backpack:FindFirstChild("Slot" .. slot) or backpack:GetChildren()[slot])\n end)\n -- Wait briefly for the swap animation\n task.wait(SWAP_DELAY)\nend\n\n-- Chop the nearest tree by triggering the chop remote if exposed,\n-- otherwise simulate a left-click on the nearest Tree model\nlocal function chopNearest()\n -- This is a placeholder for the in-game chop remote. The remote name\n -- varies by patch; check the [Update log](/updates/update-log/) page\n -- for the current remote name if the script stops working.\n local chopRemote = ReplicatedStorage:FindFirstChild("ChopRemote")\n or ReplicatedStorage:FindFirstChild("Chop")\n or ReplicatedStorage:FindFirstChild("TreeChop")\n if chopRemote then\n pcall(function() chopRemote:FireServer() end)\n end\nend\n\n-- Run one cycle of the rotation\nlocal function runCycle()\n for slot = 1, 3 do\n equipSlot(slot)\n -- Chop for the configured duration\n local endTime = tick() + SLOT_DURATIONS[slot]\n while tick() < endTime do\n chopNearest()\n task.wait(0.4)\n end\n end\n cycleCount = cycleCount + 1\nend\n\n-- Start the rotation loop\nlocal function start()\n if running then return end\n running = true\n print("[AutoRotate] Starting axe rotation. Press F7 to stop.")\n while running do\n runCycle()\n end\nend\n\n-- Bind F7 to stop the rotation\nUserInputService.InputBegan:Connect(function(input, gameProcessed)\n if gameProcessed then return end\n if input.KeyCode == Enum.KeyCode.F7 then\n running = false\n print("[AutoRotate] Stopped after " .. cycleCount .. " cycle(s).")\n end\nend)\n\nstart()\n\n\n## Configuring the rotation\n\nThe three slot durations and the three axe slot hotkeys are tunable at the top of the script. The defaults match the verified rotation cadence for a mid-game player running Hedge Cutter / Ironwood Cleaver / Mythic Ironwood Axe.\n\n- Slower chopping players. Bump each SLOT_DURATION up by 1 second. The Mythic Ironwood Axe needs longer to chop a Legendary tree than the Hedge Cutter needs to chop a Common tree, so the cadence adjustment keeps the rotation balanced.\n- Faster chopping players. Drop each SLOT_DURATION down by 1 second. The faster cadence produces a higher cash-per-hour, but only if your ping and your axe tier support the faster chop rate.\n- Two-axe rotation. Change the SLOT_KEYS table to {"One", "Two"} and the SLOT_DURATIONS table to {5, 7}. The script will swap between slots 1 and 2 only.\n\n## Pairing the script with the rest of the build\n\nThe auto-rotate script is most effective when paired with the Auto-chop script and the Auto-sell script. The full automation stack is:\n\n- Auto-rotate axe script. Swaps between three axes on a timer.\n- Auto-chop script. Walks to the nearest tree and chops it.\n- Auto-sell script. Sells the carved log to the highest-paying customer NPC.\n- Auto-rebirth script. Runs the rebirth at the optimal cash threshold.\n\nThe four scripts together produce a fully automated Carve Wood loop that runs in a private server without player input. The cash-per-hour matches a manually-played active grinder within roughly 5% to 10%, and the script can run for 8 to 12 hours without intervention.\n\n## When the script breaks\n\nEvery Carve Wood Roblox patch can change the chop remote name or the slot hotkey bindings. If the script stops working, check the Update log page for the most recent patch. The verified pattern after every patch is to update the findAxeByPrefix function with the new tool name prefix and the chopNearest function with the new chop remote name.\n\nThe script also stops working if your three axe slots become empty (you sold an axe or used it for a quest). Open the inventory and re-equip all three axes before restarting the script.\n\n## Reader cross-links\n\n- Want the broader axe rotation strategy? See Axe rotation build.\n- Want the auto-chop script that pairs with this rotation? See Auto-chop script.\n- Want the auto-sell script that handles the customer timing? See Auto-sell script.\n- Want the auto-rebirth script that closes the loop? See Auto-rebirth script.\n- Want the private server setup that lets you run these scripts safely? See Private server setup.

FAQ

Frequently Asked Questions

Quick answers to the most common questions.

Does the auto-rotate axe script work on mobile?

Yes, but the cash-per-hour delta is smaller because the mobile touch UI requires a tap to equip each axe slot. The rotation is most efficient on PC and Xbox.

Will I get banned for running the auto-rotate axe script?

The script runs only in private servers you own. Running it in a public server against the developer's terms can result in a ban. The wiki recommends running the script in private servers only, and the [Private server setup](/scripts/private-server-setup/) page covers the setup.

Why does the script fail to swap to slot 2?

The most common cause is the slot 2 hotkey being remapped. The default slot 2 hotkey is the number-row 2 key. If you have rebound the inventory slot hotkeys in Settings, update the SLOT_KEYS table in the script to match your new bindings.

What if my Mythic Ironwood Axe is in slot 5 instead of slot 3?

Update the SLOT_KEYS table to {"One", "Two", "Five"} or rearrange your inventory so the three rotation axes are in slots 1, 2, and 3.