Skip to content
Block Transformer

Quick rating

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

Block Transformer

By Aleeq

No reviews yet

Take control of every block! Adjust its X, Y, Z position, rotation, and scale with an intuitive 3D editor. Fine-tune every detail with precise controls, snapping, and undo, all while preserving the block’s original data.

Mod Loaders
Minecraft

About

Description

⚠️Important   Disclaimer🤖

Block Transformer was developed entirely using artificial intelligence (AI). I strongly recommend thoroughly testing the mod before using it, as it may contain bugs, unexpected behavior, or compatibility issues.

🛠️ I created this mod solely because I needed this functionality for a private Minecraft server. I decided to publish it as well, since there was nothing to lose by sharing it with others who might find it useful.

🔄 If updates, bug fixes, or improvements are needed, I will do my best to provide them.

❗ Use at your own risk, and please report any issues you encounter.

-----------------------------------------------------------------------------------------------------------

 Block Transformer

**Move, rotate and resize any placed block — furniture, machines, chests, decorations — with an in-world 3D editor.**
The block keeps working exactly where it logically is; only how it is drawn, selected and touched changes.

> **WHEN INSTALLING, test your setup in a backup world.**
> This mod hooks into rendering, collision and chunk meshing. It is built to degrade safely (every hook is optional and
> turns itself off if another mod changed the code it targets), but combinations of rendering mods are endless.

---

Features

- **3D gizmos in the world:** arrows to move, rings to rotate, a free "trackball" in the middle to turn in every direction, and a cube to scale. Everything snaps (1/16 block, 15°, 0.125) or can be typed in numerically.
- **Whole objects move as one:** multi-block furniture, machines, doors and beds are detected as a *piece* and transformed together around their centre. Optional "touching / near" group modes for anything else.
- **Undo / redo / reset** for the whole group, local or world axes, live readout, and a panel that adapts to any GUI scale.
- **It really behaves like the block is there:**
  - drawn, **selected** and **collided with** at its new place (you can walk on it, bump into it, mine it, use it);
  - **sit** on moved chairs and sofas — and you get off next to the chair, not at its old spot;
  - **breaking overlay, particles, sounds** and **dropped items / container contents** come from where the block is drawn;
  - **block entities** (chests, signs, furniture items…) move with it; a moved chest's lid no longer gets stuck open;
  - entities that belong to a block (cards, props, display entities) follow it;
  - lighting and ambient occlusion are corrected so the cell it left is not left in shadow.
- **Fast:** each block's mesh is baked once to the GPU and only a matrix is applied per frame. Shapes are cached, data reads are lock-free, entities far from any transformed block cost nothing.
- **Server friendly:** server-authoritative, per-chunk limits, range and permission checks, edit-rate limiting, audit log, and an optional network channel (clients without the mod can still join; they just see blocks untransformed).

How to use

1. Craft the **Transformer Wand** (2 sticks + 1 amethyst shard, diagonal) or take it from the Tools tab.
2. Hold it and **right-click a block**, or press **M** while looking at one.
3. **G / R / S** switch tool · **Ctrl+Z / Ctrl+Y** undo/redo · **Esc** or right-click cancels a drag · type a value and press **Enter**.
4. The **Group** button chooses what moves with the block: *Off*, *Piece* (default), *Touching*, *Near*.

## Commands (operators, permission level 2)

| Command | What it does |
|---|---|
| `/blocktransformer list [page]` | Lists transformed blocks of the dimension (click to teleport) |
| `/blocktransformer inspect <pos>` | Shows the transformation of a block |
| `/blocktransformer reset <pos>` | Removes a transformation |
| `/blocktransformer mode logical\|transformed` | `logical` switches all transformations of the dimension **off** without deleting them (handy to debug or recover a world); `transformed` switches them back on |
| `/blocktransformer status` | Hook diagnostics |
| `/blocktransformer debug on\|off` | Logs seat and mining activity to `latest.log` |

Configuration

**Server** (`serverconfig/blocktransformer-server.toml`): `maxTransformsPerChunk`, `survivalPlayersCanEdit`, `editRange`, `maxEditPacketsPerSecond`.
**Client** (`config/blocktransformer-client.toml`): `cachedMeshes` (set to `false` if something looks wrong with your setup), `renderDistance`.

Compatibility

| Component | Version the hooks were written against | What the mod does there |
|---|---|---|
| Vanilla renderer | Minecraft 1.21.1 / NeoForge 21.1.x | Transformed block models, block entities, breaking overlay, particles, collision, selection, lighting |
| Sodium | 0.8.13 and 0.6.13 for NeoForge 1.21.1 | Hides the original block in Sodium's chunk meshing; face culling, occlusion and lighting handled through the shared vanilla methods |
| Flywheel | 1.0.6 | Transformed block entities leave Flywheel instancing and use their normal renderer |
| Create | 6.0.10 (through Flywheel) | Static placed blocks work through the Flywheel path above; moving contraptions are not affected |
| Iris | 1.8.x | Transformed blocks are drawn with the per-frame path **only while a shader pack is active**; installing Iris alone costs nothing. They do not cast shadows in the shadow pass yet |
| Immersive Furniture, Kaleidoscope Tavern | 1.21.1 | Multi-block furniture, dynamic models, seats |

Mixins are written to be non-invasive: no `@Overwrite`, no `@Redirect`, every injection is optional. If another mod changes the code a hook targets, that hook is skipped instead of crashing the game.

Known limitations

- The **light emitted** by a block (a lamp) cannot move: Minecraft's light engine works per whole cell.
- Experience orbs still come out at the original cell.
- Redstone, physics and fluids use the block's original position.
- Placing a block against a transformed one puts it next to its original cell.
- Transformations do not follow pistons or Create contraptions.
- Maximum offset ±8 blocks, scale from 1/16× to 4×.

FAQ

**Does it change my world?** It stores a small list of transformations per dimension. Blocks themselves are untouched; remove the mod (or use `mode logical`) and everything is back in place.
**Can players abuse it?** Survival editing can be disabled in the server config; creative players and operators are always allowed. There are per-chunk limits, range checks and rate limiting.
**Does it need to be on the client?** Install it on both to see and edit. A server with the mod accepts clients without it.

## Credits

Independent implementation, inspired by the idea of editing how a placed block looks and is touched. License: **(choose one before publishing)**.

---
---

Block Transformer (Español)

**Mueve, rota y escala cualquier bloque colocado —muebles, máquinas, cofres, decoración— con un editor 3D dentro del mundo.**
El bloque sigue funcionando exactamente donde está lógicamente; solo cambia cómo se dibuja, se selecciona y se toca.

> **AL INSTALAR, prueba tu configuración en un mundo de copia de seguridad.**
> El mod interviene en el renderizado, la colisión y el mallado de chunks. Está hecho para degradarse sin romper nada
> (cada gancho es opcional y se desactiva solo si otro mod cambió el código al que apunta), pero las combinaciones de mods
> de renderizado son infinitas.

Características

- **Gizmos 3D en el mundo:** flechas para mover, anillos para rotar, una «bola» central para girar en cualquier dirección y un cubo para escalar. Imán (1/16 de bloque, 15°, 0.125) o valores numéricos.
- **Los objetos completos se mueven juntos:** muebles de varios bloques, máquinas, puertas y camas se detectan como una *pieza* y se transforman alrededor de su centro. Modos «contacto / cerca» para lo demás.
- **Deshacer / rehacer / reiniciar** para todo el grupo, ejes locales o del mundo, y un panel que se adapta a cualquier escala de GUI.
- **Se comporta como si el bloque estuviera ahí:**
  - se dibuja, se **selecciona** y **colisiona** en su nuevo lugar (puedes pisarlo, chocar, romperlo, usarlo);
  - te **sientas** en sillas y sofás movidos, y al bajarte apareces junto a la silla, no en su sitio viejo;
  - la **animación de rotura, partículas, sonidos** y los **ítems / contenido** que suelta salen de donde se ve el bloque;
  - las **entidades de bloque** (cofres, carteles, muebles…) se mueven con él; la tapa de un cofre movido ya no se queda abierta;
  - las entidades que pertenecen a un bloque (cartas, props, entidades display) lo siguen;
  - la luz y el sombreado se corrigen para que la celda que dejó no quede a oscuras.
- **Rápido:** la malla de cada bloque se hornea una vez en la GPU y por fotograma solo se aplica una matriz; las formas se cachean, las lecturas no bloquean y las entidades lejos de bloques transformados no cuestan nada.
- **Pensado para servidores:** autoridad del servidor, límites por chunk, comprobación de alcance y permisos, límite de paquetes, registro de auditoría y canal de red opcional (los clientes sin el mod pueden entrar, solo ven los bloques sin transformar).

Cómo se usa

1. Craftea la **Varita Transformadora** (2 palos + 1 fragmento de amatista, en diagonal) o cógela de la pestaña Herramientas.
2. Con ella en la mano, **clic derecho sobre un bloque**, o pulsa **M** mirándolo.
3. **G / R / S** cambian de herramienta · **Ctrl+Z / Ctrl+Y** deshacer/rehacer · **Esc** o clic derecho cancela un arrastre · escribe un valor y pulsa **Enter**.
4. El botón **Grupo** elige qué se mueve con el bloque: *No*, *Pieza* (por defecto), *Contacto*, *Cerca*.

## Comandos (operadores, nivel 2)

`/blocktransformer list|inspect|reset|status|debug` y `/blocktransformer mode logical|transformed`.
**`logical`** apaga todas las transformaciones de la dimensión *sin borrarlas* (útil para depurar o recuperar un mundo); **`transformed`** las vuelve a encender.

Configuración

**Servidor** (`serverconfig/blocktransformer-server.toml`): `maxTransformsPerChunk`, `survivalPlayersCanEdit`, `editRange`, `maxEditPacketsPerSecond`.
**Cliente** (`config/blocktransformer-client.toml`): `cachedMeshes` (ponlo en `false` si algo se ve mal en tu equipo) y `renderDistance`.

Compatibilidad

| Componente | Versión contra la que se escribieron los ganchos | Qué hace el mod |
|---|---|---|
| Renderizador vanilla | Minecraft 1.21.1 / NeoForge 21.1.x | Modelos, entidades de bloque, grietas de rotura, partículas, colisión, selección e iluminación |
| Sodium | 0.8.13 y 0.6.13 para NeoForge 1.21.1 | Oculta el bloque original en el mallado de Sodium; recorte de caras, oclusión y luz vía los métodos de vanilla |
| Flywheel | 1.0.6 | Las entidades de bloque transformadas salen de la instanciación y usan su renderizador normal |
| Create | 6.0.10 (a través de Flywheel) | Los bloques estáticos funcionan por el camino de Flywheel; las contraptions en movimiento no se ven afectadas |
| Iris | 1.8.x | Se usa el dibujo fotograma a fotograma **solo con un paquete de shaders activo**; tener Iris instalado sin shaders no cuesta nada. Aún no proyectan sombras |
| Immersive Furniture, Kaleidoscope Tavern | 1.21.1 | Muebles de varios bloques, modelos dinámicos, asientos |
 

Límites conocidos

La **luz que emite** un bloque (una lámpara) no se puede mover · los orbes de experiencia salen en la celda original · redstone, física y fluidos usan la posición original · colocar un bloque contra uno transformado lo pone junto a su celda original · no siguen a pistones ni a contraptions de Create · desplazamiento máximo ±8 bloques, escala de 1/16× a 4×.