⛏️ Minecraft Mod Reference

Tweakeroo Complete Guide

~90 client-side tweaks — auto-eating, fast and flexible placement, free camera, tool switching, zoom and more — explained from the actual source code, including where the in-game tooltips are wrong.

🎮 Fabric · MaLiLib
🌐 Client-side — works on Realms (with caveats)
🔑 Key prefix: X
⚙️ v0.30.0 · Minecraft 26.3
🗺️

Overview

Tweakeroo is a client-side quality-of-life mod by masa, in the same MaLiLib family as Litematica, MiniHUD and Item Scroller. It is not one feature — it is a toolbox of roughly 90 independent tweaks (auto-eat, fast placement, free camera, tool auto-switch, zoom…) plus 50 disable toggles that turn vanilla behaviours off. Every tweak is off by default and has no default hotkey; you pick the ones you want.

⬇ Download on Modrinth ⌥ Source (26.x fork, sakura-ryoko)

🔬
How this guide was written

There is almost no written documentation for Tweakeroo beyond one gist and the in-game tooltips, so this guide is based on reading the source (sakura-ryoko/tweakeroo, branch 26.3, matching the installed 0.30.0) and MaLiLib. Where the code contradicts a tooltip, the code wins and the difference is called out in a “Source says” note — the full list is in What the Tooltips Get Wrong. A few behaviours were derived from reading and not tested in game; those are marked (unverified).

How Tweakeroo is organised

Tweaks (feature toggles)

  • ~90 on/off switches: tweakFastBlockPlacement, tweakHandRestock…
  • Each has an optional toggle hotkey
  • Their settings live in the Generic tab

Generic

  • Numbers, colours, enums for the tweaks
  • Plus a few boolean options that also carry a hotkey
  • Most “how fast / how far / which mode” answers are here

Hotkeys

  • Pure actions and hold-modifiers (flexible placement keys, zoom, elytra camera…)
  • Separate from the toggle hotkeys — a tweak can be “on” and still need one of these held

Lists · Fixes · Yeets

  • Lists: blacklists/whitelists for items, blocks, entities
  • Fixes: 3 bug-fix booleans
  • Yeets: the 50 disable* toggles
💡
The pattern to internalise

Most features need up to three things: (1) the tweak switched on, (2) its settings tuned in Generic, and (3) sometimes a separate hold-key pressed while you act (flexible placement, zoom, elytra camera, inventory preview). “I turned it on and nothing happens” is almost always #3 — or one of the gotchas called out in each section.

Requirements

Required

  • Fabric Loader + Fabric API
  • MaLiLib (library mod)
  • Tweakeroo itself

Nice to have

  • Mod Menu (config button in the mod list)
  • Litematica (Easy Place plays well with the placement tweaks)
  • Servux (server-side helper for multiplayer features)
⚙️

Config GUI & Hotkeys

Open the config screen with XC (the default, and what I use), or the config button in Mod Menu. Everything below is MaLiLib behaviour shared with Litematica and the other masa mods.

The tabs

TabWhat is in itSaved in config/tweakeroo.json as
AllEvery entry below in one searchable list—
GenericSettings (numbers, colours, enums) + a few hotkeyed booleans (freeCameraShow*, toolSwap*…)Generic
Fixes3 bug-fix booleansFixes
Listsnone / blacklist / whitelist selectors and their item, block, entity listsLists
TweaksThe feature toggles: ON/OFF button + toggle hotkeyTweakToggles, TweakHotkeys
HotkeysStateless actions and hold-modifiersGenericHotkeys
YeetsThe 50 disable* togglesDisableToggles, DisableHotkeys

A few values (fly-speed preset, remembered gamma, current hotbar-scroll row) are stored under Internal and have no tab.

Reading a row

  • [true/false] button — the toggle itself. Clicking it changes the state but shows no message.
  • [hotkey] button — what key(s) flip it. Pressing the hotkey in game flips it and shows an action-bar message “Toggled … on/off”. The hotkey text turns gold when it overlaps another binding; hold SHIFT while hovering to see which.
  • [settings icon] — the advanced keybind settings (left-click). Right-click resets them. The icon border turns orange when they differ from the defaults.
  • Enum buttons (list types, modes) — left-click cycles forward, any other mouse button cycles backward.
  • The search bar accepts a hotkey as the search term — handy for “what is bound to this key?”.

Setting a hotkey

  1. Click the hotkey button — it shows > … <.
  2. Press the keys in order (for XC: press X, then C). Each key press appends to the chord; the first press wipes the old binding.
  3. Click elsewhere (empty space) to finish. ESC before pressing anything clears the binding; ESC after adding keys just ends editing — so ESC itself can never be bound.

What “X,C” actually means

⚠️
It is a chord you hold, not a tap-tap sequence

XC means: hold X, then press C. It fires the instant the last key goes down. By default the order matters (C-then-X does nothing) and no other key or mouse button may be held — holding W or Shift when you complete the chord blocks it.

  • In-game only. Default hotkeys use the in-game context: they do nothing while chat, the inventory or any menu is open.
  • The prefix key still reaches vanilla. Only the last key of a chord is swallowed. That is why an unused prefix like X is a good idea — a prefix that vanilla uses (e.g. E) would still open the inventory.
  • Two hotkeys on the same keys both fire. Names are physical (QWERTY) key names; mouse buttons are MOUSE_LEFT / MOUSE_RIGHT / MOUSE_MIDDLE.

Advanced keybind settings

Each hotkey can be tuned with the settings icon. Tweakeroo uses a handful of presets:

SettingMeaning
ContextIn-game only, GUI only, or both
Activate onPress (chord completes), Release (a chord key comes up), or Both
Allow extra keysOther keys may be held. With order-sensitive on, extras are tolerated only if pressed before the chord
Order sensitiveKeys must be pressed in the listed order
ExclusiveOnly fires if no other cancelling hotkey fired since all keys were last released
CancelSwallow the last key press so vanilla never sees it (default on)
PresetUsed by
Default (in-game, on press, no extras, ordered, cancel)All toggles, openConfigGui, fly presets, free-camera presets, elytraCamera…
Both edges (press + release)The 9 adjustable toggles (next section)
Press, allow extra keysFlexible-placement keys, accurate-placement keys, inventoryPreview, playerInventoryPeek, placementYMirror, area selection keys, hotbarSwapBase
Release, allow extra keyshotbarScroll (acts when you let go)
Both edges, allow extra, unordered, no cancelzoomActivate, swapSpyglassAndActivate

Hold the toggle key and scroll — the “adjustable” toggles

Nine toggles have a hidden second function: hold the toggle hotkey and scroll the mouse wheel to change the related number without opening the GUI. To make that possible they fire on release, and if you scrolled while holding, the toggle is suppressed. So: tap = toggle, hold + scroll = adjust.

ToggleScroll adjusts
tweakAfterClickerafterClickerClickCount (±1)
tweakPlacementLimitplacementLimit (±1)
tweakPlacementGrid / tweakBreakingGridplacementGridSize / breakingGridSize (±1)
tweakHotbarSlotCycle / tweakHotbarSlotRandomizerhotbarSlotCycleMax / hotbarSlotRandomizerMax (±1)
tweakSnapAimYaw step ×2 (up) / ×0.5 (down); pitch step in pitch mode
tweakFlySpeedActive preset ±0.005 per notch (works even if the tweak is off)
tweakZoom key (or holding zoomActivate)zoomFov; CTRL = bigger step
⚠️
Source says: the periodic tweaks are NOT scroll-adjustable

Several tooltips (and older guides) say the periodic attack/use timings can be scrolled the same way. In 0.30.0 that code is commented out. Edit periodic*Interval and periodicHold*Duration in the Generic tab instead.

Lists tab

  • Each …ListType cycles none → blacklist → whitelist. none ignores both lists; a whitelist that is empty allows nothing.
  • Click a list button to edit — one entry per row. Item, block, entity and effect lists take exact registry ids such as minecraft:budding_amethyst. No wildcards; #tags only work in silkTouchOverride and pickaxeOverride. An unknown id is skipped with a log warning — no error in the GUI (mine has minecraft:fireworks where the id is minecraft:firework_rocket; harmless because that list type is none).
  • Most lists are re-parsed when you close the config screen (or join a world), not live.

Saving

💾
Config is written on GUI close and when you leave a world

A toggle flipped by hotkey is not on disk until you close a config screen or return to the title screen — a crash loses it. Hand-editing tweakeroo.json while inside a world is overwritten when you quit; edit it from the title screen.

🍖

Auto-Eating (Periodic Hold Use)

Tweakeroo has no “auto-eat” feature. Eating is built from Periodic Hold Use — it presses and holds right-click for a while, releases, waits, and repeats. Because vanilla only lets you eat when you are hungry, an attempt at full hunger does nothing, and the trick works as auto-eat. It is non-intuitive because several settings do not mean what their names suggest.

The short recipe

  1. Enable only tweakPeriodicHoldUse (Tweaks tab). Leave tweakPeriodicUse, tweakHoldUse, tweakFastRightClick and tweakPeriodicHoldAttack off. Bind a toggle key (mine: XU).
  2. Generic → periodicHoldUseDuration ≥ eat time + ping. Single player: 34–36. Servers: eat time + ping in ticks + 2 (see the table). Too short and the bite is cancelled every cycle.
  3. Generic → periodicHoldUseInterval = the pause between attempts, e.g. 100 (5 s). A long pause is fine — each attempt eats at most one item, and only if you are hungry.
  4. Put the food where vanilla will use it. Safest: food in the main hand (selected hotbar slot). Or food in the off hand with a harmless main-hand item (sword, pickaxe, empty hand, stick) — see Which item gets used.
  5. Turn on tweakHandRestock and keep spare stacks of the identical food in your inventory so the stack refills itself.
  6. Close any open screen. The first attempt happens Interval ticks after you enable it (and after every screen closes).

How the timing really works

The tweak runs once per game tick (20 Hz) as a tiny state machine. With I = periodicHoldUseInterval and D = periodicHoldUseDuration:

released · I ticks key DOWN · D ticks released · I ticks key DOWN · D eating ≈ 32 ticks + ping (server completes it) press + startUseItem() release one cycle = I + D ticks tick 0 = tweak switched on (or screen closed)
  • While released, a counter counts up; when it reaches I the key is pressed and startUseItem() is called immediately.
  • While pressed, another counter counts to D, then the key is released. The interval counter restarts from 0.
  • So the cycle is I + D ticks and I is the gap after release, not the time between presses.
  • Opening any screen (inventory, chat, pause) resets both counters. Counting restarts from zero when it closes.
  • Releasing the key while you are still eating cancels the bite — that is why D must exceed the eating time.
⚠️
Source says: “interval” is not “ticks between starting to hold”

The tooltip claims periodicHoldUseInterval is the number of ticks between starts. In the code it is the pause after release, so the real period is Interval + Duration. With the defaults (20/20) that is 40 ticks — and a 20-tick hold cannot finish a 32-tick meal, so the defaults never eat anything.

Choosing Duration (D)

ItemEat timeMinimum useful D (single player)D on a server
Most food, potions, milk32 ticks (1.6 s)≈ 34–3632 + ping ticks + 2
Honey bottle40 ticks (2.0 s)≈ 42–4440 + ping + 2
Dried kelp16 ticks (0.8 s)≈ 18–2016 + ping + 2

The bite is completed by the server, so add round-trip latency (50 ms = 1 tick). D = 40 covers normal food up to roughly 250 ms ping but is marginal for honey. If D is much longer than the meal (≈ 64+), the still-held key starts a second bite that is cancelled at release — harmless, but pointless.

Which item gets used

  • Vanilla tries the main hand first, then the off hand. A hand is skipped only if its item returns “pass” or “fail” — e.g. food while you are not hungry fails, so the off hand gets its turn.
  • Anything in the main hand that has a right-click use wins over off-hand food: blocks (they get placed), bows, crossbows, shields, buckets, ender pearls, spawn eggs, fireworks, fishing rods, maps, spyglasses, flint & steel, and axes/hoes/shovels (strip/till/path the block you aim at).
  • Aiming at a door, button, chest, crafting table, bed or villager means the block/entity interaction wins — and opening a screen resets the cycle.
  • Vanilla will not start using an item while you are mid-way through breaking a block, and mining pauses while you eat. Auto-eat while holding attack on a block is unreliable.

Why the other toggles do not work for eating

TweakWhat it doesEat?
tweakPeriodicHoldUseHolds use for D ticks, waits I ticks, repeats✓ Yes
tweakPeriodicUseOne click every N ticks; the key is never held✗ No — vanilla cancels a use when the key is not down. Use it for instant actions (placing, buckets, flint & steel, machines)
tweakHoldUseHolds use permanently, every tickEats once, then re-tries forever — and undoes the periodic release if both are on. Never combine
tweakFastRightClickN extra use clicks per frame while use is heldNot for eating; packet spam

If both hold-use and periodic-use are on, hold wins and periodic-use is ignored.

Keeping the food stocked (Hand Restock)

With tweakHandRestock on, finishing a meal does trigger a restock (a hook on “item finished being used”). Two conditions matter:

  • The restock cache only survives while the use key is still down — true for Periodic Hold Use whenever D is longer than the eating time.
  • The replacement must be identical (same item and same components — a renamed or enchant-glint stack will not match). It is searched in inventory rows (and the hotbar too, unless slot-cycle/randomizer is on). See Hand Restock.

Troubleshooting

SymptomLikely cause
Nothing is ever eatenD shorter than the meal (defaults 20/20 always cancel), or a screen keeps resetting the cycle
Takes a long time to startThe first press comes I ticks after enabling (I = 40 → 2 s)
Blocks get placed / bow fires / shield goes upMain-hand item is being used instead of the food
Golden apples / potions / honey vanish at full hungerAlways-edible items are consumed every cycle
Right-click stays “stuck” after toggling offTurning a periodic-hold tweak off mid-hold does not release the key — click physically once, or open a screen
Off-hand food gets swapped awaytweakRepairMode treats non-damageable off-hand items as “done” and swaps in a Mending item
Stack count looks wrong while eatingSlot-sync workaround drops server slot updates while use is held with fast placement on (see Fast Placement)
💡
My current setup

Toggle XU, Duration 40, Interval 40 → an 80-tick cycle with the key down half the time. It works for normal food, but a longer Interval (100+) reduces the time right-click is held and the chance of surprising side effects. XY (tweakPeriodicUse) is a separate auto-clicker and cannot eat.

🖱️

The Auto-Click Family

Six tweaks click or hold the mouse for you. They differ in what they press, how often, and when they run — and the tooltips are misleading on timing.

TweakBehaviourTimingGood for
tweakPeriodicAttackOne left-click every periodicAttackInterval ticks. The key is never heldper tickMob farms, single hits
tweakPeriodicUseOne right-click every periodicUseInterval ticksper tickPlacing, buckets, flint & steel, machines
tweakPeriodicHoldAttackHolds attack for periodicHoldAttackDuration, waits …Intervalper tickAFK mining (holding attack never hits entities)
tweakPeriodicHoldUseSame, for useper tickAuto-eat, bow draw, AFK use
tweakHoldAttack / tweakHoldUseEmulate permanently holding the buttonevery tickContinuous mining / using
tweakFastLeftClick / tweakFastRightClickN clicks while you hold the buttonper rendered frameRapid-fire creative breaking/using

Things to know

  • Fast clicks are per frame, not per tick. fastLeftClickCount / fastRightClickCount default to 10; at 120 fps that is 1,200 clicks per second. Turn the count down on servers.
  • Fast Left Click is a silent no-op in survival with a tool (pickaxe, axe, shovel, hoe, shears, flint & steel, fishing rod, brush) unless fastLeftClickAllowTools is on. Swords, bows and an empty hand work. It also removes vanilla’s 10-tick miss penalty.
  • Fast Right Click is filtered by fastRightClickListType (item lists) and fastRightClickBlockListType (block lists). Both hands are checked. My block blacklist keeps it off chests, ender chests, trapped chests and a white shulker box.
  • Periodic Hold Attack double-fires: the initial press is also a queued click, so each cycle swings twice (the second lands with ~0 cooldown). Prefer Periodic Attack or Fast Left Click for combat.
  • Don’t stack the “normal” and “periodic” forms of the same button (the tooltips say so, and the code picks hold over periodic).
  • Every periodic tweak resets while a screen is open.
📦

Hand Restock

tweakHandRestock refills your main hand or off hand from your inventory when a stack runs low or out — while placing, using, attacking, or finishing a consumable. It is two separate mechanisms:

1 · Pre-restock (merge)

When handRestockPre is on and the stack in hand is ≤ handRestockPreThreshold (default 6) — and the item stacks to more than the threshold — an identical stack from inventory rows is merged into your hand. Scans slots low → high. Never applies to unstackable items.

2 · Full restock (swap/select)

When the hand is empty (or holds a different item), a replacement is searched high → low: hotbar first, then inventory. A hotbar source just selects that slot; an inventory source is swapped into the hotbar. Off hand: swapped in directly.

  • Identical means identical. Same item and same components (enchants, custom name…). Damageable tools use a different search: same item type with enough durability left and at least the same Silk Touch/Fortune level.
  • The stack must be cached at the start of the use/attack, and the cache is dropped on any frame where neither use nor attack is held or a screen is open. That is why restock works for held-key actions.
  • It also fires on: finishing a consumable, break-replace, and a popped totem (re-equips another totem).
  • It never touches shulker boxes, bundles, ender chests or other containers. If nothing matches, it silently does nothing.
  • Hotbar sources are excluded when tweakHotbarSlotCycle or tweakHotbarSlotRandomizer is on.
  • Lists: handRestockListType (none / blacklist / whitelist). My blacklist holds the bucket family, but the list type is none so it is inactive — switch the type to blacklist to use it.
🔧

Tool & Weapon Switch, Repair

Tool Switch (tweakToolSwitch)

  • Fires when you start digging a block (and again if the target changes while attack is held). It does not switch back.
  • The toolPick hotkey does the same on demand for the block you look at, without needing the tweak on.
  • Candidates are scanned hotbar first, then inventory; a later slot only wins if strictly better, so equal tools resolve to the lowest hotbar number.
  • A tool coming from the inventory is swapped into a slot from toolSwitchableSlots — an empty one if possible, else one holding a non-tool (swords, food and blocks count as non-tools and get displaced!).
  • Blocks with no tool tag (torches, flowers) never switch.

Slot syntax

toolSwitchableSlots and toolSwitchIgnoredSlots take hotbar numbers 1–9 and single-digit ranges, comma-separated, no spaces: 1,3-5. Defaults: switchable 1-9, ignored empty. If the currently selected slot is in the ignored list, switching is skipped entirely.

How a tool is chosen

The rules are checked in order and the first one with an opinion wins. The toolSwap* options in Generic switch individual rules on or off:

  1. Bamboo → sword first (toolSwapBambooUsesSwordFirst, on)
  2. Leaves → hoe instead of shears (toolSwapLeavesUsesHoeFirst, off)
  3. Wool/vines/cobwebs → shears (toolSwapNeedsShearsFirst, on)
  4. Beacons/glass-type → pickaxe (toolSwapNeedsPickaxeFirst and the pickaxeOverride list)
  5. Fortune vs Silk Touch: toolSwapPreferFortuneOverride, toolSwapPreferSilkTouch (on), toolSwapSilkTouchFirst (glass, ender chests; on), toolSwapSilkTouchOres, silkTouchOverride
  6. The correct tool for the block, then better enchantments (toolSwapBetterEnchants), better material (netherite > diamond > iron > copper > stone > gold > wood), then simply faster breaking speed

Weapon Switch (tweakWeaponSwitch)

  • Fires at the start of every attack on an entity, no switch back. Skipped if the selected slot is ignored or you already hold a mace.
  • entityWeaponMapping lines look like minecraft:minecart, minecraft:boat => minecraft:netherite_axe, minecraft:diamond_axe. <default> on the left is the fallback. An entity line replaces the default (no merge).
  • The mapping is a preference, not a filter — if no mapped weapon is found you may still get an axe, bow or trident.
  • Source says: <ignore> on the right-hand side does not prevent switching in the code (it only means “nothing is preferred”). And the mace can never be chosen even if listed.

Swap Almost-Broken Tools (tweakSwapAlmostBrokenTools)

  • Checked every time you use, click or dig (not passively). “Nearly broken” = uses left ≤ itemSwapDurabilityThreshold (default 20).
  • Source says: for items with ≤ 100 max durability the limit becomes 8% of max durability if that is smaller (gold tools → 3, wooden → 5, flint & steel → 6). The tooltip says 5%.
  • Swap order: identical item with more durability → an empty inventory slot (the tool goes there and your hand empties) → any non-damageable item (which can be food or blocks!).
  • toolSwapAllowUnenchantedToBreak: unenchanted tools are allowed to break.

Repair Mode (tweakRepairMode)

Every tick, for each slot in repairModeSlots (default mainhand, offhand; also head/chest/legs/feet), if the item there is fully repaired, has no Mending, or is not damageable at all, it is swapped with a damaged Mending item from the inventory. Empty slots are never filled.

🚨
It evicts food and torches from your hands

With the default slots, an off-hand stack of food or torches counts as “done” and is swapped out for a Mending item. Don’t combine Repair Mode with off-hand auto-eat.

🎹

Hotbar Scroll & Hotbar Swap

Two ways to bring the 3 inventory rows to the hotbar without opening the inventory.

Hotbar Scroll (tweakHotbarScroll)

  1. Hold the hotbarScroll key — an overlay shows the 3 rows plus the hotbar with a red outline on the current row.
  2. Scroll to move through rows 1 → 2 → 3 (wraps).
  3. Release — the hotbar swaps with that row.

The row is remembered in hotbarScrollCurrentRow. The wheel is swallowed while held, so the normal hotbar does not move. It acts on release.

Hotbar Swap (tweakHotbarSwap)

hotbarSwapBase only draws the overlay while held. hotbarSwap1/2/3 each swap the whole hotbar with inventory row 1/2/3 (top row = 1) via nine slot swaps. They do not check that the base key is held — a typical binding is base LEFT_ALT, swaps LEFT_ALT1 / 2 / 3. Overlay position: hotbarSwapOverlayAlignment + offsets.

I have XH as the toggle for Hotbar Scroll, but the hotbarScroll key itself is unbound — bind it before expecting anything.

⚡

Fast Placement & Placement Restrictions

Fast Block Placement lets you hold right-click and sweep the cursor over new spots to place a block on each one, instead of clicking per block. Placement Restriction constrains where those blocks may go (a plane, a column, a line…) so a sloppy sweep still builds something straight.

🚨
Fast Placement silently does nothing unless a restriction (or grid) is also on

The first-click state that fast placement needs is only recorded when tweakPlacementRestriction or tweakPlacementGrid is on. With both off, tweakFastBlockPlacement appears enabled but vanilla’s slow 4-tick repeat applies. This is what the option placementRestrictionTiedToFast (default on) is for: it makes tweakPlacementRestriction follow the Fast Placement toggle. Want unrestricted fast placement? Turn on tweakPlacementGrid with placementGridSize = 1, or use Layer mode with restrictionLayerHeight = 0.

⚠️
It also breaks vanilla “hold right-click to repeat” (note blocks, buttons, levers…)

Vanilla repeats a held right-click every 4 ticks. With Fast Placement and a restriction on, your first successful right-click on anything (a note block returns “success”) records a first-click anchor, and Fast Placement then takes over: every frame it re-arms the use cooldown to 4, so vanilla’s own repeat never fires — while its own loop finds nothing to place on a non-replaceable block. Result: one click, then nothing, while left-click (attack) still repeats normally. Fix: turn Fast Placement off (XG — that also switches the tied restriction off), or leave it on and use tweakPeriodicUse (XY) for the AFK clicking, which doesn’t depend on a held key.

Quick start

  1. Enable tweakFastBlockPlacement (mine: XG). With “tied to fast” on, the restriction turns on with it.
  2. Choose a restriction mode with X1…6 (table below). The hotkey message shows the active mode.
  3. Hold right-click and place a first block, then sweep the cursor across new positions. Everything after the first block obeys the restriction and uses the first block’s orientation.
  4. Release right-click — the “first block” anchor resets. The next click starts a new anchor.

The restriction modes

Anchor = the position of your first block and the face you first clicked (call its axis A).

ModeHotkey (mine)What is allowed
PlaneX1Same coordinate along axis A as the first block — a flat sheet. First click on a floor top = everything at that height; on a north wall face = same Z plane
FaceX2No position test at all — you may only place against faces pointing the same direction as the first face (e.g. only top faces)
ColumnX3Same position in both other axes — a 1-wide straight line along A (vertical tower from a floor click)
LineX4In the plane, share at least one coordinate with the first block — a “+” cross of two lines; you can swap between them mid-drag
DiagonalX5In the plane, equal distance on both axes — an “X”
LayerX6Ignores the clicked face; allows Y within restrictionLayerHeight blocks of the first (default 1 = the same layer; 0 = anywhere; negative goes downward)

restrictionLayerHeight has no tooltip and no scroll handler, despite the lang text — set it in the config screen. The default mode when nothing is chosen is Face.

Related placement filters

  • tweakPlacementGrid (placementGridSize, default 3): block coordinates must be multiples of the size away from the first block, on all three axes. Scroll-adjustable. Also satisfies the fast-placement requirement.
  • tweakPlacementLimit (placementLimit, default 3): at most N blocks per hold of right-click; further clicks do nothing until you release. Scroll-adjustable.
  • tweakPlacementRestrictionFirst: only place against the same block type you first clicked.
  • tweakPlacementRestrictionHand: only place against blocks that match the item in your hand. With an empty hand or a mismatch, every right-click on a block does nothing.

Settings

SettingDefaultNotes
fastBlockPlacementCount2 (1–16)Blocks per rendered frame, not per game tick — the effective rate scales with your FPS
fastPlacementRememberOrientationonEvery fast block uses the yaw you had at the first click (facing-based blocks all line up). Costs two extra look packets per block
fastPlacementItemListType + listsblacklistMy blacklist: ender chest, white shulker box only. Both hands are checked — a blacklisted item in the off hand disables fast placement
slotSyncWorkaroundonDrops server “your stack is N” corrections for the selected slot and off hand while use is held, to avoid flicker. The displayed count may be stale until you release
slotSyncWorkaroundAlwaysoffApply that workaround whenever use is held — for other rapid-use mods such as Litematica Easy Place
ℹ️
How a sweep works

Each frame, up to fastBlockPlacementCount times: re-pick the block under the crosshair; place if it is a new position (only the last placed position is remembered), the spot is replaceable, the restriction allows it, and Restriction First/Hand agree. After each successful placement the ray is re-picked immediately — that is how a count of 2 places two blocks along your line of sight in one frame.

⚠️
Face mode + flexible rotation only places one block

Face mode compares the rotated face with the first clicked face; with remembered flexible rotation those are never equal, so only the first block goes down. Use Plane, Column, Line, Diagonal or Layer with flexible placement.

🎯

Flexible & Accurate Block Placement

Vanilla decides a block’s orientation from where you stand and look. Flexible Block Placement lets you choose the orientation — and an offset — by which part of a block face you click while holding a modifier key. Accurate Block Placement is the simpler cousin: it just points the block into or away from the clicked face.

⚠️
Two switches, both needed

Enable tweakFlexibleBlockPlacement and hold one of its keys (Hotkeys tab): flexibleBlockPlacementRotation (mine LEFT_ALT), …Offset (mine LEFT_CONTROL), …Adjacent (unbound). The targeting overlay only draws when the tweak is on, you are looking at a block, and at least one key is held. Right now my tweakFlexibleBlockPlacement is OFF, so Alt/Ctrl do nothing.

The face overlay

Each face is split into a centre square (the middle half of the face) and four trapezoids cut by the diagonals. The region under your crosshair is highlighted in the overlay colour (flexibleBlockPlacementOverlayColor).

TOP BOTTOM LEFT RIGHT CENTER Where the block’s front points (E) CENTER → straight out of the face, toward you LEFT / RIGHT → toward that edge (your left / right) TOP / BOTTOM → up / down on a wall face On floor/ceiling faces “top/bottom” = away / toward you Center square = middle 50% × 50% Diagonals decide which trapezoid an edge click falls in (exact ties go to TOP/BOTTOM)

For floor and ceiling faces the “left/right/up/down” directions are taken from the way you are facing, so the same physical spot gives a different result depending on which way you stand.

What the three keys do

KeyEffect
RotationThe block is oriented per the region (above). Works via yaw faking on any server, and via the accurate-placement protocol where supported
OffsetShifts the placement one block toward E. A centre click lands the block two blocks out with a one-block gap; an edge click places it diagonally
AdjacentOnly for edge regions: places in the neighbouring position in the direction of that region, in the same layer as the clicked block. The centre does nothing
  • Keys stack (adjacent → rotation → offset). Adjacent is not remembered by rememberFlexibleFromClick.
  • With rememberFlexibleFromClick (on) the mode from your first block persists while right-click stays down — you don’t need to keep holding the keys during a sweep (needs a restriction/grid on — see Fast Placement).
  • These keys click the air block in front of the face, never the real block, so you never open a chest or table you’re pointing at. tweakFakeSneakPlacement gives a similar benefit without a key.

Recipes

You wantHoldClick
Piston / observer / dropper pointing up from a floorRotationCENTER of the top face
Vertical block on a wall, pointing up / downRotationTOP / BOTTOM region of the wall face
Sideways-facing block on a wallRotationLEFT / RIGHT region
Block one gap away, or diagonally placedOffsetCENTER (gap) or an edge (diagonal)
Stairs / repeaters / furnaces (horizontal-only)RotationSides use the yaw rules; vertical E falls back to yaw

Accurate Block Placement (the simple one)

tweakAccurateBlockPlacement plus two hold-keys: accurateBlockPlacementInto (block faces into the clicked block — pistons, droppers, dispensers) and accurateBlockPlacementReverse (the opposite of what vanilla would place). Both are unbound by default, and they draw no overlay. It works only through the protocol below; without protocol support the keys do nothing. Right now the tweak is on but both keys are unbound, so it does nothing.

Does it work on this server? — the placement protocol

Blocks whose orientation is not just “the face you clicked” (logs, quartz pillars, most facing blocks) need the server to decode a hidden value the client encodes in the click position. Without it the client predicts the rotation but the server places the vanilla block, and it visibly snaps back.

Where you playWhat works
Single player / LAN hostEverything. Needs clientPlacementRotation (on)
Server with Servux (1.21+)Everything (protocol v3)
Server with Carpet and the accurateBlockPlacement rule, or QuickCarpetEverything (protocol v2)
Vanilla server / Realms / PaperOnly blocks that depend on the clicked face (hoppers, logs by face…), plus yaw-based blocks via yaw faking. Turn accuratePlacementProtocol off here, or expect ghost blocks
  • accuratePlacementProtocol (bool, on) decides whether the client sends the encoded value. accuratePlacementProtocolMode (auto / v3 / v2 / slabs-only / none) only controls decoding — slabs-only and none behave identically. Toggle the bool with toggleAccuratePlacementProtocol (bind it if you move between servers).
  • Auto = v3 in single player or on Servux, v2 on a Carpet server, otherwise slabs-only.
  • itemUsePacketCheckBypass only exists on the integrated server (the mod is client-only); it does nothing for a dedicated server.
  • clientPlacementValidation (on) refuses placements whose resulting state can’t survive.
  • With the protocol active, rotation-placed stairs and trapdoors are forced to the bottom half regardless of where you click.
🧱

Other Placement Tweaks

TweakWhat it does & what to watch for
tweakFakeSneakPlacementWith a block in hand, clicks the air beside the target — place against chests, tables, doors and levers without sneaking. Non-block items behave normally
tweakYMirror + placementYMirrorHold the key to mirror the click height inside the block: place top slabs/stairs when clicking a top face, and vice versa. Key unbound by default. Can be defeated by the protocol’s forced bottom half
tweakAngelBlockCreative only. Place a block in mid-air angelBlockPlacementDistance (default 3, max 5) blocks away when you click on nothing. Does not repeat while held
tweakScaffoldPlaceClick any block of a row of the same block to extend it, up to scaffoldPlaceDistance (5). Danger: with it on, every right-click on a block does nothing unless you hold a block item and a valid extension spot exists — no bone-mealing, no opening chests with an empty hand
tweakAfterClickerSets repeaters/comparators/note blocks as they’re placed. With the protocol on it sends no clicks; instead it encodes the count into the placement (N=1–4 sets a repeater delay of 1–4 in single player) and only works alongside Accurate placement or flexible rotation. With the protocol off it sends N real right-clicks. Scroll-adjustable
tweakPickBeforePlaceBefore each placement, picks the block you’re pointing at (not what you hold) — creative pick, or a survival swap from inventory. Turns slotSyncWorkaround off
tweakBreakReplaceRight after you break a block, immediately places the block you hold in its spot (bypasses all restriction rules)
tweakSignCopy + copySignTextStores the last sign’s text and stamps it onto every sign GUI you open. Pair with disableSignGui: write one sign, then enable Disable Sign GUI and place copies. Danger: overwrites any sign whose GUI you open. Text only (styling dropped), memory only
tweakHotbarSlotCycle / RandomizerAfter each placed block, move to the next hotbar slot (cycle) or a random one (randomizer), up to the max slot (a 1-based count: max 2 = slots 1–2). Both stop Hand Restock pulling from the hotbar. Scroll-adjustable
tweakHangableEntityBypassItem frames and paintings are ignored by your crosshair (unless sneaking; flip with hangableEntityBypassInverse) — click the block behind a frame
tweakItemUnstackingProtectionStops using items in unstackingItems (buckets, bottles) when the result wouldn’t fit — prevents pouring lava into your inventory. Needs an empty main-inventory slot; the off hand doesn’t count
⛏️

Breaking Tweaks

The breaking side mirrors placement.

  • tweakBreakingRestriction with breakingRestrictionMode (default Line) — same six modes as placement (Plane, Face, Column, Line, Diagonal, Layer), anchored on the first block you start mining and the face you hit. Blocks outside the pattern are simply skipped. Mode hotkeys breakingRestrictionMode* have no default keys. Recipes: mining a wall → Plane; a straight shaft → Column; clearing from the top → Layer (height 1).
  • tweakBreakingGrid (breakingGridSize, default 3; mine XB): only break blocks on a grid. Scroll-adjustable.
  • tweakBlockTypeBreakRestriction: white/blacklist of blocks that may be broken by hand. Mine blacklists minecraft:budding_amethyst so I can’t destroy a budding block by accident. Warning style: blockTypeBreakRestrictionWarn.
  • tweakEntityTypeAttackRestriction: white/blacklist of entities you may attack. Mine blacklists minecraft:villager. Right-click interaction (trading) is unaffected.
  • disableBlockBreakCooldown (Yeets) removes the delay between breaking blocks.
  • Fast Left Click, Hold Attack and Periodic Hold Attack are covered in the auto-click family.
🎥

Free Camera

tweakFreeCamera detaches the view from your body: you fly a spectator-style camera through walls while your real character stays where it was. Toggle it with its hotkey (unbound in my config), or type #fc in chat.

🚨
Your body is still live and still killable

The real player keeps ticking — gravity, drowning, fire and mobs all apply. Enabling it mid-air only zeroes your velocity when you’re on the ground. Enable it somewhere safe. Free camera is force-disabled on every dimension change or respawn and is never saved.

Controls & behaviour

  • Mouse look rotates the camera; movement keys fly it (JUMP up, SNEAK down, sprint ×3 forward). Default speed is 0.7 blocks/tick.
  • With tweakFlySpeed on, the active fly-speed preset also sets camera speed (preset × 10 blocks/tick) — so flyPreset1–4 and scroll-on-toggle control it.
  • Attack, use, place, break and entity interaction are blocked by default. The camera does not collide with blocks and ignores fluid overlays.
  • Your body is rendered in the world. Hands, hotbar and status bars are hidden unless freeCameraShowHands, freeCameraShowHotBar, freeCameraShowStatusBars are on.
  • You only see chunks the server sent around your real position. tweakRenderEdgeChunks renders the outermost loaded chunks, which helps a lot here.

Options

OptionEffect
freeCameraPlayerInputsClicks act for your real player (using the real player’s target), so you can interact while watching from elsewhere
freeCameraPlayerMovementMovement keys drive the real player while the camera stays put — a remote viewport. Reset to off every time free camera turns on
freeCameraShowHands / HotBar / StatusBarsShow those HUD parts while in free camera (the StatusBars hotkey field is inert)
💡
Watch a farm while you work

Save a preset over the machine, then enable freeCameraPlayerInputs + freeCameraPlayerMovement: the camera stays on the farm while you walk around and act as your real player.

Camera presets

Save and recall viewpoints. All preset hotkeys are unbound by default.

HotkeyAction
freeCameraPresetAddSave the current camera position/angle as “Preset N” (works even outside free camera)
freeCameraPresetCycleRecall the next preset in this dimension (turns free camera on). Refuses if you’re already within 0.75 blocks / 35° of it
freeCameraPresetDeleteDelete the preset near the camera (same 0.75-block / 35° test)
freeCameraPresetDeleteAllDelete all presets in the current dimension
openCameraPresetEditorGui (XP)Editor: list (Dimension/All), Create New, Clear; per row Recall, Rename, Set Here, Remove
  • Storage: config/tweakeroo/<world or server>.json, one file per world holding all dimensions. Singleplayer uses the world folder name; multiplayer uses the server address; all Realms share one file.
  • Written only when you leave to the title screen. By code reading, presets from one world can appear in another world that has no preset file yet (unverified).
  • The cycle position is global; after changing dimension the first cycle can land on the last preset.

The #fc chat command

Type in the chat box (with #, not /) — it is handled locally and never sent. No argument toggles free camera.

CommandAliasesDoes
#fc add [name]a, newSave a preset
#fc set <id>s, updateRe-save a preset here — stores eye position, so it returns about 1.6 blocks too high; prefer the editor’s “Set Here”
#fc del <id>d, deleteDelete. (An id is required — the “delete at position” branch is dead code)
#fc del_alldaDelete all in this dimension
#fc listlList presets in this dimension
#fc rename <id> <name>n, renRename
#fc recall <id>r, gotoJump the camera to a preset
#fc cycle [id]cCycle
#fc help [sub]hHelp
🔭

Zoom, Elytra Camera & Snap Aim

⚠️
Zoom and Elytra Camera each need two things

The toggle hotkey (tweakZoom, tweakElytraCamera) only switches the feature on. The action is a separate held key: zoomActivate and elytraCamera. In my config both action keys are unbound, so neither does anything yet.

Zoom (tweakZoom)

  • Hold zoomActivate to replace your FOV with zoomFov (default 30). A value above your normal FOV zooms out.
  • Scroll while zoomed (holding the tweakZoom key or zoomActivate) to change zoomFov; CTRL uses the bigger step zoomFovDifferenceCtrl (5 vs 1). Wheel up = zoom in. Range zoomMinimumFov…zoomMaximumFov.
  • zoomAdjustMouseSensitivity (on) lowers sensitivity while zoomed. Gotcha: zoomResetFovOnActivate (restore the scroll-changed FOV on release) only works while sensitivity adjustment is on.
  • tweakSpyglassUsesTweakZoom: spyglass use zooms to zoomFov and scrolls the same way. swapSpyglassAndActivate (pull a spyglass from the inventory into utilityHandSlot and scope; release swaps it back) does nothing unless this tweak is on.

Elytra Camera (tweakElytraCamera + elytraCamera)

Hold elytraCamera and the mouse only moves a separate camera angle while your real rotation (flight direction) stays fixed — look down at your build while flying dead straight. Release and the view snaps back. elytraCameraIndicator (never / with_key / always) draws a bar showing your real pitch. The key uses default settings (no extra keys) — press it before other keys or mouse buttons, or enable “allow extra keys” on it.

Snap Aim & Aim Lock

  • tweakSnapAim rounds your aim to a multiple of snapAimYawStep (default 45° = 8 compass headings) and/or snapAimPitchStep (12.5°). snapAimMode: yaw / pitch / both. Yaw 0 = south, 90 = west, −90 = east, 180 = north.
  • With snapAimOnlyCloseToAngle (on) it only sticks within snapAimThresholdYaw (5°) / …Pitch (1.5°) of a step, otherwise aim is free — a magnet feel. Off = hard steps.
  • Gotcha: with pitch step 12.5 and “only close” off, straight down (90°) is unreachable (snaps to 87.5°). Use a step that divides 90 (15, 22.5, 30, 45).
  • tweakSnapAimLock freezes the last snapped value (needs SnapAim on); tweakAimLock freezes yaw+pitch at their current values (independent). The other axis stays free in single-axis modes.
  • The indicator flashes for 0.75 s (snapAimIndicator, colour configurable).
🏃

Movement & Miscellaneous Tweaks

TweakNotes
tweakFlySpeed, flyPreset1–4, flyIncrement1/2Creative/spectator fly speed presets (0.01 / 0.064 / 0.128 / 0.32; vanilla is 0.05). Increment keys permanently add ±0.128 to the active preset. Turning the tweak off restores 0.05. The server may still clamp
tweakCustomFlyDecelerationStop faster when you release movement keys while flying (flyDecelerationFactor, default 0.4 — lower = stops sooner)
tweakPermanentSneak / Sprint / SwimSneak in GUIs only if permanentSneakAllowInGUIs. Sprint only when moving forward, not in water/using an item, food > 6. Swim ≠ sprint-swim. Mine: XN for sneak
tweakFakeSneakingLedge protection without slowing down or changing pose (mine XK). Unrelated to Fake Sneak Placement
tweakMovementKeysLastWhen opposite keys are held, the later one wins. Conflicts with permanent sneak, which rebuilds the input and discards it
tweakBlockReachOverride / EntityReachOverrideCustom reach (blockReachDistance 4.5, entityReachDistance 3.0). Single player: as set. Multiplayer: capped at server reach +1 (block) / +3 (entity). Expect strict servers to reject more
tweakGammaOverrideBrightness beyond vanilla’s slider (gammaOverrideValue 16). It fights the video-settings slider — turn it off to change base brightness
tweakDarknessVisibility, tweakWaterVisibility, tweakLavaVisibilityWater and lava visibility only apply while you wear a helmet; darkness softens the Darkness pulse
tweakPlayerListAlwaysVisibleTab list permanently on-screen
tweakF3CursorAlways draws the F3 3D axes — and hides the normal crosshair
tweakPotionWarningAction-bar warning every 5 s for effects with ≤ 600 ticks left; filter with potionWarningListType and lists
tweakPrintDeathCoordinatesPrints your coordinates and dimension to chat on death (click to suggest)
tweakChatTimestamp / ChatBackgroundColor / ChatPersistentTextTimestamps (chatTimeFormat is Java SimpleDateFormat; an invalid pattern errors on every message); background colour; keep unsent chat text (which then replaces the / you pressed to open chat)
tweakCustomInventoryScreenScaleForce GUI scale customInventoryGuiScale on all container screens
tweakTabCompleteCoordinateTab-completing coordinates (not aiming at a block) uses your position instead of ~
tweakRenderLimitEntities / RenderInvisibleEntitiesCap item/XP-orb rendering per frame (−1 = unlimited, 0 = hide all); render invisible entities like in spectator
sitDownNearbyPets / standUpNearbyPetsRight-click each of your tamed pets within 6 blocks. Hold an empty hand (food, dye or armor would feed/dye/equip)
toggleGrabCursor, skipWorldRenderingRelease/grab the mouse; skip world rendering (GUI still draws; resets each launch)
writeMapsAsImagesSaves every map the client knows as a PNG in config/tweakeroo/map_images/<world>/

Auto elytra & rockets

  • tweakAutoSwitchElytra: equips your best elytra and, on landing, your previous chest armour. It triggers on a fresh Jump press while airborne (a ground jump does nothing).
  • Landing quirk: if the remembered chestplate is gone, it equips the best chestplate you own (armour, toughness, Protection), not necessarily the one you wore.
  • tweakAutoSwitchRockets: pulls the best rocket stack (longest flight) into utilityHandSlot; explosive rockets excluded unless rocketSwapAllowExplosions. swapElytraChestplate is a manual swap between elytra and chestplate.
  • utilityHandSlot (any / main_hand / off_hand) only affects rockets and the spyglass — not food, whatever older text says.
🔍

Previews & Data Sync

TweakShowsWorks on Realms / vanilla servers?
tweakShulkerBoxDisplayContents of any item with a container component (shulkers, and other chest-like items) in an inventory tooltip. Needs SHIFT unless shulkerDisplayRequireShift is off. Background tinted by dye colour✓ Yes (item data only)
shulkerDisplayEnderChestYour ender chest contents when hovering an ender chest item (from synced data, then chest cache, then a fallback that is empty without sync)Partly — needs sync or a cached view
tweakBundleDisplayBundle contents with SHIFT. Turning bundleDisplayRequireShift off suppresses the vanilla bundle tooltip entirely✓ Yes
tweakMapPreviewMap preview with SHIFT (mapPreviewSize, default 160)✓ Yes
tweakInventoryPreview + inventoryPreviewContents of the chest / barrel / furnace / villager / horse / player under your crosshair while the key is held. Needs line of sight. The tooltip calls it deprecated in favour of MiniHUD’s versionOnly with sync (below) or in single player
tweakPlayerInventoryPeek + playerInventoryPeekYour own 27 main-inventory slots under the crosshair while held (mine X9)✓ Yes

Server data sync

To read a chest or entity you have not opened, on a non-integrated server, Tweakeroo needs the data sent to it:

  • Single player: reads the integrated server directly — nothing to configure.
  • entityDataSync (Servux): requires the Servux server mod with a matching version.
  • entityDataSyncBackup: uses vanilla NBT query packets; only works if the server lets you query (operator status) and is only attempted for a limited time after login.
  • Without either on a remote server, chest/shulker-block/ender previews are empty or stale; the item tooltip previews above still work.
  • inventoryPreviewToggleScreen opens the preview as a real screen with hover tooltips (its villager-colour option is ignored).
🚫

Disable (“Yeets”) Toggles

50 toggles that turn a vanilla behaviour off. All are off by default with no hotkey. Grouped by what they touch:

FamilyTogglesNotes
Fog & skydisableAllTerrainFog, AtmosphericFog, RenderDistanceFog, BossFog, SkyDarknessSodium: disableAllTerrainFog is excluded when Sodium is installed. Shader packs (Iris) likely override the rest (unverified)
HUD & overlaysFireOverlay, FreezeOverlay, NauseaEffect, BossBar, ScoreboardRendering, StatusEffectHud, InventoryEffectRendering, ItemSwitchRenderCooldown, OffhandRendering, WorldViewBobIris: disableWorldViewBob is excluded when Iris is installed
Particles, weather, soundParticles, BlockBreakingParticles, FirstPersonEffectParticles, RainEffects, NetherPortalSounddisableNetherPortalSound looks inverted in the source (unverified at runtime)
Entity / block renderingEntityRendering, ArmorStandRendering, FallingBlockEntityRendering, DeadMobRendering, MobSpawnerMobRendering, TileEntityRendering, BeaconBeamRendering, RenderingScaffoldingFor lag-fixing and screenshots
Engine — dangerousChunkRendering, ClientLightUpdates, ClientBlockEvents, ClientEntityUpdates, EntityTicking, TileEntityTicking, ConstantChunkSaving, TickRatePlayerSlowdownCareful. Block changes stay invisible until you turn ChunkRendering off and press F3+A. EntityTicking/TileEntityTicking also freeze the integrated server (mobs, hoppers, furnaces) in single player
Gameplay conveniencesBlockBreakCooldown, DoubleTapSprint, WallUnsprint, AxeStripping, ShovelPathing, SignGui, PortalGuiClosing, SlimeBlockSlowdown, DeadMobTargeting, Observer, BatSpawning, VillagerTradeLockingdisableObserver stops observers firing (breaks redstone in single player). disableSignGui with Sign Copy off means you can never edit a sign
UIShulkerBoxTooltip, CreativeMenuInfestedBlocks—
🍴

TweakFork Extras

A few tweaks come from Andrew54757’s “TweakFork”, merged into the 26.x line.

  • Area Selector (tweakAreaSelector): look at a block; LEFT CLICK sets pos 1 (red), RIGHT CLICK sets pos 2 (blue). Hold areaSelectionOffset (mine LEFT_SHIFT) to select the block beside the face. While on, normal attack/use/place is cancelled entirely. In-memory only. areaSelectionAddToList / …RemoveFromList (unbound) add the box’s non-air blocks to the list chosen by selectiveBlocksListType.
  • Selective Blocks Rendering (tweakSelectiveBlocksRendering): a blacklist hides listed positions; a whitelist shows only listed positions (an empty whitelist hides everything). The blocks are actually swapped out of the client world, so they’re also untargetable and your client collision no longer sees them (rubber-banding likely, unverified). Lists are absolute coordinates x,y,z|x,y,z, stored globally. tweakSelectiveBlocksRenderOutline draws green (whitelist) / red (blacklist) outlines. selectiveBlocksNoHit is never read — no effect.
  • Scaffold Place and Zoom are covered above.
🌐

Servers & Realms

Everything is client-side code. On vanilla servers and Realms nothing is sent that a normal client would not send — except the placement-protocol click values and any reach values you choose. Some servers’ anti-cheat may dislike fast placement, hand restock’s rapid slot clicks, or flexible placement’s extra look packets.

CategoryTweaks
Fine anywhereFree camera, zoom, snap/aim lock, elytra camera, gamma, fog/render disables, chat tweaks, presets, shulker/bundle/map tooltips, tool/weapon switch, periodic clicks, hand restock, hotbar scroll/swap
Needs server helpBlock rotation for non-face-based blocks (Servux/Carpet); chest/entity/ender previews (Servux or op-level NBT query); tweakEmptyShulkerBoxesStack (SP or a server mod that matches)
Single player onlytweakFillCloneLimit, tweakSculkPulseLength, tweakStructureBlockLimit, reach overrides (partly), disableBatSpawning, disableEntityTicking, disableTileEntityTicking, disableObserver, disableVillagerTradeLocking. Shown in gold in the GUI

With Sodium and Iris installed, a few options are compiled out (see the Yeets table). The startup log prints “Disabled mixin … due to” for each.

⌨️

My Hotkey Reference

These are my personal keybindings, not defaults. Everything with the X prefix is a chord — hold X, tap the second key — and works only in-game with no other key held. Tweakeroo’s defaults use Z for placement restrictions; I consolidated everything under X in June 2026.

Config & GUIs

HotkeyAction
X COpen config GUI
X POpen camera preset editor
X 9Peek player inventory (hold)

Toggles

HotkeyTweakNotes
X GFast block placementAlso toggles the placement restriction (tied)
X RHand restock
X UPeriodic hold useAuto-eat
X YPeriodic useSimple auto-clicker (interval 10 = 0.5 s); cannot eat
X PERIODPeriodic attackInterval 20
X KFake sneaking
X NPermanent sneak
X HHotbar scrollIts hotbarScroll key is unbound
X ZHotbar slot randomizerFires on release; hold + scroll = max slot
X BBreaking gridFires on release; hold + scroll = grid size
X EElytra cameraNeeds the elytraCamera key too (unbound)

Placement restriction modes

HotkeyMode
X 1Plane
X 2Face
X 3Column
X 4Line
X 5Diagonal
X 6Layer

Hold modifiers

KeyAction
LEFT_CONTROLFlexible placement offset
LEFT_ALTFlexible placement rotation and inventory preview
LEFT_SHIFTArea selection offset
⚠️
Overlaps and gaps in my current setup

LEFT_ALT is bound to both flexible rotation and inventory preview (the GUI shows overlapping hotkeys in gold). Because both are “allow extra keys” hold-keys they don’t block each other, but holding Alt activates both. Also, on macOS CTRL+click is a right-click in vanilla, which may interfere with LEFT_CONTROL as a hold key (not verified in the source).

Bound in the config but currently doing nothing

  • tweakElytraCamera toggle is bound, but elytraCamera is not.
  • tweakHotbarScroll toggle is bound, but hotbarScroll is not.
  • tweakAccurateBlockPlacement is on, but neither accurate hotkey is bound.
  • tweakFlexibleBlockPlacement is off, so Alt/Ctrl placement keys do nothing.
  • inventoryPreview is bound but tweakInventoryPreview is off.
🧾

My Config Snapshot

Instance 26.3, Tweakeroo 0.30.0 with Sodium and Iris. Settings that differ from the defaults, and what is currently enabled.

Currently enabled tweaks

tweakFastBlockPlacement, tweakPlacementRestriction (mode plane), tweakHandRestock, tweakAccurateBlockPlacement, tweakShulkerBoxDisplay. No Yeets are on.

Notable settings

SettingValueDefault
periodicHoldUseDuration / Interval40 / 4020 / 20
periodicUseInterval1020
periodicAttackInterval2020
fastBlockPlacementCount22
placementRestrictionModeplaneface
breakingRestrictionModelineline
handRestockPreThreshold66
shulkerDisplayEnderChestonoff
toolSwapBambooUsesSwordFirst, NeedsShearsFirst, SilkTouchFirst, PreferSilkTouchonon
stackableShulkersInHopperFixon—

Lists

  • Block-break blacklist: minecraft:budding_amethyst. Attack blacklist: minecraft:villager.
  • Fast-placement blacklist: ender chest, white shulker box. Fast-right-click block blacklist: chest, ender chest, trapped chest, white shulker box (item list type none, whitelist has buckets/bottle).
  • Hand-restock blacklist: bucket, lava bucket, water bucket (list type none, so inactive).
  • Weapon mapping: default = mace + all swords; end crystals, item frames, glow item frames and leash knots = ignore; minecarts and boats = mace + all axes. (Remember: the mace is never selected, and <ignore> does not block a switch.)
  • Potion warning: blacklist of harmful effects and whitelist of fire resistance / invisibility / water breathing (list type none).
  • Unstacking protection: bucket, glass bottle. Repair-mode slots: main hand, off hand.
⚠️

What the Tooltips Get Wrong

Where in-game text and older guides disagree with what 0.30.0’s code actually does:

SaysReality
Periodic hold: interval = ticks between starting to holdInterval is the pause after release; cycle = Interval + Duration
Hold the toggle key and scroll to adjust periodic timingsNot implemented in 0.30.0 (code commented out). Edit Generic. Scrolling is live for 9 other toggles
Fast placement / fast click counts are “per game tick”Per rendered frame
Fast placement just worksNeeds a restriction or grid on (hence “tied to fast”)
Swap almost-broken tools at 5% for low-durability items8% of max durability for items ≤ 100
<ignore> in weapon mapping prevents a switchOnly means “nothing preferred”; a switch can still happen. The mace can never be selected
slabs_only vs none protocol modesIdentical in code. The bool decides whether the client sends the encoded value
Accurate placement keys draw an overlayThey draw none; only flexible placement does
restrictionLayerHeight is scroll-adjustableNo handler — set in the config screen
Fly deceleration uses flyDecelerationRampValueThe option is flyDecelerationFactor; camera deceleration is fixed at ×0.4
utilityHandSlot is for food/rockets/spyglassRockets and spyglass only
DeepWiki: flexible keys are R / O / B, restriction modes have no default keysDefaults are LEFT_ALT (rotation), LEFT_CONTROL (offset), unbound (adjacent); restriction modes default to Z,1–6
zoomResetFovOnActivateOnly works while zoomAdjustMouseSensitivity is on

Options that exist in the config file but have no code (0.30.0)

These appear in the language file or older configs but do nothing: tweakCreativeExtraItems, tweakCustomFlatPresets (+ their lists), tweakMatchingSkyFog, tweakServerDataSync / …Backup and serverDataSyncCache* (now Generic entityDataSync*), disableNetherFog, skipAllRendering, elytraFix, elytraSprintCancel, periodic*ResetIntervalOnActivate, translationTryBaseLanguage, and selectiveBlocksNoHit (parsed but never read).

💡

Recipes & Pro Tips

Auto-eat while AFK

Periodic Hold Use, Duration 36 (SP) or meal + ping + 2, Interval ~100, food in main hand, Hand Restock on with spare identical stacks. Don’t open screens; keep attack un-held.

Build a straight wall fast

Fast placement on, Plane mode (X1), place the first block, then sweep. To go unrestricted: Placement Grid at size 1.

Pistons & observers

Enable Flexible placement, hold Alt, click the centre of the face you want it to point out of. Single player or a Servux/Carpet server for full rotations.

Strip-mining shafts

Breaking Restriction in Column mode, first block start-of-shaft, plus Tool Switch — it picks the pickaxe/shovel for you.

Remote farm view

Preset over the machine, then Free Camera + Player Inputs + Player Movement to keep watching while you walk.

Copy many signs

Write one sign, turn Sign Copy on, then Disable Sign GUI on — every sign you place is a copy without opening a screen.

Straight elytra flying with a look-around

Bind elytraCamera (e.g. hold a mouse button), enable tweakElytraCamera, hold to look down without changing course.

Find out what is bound to a key

Type the key into the config screen’s search bar — it searches by hotkey.

Server hopping

Bind toggleAccuratePlacementProtocol: leave it on for single player/Servux, off on vanilla servers and Realms to avoid ghost blocks.

🧭
When something “does nothing”, check in this order

(1) Is the tweak on? (2) Does it need a separate hold-key bound and held? (3) Is a screen open or another key held (chord rules)? (4) Does it need a restriction/grid (fast placement) or a protocol the server lacks (rotation)? (5) Is a list type set to none (lists inactive) or an empty whitelist (blocks everything)? (6) Did you edit the JSON while in a world (overwritten on quit)?

📚

Sources

  • Source code: sakura-ryoko/tweakeroo, branch 26.3 (0.30.0) and sakura-ryoko/malilib, branch 26.3 — every behaviour statement in this guide was read from these. The vanilla eat-time and hand-order facts were checked in the decompiled 26.3 client.
  • The only official written how-to: maruohon’s gist “Block rotations and offsets in Tweakeroo” — Flexible/Accurate placement and server requirements (its option name carpetAccuratePlacementProtocol is now accuratePlacementProtocol in Generic).
  • In-game text: the mod’s en_us.json tooltips — the most complete per-option description, but terse and sometimes stale (see above).
  • Modrinth page: modrinth.com/mod/tweakeroo — feature list and the anti-cheat warning.
  • Not recommended: DeepWiki’s auto-generated pages (older snapshot with wrong defaults), and unofficial tweakeroo.com.

Verified against source 2026-09-24 (commit 7bad693). Behaviour may differ on other Minecraft versions. A few items were derived from code reading without an in-game test and are marked (unverified).

↑