Minecraft Plugins con Spigot
Tags: java, minecraft, spigot, spanish
Published: 2022-12-07 16:23:16

Si tengo que pensar en un juego que permite ser creativo de verdad y con mucha libertad, automáticamente digo Minecraft. El hecho de que cada bloque tenga su propia lógica y eventos; todo funcionando en un mundo basado en la generación procedimental, me parece un sueño.

Sin una sola linea de código, usando la redstone (un material que permite simular el funcionamiento eléctrico) podemos llegar a crear un microprocesador de varios núcleos.

{% embed https://www.youtube.com/watch?v=SbO0tqH8f5I %}

Pero también tenemos la posibilidad de ir por el mundo plantando granjas, combatiendo enemigos y creando pixelart. Eso es un verdadero sandbox, un juego que nos permita hacer lo que queramos cuando queramos.

Pero yo quería más: Extender la funcionalidad, crear mi propio mundo, mis propios bloques.

## Winncraft, el inicio de todo
Jugando con un amigo, me enseñó un servidor llamado Winncraft. Nunca había entrado a uno, siempre jugué Minecraft Vanilla y offline. Pero cuando estuve dentro, lo entendí: las posibilidades eran infinitas. Un MMORPG come horas impresionante.

Como jugador, necesitaba meterme en ese mundo por horas y disfrutarlo como un bebé. Pero como programador, quería crear algo así.

Así fue como conocí Spigot.

## Spigot y mi Renacimiento
Soy un desarrollador full stack, por lo cual manejo tecnologías mobile y web. Pero mi lenguaje core es Java. Minecraft esta desarrollado en Java. Por lo tanto, desarrollar plugins para este juego iba a ser realmente interesante.

Cuando encontrás algo que se te da bien y empezás a practicarlo, entras en un estado de satisfacción bastante alto. Pero si ese conocimiento te introduce en otras áreas, se vuelve mucho mejor. Podría decir que es similar a trabajar con Python por años y de repente aparece Machine Learning.

Bukkit es un plugin que funciona sobre el servidor oficial de Minecraft, permitiendo añadir funcionalidades y plugins. Spigot es un hijo de Bukkit, una versión mejorada. Si mal recuerdo, el desarrollo de Bukkit se discontinuó y ahora todo esta centrado en Spigot. Para mas información, [pueden ver este post](https://www.spigotmc.org/wiki/faq-es/) en el foro oficial de Spigot.

Spigot tiene una API que nos permite crear nuestros propios plugins. Yo estoy aprendiendo a desarrollar plugins [con esta lista de reproducción de un youtuber americano](https://www.youtube.com/playlist?list=PL_MDptw3Zft_Xb8-i0WBGtwdUN14TMJNE).

Cabe aclarar que en materia de Youtube, no encontré vídeos de desarrolladores que expliquen a fondo como funciona cada componente de Spigot. Tampoco se repara en Java, así que deberían aprender el lenguaje previo a jugar con plugins.

Muchos dicen que se aprende Java mientras se adquieren conocimientos en Spigot. Esto no es verdad. Hay fundamentos del lenguaje, buenas prácticas, patrones de diseño, manejo de eventos, anotaciones y miles de temas más que no se ven explícitamente con Spigot.

## Cómo armé Mi Entorno
La información sobre como armar un entorno para trabajar cómodamente con Spigot, está dispersa por todos lados. La mayoría de los que enseñan esto, lo hacen de una forma medio incómoda. Vengo a traer un poco de luz al asunto.

Procedo a enumerar los pasos uno a uno:

- Primero hay que tener instalado [Intellij](https://www.jetbrains.com/idea/). Bajen la versión Community porque la Ultimate es paga.
- Luego deben tener creado un servidor de Minecraft con Spigot funcionando. Lo bajan desde [aquí](https://getbukkit.org/download/spigot).
- Para crear un proyecto de Spigot en Intellij, sigan las instrucciones del primer video de la lista que dejé más arriba.
- Una vez creado el proyecto, siguen los pasos de este [artículo](https://www.spigotmc.org/threads/tip-one-click-artifact-build-and-spigot-server-start-in-intellij.308427/#post-3584575). Esto les va a permitir iniciar el servidor e incluir el plugin automáticamente.

## Conclusiones
Este es uno de esos proyectos que me lanzo a emprender sin paracaídas. Quizá a mucha gente le guste o quizá no. En realidad, confieso, esto lo hago como un proceso de introspección.

Espero que les haya gustado y me encantaría que dejen su opinión.

¡Hasta la próxima!