MiniGame
Descripción general
MiniGame es un único framework que ejecuta muchos tipos de minijuegos a partir de entradas de TypeWriter. Describes una arena en el panel web: el modo de juego, los puntos de aparición del lobby y de la partida, los límites de jugadores, los equipos, el kit, las rondas y los mensajes. Los jugadores se unen entonces mediante entradas de acción y menús. La extensión gestiona el lobby, la comprobación de jugadores listos, la cuenta atrás, la partida en sí, el podio y la limpieza.
Cada partida recorre la misma secuencia de fases: Lobby, Countdown (cuenta atrás), Playing (en juego), Ending (final), Cleanup (limpieza). Cada partida en curso posee un contexto que almacena sus jugadores, equipos, puntuaciones y estado, de modo que las rondas, los equipos y los scoreboards se comportan igual en todos los modos. Los inventarios se guardan antes de la partida y se restauran después. Los cambios sobre los jugadores usan una planificación segura por región, por lo que la extensión funciona en Paper y en Folia.
Los resultados se guardan en artefactos (victorias, puntuaciones, mejores tiempos, clasificaciones) y se exponen al resto de tu servidor mediante objetivos de misión, hechos, disparadores y placeholders. El parkour, que antes era una extensión independiente, es ahora uno de los modos de juego. Esta extensión se documenta a modo de referencia y se ejecuta en la versión BTC de TypeWriter.
Características
- 26 modos de juego: PvP, parkour y movimiento, supervivencia, estrategia, modos de fiesta y de arcade, todos seleccionados con el campo
gameTypede una arena. - Motor de fases: lobby, cuenta atrás, partida, final y limpieza, con comprobación de jugadores listos, mínimo de jugadores, entrada tardía y espectadores.
- Equipos:
NONE,SOLO,RED_BLUEo equipos personalizados con tus propios nombres, elegidos desde el menú del lobby o equilibrados automáticamente. - Rondas y potenciadores: rondas opcionales que reviven a los jugadores entre rondas y caídas de potenciadores temporizadas para los modos basados en reglas.
- Parkour: puntos de inicio, checkpoints ordenados y puntos finales con partículas, acciones de fallo, temporizadores y récords personales y de arena.
- Arenas dedicadas: entradas de configuración adicionales para parkour, Dé à Coudre y tiro con arco.
- Menús: navegador de juegos, selección de arena, lobby, selección de equipo, estadísticas y menús de resultados.
- Persistencia: victorias, derrotas, puntuaciones, mejores tiempos y tiempos máximos almacenados en artefactos y guardados de forma asíncrona.
- Integración con misiones: un objetivo y un hecho de finalización, además de disparadores para el inicio de la partida, el final, la entrada, la eliminación, el inicio de ronda y los récords.
- Scoreboard y mensajes: líneas de scoreboard configurables y mensajes de entrada, salida, eliminación y victoria con placeholders de la partida.
Instalación
- Ejecuta la versión BTC de TypeWriter (BTC Core, Paper o Folia).
- Instala las extensiones de las que depende MiniGame: la extensión GUI de BTC (todos los menús la usan), Quest y Region.
- Coloca el JAR de MiniGame en
plugins/Typewriter/extensions/y reinicia el servidor. - Instala MiniPlaceholders si quieres los placeholders
<minigame_...>fuera del scoreboard. Se publican a través del puente MiniPlaceholders de BTC, no de PlaceholderAPI. - Construye las arenas en el mundo, crea una región de protección allí donde una entrada la pida (por ejemplo, la piscina de una arena de Dé à Coudre) y configura después las entradas en el panel web.
Primeros pasos
Este recorrido configura una arena de Spleef con estadísticas persistentes.
- En el panel web de TypeWriter, abre una página de manifiesto y añade un artefacto Wins statistics. Dale un
artifactId, por ejemplospleef_wins. - En la misma página, añade una entrada Minigame Arena. Establece
gameTypeenSPLEEFy despuéslobbySpawn,gameSpawn,spectatorSpawnyendTeleportcon el selector de posición. - Establece
minPlayersymaxPlayers,autoStartCountdown(segundos antes de que empiece la partida) ymaxGameDuration(segundos). - Activa
useRoundsy establecemaxRoundssi quieres varias rondas (los jugadores reviven y se recolocan engameSpawnen cada ronda). Añade objetos akitItemsy dejagiveKitactivado. - Enlaza
winStatArtifactcon el artefacto del paso 1. - Abre una página de secuencia. Añade una acción Open the minigame browser y actívala desde un diálogo de NPC, un objeto o un comando. O usa Join a minigame con
arenaestablecido en tu arena para colocar al jugador directamente en el lobby. - Publica, entra en la arena, haz clic en Ready (Listo) en el menú del lobby y espera a la cuenta atrás. Cuando termina la partida, se anuncia al ganador y se guardan las estadísticas.
El lobby solo inicia la cuenta atrás cuando al menos minPlayers jugadores han hecho clic en Ready. Establece minPlayers en 1 mientras pruebas a solas.
Cómo funciona
- Lobby. Los jugadores esperan en
lobbySpawn. La cuenta atrás empieza cuando el número de jugadores marcados como listos alcanzaminPlayers, tras unos segundos. Solo es posible entrar tarde una vez pasado el lobby cuandoallowLateJoinestá activado. - Cuenta atrás. Dura
autoStartCountdownsegundos con mensajes en el chat. Si los jugadores se van y el recuento baja del mínimo, la partida vuelve al lobby. - En juego. Los jugadores son teletransportados a
gameSpawn, se guarda su inventario y se entrega el kit. La fase termina como muy tarde trasmaxGameDurationsegundos. Se disparaonGameStart. - Final. Se anuncian el ganador y los tres primeros. Esta fase dura aproximadamente una sexagésima parte de
maxGameDuration, acotada entre 5 y 60 segundos. - Limpieza. Se restauran los inventarios, el modo de juego y la salud, se escriben los resultados en los artefactos, se dispara
onGameEndy los jugadores vuelven aendTeleport.
Los jugadores eliminados se convierten en espectadores y se mueven a spectatorSpawn cuando allowSpectate está activado y hay un punto de aparición de espectadores definido.
Modos de juego
El campo gameType de la arena acepta los 26 valores siguientes. Tres modos tienen su propio código. Los otros 23 están basados en reglas: comparten un único motor guiado por un modo de eliminación y una condición de victoria. Un modo basado en reglas te da las reglas, el lobby, las rondas y la puntuación. El contenido específico del nombre del juego (una bandera, oleadas de mobs, un suelo de lava que sube, bloques de TNT, dispensadores) no se genera: lo construyes en el mundo y lo conectas con kits, regiones y disparadores.
| Modo | Categoría | Jugadores por defecto | Eliminación | Condición de victoria |
|---|---|---|---|---|
| Sumo | PvP / Combate | 2-8 | Caída | Último con vida |
| Gladiator | PvP / Combate | 2-12 | Muerte | Último con vida, potenciadores cada 20 s |
| Duels | PvP / Combate | 2 | Muerte | Último con vida |
| KOTH | PvP / Combate | 2-16 | Tiempo agotado | Primero en puntuar, potenciadores |
| Paintball | PvP / Combate | 2-16 | Muerte | Mayor puntuación |
| One in the Chamber | PvP / Combate | 2-12 | Muerte | Mayor puntuación |
| Parkour | Parkour / Movimiento | 1 | Código dedicado | Llegar al punto final |
| Block Party | Parkour / Movimiento | 2-16 | Suelo desaparecido | Último con vida, hasta 5 rondas |
| TNT Run | Parkour / Movimiento | 2-16 | Caída | Último con vida |
| Floor is Lava | Parkour / Movimiento | 2-16 | Caída | Último con vida, hasta 3 rondas |
| Falling Blocks | PvE / Supervivencia | 1-16 | Caída | Sobrevivir 120 s |
| Wave Survival | PvE / Supervivencia | 1-8 | Muerte | Sobrevivir 180 s, potenciadores |
| Zombie Apocalypse | PvE / Supervivencia | 1-8 | Muerte | Sobrevivir 300 s, potenciadores |
| Dodge the Arrows | PvE / Supervivencia | 1-16 | Muerte | Último con vida |
| Defend the Core | PvE / Supervivencia | 1-8 | Muerte | Último equipo con vida, 240 s |
| Capture the Flag | Estrategia | 4-16 | Muerte | Primero en puntuar, 300 s |
| Infection | Estrategia | 2-16 | Marcado | Último con vida |
| Spleef | Estrategia | 2-16 | Suelo desaparecido | Último con vida, hasta 5 rondas |
| Sheep Hunt | Estrategia | 4-16 | Marcado | Más marcas, 180 s |
| TPP (Tag) | Fiesta / Diversión | 2-16 | Marcado | Último con vida |
| Freeze Tag | Fiesta / Diversión | 2-16 | Marcado | Último con vida |
| Hot Potato | Fiesta / Diversión | 2-16 | Tiempo agotado | Último con vida, 60 s |
| Dé à Coudre | Fiesta / Diversión | 2-16 | Código dedicado | Último jugador o equipo con vida |
| Musical Chairs | Fiesta / Diversión | 2-16 | Tiempo agotado | Último con vida, hasta 10 rondas |
| Archery | Reflejos / Arcade | 1-16 | Código dedicado | Primero en alcanzar el número de objetivos, o mejor puntuación dentro del límite de tiempo |
| Quake | Reflejos / Arcade | 2-16 | Muerte | Mayor puntuación |
El mínimo por defecto solo se usa cuando el minPlayers de la arena no es superior a cero. El máximo procede siempre del maxPlayers de la arena.
Cómo deciden los modos basados en reglas
- Muerte (Killed): un solo golpe de otro jugador elimina a la víctima, sea cual sea el daño, y da un punto al atacante. Cuentan los tiradores de proyectiles.
- Marcado (Tagged): un solo golpe de otro jugador elimina a la víctima y da un punto a quien la marcó. Los compañeros de equipo están protegidos cuando el fuego amigo está desactivado.
- Caída (Falling): un jugador queda eliminado por debajo de diez bloques bajo
gameSpawn. - Suelo desaparecido (Floor gone): un jugador queda eliminado cuando el bloque bajo sus pies es aire.
- Tiempo agotado (Timeout): ningún temporizador elimina a un jugador por sí solo. Las rondas con duración simplemente terminan cuando se acaba el tiempo, y las puntuaciones o los supervivientes deciden al ganador.
- Potenciadores: cuando
powerUpEnabledestá activado, cae un objeto potenciador aleatorio cadapowerUpIntervalsegundos (al menos 5). Los ocho tipos son Speed, Jump, Invisibility, Heal, Shield, Explosive Snowball, Double Jump y Super Strength. - Rondas: con
useRoundsactivado, los jugadores eliminados reviven y todos se recolocan engameSpawnen cada ronda, hastamaxRounds. La extensión no reconstruye los bloques entre rondas: restaura tú mismo un suelo roto.onRoundStartse dispara en cada ronda.
Parkour
El parkour es un modo en solitario con su propia entrada de configuración. Un Parkour Arena se enlaza con una Minigame Arena de tipo PARKOUR y enumera sus puntos de inicio, sus checkpoints y sus puntos finales. Un jugador inicia el recorrido situándose en un punto de inicio, debe pasar por los checkpoints en orden order creciente y llegar después a un punto final.
failActiondecide qué hace un fallo:STARTteletransporta al inicio,LAST_CHECKPOINTal último checkpoint yQUITabandona el recorrido.timerTypeesNONE,GLOBAL(untimefijo en segundos) oCHECKPOINT(timemáscheckpointBonussegundos en cada checkpoint). Quedarse sin tiempo es un fallo.- Un recorrido también falla cuando el jugador cambia de mundo, cae más de 5 bloques por debajo del inicio o se aleja más de 10 bloques del último checkpoint.
- Al completarlo, el tiempo se envía para los récords: mejor marca personal, clasificación de la arena y los disparadores
onPersonalBestyonWorldRecordde la arena. La arena termina entonces porque ya no queda nadie corriendo.
Dé à Coudre
Una Dé à Coudre Arena añade una región de piscina, una ubicación de salto y un punto de aparición. mode es SINGLE (los jugadores saltan por turnos), CONCURRENT (todos saltan a la vez) o TEAM. Los jugadores empiezan sin ninguna vida de reserva: un salto fallido elimina al jugador, y un salto perfecto (aterrizar entre cuatro bloques ya usados) otorga una vida. Los placeholders lives, turn y queue muestran el estado.
Archery
Una Archery Arena enumera posiciones de objetivos y zonas de tiro. mode es MAX_TARGET (el primero en alcanzar targetsToWin impactos) o TIME_ATTACK (mejor puntuación dentro de timeLimitSeconds). La extensión coloca el targetBlock, lo sustituye por hitBlock cuando recibe un impacto y entrega el bowItem y el arrowItem.
Menús
Los menús son menús de cofre de 54 ranuras renderizados por la extensión GUI. Permanecen vacíos hasta que añades una entrada de acción que los abra.
| Menú | Se abre con | Contenido |
|---|---|---|
| Navegador de juegos | Open the minigame browser | Una fila con las seis categorías y después los juegos de la categoría seleccionada. Un juego solo está disponible cuando existe una arena de ese tipo. |
| Selección de arena | Open arena selection o un clic en el navegador | Las arenas de un tipo de juego con su estado (libre, en espera, llena, en juego) y el número de jugadores. Al hacer clic se entra. |
| Lobby | Open the lobby menu, o automáticamente tras entrar desde los menús | La descripción de la arena, la lista de jugadores con su estado de listo y su equipo, los botones Ready, Team, Start the game y Leave, además de tus botones personalizados. |
| Selección de equipo | El botón Team | Elige un equipo o se te asigna uno al azar. |
| Estadísticas | Open statistics | Victorias, derrotas, partidas jugadas y un top 10, por arena o entre arenas. Necesita winStatArtifact en las arenas. |
| Resultados | Open the results screen | Ganador, duración, número de jugadores y podio. Conecta la acción al disparador onGameEnd de la arena. |
El botón Start the game solo se muestra a los jugadores con el permiso minigame.start. Una entrada Lobby Menu personaliza el título, oculta partes del menú y añade botones con un slot de 0 a 53 y una showCondition.
Persistencia y récords
Los artefactos se cargan al arrancar y se escriben de forma asíncrona, por lo que guardar nunca bloquea un tick de la partida. Los datos almacenados se conservan por arena y por jugador.
- Wins statistics almacena victorias, derrotas y partidas jugadas, y se guarda en la limpieza para cada jugador de la partida.
- Scores statistics suma la puntuación de cada jugador en la limpieza cuando es superior a cero.
- Minigame state se escribe en la limpieza con la fase final, el número de jugadores y el ganador.
- Best time y Top times almacenan las mejores marcas personales y la clasificación;
topTimesLimitestablece cuántos tiempos se conservan. Hoy solo el parkour produce tiempos.
Reset records borra los récords de una arena para el jugador que la activa (PLAYER) o para todos (ARENA).
Integración con misiones
El objetivo Complete minigames cuenta los recorridos cronometrados completados. Deja arena vacío para contar todas las arenas, o establécelo para contar una. Almacena su progreso en un hecho que proporcionas tú y puede disparar onComplete. El hecho Minigame completions cuenta las finalizaciones por separado para cada arena en la que está el jugador, por lo que un solo hecho puede servir a toda una red de arenas. Por ahora ambos reaccionan solo a las finalizaciones de parkour.
Permisos
| Permiso | Concede |
|---|---|
minigame.start | Muestra y permite el botón Start the game en el menú del lobby. |
No hay comandos: todo se gestiona mediante entradas y menús.
Placeholders
Los placeholders de la partida están disponibles en dos formas. En los mensajes y en las líneas del scoreboard de una arena puedes usar tokens %name%. En el resto del servidor, el puente MiniPlaceholders de BTC publica los mismos valores como <minigame_name> para un jugador que está en una partida.
| Placeholder | Devuelve |
|---|---|
arena y arena_id | El nombre de la arena y el id de su entrada. |
game_id | El id de la partida en curso. |
phase | El nombre de la fase actual. |
players y alive | Jugadores en la partida y jugadores que siguen con vida. |
max_players | El límite de jugadores de la arena. |
winner | El nombre del ganador, o "Personne" mientras no hay ninguno. |
score | La puntuación del jugador. |
alive_status | alive o eliminated. |
rank | La posición del jugador por puntuación, o -. |
lives, turn y queue | Vidas, saltador actual y orden de salto, solo para Dé à Coudre. - en los demás modos. |
%player% (solo en mensajes) | El nombre del jugador, en los mensajes de entrada, salida y eliminación. |
Entradas
24 entradas, generadas a partir del código fuente de la extensión.
Acciones9
- Minigame ForcestartForcer le démarrage d'un mini-jeu
- Minigame JoinRejoindre un mini-jeu
- Minigame LeaveQuitter un mini-jeu
- Minigame Open ArenasOuvrir la sélection d'arène
- Minigame Open BrowserOuvrir le navigateur de mini-jeux
- Minigame Open LobbyOuvrir le menu du lobby
- Minigame Open ResultsOuvrir les résultats de la partie
- Minigame Open StatsOuvrir les statistiques de mini-jeux
- Minigame Reset RecordsRéinitialiser les records d'une arène
Objetivos1
- Minigame Completion ObjectiveTerminer des mini-jeux
Hechos1
- Minigame Completion FactCompte les complétions d'un joueur, par arène
Artefactos5
- Minigame Best Time ArtifactStocke le meilleur temps personnel de chaque joueur par arène
- Minigame ScoresStatistiques de scores
- Minigame StateÉtat d'un mini-jeu
- Minigame Top Times ArtifactStocke le classement des meilleurs temps d'une arène
- Minigame WinsStatistiques de victoires
Manifiestos5
- Archery ArenaArène de tir à l'arc
- Deacoudre ArenaDé à Coudre Arena
- Minigame ArenaArène de mini-jeu
- Minigame Lobby MenuMenu du lobby
- Parkour ArenaArène de Parkour
Definiciones3
- Parkour CheckpointCheckpoint du parkour
- Parkour End PointPoint d'arrivée du parkour
- Parkour Start PointPoint de départ du parkour
Resolución de problemas
Los menús no hacen nada o están vacíos. Los menús necesitan la extensión GUI y una entrada de acción que los abra. Comprueba que existe una arena del gameType correcto: el navegador marca un tipo de juego como no disponible cuando ninguna arena lo usa.
La partida se queda en el lobby para siempre. La cuenta atrás solo empieza cuando al menos minPlayers jugadores han hecho clic en Ready, no simplemente cuando están presentes. Reduce minPlayers, o usa Force start a minigame para iniciar la cuenta atrás.
"Vous êtes déjà dans une partie". Un jugador solo puede estar en una partida. Usa antes Leave a minigame. Salir, desconectarse y terminar una partida liberan al jugador.
Nadie es eliminado nunca en los modos KILL o TAG. Prueba en modo supervivencia con un jugador que pueda recibir daño: en modo creativo los jugadores son invulnerables. Las eliminaciones en estos modos proceden del daño de otro jugador, incluidas las flechas y las bolas de nieve.
Las estadísticas, las muertes o el artefacto de estado siguen vacíos. Una arena solo escribe en los artefactos a los que hace referencia: establece winStatArtifact, scoreArtifact y stateArtifact y da un artifactId a cada artefacto. El código actual no registra las muertes ni los fallecimientos y muestran 0. Los mejores tiempos y los tiempos máximos solo los escribe el parkour.
Un recorrido de parkour falla continuamente. Cada checkpoint debe estar a 10 bloques como máximo del anterior y el recorrido falla 5 bloques por debajo del punto de inicio. Los checkpoints deben alcanzarse en orden order creciente, y el punto final solo cuenta después del último checkpoint. Con radius en 0, el jugador debe situarse en el bloque exacto.
Un jugador no puede salir de la zona del lobby. Mientras espera (fases Lobby y Countdown), lobbyRadius (por defecto 10 bloques alrededor de lobbySpawn) impide que los jugadores se alejen; no teletransporta, y un jugador que ya está fuera siempre puede volver. Ponlo a 0 para no limitar.
Un jugador es eliminado sin motivo aparente. region es la zona de juego de los modos basados en reglas: salir de ella durante una partida elimina al jugador (la región no se aplica en Archery, Parkour y Dé à Coudre, que tienen sus propias fases). En los modos en que el suelo desaparece (Spleef, Block Party), floorMaterial enumera los nombres de material de Bukkit que cuentan como suelo, separados por comas: un jugador es eliminado en cuanto el bloque bajo sus pies no es uno de ellos. Vacío significa que cualquier bloque que no sea aire es suelo, y los nombres desconocidos se ignoran con una advertencia en la consola. Los suelos no se generan a partir de floorMaterial; los construyes tú.
El mensaje de victoria no es el esperado. winMessage se anuncia al terminar la partida, con %winner% sustituido por el ganador.
Un jugador no puede unirse a la arena. Cuando cada lobby abierto de una arena contiene maxPlayers jugadores, la arena está llena y se rechaza la unión: no se abre una segunda partida en paralelo. La acción Join a minigame envía entonces su fullMessage.