Contenido generado con IA — puede contener errores.

Referencia

Base de datos

Las setenta y dos tablas, qué módulo posee cada una, qué guardan y las rarezas de esquema que conviene saber.

Cada módulo que guarda algo abre sus propias tablas, y un módulo apagado no crea ninguna. Todas pasan por una sola conexión, configurada en database.yml.

Las tablas se crean desde las definiciones de los records con CREATE TABLE IF NOT EXISTS, la primera vez que se abre cada repositorio. No hay ningún esquema que aplicar ni migración que ejecutar.

Movimiento

TablaClaveGuarda
spawn_dataidLa posición del spawn. Una fila
homesid = un UUIDDueño (indexado), nombre, posición e icono
sc_warpsidNombre visible, activado, coste, permiso, icono, posición
sc_warp_cooldowns<playerUuid>:<warpId>Cuándo usó el jugador ese warp por última vez
tpa_settingsplayeruuidSi acepta peticiones, auto-aceptar y confirmar
rtp_cooldownsidJugador (indexado), mundo y cuándo se usó
sc_backel UUID del jugadorDesde dónde salió por última vez, y cuándo

/back y los cooldowns de warp son filas y no memoria porque un warp puede llevar al jugador a otro servidor, y el servidor al que llega tiene que conocer los dos.

Combate

TablaClaveGuarda
player_statsplayeruuidNombre, bajas, muertes, mejor racha
stat_cache<uuid>:<statId>Un valor de stat cacheado por jugador, para los rankings
sc_stat_counters<uuid>:<clave>Cada contador que lleva un módulo: nombre del jugador, clave del contador, cantidad
sc_bountiesidObjetivo, quien la puso, cantidad, cuándo se puso, cuándo caduca, anónima
sc_gravesidDueño, quien le mató, posición, el bloque que sustituyó la tumba, los objetos, la experiencia, cuándo caduca y hasta cuándo está protegida

player_stats lleva tres índices descendentes — sobre bajas, muertes y mejor racha — así que un ranking es una lectura acotada. sc_stat_counters es lo que leen una stat COUNTER de stats.yml, una misión y una temporada, así que contar algo nuevo nunca necesita una tabla propia.

Los objetos de una tumba viven en su fila y en ningún otro sitio: recogerla borra la fila, y solo paga la recogida cuyo borrado eliminó algo.

Salas de duelo

TablaClaveGuarda
sc_duel_roomsidServidor, nombre visible, región, posición de salida, jugadores necesarios, material del borde, efectos, recompensas, activada
sc_duel_room_bordersel id de la salaEl mundo, el material y los bloques del borde

Progresión

TablaClaveGuarda
rankup_dataplayeruuidRango actual, rangos completados, nivel de prestigio
playtime_dataplayeruuidTiempo jugado total y las recompensas reclamadas
farming_dataplayeruuidCuentas por categoría e hitos reclamados
reclaim_dataplayeruuidLo reclamado una vez, y el último reclamo por sección
player_join_dataid = el UUID del jugadorPrimer login, número de entrada, entradas totales

Misiones y temporadas

TablaClaveGuarda
sc_missions<uuid>|<pool>|<periodo>|<missionId>Una misión que le tocó a un jugador: pool, periodo, misión, el valor del contador del que partió, el objetivo, reclamada
sc_seasons<track>:<periodo>La temporada que está contando un track ahora mismo, y cuándo empezó
sc_season_results<seasonId>:<posición>El ranking de una temporada cerrada: track, periodo, posición, jugador, puntuación, cuándo se cerró

Recompensas y votos

TablaClaveGuarda
sc_rewardsidNombre visible, descripción, permiso, tipo, cooldown, reclamos máximos, activada, objetos, comandos, icono, orden
sc_reward_claims<playerId>:<rewardId>Último reclamo, número de reclamos, racha, el último periodo reclamado
sc_votersel UUID del jugadorNombre, votos totales, racha, mejor racha, el último día que votó, la hora del último voto
sc_votesidUn voto aún sin pagar: usuario, servicio, cuándo, la fiesta para la que cuenta
sc_vote_logidCada voto recibido: usuario, servicio, cuándo, número de fiesta
sc_vote_partyel número de fiestaCuándo empezó la fiesta que se está llenando

Kits y cajas

TablaClaveGuarda
sc_kitsidEl kit entero: objetos, comandos, cooldown, usos, icono, orden, banderas
sc_kit_player_data<playerId>:<kitId>Último reclamo y número de usos. Jugador indexado
sc_cratesidPremios, animación, icono y nombre de llave, pity, los desplazamientos del icono y el holograma
sc_crate_blocksidDe qué caja es un bloque colocado
sc_crate_players<uuid>:<crateId>Llaves, aperturas desde el pity, total abierto. Jugador indexado
sc_crate_openingsidEl historial: quién, qué caja, qué premio, qué tier, cuándo. Jugador indexado
sc_loot_chest_templatesidLa tabla de loot y quién la hizo
sc_loot_chestsidUn cofre colocado: servidor, plantilla, posición, cooldown, último relleno
sc_item_spawnersidServidor, posiciones, el rango de intervalo y la tabla de loot

Zonas

TablaClaveGuarda
sc_minesidServidor, la región, tipo, composición, niveles, ajustes de reinicio, teletransportes, banderas
sc_mine_broken_blocksidUna fila por bloque a medio regenerar en una mina realista. Mina indexada
sc_regen_zonesidServidor, la región, modo, intervalos y banderas
sc_afk_zonesidServidor, la región, el intervalo de recompensa y la lista de recompensas
survival_portalsidLa región, el destino y la lista de comandos
sc_jumpadsidServidor, potencia, dirección, planeo y las posiciones de los bloques
sc_powerup_zonesidServidor, modo, área o posiciones, tiempos y las entradas de power-up

survival_portals es la única tabla con el prefijo survival_ en vez de sc_.

Economía

TablaClaveGuarda
sc_currenciesidUna moneda tal y como se configuró en el juego: tipo, orden, nombres, símbolo, icono, decimales, formatos, alias, objeto, saldo inicial y máximo, permiso, reglas de transferencia y cambio, ranking, en red, comandos
sc_economy_settingsuna filaLa experiencia como moneda, la moneda que se publica en Vault y si se fuerza, si el libro de movimientos está activado
exylia_balances<uuid>|<moneda>El saldo de un jugador en una moneda guardada: jugador, nombre, moneda, cantidad
exylia_balance_pendingun número generadoUn cambio que otro servidor no pudo aplicar por sí mismo: jugador, moneda, cantidad, si sustituye el saldo, motivo, quién lo hizo
exylia_ledgerun número generadoCada operación guardada: jugador, moneda, cambio, el saldo después, motivo, quién la hizo, servidor, cuándo
sc_boostersidDueño (vacío en un potenciador global), tipo, fuente, multiplicador, duración, cuándo caduca (0 mientras no ha empezado), quién lo dio

Un sc_economy_settings vacío es un servidor cuyas monedas aún no se han configurado. Una fila de saldo solo la escribe el servidor en el que está su jugador; cualquier otro servidor deja una fila pendiente, que ese servidor incorpora y borra. Consulta Economía.

Tienda

TablaClaveGuarda
sc_shop_categoriesidNombre visible, descripción, icono, posición, permiso, moneda, rotación, descuento, activada
sc_shop_productsidCategoría, posición, tipo, objeto o comandos, moneda, precios de compra y venta, precio dinámico, stock y reposición, límites de compra y venta, permiso, descuento, activado
sc_shop_limitsidCuánto compró y vendió un jugador de un producto en el periodo de límite actual
sc_shop_logidCada compra y venta: jugador, producto, categoría, acción, cantidad, precio unitario, total, moneda, cuándo

Mercado

TablaClaveGuarda
sc_market_listingsidVendedor, objeto, cantidad, precio, material, moneda, cuándo caduca
sc_auctionsidVendedor, objeto, cantidad, material, moneda, precio de salida, compra inmediata, puja más alta y quién la hizo, pujas, cuándo termina
sc_ordersidComprador, objeto, material, cantidad pedida, entregada, recogida, precio, moneda, cerrado, cuándo caduca
sc_order_locksel id del pedidoUna fila vacía. Quien la borra puede cambiar el pedido, y después la vuelve a escribir

Intercambio y baúles

TablaClaveGuarda
sc_vaults<uuid>|<número>Un baúl de un jugador: dueño, su número (la columna vault_number), contenido

Un intercambio no guarda nada: vive en memoria hasta que se completa o se cancela.

Protecciones

TablaClaveGuarda
sc_protectionsidServidor, dueño, nombre, tier, mundo, límites, bloque núcleo, oculta, home, y en una sola columna data sus roles, miembros, clanes con acceso, excepciones por jugador, flags, acceso, estado de asalto, subregiones y alquileres
sc_protection_accountsel id de la protecciónSaldo del banco, cuándo toca el siguiente pago de mantenimiento, cuándo se abandonó
sc_protection_account_locksel id de la protecciónUna fila vacía. Quien la borra puede cambiar la cuenta
sc_protection_listingsel id de la protecciónUna protección a la venta: vendedor, precio, moneda
sc_protection_rent_offers<protectionId>:<objetivo>Una parcela, o la protección entera, ofrecida en alquiler: dueño, precio, moneda, periodo, periodos máximos
sc_protection_logsidLo que pasó dentro de una protección: servidor, quién, acción (la columna log_action), detalle, dónde, el día y la hora
sc_protection_warpsel id de la protecciónEl warp que publica una protección: nombre, icono, descripción, posición
sc_protection_warp_ratings<warpId>:<jugador>Las estrellas de un jugador para un warp
sc_protection_warp_visits<warpId>:<jugador>:<día>Una visita por jugador y día
sc_protection_seenel UUID del jugadorCuándo entró o salió por última vez de cualquier servidor — así distingue el mantenimiento una protección abandonada de una tranquila

Consulta Protecciones y Economía de protecciones.

Comodidad

TablaClaveGuarda
player_utils_dataplayeruuidSi el vuelo y la visión nocturna están activos
sc_player_settingsplayeruuidLas preferencias que el jugador ha apagado

Optimización

TablaClaveGuarda
sc_item_updatesel nombre del grupoEl objeto que se sustituye y el objeto en el que se convierte

Módulos que no guardan nada

blocked-items, death, enchantments, kill-rewards, near, optimization, repair, scheduled-commands, sell-wands y trade. Las rachas de bajas se cuentan en memoria y se pierden en un reinicio.

Cosas que conviene saber antes de tocar una tabla a mano

Una posición guardada puede nombrar otro servidor

Homes, warps, portales y bloques de caja guardan servidor,mundo,x,y,z,yaw,pitch, donde - significa "este servidor". Eso es lo que hace que /home y /warp funcionen en toda una red. Una fila que nombre un servidor que no es este no tiene posición local ninguna, que es por lo que la API ofrece un método de teletransporte en vez de coordenadas.

Dos tablas tienen `createdat` y `created_at` a la vez

sc_bounties y sc_loot_chest_templates llevan cada una dos columnas de fecha que se diferencian solo por un guion bajo, y guardan cosas distintas: la fecha del dominio — cuándo se puso la recompensa, cuándo se hizo la plantilla — y la fecha de creación de la fila. Lee la correcta.

Algunas filas se reclaman borrándolas

Un voto se paga, una temporada se cierra, una fiesta de votos empieza, una tumba se recoge, una protección se compra o se alquila, y un pedido o la cuenta de una protección se cambian en el servidor que consigue borrar la fila primero — solo un borrado sale bien, y eso es lo que hace que cada una de esas cosas pase una sola vez en toda la red. Borrar una de esas filas a mano no es limpiar: no paga nada, no cierra nada, o destruye lo que guardaba la fila — y una fila de sc_order_locks borrada deja su pedido sin poder cambiarse hasta que el siguiente arranque vuelve a escribir el bloqueo.

Las tablas más antiguas del plugin llevan además created_at y updated_at; las más nuevas solo llevan las columnas de arriba. Nada tiene una restricción de unicidad más allá de su clave primaria.

Compartir entre servidores

Apunta todos los servidores a la misma base de datos y se comparten homes, warps, kits, rangos, estadísticas, cajas, saldos, protecciones y el resto.

¿Falta algo en esta página? Dínoslo en Discord