Skip to content

Releases: LeonardoAliaga/SerialCraft

SerialCraft 0.4.6-beta

Choose a tag to compare

@github-actions github-actions released this 17 Oct 20:33

SerialCraft 0.4.6-beta

Minecraft Java 26.2 · Fabric · Java 25

Novedades

  • Telemetría del juego hacia la placa desde la pestaña Eventos: estados como vida, hambre y hora, y sucesos como daño o muerte.
  • Pestaña Visualizar con línea de tiempo, vista Sensor y generador de ondas sobre un canal dedicado.
  • Identificación de placas por descriptores USB, anuncios del firmware y banners compatibles. Los adaptadores USB genéricos no se presentan como un modelo confirmado.
  • Emparejamiento Wi-Fi recordado mediante desafío y respuesta HMAC, con opción de olvidar la placa.
  • Panel Inicio renovado con información de la conexión, consola y cambio de baudios mediante Aplicar y reconectar.
  • Editor del Módulo de E/S dividido en Configuración y Diagnóstico, con ayudas ? y confirmación del servidor al guardar.

Correcciones

  • Separación de la muestra recibida, lectura de redstone, resultado lógico y señal emitida. Las compuertas OR, AND y XOR combinan correctamente las entradas.
  • Una muestra recibida mientras la compuerta está cerrada se conserva para cuando vuelva a abrirse.
  • Reenvío de valores TX estables al reconectar y después del arranque USB; invalidación de RX al cambiar de sesión.
  • Paradas por canal que conservan hasta 64 órdenes de apagado distintas sin eliminar otras paradas aceptadas.
  • Canal fijo durante cada ejecución del generador; la parada cancela valores pendientes y solicita cero al canal inicial. Una ejecución anterior no envía órdenes a una sesión nueva.
  • Conexiones USB verificadas, cierre de sesiones y handshakes Wi-Fi más robustos, errores visibles al iniciar el servidor Wi-Fi y textos de bienvenida corregidos en los cuatro idiomas.

Compatibilidad y actualización

  • Actualiza el mod en cliente y servidor juntos: los paquetes internos del Módulo de E/S utilizan nuevos identificadores.
  • Se conservan los identificadores persistidos de bloques y entidades, las recetas y la configuración compatible de versiones anteriores. Revisa canales antiguos inválidos y circuitos que dependían del comportamiento anterior de AND/XOR.
  • El protocolo de hardware sigue usando canal:0..255 y salto de línea. USB usa 115200 baudios por defecto; deben coincidir con el firmware.
  • Los sketches de ejemplo envían la primera muestra, incluidos ceros, cambios e instantáneas periódicas para recuperar RX al recargar módulos.
  • Requiere Fabric API para Minecraft 26.2.

Documentación y alcance

  • Guías, protocolos y tutoriales en español e inglés, con espacios preparados para incorporar fotografías y videos reales.
  • Cada jugador conecta el hardware desde su propio cliente. El canal TCP funciona dentro de una red local y sigue sin cifrar.
  • Las escrituras TX no son confirmaciones de ejecución física. Las colas son acotadas y no garantizan todos los pulsos bajo sobrecarga.

Documentación · Reportar un problema


Commit de origen

SerialCraft Beta v.0.4.3

Choose a tag to compare

@LeonardoAliaga LeonardoAliaga released this 01 Aug 06:44

SerialCraft v0.4.3-beta — Notas de la versión

Minecraft 1.21.11 · Fabric

Esta es la versión con más trabajo interno del proyecto hasta la fecha. Buena parte de los cambios no se ven al jugar: son correcciones de red, de rendimiento y de arquitectura que hacían falta antes de poder recomendar el mod en un servidor.

⚠️ Antes de actualizar

Los sketches de la 0.3.x no funcionan sin cambios. El protocolo cambió en dos puntos: la escala de los valores y la dirección de la conexión Wi-Fi. La sección [Cómo migrar](#-cómo-migrar-desde-la-03x) explica qué tocar.


🔴 Cambios incompatibles

1. Escala unificada 0-255

Antes la salida enviaba 0-255 pero la entrada se recortaba a 0-15. El protocolo era asimétrico: un 200 enviado por la placa volvía convertido en 15.

Ahora el cable habla en 0-255 en ambos sentidos. La conversión a la escala 0-15 de la redstone la hace el mod.

2. El modo digital envía 255, no 1

Con el modo digital, un bloque encendido enviaba 1. Eso obligaba al firmware a saber cómo estaba configurado el bloque dentro del juego: un analogWrite(pin, 1) es un ciclo de trabajo del 0,4 %, es decir un LED que parece apagado.

Ahora envía 255, así que un único analogWrite(pin, valor) sirve para señal digital y analógica. En sentido contrario, cualquier valor entrante mayor o igual que 1 se interpreta como encendido a potencia máxima.

3. El Wi-Fi cambió de dirección y de puerto

Antes la placa levantaba un servidor en el 8080 y Minecraft se conectaba a ella. Ahora es al revés: el mod es el servidor en el puerto 25585, y la placa se conecta como cliente enviando un token de emparejamiento en la primera línea.

4. Un Target Data vacío ya no acepta todo

Un bloque con el identificador en blanco aceptaba cualquier mensaje que contuviera :. Ahora un identificador vacío significa que el bloque ignora todo. No existe el comodín.


🐛 Correcciones importantes

Las placas ya no desaparecen al reiniciar el servidor

Este era el fallo más grave de la 0.3.x. El registro de placas activas solo se poblaba al colocar el bloque a mano. Tras un reinicio del servidor, el registro arrancaba vacío y nada volvía a llenarlo: todas las placas cargadas del disco quedaban invisibles —pestaña vacía, modo entrada muerto— hasta volver a colocar cada bloque una por una.

Ahora las placas se indexan al cargarse del mundo, por dimensión y por dueño.

El mismo registro además nunca soltaba las placas destruidas: una placa volada por TNT, empujada por un pistón o borrada con /fill seguía dentro para siempre, y con ella una referencia viva a su dimensión. Corregido.

Otros fallos funcionales

Fallo Efecto que tenía
El modelo del bloque no se actualizaba con la entrada serial Una señal entrante funcionaba, pero el bloque no lo reflejaba visualmente
Faltaba getDirectSignal Un bloque en modo salida contra un bloque sólido no encendía nada
El lado superior era inalcanzable Se podía configurar por lógica interna pero no pulsar
Un mensaje como "cmd:" lanzaba una excepción Se tragaba en un catch vacío, ocultando también cualquier otro error
Auto-join de hilos al desconectar El hilo lector se esperaba a sí mismo al cerrar por error
Fuga de hilos en la interfaz Un temporizador de la pantalla de inicio solo se cancelaba en una de las rutas de salida
Conexiones fantasma El estado de conexión tenía tres dueños distintos que podían discrepar
Se perdía el foco al escribir La interfaz se reconstruía en cada respuesta del servidor

🔒 Seguridad

Siete puntos que estaban abiertos y ahora no lo están:

Problema Riesgo real
Servidor Wi-Fi sin autenticación Cualquiera en la misma red (aula, cafetería, coworking) podía abrir un telnet y accionar tu redstone
Carga forzada de chunks Los receptores de red usaban coordenadas del cliente sin validar; posiciones aleatorias obligaban al servidor a generar terreno sin límite
Paquetes sin comprobación de dueño Cualquier jugador podía apagar o reconfigurar las placas de otro
Sin límite de ritmo Un Serial.println() dentro de loop() a 115200 baudios genera miles de paquetes por segundo. No hacía falta un cliente modificado: bastaba un sketch mal escrito
Cadenas sin límite en NBT Identificadores de hasta 32 767 caracteres persistidos y replicados a cada cliente
Lectura sin cota Un peer que no enviara salto de línea agotaba la memoria del cliente
Placa sin dueño = pública Las colocadas por comando o dispensador quedaban abiertas a cualquiera

Ahora: token obligatorio, solo direcciones privadas, una sola placa por sesión, líneas acotadas a 256 caracteres, validación de posición y distancia en todos los paquetes, límite de 40 mensajes/s por jugador (ráfaga de 80), identificadores acotados a 32 caracteres, y las placas sin dueño se reclaman para el primer jugador que las opere.

El canal Wi-Fi sigue yendo en texto claro. El token evita el acceso casual dentro de tu red, pero no es cifrado. Es adecuado para una red doméstica o de aula; no redirijas el puerto 25585 en tu router.


⚡ Rendimiento

  • Estados del bloque reducidos de 17 496 a 2 916 (seis veces menos) eliminando dos propiedades que no se usaban ni en el código ni en los modelos.
  • Coste por tick corregido. La comprobación de salida era verdadera siempre, así que cada placa ejecutaba veinte veces por segundo seis consultas de redstone. Con cien placas eran 12 000 consultas por segundo para descubrir que nada había cambiado. Ahora corre cada 2 ticks y solo cuando hay algo que enviar.
  • Deduplicación de salida. Una palanca mantenida encendida envía un mensaje, no veinte por segundo.
  • Cola de mensajes cambiada por una estructura que no copia el array entero en cada mensaje.

🎨 Interfaz

  • Reorganizada en páginas independientes. Antes, añadir una pestaña obligaba a tocar cuatro bloques switch distintos, y olvidar uno era la causa de varias fugas.
  • Recorte de texto correcto: los botones ya no desbordan con traducciones largas.
  • Las insignias miden el texto que contienen; la consola se recorta al ancho disponible.
  • Ya no se pierde el foco del campo de texto mientras escribes.
  • Corregida una carrera en el botón de encendido que podía dejarlo en un estado incoherente.
  • Eliminado el medidor de latencia: usaba una función que requiere permisos de administrador en Linux y macOS, y su alternativa cronometraba abrir una conexión nueva, no la latencia real.

Límites que siguen ahí

Vale la pena decirlos:

  • La lista de placas no tiene scroll. A partir de unas ocho placas, las siguientes quedan fuera de pantalla. Es el techo práctico del mod hoy.
  • La interfaz no se adapta a resoluciones muy pequeñas con la escala de GUI al máximo.
  • No hay confirmación al desconectar.
  • El token no se puede copiar al portapapeles.

🌍 Idiomas

Los archivos de español de España, México y Argentina eran byte a byte idénticos salvo una palabra. Eso no es localización.

Además había unas cuarenta cadenas en español escritas directamente en el código Java —así que la interfaz seguía en español aunque el juego estuviera en inglés—, unas veinticinco claves muertas de pantallas ya eliminadas, faltaban las de los controles (el menú de teclas mostraba el identificador crudo) y varios mensajes pasaban frases completas como si fueran claves de traducción.

Ahora: 121 claves con paridad verificada en cinco idiomas — inglés, español de España, de México (léxico americano), de Perú (nuevo) y de Argentina (con voseo real: "Conectá", "Colocá", "volvé a abrir").

También se quitaron los emojis que la fuente por defecto de Minecraft no sabe dibujar.


📚 Documentación

La guía y la referencia de protocolo estaban etiquetadas como 0.4.3 pero describían el comportamiento de la 0.3.x. Reescritas por completo en español e inglés, con secciones nuevas de errores frecuentes, límites conocidos y alcance en multijugador.

Nuevo: [ejemplos y rutina de prueba](docs/ejemplos/) — tres montajes del mismo circuito (un potenciómetro y un LED) para Arduino Uno R3 por USB, ESP32 por Wi-Fi y Arduino Uno Q con Bridge y Python. Incluyen cableado pin a pin, configuración en el juego, y una rutina de cinco pasos donde cada paso aísla una capa distinta.

También hay [prompts listos](docs/ejemplos/esquemas-ia.md) para generar los esquemas de conexión con una IA de imágenes.


🏗️ Interno

Para quien lea el código:

  • Los int mágicos (ioMode == 1, signalType == 0) sustituidos por enums con codec de red que degrada valores inválidos en vez de corromper el bloque.
  • Eliminada la duplicación: el cálculo de IP local existía dos veces y ya había divergido; el dibujo de bordes, tres veces; el de tarjetas, tres veces con sombras a distinta distancia —de ahí el borde desalineado—; las insignias, cinco veces solo en una pantalla.
  • Colores repetidos por cinco archivos centralizados en un único tema.
  • Estado de conexión con fuente única.
  • Eliminados los mixins de ejemplo, un archivo de configuración que se cargaba y guardaba pero cuyos campos nunca se leían, y una variable que decidía la velocidad de lectura pero a la que nunca se le escribía nada.
  • Enums persistidos por nombre, no por posición, para que reordenarlos no rompa los mundos guardados.

🔧 Cómo migrar desde la 0.3.x

En tu sketch

  1. Quita las comparaciones con 1. Si tenías algo como if (valor == 1) digitalWrite(pin, HIGH);, cámbialo por `analogWrite(p...
Read more

SerialCraft Alpha v0.4

Choose a tag to compare

@LeonardoAliaga LeonardoAliaga released this 06 Apr 01:16
alpha-v0.4

comienzo de la beta v0.4

SerialCraft Beta v0.3.6

Choose a tag to compare

@LeonardoAliaga LeonardoAliaga released this 22 Dec 02:51
6fced83

📦 v0.3.6: La Actualización Visual y Tecnico

¡La versión Beta 0.3.6 ya está disponible para descargar!

Esta actualización marca un antes y un después en la experiencia de uso del mod. Me eh tomado un tiempo para reimaginar por completo la Interfaz de Usuario (UI), enfocándome en la claridad, el minimalismo y la comodidad visual.


✨ Novedades Destacadas

🎨 Rediseño Total de la Interfaz (UI Overhaul)

  • Estilo Minimalista: Eliminamos el ruido visual innecesario. Ahora los menús son más limpios y modernos.
  • Mayor Comodidad: Se han ajustado los contrastes y tamaños para que la navegación sea más intuitiva y menos cansada para la vista durante sesiones largas de juego.
  • Consistencia: Todos los bloques y herramientas ahora comparten un lenguaje de diseño unificado.

🛠️ Registro de Cambios (Changelog)

Cambios Visuales

  • Nueva UI Principal: Diseño plano y minimalista implementado en todos los contenedores.
  • Fuentes y Textos: Mejorada la legibilidad en las descripciones de los ítems.
  • Iconos: Actualizados para coincidir con la nueva estética.

General / Técnico

  • Optimización interna para acompañar el nuevo sistema de renderizado de menús.
    -Compatibilidad con variedad de idiomas (Inglés)
  • Re-estructuración de las logicas de uso.
  • Una guia detallada de cada version publicada

📥 Instalación

  1. Descarga el archivo .jar de la versión 0.3.6
  2. Colócalo en tu carpeta mods.
  3. ¡Disfruta de la nueva experiencia visual!

Nota: Si encuentras errores o problemas de rendimiendo u optimización me alegria leerte en "Issues"!

SerialCraft Beta v.0.2.7

Choose a tag to compare

@LeonardoAliaga LeonardoAliaga released this 10 Dec 20:24

Esta actualización incluye un nuevo modelado 3D a detalle semejante a una placa Arduino en el que se puede interactuar fácilmente y de manera intuitiva. Además de agregar más funcionalidades personalizadas en la lógica y configuración de la placa, incluso ver la lista de placas registrada en la laptop a un ID del usuario para así evitar conflictos en un mundo MULTIJUGADOR. El mod hasta este punto ya es funcional, espero sea del agrado del que desea probarlo.