Skip to content
Saltar al contenido
Volver al Blog
Snap: Ejecuta plugins BungeeCord heredados en Velocity

Snap: Ejecuta plugins BungeeCord heredados en Velocity

Alexandru Maftei
Alexandru Maftei
@ice
Actualizado
22 vistas
TL;DR:Snap es un adaptador Java que te permite ejecutar plugins de BungeeCord en Velocity. Descubre qué funciona, qué no, y si es la solución adecuada para la migración de tu servidor.
🐳 Proyecto Minecraft de código abierto

Phoenix616/Snap

Herramienta experimental para ejecutar plugins de BungeeCord en Velocity

⭐ 134 estrellas💻 Java📄 LGPL-3.0
Ver en GitHub ↗

Tienes un servidor Velocity. Quieres migrarte desde BungeeCord. Pero la mitad de tus plugins aún no tienen versiones para Velocity, y reescribirlos parece excesivo. Snap es un plugin adaptador Java que ejecuta plugins de BungeeCord directamente en Velocity traduciendo las llamadas a API sobre la marcha. No resolverá todos los problemas de compatibilidad, pero en ciertas configuraciones podría ahorrarte el trabajo doloroso de reemplazar o reescribir plugins de los que todavía dependes.

¿Qué es realmente Snap?

Snap es un plugin de Velocity que actúa como una capa de compatibilidad entre dos arquitecturas de proxy. Carga plugins de BungeeCord dentro de Velocity e intercepta sus llamadas a API, convirtiéndolas a equivalentes de Velocity en tiempo real. Piénsalo como un traductor en vivo sentado entre tus plugins heredados y un proxy moderno.

La historia de origen importa aquí. Este mantenedor, Phoenix616, comenzó intentando documentar las diferencias entre las APIs de BungeeCord y Velocity. Eso se convirtió en la construcción de un adaptador real que podría cargar plugins de un proxy en el otro. El resultado es ingenioso en concepto pero conlleva compromisos reales: funciona, pero es menos eficiente que los plugins nativos de Velocity porque cada llamada de método se traduce.

Para una herramienta de nicho que resuelve un problema específico, es bastante activa. 134 estrellas en GitHub, mantenimiento reciente, y la última versión (1.2-pre1) soporta Velocity 3.3.0 con compatibilidad con Bungee 1.20.x. El proyecto tiene licencia LGPL-3.0, así que puedes usarlo libremente siempre que compartas cualquier modificación.


Qué funciona (y qué definitivamente no)

La mayoría de tareas básicas de proxy funcionan bien. Conexiones de jugadores, cambio de servidores, escucha de eventos, verificación de permisos - todo está ahí. El mantenedor es refrescantemente honesto en el README: "La mayoría (esperemos)." No exageran sobre esto.

Pero varias funciones no se traducirán a Velocity en absoluto:

  • El sistema de grupos y permisos integrado de BungeeCord no existe en Velocity. El proyecto recomienda usar LuckPerms en su lugar, que funciona en ambos.
  • Funcionalidad de servidor de reconexión. BungeeCord tiene esto integrado; Velocity no lo expone.
  • Soporte de marcadores. Velocity no tiene API para esto, y Snap no está construyendo uno.
  • Algunas configuraciones de ProxyConfig devuelven valores por defecto razonables pero no son espejos exactos del comportamiento de Bungee.
  • Los comandos registrados después de que se carga un plugin podrían no aparecer en el registro de comandos.
  • La detección de transferencia solo funciona si el servidor está en modo en línea.

Si tu plugin depende fuertemente de cualquiera de estas características, Snap no te salvará. Es hora de escribir un plugin nativo de Velocity.

Aquí es donde Snap se vuelve práctico: puedes configurar qué sucede cuando algo no es compatible. Establece `throw-unsupported-exception` en `true` (por defecto) y verás excepciones registradas para que sepas exactamente qué se rompió. Establécelo en `false` y los métodos no compatibles devuelven valores por defecto en su lugar, permitiendo que tus plugins continúen con limitaciones.


Instalación y Configuración

La instalación es directa si has trabajado con Velocity antes.

Primero, descarga el archivo snap.jar del sistema de compilación CI del proyecto (vinculado en la página de versiones). Requiere Java 17 o más nuevo, así que asegúrate de que tu servidor cumple con ese requisito mínimo.

bash
# Coloca snap.jar en tu carpeta de plugins de Velocity
cp snap.jar /path/to/velocity/plugins/

# Crea el directorio de plugins de Snap
mkdir -p /path/to/velocity/plugins/Snap/

# Mueve tus plugins de BungeeCord allí
cp /path/to/bungee/plugins/*.jar /path/to/velocity/plugins/Snap/

Reinicia Velocity (o recarga el plugin), y Snap se inicializa, carga todos los plugins de BungeeCord de esa carpeta, y registra cualquier problema que encuentre. Si algo no se carga, los registros te dirán por qué.

Un consejo práctico de las pruebas: comienza con solo Snap y un plugin de BungeeCord. Confirma que se carga. Luego agrega más gradualmente. Detectarás problemas de incompatibilidad mucho más rápido que descargando todo de una vez y luego preguntándote qué plugin está causando el problema.


Cuándo usarías esto

Snap tiene sentido en algunos casos específicos.

Tienes un plugin de BungeeCord que ya no se mantiene y no tiene un equivalente en Velocity. Tal vez sea una utilidad heredada del personal o un módulo de análisis personalizado. Reescribirlo parece un desperdicio. Snap te permite seguir usándolo sin una reescritura completa.

Estás migrando una red pero no quieres migrar todo a la vez. Ejecutar Snap en tu nuevo servidor de Velocity te permite traer plugins antiguos mientras escribes o encuentras gradualmente reemplazos de Velocity.

Estás ejecutando una red de prueba y quieres probar Velocity sin comprometerte a migrar todo tu ecosistema de plugins aún.

Lo que no tiene sentido: usarlo en producción. El proyecto mismo advierte en contra sin pruebas extensas. E incluso entonces, estás apostando por software experimental. La mayoría de redes de producción están mejor migrando correctamente.

Si la mayoría de tus plugins ya tienen versiones mantenidas de Velocity, omite Snap por completo. Solo migra. Tendrás menos sorpresas y mejor rendimiento.


Compromisos de Rendimiento y Problemas Ocultos

La traducción añade sobrecarga. Cada llamada a API se intercepta y se convierte en ambos sentidos. Para plugins que hacen miles de llamadas por segundo, podrías ver impacto en CPU. Para plugins normales que hacen trabajo básico de proxy, probablemente no.

El manejo de conexiones es la parte más complicada. Los eventos podrían dispararse ligeramente diferente que en BungeeCord. Si tu plugin hace manipulación pesada de conexiones de jugadores o depende del tiempo específico de eventos, es mejor que lo reescribas para Velocity en lugar de intentar hacerlo funcionar a través de la capa de traducción de Snap.

También hay un techo de escala. Si ejecutas una red masiva con miles de jugadores concurrentes, la ineficiencia de Snap se agravará. A ese tamaño, es mejor que migres correctamente.

Vigila tu CPU y memoria durante el tráfico pico. Si ves picos que se correlacionan con la actividad del plugin, podría ser que la capa de traducción esté esforzándose. Esa es tu señal para migrar el plugin o buscar una alternativa de Velocity.


Alternativas Reales

Tus opciones para ejecutar plugins antiguos de BungeeCord en Velocity son bastante limitadas, por eso Snap existe en primer lugar.

Escribe un plugin de Velocity. Es la opción correcta a largo plazo y el camino a prueba de futuro. Dependiendo de la complejidad, podría llevar solo un fin de semana.

Mantente en BungeeCord o Waterfall. Velocity es más rápido y está mejor arquitecturado, pero no es la única opción. Si todo tu ecosistema de plugins depende de BungeeCord, quedarse allí es válido hasta que estés listo para migrar todo junto.

Rediseña alrededor de la funcionalidad faltante. ¿Realmente necesitas ese plugin heredado? Tal vez un sistema de permisos moderno como LuckPerms resuelve tus problemas sin el plugin. Tal vez puedas simplificar tu infraestructura.


Antes de Instalar

Prueba esto primero en un entorno de prueba. Ejecuta tus plugins a través de cada característica que te importa. Luego obsérvalo durante una semana y busca comportamiento extraño. Verifica los registros regularmente. Busca problemas de rendimiento.

Comprende las limitaciones de antemano. Snap funciona para ciertos plugins y ciertos casos de uso. No funcionará para todo. Cuanto más dependan tus plugins de características específicas de Bungee (especialmente grupos de permisos, manipulación de marcadores o secuestro de conexiones), más probable es que Snap te decepcione.

No ejecutes esto en producción sin esa fase de pruebas en la zona de prueba. El proyecto es explícito: este es software experimental. Resuelve un problema específico para personas específicas. Y eso podría no resolver tu problema.

Y si estás administrando una red de servidores Minecraft, probablemente también tengas constructores y jugadores. Podrían apreciar la herramienta de búsqueda de bloques de minecraft.how para encontrar materiales específicos, o la Calculadora del Portal del Nether para planificar infraestructura.

Sobre el autor
Alexandru Maftei
Alexandru MafteiRedactor principal

Lead writer at minecraft.how. Long-time Minecraft player running a small SMP server, testing every build, mod, and seed before writing about it.

¡Compártelo con tus amigos!

Comentarios

Aún no hay comentarios. ¡Sé el primero en compartir tu opinión!

We use cookies to improve your experience. By continuing to use this site, you agree to our use of cookies. Read our Privacy Policy