Un solo plugin (TikForge_Vanilla.jar), dos comandos: /tikforge habla con la web, /survival hace que pasen cosas en la partida.
Survival no es un minijuego: es tu mundo de siempre. El plugin se instala en un servidor survival que ya tienes — sin arenas que construir, sin comandos de juego que aprender — y desde ese momento los regalos de tu directo de TikTok pasan de verdad en la partida. El plugin incluye también el puente que conecta el servidor al panel de control de TikForge: no hace falta ningún otro jar.
Hay dos caminos para hacer que pasen cosas, y conviene distinguirlos desde el principio:
Descarga TikForge_Vanilla.jar y ponlo en la carpeta plugins/ de tu servidor (Paper o compatible, Minecraft 1.21.10 o posterior, Java 21), luego reinicia.
El requisito de versión es real, no una precaución: en una 1.21 más antigua faltan cosas que el plugin usa, así que en lugar de arrancar y romperse con el directo empezado se desactiva solo y explica por qué en la consola. Al primer arranque aparece la carpeta plugins/TikForge_Vanilla/ con el config.yml dentro.
Permiso tikforge.link (por defecto: operador).
/tikforge link <token>Conecta el servidor a tu cuenta de TikForge. El token está en el panel, pestaña Juegos → Minecraft → Survival. A partir de ahí el plugin pregunta a la web, una vez por segundo, si hay alguna acción que ejecutar.
Es el mismo token del panel de TntCube: tienes uno solo por cuenta, válido para todos los plugins de Minecraft. Si lo regeneras deja de funcionar también el otro, y hay que reconfigurar ambos servidores.
Ejemplo: /tikforge link 3f9a2c...e71b
/tikforge unlinkDesconecta el servidor. El plugin sigue instalado pero deja de recibir acciones; los comandos /survival siguen funcionando, porque no pasan por la web.
/tikforge statusDice si el plugin está conectado y desde cuándo consulta la web. Es el primer sitio donde mirar si los regalos no hacen que pase nada.
/tikforge updateComprueba si hay una versión más reciente y la descarga en plugins/update/. No actualiza al momento: Bukkit sustituye el jar solo en el siguiente reinicio.
Las acciones que afectan a una sola persona (rayos, efectos, prisión, teletransporte…) necesitan saber a quién. La regla es una sola y vale tanto para los comandos como para las acciones del panel:
main_user está puesto y está conectado, el objetivo es él — normalmente el streamer;fallback_to_everyone: true (el valor por defecto) la acción va igualmente a todos los demás en vez de tirarse: una donación ya está pagada cuando llega aquí. Con false la acción se descarta;main_user está vacío, el objetivo son todos los jugadores conectados.Los comandos /survival afectan al primero de los objetivos así resueltos. Las acciones que son de mundo por naturaleza (clima, hora, lluvia ácida) ignoran el objetivo.
Si no hay ningún objetivo conectado, el comando responde Nessun giocatore bersaglio online en vez de fingir que ha funcionado. Se salvan azioni, bersaglio, stato, ricarica y acidrain, que no necesitan a nadie.
Casi todos los comandos aceptan como último argumento opcional el nombre de quien ha enviado el regalo. Ese nombre acaba en dos sitios: en el mob o en el objeto, en rojo oscuro y negrita, y en el texto del centro de la pantalla bajo el nombre de la acción.
Un argumento hecho solo de cifras nunca se toma por un nombre: /survival tnt 3 5 lanza tres TNT de potencia cinco y no llama al donante "5". Si quieres saltarte un argumento numérico intermedio tienes que escribirlo igualmente, porque la posición cuenta.
El golpe de vista sobre todo lo que /survival sabe hacer. Cada comando está luego documentado por extenso en las secciones de aquí abajo, con argumentos, límites y ejemplos.
| Comando | Qué hace |
|---|---|
/survival fulmini <cantidad> [nombre] | Rayos de verdad, con daño e incendio, sobre la cabeza del objetivo. |
/survival tnt <cantidad> <potencia> [nombre] | TNT cebadas doce bloques por encima del objetivo, con mecha de dos segundos y medio. Los cráteres se quedan. |
/survival meteorite [nombre] | Un cubo de magma cae cerca del jugador — nunca encima — y abre un cráter. |
/survival pioggiameteoriti [nombre] | Un meteorito cada medio segundo durante quince segundos, más pequeños que el individual. |
/survival tornado [nombre] | Treinta segundos de tornado que persigue al jugador, se lleva los bloques y absorbe las entidades. Desmonta las construcciones cercanas. |
/survival poweredcreeper [nombre] | Un creeper cargado aparece a menos de tres bloques y apunta enseguida al jugador. |
/survival summon <mob> [nombre] | Invoca un mob junto al objetivo, ya fijado en él e inmune al sol. |
/survival give <objeto> <encantamiento> [cantidad] [nombre] | Entrega un objeto, limpio o encantado. Si el inventario está lleno, lo que sobra cae a sus pies. |
/survival mineralset <material> [nombre] | El set completo de un material: armadura y herramientas, según lo que ese material permita. |
/survival fuffi [nombre] | Un lobo ya domesticado, con collar rojo, que aparece junto al jugador y lo sigue. |
/survival effect <efecto> [segundos] [nivel] [nombre] | Aplica un efecto de poción: sirve tanto de regalo como de travesura, solo cambia el efecto. |
/survival clearinventory [nombre] | Vacía mochila, armadura y mano secundaria. Los objetos se borran, no se recuperan. |
/survival randomtp [nombre] | Teletransporta al objetivo dentro de dos mil bloques, a un punto donde se pueda estar de verdad. |
/survival bimbo [nombre] | El jugador se encoge a menos de un bloque durante un minuto. |
/survival upsidedown [nombre] | La imagen se da la vuelta y rueda durante quince segundos, con la náusea encima. |
/survival jumpscare | Oscuridad, grito del enderman y cara del Guardián Anciano durante seis segundos. El único sin texto en pantalla. |
/survival prison <segundos> [nombre] | Celda de cristal indestructible sobre el jugador. Los segundos se suman a los que quedan. |
/survival reducetime <segundos> [nombre] | Quita segundos a la prisión en curso; al llegar a cero libera de inmediato. |
/survival floorislava [nombre] | Arena de cristal construida en el cielo con la lava subiendo: se gana llegando al bloque de oro de arriba. |
/survival acidrain <segundos> [nombre] | Llueve en todos los mundos y quien esté a la intemperie pierde medio corazón por segundo. No necesita un objetivo conectado. |
/survival bersaglio <jugador|tutti> | Cambia el main_user sin abrir el config.yml. |
/survival stato | Resumen en cinco líneas: objetivo, condena, arena, ejecución de comandos. |
/survival azioni | Enumera los subcomandos y los códigos de las acciones que el plugin sabe ejecutar desde el panel. |
/survival ricarica | Relee el config.yml sin reiniciar. No rehace la conexión. |
Todos los comandos de aquí abajo y de las secciones siguientes están bajo /survival (alias /sv) y requieren el permiso tikforge.survival.use, por defecto solo para operadores.
/survival fulmini <cantidad> [nombre]Rayos de verdad — con daño e incendio como en vanilla — sobre la cabeza del objetivo, uno cada seis ticks (unos tres por segundo) en vez de todos a la vez: superpuestos en el mismo instante se vería un solo destello.
| Argumento | Por defecto | Límites | Qué hace |
|---|---|---|---|
cantidad | 1 | 1–20 | Cuántos rayos seguidos. |
nombre | ninguno | — | El donante mostrado en pantalla. |
Ejemplo: /survival fulmini 5 Marco
/survival tnt <cantidad> <potencia> [nombre]TNT ya cebadas que aparecen doce bloques por encima del objetivo, repartidas al azar en dos bloques de radio, con mecha de dos segundos y medio: el tiempo de verlas bajar y escapar. Si pasas el nombre del donante, cada TNT lo lleva escrito encima.
| Argumento | Por defecto | Límites | Qué hace |
|---|---|---|---|
cantidad | 1 | 1–20 | Cuántas TNT. |
potencia | 4 | 1–20 | La fuerza de la explosión. Cuatro es la de una TNT normal. |
nombre | ninguno | — | Escrito sobre cada TNT y en pantalla. |
Ejemplo: /survival tnt 8 6 Giulia — ocho TNT más fuertes de lo normal. Los cráteres se quedan: esta acción modifica el mundo de forma permanente.
/survival meteorite [nombre]Un cubo de magma incandescente de seis bloques sale de un punto al azar del cielo, gira sobre sí mismo mientras baja dejando una columna de humo gris, y abre un cráter cerca del jugador — nunca encima: cae entre cuatro y diez bloques de distancia, así se le ve venir y se puede escapar. Cuando aparece en el cielo se oyen cinco explosiones seguidas.
Explota solo al tocar un bloque, no a una altura prefijada: si cae en un barranco baja hasta el fondo. Al impactar, la superficie de alrededor sale disparada por los aires, más hacia arriba que hacia los lados. La bedrock y los cofres no se tocan.
La potencia es fija y no se pasa: con valores bajos era un petardo que no dejaba marca, con valores altos borraba media colina.
Ejemplo: /survival meteorite Luca
/survival pioggiameteoriti [nombre]Un meteorito cada medio segundo durante quince segundos, con la barra de tiempo arriba. Son más pequeños que el individual a propósito: a tamaño completo serían treinta cubos de seis bloques en un cuarto de minuto, o sea una pantalla en la que ya no se entiende nada.
Ejemplo: /survival pioggiameteoriti Sara
/survival tornado [nombre]Treinta segundos de tornado de ochenta bloques de alto y quince de ancho en la cima, con el cielo poniéndose de tormenta y volviendo a como estaba al final. Persigue al jugador: no lo apunta de golpe, curva hacia él, y va más lento que una caminata — persigue, no atrapa.
Atención: un tornado lanzado cerca de una construcción la desmonta, y los bloques caídos se quedan donde han caído. Es intencionado, pero hay que saberlo antes de usarlo en directo al lado de casa.
Ejemplo: /survival tornado Andrea
/survival poweredcreeper [nombre]Un rayo (solo escénico, no incendia) y un creeper cargado — el del aura azul, que explota con el doble de potencia — que aparece a menos de tres bloques del jugador y le apunta enseguida, con el nombre del donante sobre la cabeza.
Ejemplo: /survival poweredcreeper Chiara
/survival summon <mob> [nombre]Invoca un mob junto al objetivo, ya fijado en él e inmune al sol (zombis y esqueletos no arden de día, si no la acción duraría tres segundos). Con el nombre del donante sobre la cabeza.
| Argumento | Por defecto | Límites | Qué hace |
|---|---|---|---|
mob | obligatorio | todos los mobs del juego | El id vanilla, p. ej. zombie, warden, ravager. |
nombre | ninguno | — | Escrito sobre el mob y en pantalla. |
Ejemplo: /survival summon ravager Matteo
/survival give <objeto> <encantamiento> [cantidad] [nombre]Entrega un objeto al objetivo. Si el inventario está lleno, lo que sobra cae a sus pies en vez de desaparecer.
| Argumento | Por defecto | Límites | Qué hace |
|---|---|---|---|
objeto | obligatorio | todos los objetos del juego | El id vanilla, p. ej. netherite_sword. |
encantamiento | noenchant | ver abajo | Tres valores posibles. |
cantidad | 1 | 1–64 | Cuántas piezas. |
nombre | ninguno | — | Pasa a ser el nombre del objeto. |
El segundo argumento acepta tres cosas distintas:
noenchant — objeto limpio;enchant — todos los encantamientos compatibles, al nivel máximo;sharpness o mending, siempre al nivel máximo. Funciona también en objetos que normalmente no lo aceptarían: quien pide filo en un pico sabe lo que está pidiendo.Ejemplos: /survival give diamond 32 Elena · /survival give netherite_sword sharpness 1 Elena · /survival give elytra enchant 1 Elena
/survival mineralset <material> [nombre]El set completo de un material de una vez: armadura y herramientas. El nombre del donante acaba en cada pieza, no solo en la primera.
No todos los materiales tienen de todo, y el comando entrega lo que existe de verdad en vez de rechazar: madera y piedra dan las cinco herramientas pero ninguna armadura, cuero y malla dan las cuatro piezas de armadura pero ninguna herramienta, hierro, oro, diamante y netherita dan las nueve.
| Material | Qué entrega |
|---|---|
legno, pietra | 5 herramientas (espada, pico, hacha, pala, azada) |
pelle, maglia | 4 piezas de armadura (casco, peto, grebas, botas) |
ferro, oro, diamante, netherite | las 9 piezas |
Ejemplo: /survival mineralset netherite Federico
/survival fuffi [nombre]Un lobo ya domesticado, con collar rojo y el nombre del donante, que aparece junto al jugador y lo sigue. Domesticado y no salvaje porque es un regalo: un lobo salvaje invocado encima de alguien solo le mordería. Sin nombre se llama "Fuffi".
Ejemplo: /survival fuffi Valentina
/survival effect <efecto> [segundos] [nivel] [nombre]Aplica un efecto de poción, con la barra de tiempo arriba. Sirve tanto para los regalos (velocidad, resistencia, fuerza) como para las travesuras (ceguera, náusea, lentitud): solo cambia el efecto que escribes.
| Argumento | Por defecto | Límites | Qué hace |
|---|---|---|---|
efecto | obligatorio | todos los efectos del juego | El id vanilla, p. ej. speed, blindness. |
segundos | 30 | 1–3600 | Duración. |
nivel | 1 | 1–5 | El nivel como se lee en el juego (1 = I, 2 = II…). |
nombre | ninguno | — | El donante mostrado en pantalla. |
Ejemplos: /survival effect speed 60 2 Davide · /survival effect blindness 10 1 Davide
/survival clearinventory [nombre]Vacía todo: las casillas de la mochila, la armadura puesta y la mano secundaria. Los objetos se borran, no se dejan en el suelo — no se recuperan.
Ejemplo: /survival clearinventory Simone
/survival randomtp [nombre]Teletransporta al objetivo a un punto al azar dentro de dos mil bloques. El plugin hace hasta cuarenta intentos para encontrar un sitio donde se pueda estar de verdad — dos bloques libres de altura y algo sólido debajo — porque sin ese control el teletransporte acabaría a menudo dentro de la roca o sobre el vacío, o sea en una muerte casi segura en vez de en una broma. Si no encuentra nada decente, el jugador se queda donde está y recibe un mensaje.
Ejemplo: /survival randomtp Alessia
/survival bimbo [nombre]El jugador se encoge a poco menos de un bloque de altura durante un minuto, con la barra rosa arriba. Al final vuelve al tamaño que tenía antes, sea cual fuera.
Ejemplo: /survival bimbo Giorgio
/survival upsidedown [nombre]La imagen se da la vuelta y sigue rodando quince segundos, con la náusea encima. El jugador todavía puede moverse, pero tambaleándose.
No es un vuelco de verdad, y no puede serlo. El protocolo de Minecraft describe la cámara con solo dos ángulos, guiñada y cabeceo: el alabeo — el que haría falta para poner el horizonte boca abajo — no existe en los paquetes, así que ningún plugin del lado del servidor puede inclinarlo, solo llegan ahí los mods de cliente o un resource pack. El comando aprovecha un caso límite: mirando recto hacia arriba, girar la guiñada hace rotar la imagen alrededor del centro de la pantalla, que es exactamente la rotación de cámara que se quiere ver. En directo se lee como un vuelco, pero es una imitación.
Ejemplo: /survival upsidedown Martina
/survival jumpscareOscuridad total durante seis segundos, el grito del enderman a todo volumen y la cara del Guardián Anciano en pantalla. Las tres piezas llegan juntas a propósito: la oscuridad sola es solo molestia, el grito solo se confunde con un mob cercano, y el efecto del Guardián Anciano solo dura un instante.
Es el único comando sin texto en pantalla y sin nombre del donante: un cartel que anuncia el susto quita justo la sorpresa en la que se basa. La barra de la oscuridad aparece igualmente, pero solo después de que el susto ya haya llegado.
Ejemplo: /survival jumpscare
/survival prison <segundos> [nombre]Una celda 5×5 de cristal negro y barrotes de hierro aparece diez bloques por encima del jugador, que acaba dentro; al final vuelve exactamente donde estaba y la celda desaparece sin dejar rastro. Mientras dura la condena la celda es indestructible: no se rompe a mano, no la agujerea el TNT, no la desmontan los pistones.
Los segundos se suman a los que quedan, no reinician la cuenta. Es la mecánica que convierte la prisión en un juego para el chat: quien quiere tenerlo dentro manda regalos que suman, quien quiere liberarlo manda otros que restan (ver reducetime), y el número en pantalla se mueve en tiempo real.
| Argumento | Por defecto | Límites | Qué hace |
|---|---|---|---|
segundos | 10 | 1–600 | Cuántos segundos añadir. |
nombre | ninguno | — | El donante mostrado en pantalla. |
La cuenta atrás de la prisión es la única que no usa la barra de arriba: va en el centro de la pantalla, los segundos en rojo claro y "secondi rimanenti" en amarillo debajo, mostrada a todos y no solo al prisionero, porque es el número que el chat está mirando.
Ejemplo: /survival prison 30 Nicola — en pantalla aparece +30 secondi.
/survival reducetime <segundos> [nombre]Quita segundos a la prisión en curso; al llegar a cero libera de inmediato. Si no hay ninguna condena activa el comando lo dice y no hace nada — no abre una prisión con tiempo negativo.
| Argumento | Por defecto | Límites | Qué hace |
|---|---|---|---|
segundos | 10 | 1–600 | Cuántos segundos quitar. |
nombre | ninguno | — | El donante mostrado en pantalla. |
Ejemplo: /survival reducetime 15 Roberta — en pantalla aparece -15 secondi.
/survival floorislava [nombre]El jugador es llevado dentro de un cubo de cristal 50×50 de 30 de alto construido en el cielo, con una escalera de caracol de plataformas y la lava subiendo desde abajo. Se gana llegando al bloque de oro de arriba; la barra muestra cuánto está ya sumergido.
Ejemplo: /survival floorislava Stefano
/survival acidrain <segundos> [nombre]Empieza a llover en todos los mundos, y quien esté a la intemperie pierde medio corazón por segundo hasta que encuentra un techo. A la intemperie significa sin bloques entre la cabeza y el cielo — la misma condición que usa el juego para decidir dónde llueve, así que el daño llega exactamente donde se ve caer el agua y no dentro de una cueva.
Es el único comando "ofensivo" que no necesita un objetivo conectado: es un evento de mundo.
| Argumento | Por defecto | Límites | Qué hace |
|---|---|---|---|
segundos | 30 | 5–600 | Duración de la lluvia. |
nombre | ninguno | — | El donante mostrado en pantalla. |
Ejemplo: /survival acidrain 120 Paolo
/survival bersaglio <jugador|tutti>Cambia el main_user sin abrir el config.yml. Escribiendo tutti el objetivo pasa a ser cualquiera que esté conectado. Acepta también a un jugador que aún no se ha conectado, y en ese caso te lo dice.
Ejemplos: /survival bersaglio AntDev210 · /survival bersaglio tutti
/survival statoUn resumen en cinco líneas: quién es el objetivo configurado, cuántos objetivos se resuelven en este momento, si hay una condena en curso y cuánto falta, si la arena floorislava está girando, y si la ejecución de comandos está encendida o apagada.
/survival azioniEnumera los subcomandos disponibles y los códigos de las acciones que el plugin sabe ejecutar cuando llegan del panel.
/survival ricaricaRelee el config.yml sin reiniciar el servidor. No rehace la conexión: el token y el intervalo de polling solo se aplican al reiniciar, y para el token conviene usar igualmente /tikforge link.
Pulsando TAB el comando siempre dice qué hay que escribir.
give, todos los mobs para summon, todos los efectos para effect, todos los encantamientos (más noenchant y enchant), los materiales para mineralset y los jugadores conectados para bersaglio. Leerlos del registro significa que no se quedan atrás con cada versión del juego.<Quantità>, <Potenza>, <Secondi>, <Livello>, <Nome> — que dice qué escribir y desaparece solo en cuanto empiezas a teclear.Todo lo que dura muestra su tiempo en la barra de arriba: lluvia de meteoritos, tornado, lluvia ácida, bimbo, upsidedown, la oscuridad del jumpscare, los efectos de poción (tanto por comando como desde el panel) y los cambios del mundo temporales — jaula de cristal, suelo que cede, torre, cubo de agua — además del porcentaje de lava de floorislava.
Junto con la barra, cada segundo que pasa suena un orbe agudo, así la cuenta atrás se oye sin mirar. Está a menos volumen que el orbe que anuncia la acción, porque ese suena una sola vez y este puede sonar noventa veces seguidas.
La única excepción es la prisión, que usa el título en el centro de la pantalla descrito arriba.
En la pestaña Eventos y Acciones no hay una lista de acciones prefabricadas: está la lista de comandos de aquí arriba, y al elegir uno aparecen sus argumentos como casillas que rellenar. Elige Give y te pide objeto, encantamiento y cantidad; elige Effect y te pide efecto, segundos y nivel; elige Tornado y no te pide nada, porque el comando no tiene argumentos.
Objeto, mob, encantamiento y efecto se eligen de un menú, no se escriben: el desplegable está dividido por grupos (armas, armaduras, hostiles, pacíficos…) y tiene una casilla de búsqueda, porque hay muchas entradas. Encantamientos y efectos son la lista vanilla completa; objetos y mobs son una selección amplia de los que tienen sentido como regalo — Minecraft tiene más de mil y un centenar respectivamente, y meterlos todos en un menú no lo haría más útil. Si necesitas un id que no está, el comando a mano lo acepta igualmente.
Los límites son los mismos documentados comando por comando: si escribes 99 en una cantidad que llega a 64, se guarda 64. El nombre del donante no se pone — lo añade la web por su cuenta, al final del comando, tomándolo del regalo real.
Quedan fuera los cuatro comandos de gestión (azioni, bersaglio, stato, ricarica): cambian la configuración del servidor en vez de hacer que pase algo en la partida, y un regalo no debe poder reconfigurar nada.
El tope max_quantity_per_action del config.yml no afecta a Survival: valía para las acciones prefabricadas, que tenían un único campo CANTIDAD. Aquí cada argumento tiene sus límites, los escritos comando por comando aquí arriba, y los aplica la web antes de guardar.
El plugin está pensado para funcionar en el mundo survival que te importa, así que casi todo se deshace solo. Las excepciones son tres, y conviene conocerlas antes de ligarlas a un regalo:
tnt) — hace cráteres de verdad, por definición.Todo lo demás — jaula, suelo, torre, agua, la celda de la prisión, la arena de floorislava — no deja nada detrás.
Está en plugins/TikForge_Vanilla/config.yml. Después de modificarlo usa /survival ricarica, salvo para el token y el intervalo de polling que piden un reinicio.
| Clave | Por defecto | Qué hace |
|---|---|---|
token | vacío | El token del panel. Más cómodo ponerlo con /tikforge link. |
pollIntervalSeconds | 1 | Cada cuántos segundos el plugin comprueba si hay una acción nueva. |
main_user | vacío | Quién recibe las acciones que afectan a una sola persona. Vacío = todos los jugadores conectados. |
fallback_to_everyone | true | Si el objetivo está desconectado, la acción se aplica igual a los demás en vez de descartarse. |
show_donation_title | true | El texto en el centro de la pantalla en cada acción. Ponlo en false si prefieres una pantalla limpia y te bastan los overlays de OBS. |
branding_action_bar | true | El texto "powered by TikForge" sobre la hotbar. |
branding_motd | true | El branding de TikForge en el MOTD de la lista de servidores. |
allow_command_action | false | Habilita la acción "Comando". Ver el aviso de abajo. |
max_quantity_per_action | 64 | Tope global a la cantidad de una sola acción. Vale siempre el más bajo entre este y el límite de la acción. |
Hoy allow_command_action no sirve de nada, y conviene dejarla en false. Encendía la acción "Comando", que ha sido eliminada: la web ya no envía ningún comando que ejecutar, así que la clave se queda sin efecto. Por qué existía vale la pena saberlo igualmente, por si algún día la acción vuelve: a diferencia de todas las demás, que hacen una sola cosa limitada, aquella ejecutaba cualquier comando con permisos de consola — op, whitelist, ban, stop. Instalar un plugin no debe bastar para conceder una consola remota.
| Permiso | Por defecto | Qué desbloquea |
|---|---|---|
tikforge.survival.use | operador | El comando /survival (y el alias /sv). |
tikforge.link | operador | El comando /tikforge (link/unlink/status/update). |
Las acciones que llegan del panel no pasan por estos permisos: las ejecuta el plugin por su cuenta, no un jugador.
El primer jugador que entra se convierte en operador solo, una vez y nada más. Sin eso no podría hacer nada — tanto /tikforge link como /survival requieren op — y la alternativa sería escribir op <nombre> en la consola antes de entrar. Del segundo en adelante no concede nada, y sobrevive a los reinicios porque la marca está en config.yml (first_join_op_granted): en memoria, cualquiera podría conseguir op esperando al siguiente reinicio.
Si algo no funciona o tienes dudas, abre un ticket en nuestro Discord.
Abrir un ticket en Discord