Un plugin para servidores de Hytale que permite intercambios seguros de objetos entre jugadores con una interfaz interactiva y transacciones atómicas.
- Interfaz de Intercambio Interactiva - Selecciona objetos para intercambiar con controles de cantidad
- Transacciones Atómicas Seguras - Los objetos se intercambian simultáneamente o no se intercambian en absoluto
- Validación Inteligente de Inventario - Verifica inteligentemente si los objetos pueden apilarse con el inventario existente
- Sistema de Cuenta Regresiva - Cuenta regresiva de 3 segundos antes de ejecutar el intercambio para prevenir accidentes
- Mensajes Personalizables - Sistema de mensajes completamente traducible con soporte para códigos de color
- Modo de Prueba - Pruebas en solitario para desarrollo y depuración
- Verificador de Actualizaciones - Verifica automáticamente en GitHub y CurseForge nuevas versiones
- Modo de Depuración - Registro detallado para solución de problemas
- El Jugador A envía una solicitud de intercambio al Jugador B:
/trade request JugadorB - El Jugador B acepta la solicitud:
/trade accept - Ambos jugadores abren la interfaz de intercambio y agregan objetos a sus ofertas
- Ambos jugadores hacen clic en ACEPTAR cuando estén listos
- Comienza la cuenta regresiva de 3 segundos - ambos jugadores aún pueden cancelar
- Después de la cuenta regresiva, ambos jugadores hacen clic en CONFIRMAR para completar el intercambio
- Los objetos se intercambian atómicamente (todo o nada)
| Comando | Descripción | Permiso |
|---|---|---|
/trade request <jugador> |
Enviar una solicitud de intercambio a otro jugador | easytrade.trade.request |
/trade accept |
Aceptar una solicitud de intercambio pendiente | easytrade.trade.accept |
/trade decline |
Rechazar una solicitud de intercambio pendiente | easytrade.trade.decline |
/trade cancel |
Cancelar el intercambio actual | easytrade.trade.cancel |
/trade confirm |
Confirmar intercambio después de la cuenta regresiva | easytrade.trade.confirm |
/trade open |
Abrir la interfaz de intercambio | easytrade.trade.open |
/trade reload |
Recargar configuración y mensajes | easytrade.admin.reload |
/trade test |
Iniciar intercambio de prueba en solitario (solo en modo depuración) | easytrade.admin.test |
/trade help |
Mostrar mensaje de ayuda | easytrade.trade.help |
Nota: Todos los permisos están configurados como verdaderos por defecto para todos los jugadores excepto los comandos de administrador.
La configuración se guarda automáticamente en mods/Toskan4134_EasyTrade/EasyTrade.json
| Opción | Por Defecto | Descripción |
|---|---|---|
Debug |
false |
Habilitar registro de depuración detallado |
RequestTimeoutSeconds |
30000 |
Milisegundos antes de que expire la solicitud de intercambio |
CountdownDurationSeconds |
3000 |
Duración de la cuenta regresiva en milisegundos antes de ejecutar el intercambio |
CheckForUpdates |
true |
Verificar actualizaciones del plugin al iniciar |
{
"CountdownDuration": 3000,
"RequestTimeout": 30000,
"CheckForUpdates": true,
"Debug": true
}Los mensajes se almacenan en plugins/EasyTrade/messages.json y soportan códigos de color y marcadores de posición.
&0-9, &a-f- Colores estándar de Minecraft&#RRGGBB- Colores hexadecimales (ej.,&#FF0000para rojo)&l- Texto en negrita&r- Restablecer formato
{player}- Nombre del jugador{target}- Nombre del jugador objetivo{seconds}- Segundos de cuenta regresiva/tiempo de espera{version}- Versión del plugin
trade.request.sent=&aSolicitud de intercambio enviada a &f{target}
trade.request.received=&eSolicitud de intercambio recibida de &f{initiator}&e. Usa &6/trade accept &7para aceptar.
trade.status.countdown=&a¡Ambos aceptaron! Completando en &f{seconds}s&a...
ui.status.notEnoughSpace=No tienes suficiente espacio en el inventarioPuedes encontrar algunos ejemplos de messages.json AQUÍ
La interfaz de intercambio está dividida en secciones:
- Tu Inventario - Objetos disponibles para ofrecer. Busca en inventario, barra de acceso rápido y mochila (abajo)
- Tu Oferta - Objetos que estás ofreciendo (izquierda)
- Oferta del Compañero - Objetos que tu compañero está ofreciendo (derecha)
- Mensaje de Estado - Muestra el estado del intercambio e instrucciones
- Botones de Acción - ACEPTAR, CONFIRMAR, CANCELAR
- Clic en objeto - Agregar 1 pila completa
- Clic en botón +1 - Agregar 1 objeto a la oferta existente
- Clic en botón +10 - Agregar 10 objetos a la oferta existente
- Clic en objeto ofrecido - Eliminar 1 pila completa
- Clic en botón -1 - Eliminar 1 objeto de la oferta
- Clic en botón -10 - Eliminar 10 objetos de la oferta
- NEGOTIATING - Ambos jugadores pueden modificar ofertas
- ONE_ACCEPTED - Un jugador ha aceptado, esperando al otro
- BOTH_ACCEPTED_COUNTDOWN - Cuenta regresiva en progreso (3 segundos)
- EXECUTING - El intercambio se está ejecutando (transacción atómica)
- COMPLETED - Intercambio exitoso
- CANCELLED - El intercambio fue cancelado
- FAILED - El intercambio falló (error de validación, problemas de inventario)
- Auto-desaceptar - Si el inventario cambia, la aceptación se revoca automáticamente
- Validación de inventario - Verifica si los objetos aún están disponibles antes de ejecutar
- Validación inteligente de espacio - Verifica inteligentemente si los objetos pueden apilarse con el inventario existente
- Transacciones atómicas - Todos los objetos se intercambian o ninguno (reversión en caso de fallo)
- Manejo de desconexión del compañero - El intercambio se cancela y la interfaz se cierra si el compañero se desconecta
Todos los permisos siguen el patrón easytrade.<categoría>.<comando>.
Puedes modificar los permisos usando /perm group/user list/add/remove <grupo/usuario>
Estos permisos deberían otorgarse a todos:
easytrade.trade.request - Enviar solicitudes de intercambio
easytrade.trade.accept - Aceptar solicitudes de intercambio
easytrade.trade.decline - Rechazar solicitudes de intercambio
easytrade.trade.cancel - Cancelar intercambios activos
easytrade.trade.confirm - Confirmar intercambios después de la cuenta regresiva
easytrade.trade.open - Abrir interfaz de intercambio
easytrade.trade.help - Ver mensaje de ayuda
Estos permisos deberían estar restringidos a administradores/operadores:
easytrade.admin.reload - Recargar configuración y mensajes
easytrade.admin.test - Iniciar intercambios de prueba en solitario (requiere modo depuración)
Por defecto, NO se requieren permisos:
- ✅ Todos los jugadores pueden usar todos los comandos de intercambio (no se necesitan permisos)
- ❌ Solo
/trade reloadrequiere permisos (easytrade.admin.reload) - 🐞 El comando
/trade testrequieredebug=trueen la configuración y permisos (easytrade.admin.test)
Solo necesitas configurar permisos si quieres RESTRINGIR el acceso a los comandos de intercambio.
- Compila el archivo JAR del plugin o descárgalo desde las versiones
- Coloca el JAR en la carpeta
modsde tu servidor - Inicia/reinicia el servidor
- Los archivos de configuración y mensajes se generarán automáticamente
- Personaliza los mensajes en
plugins/EasyTrade/messages.jsony la configuración enmods/Toskan4134_EasyTrade/EasyTrade.jsonsi lo deseas
./gradlew buildEl JAR compilado estará ubicado en build/libs/
- Clona el repositorio
- Importa en IntelliJ IDEA como un proyecto Gradle
- Configura la configuración de ejecución para apuntar al servidor de Hytale
- Habilita el modo de depuración en la configuración para registro detallado
El plugin verifica automáticamente actualizaciones desde GitHub y CurseForge:
- Verifica al iniciar el servidor
- Verifica cada 12 horas mientras el servidor está en ejecución
- Registra en consola cuando una nueva versión está disponible
- Notifica a los operadores (jugadores con permiso
*) cuando se conectan
Establece CheckForUpdates en false en la configuración para deshabilitarlo.
Licencia MIT
Toskan4134