IMeantToDoThat

Quick rating

Community listing page, reviews may not be monitored by the author.

IMeantToDoThat

By NariarisOwner

No reviews yet

A quiet mistake-correction layer for vanilla Minecraft

Mod Loaders
Minecraft
26.3 26.2

About

Description

I Meant To Do That

A quiet mistake-correction layer for vanilla Minecraft.

I Meant To Do That watches a small, bounded set of recent building actions and gives the player a short chance to correct likely slips. It can undo a just-placed block, rotate a recent directional block, warn about a stair or slab outlier, and restore an accidentally stripped or scraped block. Suggestions are preferred over automatic changes, and every world-changing request is checked by the server.

This is not a building bot or a cheat client. It does not select materials, extend structures, place blocks at a distance, or make open-ended gameplay decisions.

Compatibility

Component Version
Minecraft 26.2
Java 25 or newer
Fabric Loader 0.19.5 or newer
Fabric API 0.159.0+26.2 or newer compatible 26.2 build
Mod Menu 20.0.1 tested; optional, recommended for the configuration screen

The build is intentionally pinned to Minecraft 26.2. A jar built for another Minecraft line is not supported.

Features

Temporary placement undo

After an eligible placement, a fading HUD prompt remains available for 40 server ticks by default (about two seconds at 20 TPS). Press Z to restore the prior block state.

  • The server records the player, dimension, position, old state, resulting state, relevant block-entity data, consumed item, and expiry.
  • Survival returns exactly the one item whose consumption was observed. Creative restores the world without adding an item.
  • A full inventory, changed state, changed block-entity data, unloaded chunk, dimension change, death, logout, timeout, unsafe game mode, or excessive distance can reject the undo.
  • Another player or world event changing the watched position invalidates the action.
  • Beds, double-height placements, falling blocks, piston bases, rails, TNT, and oversized block-entity snapshots are deliberately excluded.

Smart stair suggestions

The stair analyzer checks only a small horizontal neighborhood. It requires at least three matching stairs and a clear 80% orientation majority before treating a new stair as suspicious. Facing, top/bottom half, and vanilla stair shape are considered, together with a short recent-placement history.

The default SUGGEST mode displays an unobtrusive prompt. Look at the stair and press R to apply the suggestion. AUTO_CORRECT is opt-in and is used only when both the client and server enable it and the explainable confidence score reaches the configured threshold, 0.95 by default. Missing or incompatible client preferences always fall back to suggestions and vanilla-safe behavior.

Recent block rotation

Look directly at a compatible block placed during the last 60 server ticks (about three seconds) and press R.

Supported groups are independently configurable:

  • stairs;
  • logs and other rotated pillars;
  • glazed terracotta plus an explicit decorative allow-list: carved pumpkins, ladders, end rods, wall coral fans, non-redstone wall torches, wall signs/hanging signs, wall banners, and wall skulls;
  • furnaces and barrels;
  • pistons, observers, dispensers, droppers, and redstone wall torches, disabled by default because they can affect gameplay.

Rotation changes only the recorded block at normal interaction range. The server checks ownership, position, dimension, timeout, current state, block-entity data, survival validity, and request rate before changing it.

Conservative building-pattern warnings

The runtime detector can warn when either a different block type or a different exact block state breaks an established recent row or column. It requires four recent matching placements, at least three aligned samples, and a short five-second server-tick window. Stair orientation and slab state are analyzed by their specialized detectors.

Warnings do not replace the block automatically.

Double-slab detection

When a placement changes an existing single slab into a double slab, nearby and recent slabs are used to decide whether the result is likely accidental. The default behavior is a warning with Z undo. Automatic double-slab undo exists as a separate, disabled-by-default setting and runs only when both the client and server opt in.

Axe-interaction undo

The same short undo flow covers:

  • stripping a log or wood block;
  • scraping one oxidation stage from copper;
  • removing wax from copper.

Undo restores the original block state. It intentionally does not refund axe durability, items, or drops.

Smart interaction priority

This feature is off by default. In full mode it can give a valid held-block placement an early chance before an interactive target opens, but only when both the client and server enable compatible policies:

  • VANILLA leaves interaction order unchanged;
  • WHILE_SNEAKING relies on Minecraft's normal secondary-use placement behavior;
  • SELECTED_ITEMS prioritizes configured block-item IDs;
  • CONTEXT_SENSITIVE does so for configured items or block-entity targets.

The default selected IDs are minecraft:torch, minecraft:soul_torch, and minecraft:redstone_torch. The effective policy is the conservative intersection of the client's and server's mode and selected-item list. The client mirrors that negotiated policy for prediction while the server remains authoritative. If either side declines, the item or context is not allowed by both sides, or placement is invalid, the callback passes through to vanilla behavior.

Deterministic local learning

The client can count a narrow, understandable habit: place a block, break it shortly afterward, then replace the same block at the same position with different state properties. At the configured repetition threshold, the HUD asks the player to review the proposed rule.

  • No neural network or external AI service is used.
  • A rule is never accepted merely because its counter reached the threshold.
  • Rules can be accepted, enabled or disabled, deleted individually, or reset.
  • An accepted, enabled rule can correct only its matching same-block state transition in full mode; the server still validates the recent owned placement and resulting state.
  • Rule storage is local to the client in config/imeanttodothat-learning.json.

See Privacy and Known limitations for the exact scope.

Minimal HUD and bounded history

Prompts fade in and out without using chat. Four positions are available: bottom center, top center, bottom left, and top left.

Server history is bounded per player (64 actions by default), client offers are capped at 32, recent pattern input is capped, and the server's in-memory audit is capped at 256 entries. Expiration cleanup runs periodically; the mod does not scan large areas every tick.

Installation

Client-only mode

  1. Install Minecraft 26.2.
  2. Install Fabric Loader 0.19.5 or newer for that instance.
  3. Put a compatible Fabric API jar in the instance's mods directory.
  4. Put imeanttodothat-1.0.0.jar in the same directory.
  5. Optionally install Mod Menu 20.0.1 or a compatible 26.2 release.

You may connect to a server that does not have the mod. Client-only mode never attempts to mutate that server's world. It provides best-effort local warnings for suspicious stairs, double slabs, and simple block/state outliers; Z, R, modification undo, interaction priority, and learned corrections require the server component.

Full mode

Install the mod and Fabric API on both the client and the Fabric server. Mod Menu is needed only on clients.

The client detects full mode through Fabric's negotiated networking channel. It sends a bounded, connection-local preference handshake for automatic stair correction, automatic double-slab undo, and smart interaction policy. World changes are performed by the server component after validation, and the server's configuration remains the upper bound. A dedicated server owns its own config/imeanttodothat.json; changing a client's Mod Menu settings advertises that client's consent but does not rewrite or broaden server policy. Stop the dedicated server, edit its configuration, and restart it when changing server behavior.

Singleplayer runs an integrated server and therefore has full-mode behavior.

Client-only and full-mode matrix

Capability Client-only, unmodded server Full mode, mod on client and server
Load safely and retain vanilla server authority Yes Yes
Key mappings, local settings, HUD renderer Yes Yes
Post-placement stair warning Best-effort visual warning only Server-linked suggestion and recent-action offer
Simple block/state-pattern warning Best-effort visual warning only Server history-backed warning
Double-slab warning Best-effort visual warning only Warning plus eligible undo
Placement undo No; optional “server required” HUD notice Yes, when server safety checks pass
Recent compatible-block rotation No; optional “server required” HUD notice Yes, when server safety checks pass
Extremely-high-confidence stair auto-correction No Yes, only when client consent and server policy both enable it
Automatic double-slab undo No Yes, only when client consent and server policy both enable it
Strip, scrape, and unwax undo No Yes
Smart interaction priority No Yes, using the conservative intersection of opt-in client and server policies
Collect new learning observations No server-originated observations Yes; counters and rules are stored on the client
Apply an accepted learned correction No Yes, for an exact matching recent placement and after server validation
Client Mod Menu changes server policy No No; dedicated-server configuration remains server-owned

Keybinds

Default Action
Z Undo the newest still-eligible placement or axe modification
R Rotate or correct the recent compatible placement under the crosshair

Both bindings use Minecraft's normal Controls menu and can be reassigned to resolve conflicts. Clicks are drained while any screen is open, so they do not fire while typing in chat, searching inventory, or using a configuration screen.

Configuration

With Mod Menu installed, open Mods → I Meant To Do That → Configure. Pressing Done or closing the screen with Escape sanitizes and saves the current values; the screen has no separate cancel or reset-all control. Without Mod Menu, edit config/imeanttodothat.json while the game or dedicated server is stopped. The file is generated on first launch. Invalid numeric values are clamped to safe ranges when loaded or saved.

Client settings never overwrite the dedicated server's configuration. In full mode, the relevant client choices are advertised as short-lived consent for the current connection; automatic corrections and smart interaction still require matching permission from the server.

Times are stored in ticks. At the normal 20 TPS, 20 ticks is approximately one second; under server lag, expiry follows server ticks rather than wall-clock seconds.

General

JSON field Default Range / meaning
general.enabled true Master switch for this side
general.hudPrompts true Render prompts and result notices
general.promptDurationTicks 60 20–400 ticks
general.hudPosition BOTTOM_CENTER BOTTOM_CENTER, TOP_CENTER, BOTTOM_LEFT, or TOP_LEFT
general.debugLogging false Log confidence evidence and invalidation details

Undo

JSON field Default Range / meaning
undo.placementUndo true Track safe single-block placements for undo
undo.modificationUndo true Track strip, scrape, and unwax actions
undo.undoWindowTicks 40 Placement window, 5–200 ticks
undo.modificationUndoWindowTicks 40 Axe-modification window, 5–200 ticks
undo.historySize 64 Per-player server history, 8–256 entries

Smart placement

JSON field Default Range / meaning
smartPlacement.stairDetection true Analyze same-block stair orientation
smartPlacement.slabDetection true Detect contextual single-to-double slab changes
smartPlacement.patternDetection true Detect conservative block-type or exact-state outliers
smartPlacement.analysisRadius 3 Stair scan radius, 1–5 blocks horizontally
smartPlacement.confidenceThreshold 0.95 Auto-correction threshold, 0.50–1.00
smartPlacement.mode SUGGEST SUGGEST or AUTO_CORRECT; stair auto-correction requires the same mode on the server and client consent
smartPlacement.autoUndoDoubleSlabs false Use the same safe undo path after a strong detection only when both sides opt in

Rotation

JSON field Default Range / meaning
rotation.enabled true Master rotation switch
rotation.rotationWindowTicks 60 10–200 ticks
rotation.stairs true Rotate stairs
rotation.logsAndPillars true Cycle X/Y/Z axis for rotated pillars
rotation.decorativeDirectionalBlocks true Rotate only the documented decorative allow-list; an arbitrary facing property is not sufficient
rotation.containers true Rotate furnaces and barrels
rotation.redstoneComponents false Opt in to pistons, observers, dispensers, droppers, and redstone wall torches

Interactions

JSON field Default Meaning
interactions.enabled false Per-side opt-in; both client and server must enable it in full mode
interactions.priorityMode VANILLA VANILLA, WHILE_SNEAKING, SELECTED_ITEMS, or CONTEXT_SENSITIVE; both policies must allow the action
interactions.selectedItemIds three torch IDs Up to 32 namespaced block-item IDs; selected items must be allowed by both sides

Learning

JSON field Default Range / meaning
learning.enabled true Count matching correction habits and allow enabled accepted rules
learning.showLearningSuggestions true Prompt when a rule is ready for explicit review
learning.repetitionThreshold 5 3–20 matching observations

Learned rules themselves are managed separately and stored in config/imeanttodothat-learning.json.

Multiplayer

JSON field Default Meaning
multiplayer.clientOnlyDetections true Permit local visual detection when the server component is absent
multiplayer.explainUnavailableServerFeatures true Show a short HUD explanation when Z or R needs the server component

Multiplayer safety

The client sends bounded action requests and a connection-local preference handshake. The handshake contains a protocol version, three opt-in booleans, one interaction mode, and at most 32 selected item IDs of at most 128 characters each; it is cleared on disconnect and does not alter the server configuration. Rotation/correction requests include the looked-at position or exact learned transition request. The server never trusts any of these values by themselves. Before changing a block it verifies:

  • the action belongs to the requesting player's UUID;
  • the request is within the action's undo or rotation window;
  • the player is alive, not a spectator, not in adventure mode, in the same dimension, and within normal block-interaction range;
  • the chunk is loaded;
  • the request position matches the recorded position;
  • the current block state and block-entity data still match the recorded result;
  • no watched mutation occurred after the action;
  • the replacement can survive at that position;
  • survival inventory can accept the exact refund;
  • the request rate is within four correction requests per 20 server ticks.

The server captures item consumption rather than assuming it. If it cannot prove that exactly one item was consumed, placement undo is not offered. Failed restoration attempts are rolled back to the recorded resulting state where possible.

History is cleared or invalidated on logout, respawn, dimension change, chunk unload, and server stop. It is not persisted across restarts.

Privacy

I Meant To Do That contains no telemetry, analytics, advertising, account integration, or external AI calls.

Learning rules and counters are written only to config/imeanttodothat-learning.json on the player's machine. The file contains deterministic action kind, block/state context, proposed state, observation count, acceptance status, and enabled status. It does not contain chat, camera recordings, world scans, coordinates, server addresses, player names, or authentication data.

In full mode, the server sends the client a small observation describing a correction that just happened in that gameplay session. When an accepted rule matches, the client may request that exact correction from the current server; the server already observed the placement and validates the request. The stored rule database is never uploaded or sent to an external service. The separate ephemeral preference handshake contains only current feature consent and interaction-policy values, never learned rules or counters.

Delete one rule or use Reset learning in the configuration screen. Deleting config/imeanttodothat-learning.json while Minecraft is stopped also resets all local learning data.

Known limitations

  • Compound placements such as beds and double-height blocks are not undoable. Safely reverting only one half could corrupt the structure.
  • Falling blocks, piston bases, rails, and TNT placements are not undoable. Movement, physics, activation, and neighbor effects make a short snapshot insufficient.
  • Redstone-component rotation is disabled by default and should be enabled only when its state transition is acceptable on that server.
  • The generic pattern warning recognizes a conservative repeated block-type or exact-state row or column. It does not infer palettes, gradients, roofs, symmetry, or arbitrary build intent.
  • Stair analysis compares only nearby stairs of the same block. It can flag a clear corner-shape outlier, but it does not plan complex corners or mixed-material stair runs. Manual rotation normalizes a stair to a straight shape before vanilla neighbor updates.
  • Double-slab detection requires an existing same-block single slab plus nearby or recent supporting context.
  • Axe undo covers stripping, one-stage copper scraping, and wax removal. Applying wax is not itself an undoable action.
  • Client-only detection is visual and best-effort. Packet timing or a server correction can make the local observation disappear without an action offer.
  • Block entities are restored only from bounded snapshots. If their data changes after placement—items inserted into a chest, furnace progress, commands, automation, or another player—the action is invalidated instead of overwriting newer data.
  • Accepted learning rules cover only the exact same-block state transition that was reviewed; they do not generalize across block IDs or choose a material.
  • Dedicated-server configuration is not synchronized from a client's configuration screen.
  • Action history is in memory only. A server restart, rollback, logout, death/respawn, dimension change, or chunk unload closes outstanding correction windows.
  • External rollback tools and mods that bypass normal block mutation hooks are still guarded by the final state/block-entity comparison, but their changes are never reversed automatically.
  • English is the bundled language in 1.0.0.