Skip to content

About

SerialCraft is an experimental, educational Fabric mod that connects Arduino, ESP32, and other serial or TCP devices to Minecraft. Send real sensor readings into redstone circuits and use your world to control physical LEDs, buzzers, and other components.

Topics

Resources

Stars

4 stars

Watchers

1 watching

Forks

Repository files navigation

🔌 SerialCraft — Arduino y ESP32 con Minecraft Fabric y NeoForge

Lleva tu hardware del mundo real a tu mundo Survival.

Fabric NeoForge Minecraft Java Versión Licencia

SerialCraft es un mod experimental y educativo que rompe la cuarta pared: permite comunicación bidireccional en tiempo real entre un Arduino (o cualquier dispositivo serial) y Minecraft, escrito en Java para Fabric y NeoForge, con código compartido.

No es solo una demostración técnica. Está diseñado para encajar de forma natural en una partida Survival, convirtiendo la electrónica externa en una parte funcional de tu progresión.

Nuevo en 0.5.3-beta

  • Fabric y NeoForge: dos JAR para Minecraft 26.2 y Java 25, con las mismas funciones de placas, interfaz y señales. Instala el archivo que corresponde a tu loader; Fabric requiere además Fabric API.
  • Configuración de salidas: el engranaje de la esquina superior derecha abre los ajustes de Minecraft → hardware. Al conectar puedes enviar cero, un valor personalizado o restaurar el último valor guardado; al desconectar normalmente puedes enviar cero, un valor personalizado o dejar el último estado.
  • Valores por sesión: las opciones de conexión y desconexión son independientes. Los valores personalizados aceptan enteros de 0 a 255; los ajustes de inicio se aplican en la siguiente conexión. Un cierre forzado o un cable desconectado no permiten entregar un valor final.

Gracias a @MeerukYang por reportar el problema de cierre y proponer los valores personalizables en el issue #10.

Identidad visual de 0.5.2-beta

El rediseño de Leonardo Aliaga lleva los jumpers al encabezado, la pantalla de la Laptop, el módulo de E/S y el icono del mod. La bienvenida ahora muestra el logo con su proporción real de 1038 × 446, sin comprimirlo. Se mantienen Minecraft 26.2, Java 25 y las funciones de USB/Wi-Fi.

Las texturas principales de los modelos ya no muestran los logotipos explícitos anteriores de Arduino y Minecraft. La revisión actualizada de imágenes detalla los recursos web, las capturas y la textura histórica todavía pendientes.


🛠️ Características principales

💻 La Laptop

El cerebro de la operación. En SerialCraft la conexión no aparece por arte de magia: hay que construirla.

  • Integración en Survival: la Laptop es un bloque crafteable. Tienes que reunir los recursos, así que encaja en el equilibrio de una partida de supervivencia.
  • La interfaz: al hacer clic derecho se abre una interfaz con cuatro pestañas — Inicio, Placas, Eventos y Visualizar — más la bienvenida de conexión, la consola de Inicio y los ajustes accesibles desde el engranaje superior derecho. El escaneo de puertos es automático: no necesitas saber qué es un puerto COM.

⚡ Físico ➔ digital (entrada)

Controla tu mundo con componentes reales.

  • Conecta botones, sensores o interruptores físicos a tu placa.
  • El mod lee esas señales y las traduce en redstone dentro del juego.
  • Ejemplo: un potenciómetro real regula la intensidad de una línea de redstone; un interruptor de tu escritorio abre la puerta de hierro de tu base.

🔄 Digital ➔ físico (salida)

Y en el sentido contrario, ya funcionando:

  • Un Bloque IO en modo salida detecta la redstone que recibe y la envía a tu placa.
  • Ejemplo: la potencia de un comparador regula el brillo de un LED por PWM; una palanca en el juego enciende un zumbador en tu mesa.

📶 USB o Wi-Fi

  • USB Serial: cable directo, la opción más simple y de menor latencia.
  • Wi-Fi (TCP): sin cables, con emparejamiento por token y opción de recordar la placa mediante desafío y respuesta HMAC. Ideal para ESP32 y para placas con Linux embebido como el Arduino Uno Q.
  • Identificación de placas: reconoce descriptores USB y anuncios del firmware; un adaptador genérico no se confunde con un modelo confirmado.

📊 Eventos y Visualizar

  • Eventos: envía vida, hambre, hora del mundo y sucesos del juego a tu placa mediante canales mc_*.
  • Visualizar: observa mensajes RX/TX en una línea de tiempo, compara sensores con su conversión a redstone y prueba un actuador con el generador de ondas en un canal dedicado.
  • La Laptop mantiene el mundo en marcha mientras usas su interfaz, incluso en un jugador.

🌍 Cinco localizaciones

Inglés, español de España, México y Argentina (con voseo), y chino simplificado. Gracias a @SK-Xiaohan por la traducción y el nombre chino 串连世界, aportados en el PR #4. El juego utiliza la localización elegida por el jugador.


📦 Bloques y recetas

Modelos

1. La Laptop (Bloque Conector)

El cerebro de la operación: gestiona la conexión con tu dispositivo del mundo real.

  • Uso: clic derecho para abrir la interfaz. En la bienvenida, conecta tu placa por USB (115200 baudios por defecto), o inicia el servidor Wi-Fi y copia la IP, el puerto y el token que aparecen en pantalla. Si el servidor no puede iniciarse, verás el error y podrás volver a intentarlo.
  • Ajustes USB: desde Inicio, elige los baudios y pulsa Aplicar y reconectar. Deben coincidir con Serial.begin(...) o su equivalente en el firmware de la placa para que los datos se entiendan.

Receta

Receta de la Laptop


2. El Módulo de E/S

El puente real: es lo que traduce entre la redstone y tu placa.

  • Terminales en el mundo: clic derecho alterna entrada verde/desactivado; Shift + clic derecho alterna salida roja/desactivado. Hay cinco terminales, incluido el inferior, que se selecciona desde arriba cerca del borde sur de la placa.
  • Configuración: clic derecho sobre la base para definir el Canal (por ejemplo led_verde o sensor_a), la dirección Minecraft → Hardware o Hardware → Minecraft, y la señal analógica o digital. El canal debe coincidir con el sketch; mc_ está reservado.
  • Diagnóstico: consulta RX, TX, lecturas, salida y conexión. El editor ofrece ayuda con ? y confirma el guardado con el servidor.
  • Compuertas lógicas: OR combina por máximo, AND por mínimo y XOR por paridad. Guía del Módulo de E/S.

Modelo del Bloque IO

Receta

Receta del Bloque IO


🧠 El concepto: lógica y circuitos

Este proyecto nació de un viaje personal: unir el juego que definió mi infancia con mi pasión por la electrónica.

Al desarrollar SerialCraft el objetivo fue demostrar que la lógica de la programación es sorprendentemente parecida al diseño de circuitos físicos:

  • Código como cableado: la lógica condicional (if/else) escrita en Java se comporta igual que un interruptor o una compuerta lógica en una protoboard. Los Bloques IO llevan compuertas OR, AND y XOR reales.
  • Datos como corriente: el flujo de información por el puerto serie imita el flujo de la corriente; si la lógica no está "cerrada", la señal no llega a su destino.

Este mod es un tributo a esa conexión: usar código para cerrar el circuito entre el mundo de bloques y el mundo físico.


⚙️ Instalación y uso

Requisitos

  • Minecraft: 26.2
  • Java: 25 o superior
  • Loader: Fabric 0.19.3 o NeoForge 26.2.0.93 (o una versión compatible para Minecraft 26.2)
  • Dependencia en Fabric: Fabric API para Minecraft 26.2
  • Hardware: Arduino Uno R3, Uno Q, ESP32, o cualquier microcontrolador con comunicación serial o TCP.

Primeros pasos

  1. Instala el JAR de tu loader en mods. En Fabric instala también Fabric API; en NeoForge instala el JAR NeoForge. En multijugador, actualiza SerialCraft en cliente y servidor juntos.
  2. Conecta tu placa por USB (o ponla en la misma red Wi-Fi que tu PC).
  3. Entra a tu mundo y craftea la Laptop y el Bloque Conector con las recetas incluidas.
  4. Coloca el Conector y haz clic derecho, o abre la Laptop. Selecciona tu puerto USB o la tarjeta Wi-Fi en la bienvenida de conexión.
  5. Coloca un Módulo de E/S, define su Canal y dirección, y configura los terminales sobre el bloque: entrada verde para leer redstone, salida roja para emitirla.
  6. Carga el sketch en tu placa. Hay ejemplos listos para probar para Uno R3, ESP32 y Uno Q.

El protocolo en una línea

IDENTIFICADOR:VALOR\n        →  pot_val:200

Valores de 0 a 255 en ambos sentidos. El mod se encarga de convertir a la escala 0-15 de la redstone. Los detalles están en la referencia de protocolo.


🧩 Alcance y límites

Merece la pena decirlo antes de que lo descubras montando algo grande:

  • Multijugador: funciona en un jugador, en LAN y en servidor dedicado. Cada jugador controla sus propias placas desde su propio PC, porque el puerto serie vive en el cliente. No existe un modo en el que el servidor sea dueño del hardware, y no es un olvido: es una decisión de arquitectura.
  • Escala: hay una prueba funcional con 64 módulos. La capacidad sostenible requiere medir MSPT y tráfico; la lista tiene scroll y los presupuestos de comunicación se comparten por jugador. Ver la matriz de verificación.
  • Señales: las colas son acotadas. TX indica una escritura al transporte, no una confirmación de que el actuador físico ejecutó la orden; no se garantizan todos los pulsos bajo sobrecarga.
  • Seguridad: el canal Wi-Fi va en texto claro. El token evita el acceso casual dentro de tu red, pero no es cifrado. Sirve para una red doméstica o de aula; no redirijas el puerto en tu router.

📚 Documentación

Probar desde IntelliJ IDEA

  1. Abre la raíz del repositorio y recarga el proyecto Gradle.
  2. Usa JDK 25 como SDK y Gradle JVM, con el wrapper Gradle 9.7.1.
  3. Ejecuta .\gradlew.bat build: genera fabric/build/libs/serialcraft-fabric-0.5.3-beta.jar y neoforge/build/libs/serialcraft-neoforge-0.5.3-beta.jar, y copia ambos a build/libs.
  4. Selecciona Fabric Client, Fabric Server, NeoForge Client o NeoForge Server en las configuraciones compartidas de IntelliJ. Sus carpetas fabric/runs/... y neoforge/runs/... son independientes.
  5. Revisa las pestañas y el editor IO a varias escalas e idiomas. Comprueba USB y Wi-Fi con tu placa en cada loader.

Consulta desarrollo multiloader para arquitectura, versiones fijadas, tareas, pruebas, publicación y fuentes oficiales.

Para las comprobaciones adicionales: python scripts/validate_locales.py, python -m unittest discover -s scripts -p 'test_*.py' y, después de compilar, python scripts/publish_release.py --check.


🤝 Sobre el proyecto

SerialCraft lo desarrolla Leonardo Aliaga (@aliaga1924) como proyecto de aprendizaje, explorando la intersección entre el modding en Java, el hardware físico y las telecomunicaciones.

En el desarrollo se usan herramientas de IA de forma estratégica. El proyecto no depende de ellas para existir: primero se establece la arquitectura y la lógica del sistema mediante razonamiento propio y el estudio de la API de Fabric; después la IA ayuda a ejecutar y refinar esas ideas más rápido.

¿Encontraste un error? Repórtalo.


📜 Licencia

Proyecto de código abierto. Siéntete libre de estudiar el código para aprender cómo Java maneja la comunicación serial, modificarlo o incluirlo en tus modpacks.

About

SerialCraft is an experimental, educational Fabric mod that connects Arduino, ESP32, and other serial or TCP devices to Minecraft. Send real sensor readings into redstone circuits and use your world to control physical LEDs, buzzers, and other components.

Topics

Resources

Stars

4 stars

Watchers

1 watching

Forks

Releases

Contributors

Languages