Aprendiendo programación (en java) a través de (un plugin para) Minecraft
Creado por Felipe M.
Cómo fue en el aula
Todavía nadie ha contado cómo le fue con este recurso.
Descripción del Curso
DESCRIPCIÓN
La unidad 8, titulada "Git, distribución y documentación", forma parte de la asignatura Ingeniería de Sistemas y se inscribe en un curso orientado a desarrollar en los estudiantes la capacidad de gestionar proyectos de software con énfasis en control de versiones, documentación y distribución. El enfoque general del curso es promover prácticas profesionales que faciliten la colaboración, la trazabilidad de cambios y la entrega de soluciones listas para su uso en entornos reales.
Esta unidad específica aborda el uso de Git como herramienta de control de versiones, la creación de documentación mínima y útil para usuarios y desarrolladores (README, guía de instalación y pruebas), y el empaquetado de un plugin en un archivo JAR para distribución y pruebas de instalación. Se privilegia un aprendizaje práctico y alineado con escenarios de trabajo colaborativo, donde los estudiantes deben comunicar cambios de forma clara mediante mensajes de commit, gestionar ramas para características y mantener documentación que acompañe al código a lo largo de todo su ciclo de vida.
En síntesis, el curso busca que el estudiante: (i) gestione proyectos de software con un sistema de control de versiones, (ii) elabore documentación de apoyo para distintos públicos y (iii) prepare artefactos distribuidos listos para pruebas e instalación. Aunque la unidad se centra en herramientas y artefactos concretos (Git, README, guía de instalación y pruebas, empaquetado en JAR), la visión pedagógica subyacente es la capacidad de aplicar estos conceptos a diversos contextos de desarrollo y distribución de software.
Competencias
COMPETENCIAS
- Aplicar prácticas de control de versiones con Git, gestionar ramas y resolver conflictos de forma eficiente en proyectos de software.
- Elaborar documentación mínima y útil orientada a usuarios y a otros desarrolladores (README, guía de instalación y pruebas) que facilite la adopción y el mantenimiento.
- Empaquetar software en formatos listos para distribución (por ejemplo, un archivo JAR) y realizar pruebas de instalación para validar el proceso de entrega.
- Desarrollar habilidades de comunicación técnica y colaboración, mediante mensajes de commit claros y trazabilidad de cambios a lo largo del ciclo de vida del proyecto.
- Analizar requisitos de distribución y adaptar la documentación y el empaquetado a diferentes audiencias y entornos de ejecución.
Requerimientos
REQUERIMIENTOS
- Conocimientos básicos de programación y conceptos de gestión de versiones; experiencia previa con herramientas de desarrollo es deseable.
- Acceso a un entorno de desarrollo con Java y Git instalados (IDE compatible, JDK y cliente Git configurados).
- Un repositorio de proyecto para practicar (con permisos para crear ramas, commits y etiquetar versiones).
- Capacidad para leer y crear documentación técnica básica (README, guías de instalación y pruebas).
- Recursos para empaquetar y probar un plugin en formato JAR, incluyendo un entorno de pruebas de instalación.
Unidades del Curso
Unidad 1: Fundamentos de Java y visión general de Spigot/Bukkit
<p>En esta unidad se introduce Java como base para desarrollar plugins de Minecraft y se contextualiza la API Spigot/Bukkit. Se explorarán conceptos clave de Java y su relevancia para la creación de plugins, preparando al estudiante para avanzar hacia el desarrollo práctico.</p>
Objetivos de Aprendizaje
- Describir los fundamentos de Java: tipos de datos, variables, estructuras de control y conceptos básicos de orientación a objetos.
- Explicar la relación entre Java y el desarrollo de plugins para Minecraft utilizando la API Spigot/Bukkit.
- Identificar herramientas y recursos iniciales para empezar a trabajar con Java y Spigot/Bukkit (JDK, IDE, documentación).
Contenidos Temáticos
-
Tema 1: Introducción a Java y sintaxis básica
Conceptos básicos: tipos de datos, variables, operadores y estructura general de un programa Java.
-
Tema 2: Estructuras de control y flujo
Condicionales, bucles y manejo del flujo de ejecución en programas Java simples.
-
Tema 3: Conceptos de orientación a objetos
Clases, objetos, encapsulación y visibilidad; primeros acercamientos a modelos orientados a objetos aplicables a plugins.
-
Tema 4: Visión general de Spigot/Bukkit y plugins
Arquitectura básica de un plugin, roles de la API y el entorno de desarrollo recomendado.
Actividades
-
Actividad 1: Configuración del entorno de desarrollo
Instalar JDK, escoger un IDE (IntelliJ IDEA o Eclipse) y configurar un proyecto de ejemplo para compilar código Java básico. Objetivo: que el alumnado logre crear y ejecutar un programa Java simple sin errores de compilación.
- Instalación de JDK 17 o superior.
- Creación de un proyecto Java y escritura de un programa "Hola, mundo".
-
Actividad 2: Primer programa orientado a objetos
Crear una clase simple que modela una entidad genérica (por ejemplo, ObjetoMinecraft) con atributos y métodos básicos. Objetivo: practicar encapsulación y uso de métodos.
- Definir variables privadas, constructores y getters/setters.
- Ejecutar un método de prueba que muestre valores por consola.
-
Actividad 3: Discusión guiada sobre OO y Minecraft
Analizar ejemplos de entidades de Minecraft (jugador, bloque, evento) y discutir cómo se modelarían como clases en Java. Objetivo: activar el pensamiento de diseño orientado a objetos aplicado al dominio del juego.
- Identificar atributos y comportamientos relevantes de cada entidad.
- Propuesta de relaciones entre clases (asociaciones, agregaciones).
Evaluación
Evaluación formativa basada en la participación y en la entrega de las actividades de la unidad:
- Comprensión de conceptos básicos de Java y OO (40%).
- Capacidad para justificar la relevancia de Java en el desarrollo de plugins (30%).
- Calidad de las actividades prácticas de configuración y diseño OO (30%).
Duración
2 semanas
Unidad 2: Java básico para plugins y compilación
<p>En esta unidad se afianzan las bases de Java: declaración de variables, tipos de datos, operadores y estructuras de control, con énfasis en escribir código compilable que sirva como base para desarrollar plugins de Minecraft.</p>
Objetivos de Aprendizaje
- Declarar variables de diferentes tipos y realizar operaciones sencillas.
- Utilizar estructuras de control (if, switch, for, while) para resolver problemas simples.
- Definir una clase Java simple que modele una entidad de Minecraft con atributos y métodos básicos.
Contenidos Temáticos
-
Tema 1: Variables y tipos de datos
Primitivos (int, long, double, boolean, char) y objetos básicos, conversiones y valores por defecto.
-
Tema 2: Operadores y expresiones
Aritméticos, lógicos y relacionales; construcción de expresiones y asignaciones combinadas.
-
Tema 3: Estructuras de control
if/else, switch, bucles for/while; prácticas con ejemplos simples.
-
Tema 4: Clases y objetos simples
Definición de clases,constructores, atributos y métodos; jerarquía de acceso y encapsulación básica.
Actividades
-
Actividad 1: Proyecto Java básico
Crear una pequeña clase que represente una entidad de Minecraft (p. ej., BloqueMini) con atributos simples y un método que imprima su estado. Objetivo: practicar declaración de variables, métodos y encapsulación.
- Definir al menos dos atributos y un método público.
- Compilar y ejecutar desde la consola.
-
Actividad 2: Control de flujo aplicado
Escribir un programa que tome una entrada simulada y use estructuras de control para decidir una acción (p. ej., si un jugador tiene suficiente "energía" para activar un bloque).
- Implementar condiciones y bucles básicos.
- Verificar la salida ante diferentes entradas.
-
Actividad 3: Diseño de clase orientada a objetos
Definir una clase JugadorMini que modele atributos como nombre y nivel, con métodos para aumentar nivel y mostrar información.
- Aplicar encapsulación y métodos de acceso.
- Preparar el código para futuras extensiones del plugin.
Evaluación
La evaluación considera: comprensión de fundamentos de Java, capacidad de escribir código básico y diseño de una clase representativa de entidades Minecraft.
- Calidad del código Java básico (25%).
- Correcta utilización de estructuras de control (25%).
- Diseño de al menos una clase representativa (50%).
Duración
2 semanas
Unidad 3: Diseño orientado a objetos de entidades Minecraft
<p>Esta unidad fusiona OO con el dominio de Minecraft, enfocado en modelar entidades relevantes (Jugador, Bloque, Evento) y sus interacciones. Se sientan las bases para un diseño modular y extensible del plugin.</p>
Objetivos de Aprendizaje
- Identificar atributos y comportamientos relevantes de las entidades Jugador, Bloque y Evento.
- Definir relaciones entre clases (asociaciones, agregaciones) y encapsulación adecuada.
- Implementar esqueletos de clases con métodos que reflejen interacciones básicas entre entidades.
Contenidos Temáticos
-
Tema 1: Clases, objetos y encapsulación
Patrones de diseño básicos para representar entidades del juego con privaciones de acceso y métodos.
-
Tema 2: Relaciones entre clases
Asociaciones, agregaciones y composición; cuándo usar cada una en el diseño de un plugin.
-
Tema 3: Modelado de entidades: Jugador, Bloque, Evento
Definición de atributos clave y comportamientos para cada entidad y sus interacciones.
-
Tema 4: Estructura de clases en Java para plugins
Convenciones de nombres, organización de paquetes y documentación mínima.
Actividades
-
Actividad 1: Boceto de clases
Diseñar diagramas simples (en papel o digital) para Jugador, Bloque y Evento, indicando atributos y métodos principales.
- Identificar relaciones entre las clases.
- Justificar elecciones de encapsulación.
-
Actividad 2: Skeleton de clases en Java
Crear tres clases Java con atributos y métodos basados en el diseño anterior, con constructores y getters/setters.
- Compilar y mostrar información mediante un método toString().
-
Actividad 3: Interacciones básicas
Implementar métodos que simulen interacción entre Jugador y Bloque (p. ej., jugador interactúa con un bloque para obtener un beneficio).
- Verificar cohesión entre clases y facilidad de extensión.
Evaluación
Evaluación centrada en la calidad del diseño OO y la cohesión de las entidades modeladas.
- Claridad y coherencia del modelo OO (40%).
- Encapsulación y responsabilidades de cada clase (25%).
- Capacidad de extender el modelo para incluir nuevas entidades (35%).
Duración
3 semanas
Unidad 4: Diseño e implementación de un plugin básico con un evento
<p>Se construye un plugin básico que registre al menos un evento de Minecraft (por ejemplo, BlockBreakEvent) y ejecute una acción observable (enviar un mensaje al jugador). Se cubre la creación del esqueleto del plugin y la integración con la API Spigot/Bukkit.</p>
Objetivos de Aprendizaje
- Crear la estructura mínima de un plugin (clase principal que extienda JavaPlugin y plugin.yml).
- Registrar un Listener para un evento (BlockBreakEvent) y responder con una acción visible (mensaje al jugador).
- Probar el plugin en un servidor local y validar la interacción evento-acción.
Contenidos Temáticos
-
Tema 1: Estructura de un plugin Spigot: clase principal y plugin.yml
Cómo organizar el código y la configuración necesaria para que el servidor cargue el plugin.
-
Tema 2: Listeners y registro de eventos
Cómo suscribirse a eventos de Minecraft y ejecutar lógica cuando ocurren.
-
Tema 3: Respuestas a eventos: mensajes y acciones
Cómo interactuar con el mundo y los jugadores en respuesta a eventos usando la API.
Actividades
-
Actividad 1: Esqueleto del plugin
Crear la clase principal que extienda JavaPlugin y un plugin.yml mínimo. Objetivo: entender el ciclo de vida del plugin.
- Definir nombre, versión y punto de entrada.
-
Actividad 2: Registrar BlockBreakEvent
Implementar un Listener que detecte la rotura de bloques y envíe un mensaje al jugador que participó en la acción.
- Utilizar el método onBlockBreak y enviar un título o chat message al jugador.
-
Actividad 3: Prueba en servidor local
Empaquetar el plugin, copiar el JAR al servidor de pruebas y verificar que al romper un bloque el jugador reciba el mensaje correspondiente.
- Revisar logs y confirmar que no hay errores de carga.
Evaluación
Evaluación del diseño, implementación y prueba del plugin básico.
- Funcionamiento correcto del evento (35%).
- Calidad del código y claridad del flujo de ejecución (25%).
- Capacidad de prueba en servidor local y manejo de errores (20%).
- Documentación mínima en el código (20%).
Duración
2 semanas
Unidad 5: API Spigot/Bukkit: eventos, comandos y permisos
<p>Se profundiza en la API Spigot/Bukkit para gestionar eventos, comandos y permisos, manteniendo un código organizado con comentarios y documentación mínima que explique el flujo de ejecución y las decisiones de diseño.</p>
Objetivos de Aprendizaje
- Registrar y manejar eventos complejos y de alto nivel (p. ej., PlayerJoinEvent, EntityDamageByEntityEvent).
- Definir y registrar comandos personalizados con argumentos básicos y respuestas al usuario.
- Configurar permisos simples y aplicar controles de acceso para comandos y funcionalidad del plugin.
Contenidos Temáticos
-
Tema 1: Eventos avanzados y filtros
Detección de eventos relevantes y uso de filtros para reducir el procesamiento innecesario.
-
Tema 2: Comandos personalizados
Declaración, registro y manejo de argumentos básicos de comandos.
-
Tema 3: Permisos y seguridad
Conceptos de permisos, integración con sistemas de permisos ya existentes y buenas prácticas.
-
Tema 4: Organización de código y documentación
Convenciones de nombres, modularización y comentarios para facilitar mantenimiento.
Actividades
-
Actividad 1: Registro de eventos adicionales
Ampliar el plugin para escuchar PlayerJoinEvent y enviar un saludo. Incluye manejo de condiciones simples y comentarios explicativos.
- Mostrar mensaje de bienvenida al jugador que se une.
-
Actividad 2: Comando sencillo
Crear un comando /saludo que devuelva un mensaje personalizado al usuario y registre argumentos simples.
- Parseo básico de argumentos, validaciones y respuestas.
-
Actividad 3: Permisos y control de acceso
Definir un permiso para activar una función del plugin (p. ej., acceso al comando) y aplicar verificación antes de ejecutar la acción.
- Asociar permisos en plugin.yml y comprobar en la ejecución.
Evaluación
Evaluación del uso adecuado de la API, la implementación de comandos y permisos, y la organización del código.
- Correcto manejo de al menos dos eventos y un comando (40%).
- Operaciones de permisos y validación de acceso (25%).
- Calidad del código y comentarios/documentación (25%).
- Buenas prácticas de código y pruebas (10%).
Duración
2 semanas
Unidad 6: Persistencia de datos con YAML/JSON
<p>Se introduce la persistencia de datos en el plugin utilizando YAML o JSON para configuraciones o puntuaciones. Se cubren lectura, escritura y manejo de errores para garantizar robustez.</p>
Objetivos de Aprendizaje
- Leer configuraciones desde archivos YAML/JSON y aplicar valores al comportamiento del plugin.
- Escribir configuraciones o puntuaciones de forma persistente y segura.
- Gestionar errores comunes de lectura/escritura y manejar excepciones correctamente.
Contenidos Temáticos
-
Tema 1: Introducción a la configuración en Spigot
Archivos de configuración, formato YAML y su uso típico en plugins.
-
Tema 2: Lectura y escritura de YAML/JSON
Uso de bibliotecas y APIs para cargar y guardar datos estructurados.
-
Tema 3: Manejo de errores y validaciones
Buenas prácticas para validar datos y manejar fallos de I/O de manera segura.
Actividades
-
Actividad 1: Configuración YAML
Crear un archivo de configuración YAML con valores simples (p. ej., mensaje de bienvenida, contador de eventos) y cargarlo en la inicialización del plugin.
- Validar la presencia de claves esperadas y aplicar valores predeterminados si faltan.
-
Actividad 2: Lectura/escritura de puntuaciones
Implementar un sistema de puntuaciones que se guarda en un archivo JSON y se actualiza al cumplir acciones específicas.
- Manejo de errores de E/S y cierre correcto de recursos.
-
Actividad 3: Pruebas de persistencia
Probar lectura/escritura con valores distintos y simular fallos para asegurar robustez (faltante de archivo, permisos).
- Registro de errores en logs para diagnóstico.
Evaluación
Evaluación de la capacidad de leer y escribir configuraciones y datos de puntuación, y de manejo de errores.
- Correcta persistencia de datos (40%).
- Manejo de errores y robustez (30%).
- Documentación mínima del flujo de lectura/escritura (30%).
Duración
2 semanas
Unidad 7: Pruebas, depuración y estabilidad
<p>Se aborda la prueba y depuración del plugin: pruebas manuales, interpretación de logs, detección de NPE y otras excepciones comunes, y verificación de la estabilidad del sistema.</p>
Objetivos de Aprendizaje
- Ejecutar pruebas manuales en un servidor de Minecraft y registrar resultados.
- Analizar mensajes de log y stack traces para localizar fallos.
- Aplicar correcciones (por ejemplo, comprobaciones de null) para evitar NPE y otros errores comunes.
Contenidos Temáticos
-
Tema 1: Pruebas y verificación manual
Procedimientos para validar comportamiento del plugin en un servidor local y registrar resultados.
-
Tema 2: Depuración y análisis de logs
Lectura de logs, trazas de pila y técnicas para aislar fallos.
-
Tema 3: Manejo de errores comunes (NPE, null checks)
Estrategias para evitar errores de nulo y mejorar la robustez del código.
Actividades
-
Actividad 1: Pruebas de regresión manual
Ejecutar escenarios de uso del plugin y registrar resultados, comparando con expectativas.
- Crear una matriz de pruebas y criterios de éxito.
-
Actividad 2: Análisis de logs
Analizar archivos de log para localizar fallos y proponer soluciones.
- Práctica de lectura de trazas y utilidades de filtrado.
-
Actividad 3: Corrección de errores comunes
Aplicar mejoras como comprobaciones de null y manejo de excepciones para mejorar la estabilidad.
- Refactorización mínima para evitar NPE.
Evaluación
Evaluación de la capacidad para subir la calidad, estabilidad y fiabilidad del plugin a través de pruebas y depuración.
- Estabilidad y ausencia de errores graves (40%).
- Capacidad de diagnóstico y solución de problemas (30%).
- Documentación de pruebas y resultados (30%).
Duración
2 semanas
Unidad 8: Git, distribución y documentación
<p>La unidad final aborda el control de versiones con Git y la entrega de documentación básica: README, guía de instalación y pruebas, para facilitar la distribución del plugin.</p>
Objetivos de Aprendizaje
- Configurar un repositorio Git, realizar commits con mensajes claros y usar ramas para características.
- Preparar documentación mínima útil para usuarios y otros desarrolladores (README, guía de instalación y pruebas).
- Empaquetar el plugin en un archivo JAR listo para distribución y pruebas de instalación.
Contenidos Temáticos
-
Tema 1: Git y flujo de trabajo
Conceptos básicos de Git, clonación, commits, ramas y resolución de conflictos con prácticas recomendadas.
-
Tema 2: Documentación y README
Cómo estructurar un README útil: descripción, instalación, pruebas y guía de uso.
-
Tema 3: Pruebas de instalación y distribución
Pasos para empaquetar el plugin y verificar su instalación en un servidor local.
Actividades
-
Actividad 1: Configurar repositorio Git
Iniciar un repositorio, crear ramas para características y realizar commits con mensajes claros. Objetivo: practicar control de versiones y documentación de cambios.
- Ignorar archivos innecesarios con .gitignore adecuado.
-
Actividad 2: README y guía de instalación
Redactar un README que describa el plugin, su objetivo, requisitos y pasos de instalación y pruebas.
- Incluir ejemplos de ejecución y pruebas mínimas.
-
Actividad 3: Empaquetado y prueba de distribución
Generar el JAR del plugin, moverlo a un servidor local y verificar que se carga correctamente con el plugin.yml.
- Verificar compatibilidad de versión de Spigot/Bukkit y JRE.
Evaluación
Evaluación del control de versiones, la calidad de la documentación y la capacidad de distribuir el plugin.
- Uso correcto de Git y claridad de commits (30%).
- Calidad de la documentación (30%).
- Completitud de la guía de instalación y pruebas (40%).
Duración
2 semanas
Crea tus propios cursos con EdutekaLab
Diseña cursos completos con unidades, objetivos y actividades usando IA.
Comenzar gratis