Configurazione
ShadowGames
Trentadue minigiochi in un plugin solo: arene, code, party, spettatori e classifiche.
Dove sono i file
plugins/ShadowGames/ Il plugin li crea al primo avvio e li aggiorna da solo alle nuove versioni, senza toccare le tue modifiche.
Applicare le modifiche
/sg reload [cosa] Rilegge i file senza riavviare il server.
Nessuna impostazione trovata
Prova con un’altra parola, oppure cerca in tutti i plugin.
Impostazioni
I file che decidono come si comporta il plugin. Si parte da qui.
config.yml
Impostazioni generali 199 impostazioni
config.ymlplugins/ShadowGames/config.yml Note del file
Qui stanno solo le impostazioni valide per tutto il server. Tutto il resto ha il suo file:
games/<game>.yml le regole di un gioco arenas/<game>/<id>.yml una mappa kits/<game>/<id>.yml un kit shops/<game>.yml uno shop lang/<locale>.yml le traduzioni chatgames.yml i giochi in chat: domande, parole, premi schematics/ le tue costruzioni
LA REGOLA DEI TRE LIVELLI
Quasi ogni valore si può scrivere in tre posti, e vince quello più
specifico:
config.yml (qui, sotto "defaults") -> tutti i giochi
games/<game>.yml -> quel gioco
arenas/<game>/<arena>.yml -> quella mappaUn valore omesso NON vuol dire zero: vuol dire "eredita". /sg config <key> ti dice da dove arriva davvero un valore.
COLORI - scritti alla maniera di Minecraft, con &
&0-&9 &a-&f colori &l grassetto &o corsivo &n sottolineato &#ff8800 un colore esatto &r torna normale && una & letterale
I tag più ricchi ci sono ancora, per quello che & non sa fare:
<gradient:#FFD700:#FFA500>GOLD</gradient> <click:run_command:'/play skywars'>play</click>
AGGIORNAMENTI: quando una nuova versione cambia questo file, chatgames.yml, o uno in lang/, games/, kits/, shops/, cosmetics/, achievements/, music/, import/ o parkour/, viene portato alla nuova versione per te. Tutto quello che avevi cambiato o aggiunto viene riportato; le impostazioni che non hai mai toccato prendono i nuovi valori predefiniti. Il tuo file precedente resta in backup/<date>/, e se qualcosa non si è potuto riportare (un'opzione che non esiste più, un valore di tipo diverso) lo trovi in PORTING-<version>.txt, con cosa fare. I file delle arene non vengono aggiornati: restano come sono.
Documentazione completa: docs/
config-version1core5 chiaviserver-id"games-1"Identifica questo server quando più server condividono un database.
server-ip""Mostrato in fondo alla sidebar tramite %server_ip%.
Vuoto di proposito. L'alternativa era fornire un indirizzo inventato e farlo leggere ai giocatori di chiunque installi questo plugin: una sidebar che fa pubblicità al server di qualcun altro. Finché è vuoto la riga non viene disegnata affatto, quindi niente sembra rotto - scrivi il tuo e compare.
language"en_US"La lingua usata quando non se ne conosce una migliore. Il plugin include en_US e it_IT; aggiungi un file in lang/ per qualsiasi altra.
follow-client-localetrueOgni giocatore vede la lingua del proprio client, quando quel file esiste.
update-checktrueSalvataggio dati
Niente da fare: al primo avvio compare un database H2 locale in data/shadowgames.mv.db. Niente utente, niente password, niente da installare.
Se hai un MySQL e lo preferisci, imposta enabled: true e compila i campi. Le tabelle si creano da sole alla prima connessione.
storage5 chiavistorage.mysql7 chiavienabledfalsehost"127.0.0.1"port3306database"shadowgames"username""password""storage.mysql.properties3 chiaviuseSSLfalsecharacterEncoding"utf8mb4"serverTimezone"UTC"storagetable-prefix"sg_"Prefisso delle tabelle. Utile quando più server condividono un database.
fallback-to-localtruetrue -> se MySQL non risponde, ripiega su H2 e lo segnala in console.
Un server che gioca senza salvare è meglio di un server che non parte.
false -> se MySQL non risponde, il plugin si rifiuta di partire.use-suite-databasefalseSe ShadowEssentials è installato e usa un database, possiamo condividerlo: un solo pool, un solo backup, e il prefisso tiene separate le tabelle.
storage.pool6 chiavimaximum-size10Regola pratica: (core della CPU * 2) + 1, mai sopra 20.
minimum-idle2connection-timeout10sidle-timeout10mmax-lifetime30mleak-detection0sSopra 0 registra nel log le connessioni che non tornano mai nel pool.
Lobby
lobby6 chiavilocation""Dove finisce un giocatore quando lascia una partita. Vuoto = lo spawn del mondo principale. /sg lobby lo imposta dove ti trovi.
use-shadowessentials-spawntrueQuando c'è ShadowEssentials chiediamo a lui lo spawn invece di ripeterlo qui.
locations{ }Più lobby, ognuna con un nome. Un server supera in fretta un unico punto di spawn: una lobby con dentro un parkour, una semplice per gli eventi, una per gioco, così uscire da BedWars ti rimette tra i cartelli di BedWars e non in mezzo all'hub.
Le imposti stando lì: /sg lobby set <name> "main" è quella su cui si ripiega quando non viene detto altro.
per-game{ }In quale lobby torna chi esce da un certo gioco. Senza una riga qui, si usa "main".
lobby.parkour3 chiaviI percorsi parkour della lobby: qualcosa da fare mentre scorre il conto alla rovescia. Non sono partite, sono arredamento -- sempre lì, e caderne giù non costa nulla.
Li costruisci percorrendoli, non scrivendo coordinate:
/sg parkour set <id> start /sg parkour set <id> checkpoint (a ogni atterraggio) /sg parkour set <id> finish
enabledtruefolder"parkour"particlestruelobby.waiting-items4 chiaviCosa tiene in mano un giocatore mentre aspetta l'inizio.
lobby.waiting-items.02 chiavimaterialCOMPASSname"lang:lobby.item.team"lobby.waiting-items.12 chiavimaterialCHESTname"lang:lobby.item.kit"lobby.waiting-items.72 chiavimaterialPAPERname"lang:lobby.item.vote"lobby.waiting-items.82 chiavimaterialRED_BEDname"lang:lobby.item.leave"Valori che ogni gioco eredita
Ogni gioco e ogni arena possono sovrascriverli.
defaults11 chiavicountdown30scountdown-full10sQuando l'arena è piena il conto alla rovescia scende a questo valore.
grace-period10sNiente PvP nei primi secondi: un atterraggio sfortunato allo spawn non deve far perdere la partita.
max-duration20mUn tetto rigido. Una partita che non finisce mai è peggio di una che finisce male.
end-duration10sQuanto resta visibile la schermata finale.
allow-rejoin60sRiconnettiti entro questo tempo e torni dov'eri.
respawn-delay3sassist-window10sPer quanti secondi dopo un colpo una morte conta ancora per chi l'ha messo a segno. È così che "buttato nel vuoto" diventa una kill.
friendly-firefalsebuildtruelives1Mondi delle partite
Ogni partita ha il suo mondo, creato vuoto e riempito dalle schematic. Un reset è cancellare una cartella, non fare il rollback di qualcosa.
worlds10 chiaviprefix"sg_"Prefisso per i mondi delle partite. Non usarlo per mondi tuoi.
max-concurrent-matches20Quante partite possono girare contemporaneamente su tutto il server.
max-instances-per-arena4Quante istanze della stessa arena possono girare contemporaneamente.
preload-instances1Con 1, il mondo per la prossima partita è pronto in anticipo: nessuno aspetta mai un paste.
delete-on-closetrueclean-orphans-on-starttrueSe il server è crashato lasciando in giro mondi sg_*, cancellali all'avvio.
difficultyNORMALview-distance8Un'arena sta in poche centinaia di blocchi: 12 chunk di view distance sarebbero sprecati.
simulation-distance5worlds.gamerules9 chiaviLe gamerule del mondo della partita.
Continua a leggere
In Minecraft 26.2 sono state rinominate TUTTE: doDaylightCycle è diventata advance_time, doMobSpawning è spawn_mobs, announceAdvancements è show_advancement_messages, e così via. Qui puoi scrivere il vecchio nome o quello nuovo: il motore traduce, e se proprio non conosce un nome lo dice in console invece di ignorarlo in silenzio.
Il silenzio sarebbe il risultato peggiore: vorrebbe dire mob che spawnano in mezzo a una SkyWars e il sole che si muove, senza una riga di log che spieghi perché.
doDaylightCyclefalsedoWeatherCyclefalsedoMobSpawningfalsedoFireTickfalsemobGriefingfalseannounceAdvancementsfalsenaturalRegenerationtruekeepInventoryfalsedoImmediateRespawntrueSchematic
schematics6 chiavifolder"schematics"paste-budget4000Blocchi piazzati per tick durante un paste. Più alto = più veloce e più pesante. Guarda /sg profile prima di spingerlo sopra 8000.
slow-down-below-tps18.0Se il server scende sotto questi TPS il budget si dimezza da solo, e torna normale appena il server respira di nuovo.
cachetrueLe schematic restano in memoria una volta lette: venti partite, una lettura.
cache-size32cache-ttl30mConfigurazione in gioco
setup2 chiaviwandEND_RODparticle-range48Fino a che distanza sono visibili le particelle dei marker. Le vede solo chi è in una sessione di setup, e solo entro questo raggio.
HUD
hud3 chiavihud.scoreboard3 chiavienabledtrueonly-in-matchestrueUn giocatore ha una sola sidebar. Con true la usiamo solo dentro le partite e lasciamo la lobby a ShadowEssentials.
update-ticks10hud.bossbar1 chiaveenabledtruehud.tablist5 chiavienabledtrueheader["&b&lSHADOW&f&lGAMES", "&7%game_name% &8| &f%arena_name%"]+1
group-by-teamtruespectators-lasttrueCode e scelta della mappa
matchmaking4 chiaviarena-selectionLEAST_PLAYEDWEIGHTED_RANDOM | LEAST_PLAYED | ROTATION | VOTE
LEAST_PLAYED è quella da scegliere: è l'unica che rende visibile il lavoro dei tuoi map builder. Il casuale pesato ti mostrerà tranquillamente le stesse tre mappe per tutta la sera.
prefer-emptyfalseSu un server piccolo conviene riempire una partita alla volta.
min-fill-before-new-instance0.5Non aprire una nuova istanza finché ce n'è una sotto questa percentuale.
merge-waitingtrueUnisce due partite in attesa quando ci stanno insieme.
vote3 chiavienabledtruecandidates4change-allowedtruequeue3 chiavienabledtrueshow-progresstruemax-wait10mauto3 chiavirejoin-same-gametrueQuando una partita finisce ne parte un'altra da sola: è questo che tiene vivo un server.
rejoin-delay5sback-to-lobby-on-quittrueParty
Se il server ha già un plugin di party, AUTO usa quello.
party7 chiaviproviderAUTOmax-size8invite-timeout60sall-or-nothingtrueUn party entra come un blocco unico: tutti, o nessuno.
keep-togethertrueE resta nella stessa squadra, quando ci sta.
offline-grace2mUn crash del client non deve spezzare il gruppo.
chat-prefix"&d[PARTY] "Spettatori
spectator5 chiavigamemodeSPECTATORSPECTATOR | ADVENTURE_INVISIBLE ADVENTURE_INVISIBLE è per i server in cui vedere attraverso i muri conta come un vantaggio eccessivo anche per un giocatore morto.
night-visiontrueconfinedtruemax-distance300spectator-chattrueRicompense
Le monete di gioco restano separate dall'economia del server, di proposito.
rewards8 chiavienabledtrueeconomy-bridgefalseCon true, ogni moneta di gioco conia anche valuta reale.
economy-bridge-rate0.1currency"default"vip-multiplier-perk"games.reward-multiplier"Perk letto da ShadowEssentials; senza, dai nodi shadowgames.perk.*
global-multiplier1.0Un moltiplicatore permanente, per i server che vogliono una progressione veloce.
announce-multipliertrueforfeit-on-quitfalseUscire prima fa perdere quello che hai guadagnato? No: punire qualcuno a cui è crashato il client è ingiusto.
economy1 chiavefree-when-missingtrueSenza un'economia installata: true = i kit a pagamento diventano gratis, false = restano bloccati.
progression3 chiavienabledtruexp-curve"500 * level ^ 1.15"Quanto costa il livello di esperienza N.
max-level200Mob e boss nelle arene
Un'arena può avere delle creature: piazza i marker MOB_SPAWN e scrivi qui, oppure nel file del gioco, oppure nel file dell'arena, quali sono. Il parametro scritto sul marker è la chiave.
Continua a leggere
L'id può venire da qualsiasi plugin installato:
mythicmobs:SkeletalKnight MythicMobs elitemobs:BossName EliteMobs zombie vanilla
LevelledMobs, InfernalMobs e simili non richiedono alcuna chiamata: ascoltano lo spawn di un mob vanilla e lo vestono da soli. Basta spawnare "zombie".
mobs2 chiavienabledtruespawns{ }Le voci vere di solito stanno nel file del gioco o dell'arena. Qui sotto c'è un esempio commentato della forma.
guardian:
id: "mythicmobs:SkeletalKnight"
amount: 1
level: 1
name: "&cGuardian"
glowing: true
respawn: 30s # 0 or absent = never comes back
reward: { coins: 25, xp: 10, commands: [] }
boss:
id: "mythicmobs:BlackDragon"
name: "&4&lTHE DRAGON"
glowing: true
boss-bar: true
boss-bar-color: PURPLE
reward: { coins: 500, xp: 250 }Musica
Le tracce stanno in music/<name>.yml. Ce ne sono di due tipi e convivono, perché ognuno risolve quello che l'altro non può:
Continua a leggere
- MELODIA DA NOTE BLOCK: le note scritte nel file, suonate con i suoni che ogni client ha già. Nessun resource pack, niente da scaricare, funziona subito per tutti.
- SUONO DA RESOURCE PACK: audio vero, di qualsiasi durata. Ma un plugin non può mandare audio a un client: il file deve stare in un pack che il server distribuisce. Vedi music/custom-pack-example.yml.
Tutto passa dal canale RECORDS, così chi abbassa il cursore della "musica" abbassa la nostra e non i suoni di gioco che gli servono per giocare.
music2 chiavienabledtruefolder"music"Cosmetici
Effetti che si vedono e nient'altro. La regola è rigida di proposito: un cosmetico non può dare danno, velocità, invisibilità né alcun vantaggio, e il parser non gli dà nemmeno il modo di scriverne uno. Sono file come i kit, in cosmetics/<type>/, con la stessa regola di sblocco.
cosmetics3 chiavienabledtruefolder"cosmetics"trail-every-ticks2Ogni quanto viene disegnata una scia mentre si cammina, in tick. 2 è fluido, 4 costa la metà e nessuno se ne accorge. La scia non viene mai disegnata per un giocatore fermo.
Rete (più server)
Serve solo per dividere i minigiochi tra più server: SkyWars su uno, BedWars su un altro, una lobby davanti a tutti.
Continua a leggere
L'UNICA cosa che i server condividono è il database. Non c'è un master, nessun socket, niente da tenere sincronizzato: ogni server scrive cos'è e cosa sta facendo ogni pochi secondi, e legge quello che hanno scritto gli altri. Un server che muore smette di scrivere e sparisce dalla lista, e nessuno deve accorgersene.
OBBLIGATORIO: uno storage.mysql condiviso. H2 è un file aperto da un solo processo: due server che puntano a quel file non condividono nulla, lo rompono. Attiva la rete con H2 e il plugin te lo segnala e la disattiva.
Il proxy (Velocity o BungeeCord) serve solo a spostare i giocatori. Senza proxy la rete funziona lo stesso: statistiche, classifiche e tornei restano condivisi, ma /play non può mandarti altrove.
network7 chiavienabledfalseroleGAMESGAMES = ospita le partite (il default) LOBBY = solo selettore, cartelli e NPC: ogni /play parte da qui NONE = condivide solo le statistiche
display-name"server-1"Come si chiama questo server NEL PROXY. Deve corrispondere al nome scritto in velocity.toml o nel config.yml di Bungee, altrimenti il trasferimento non arriva da nessuna parte. L'id vero è core.server-id.
capacity00 = use the server's max-players
heartbeat5sstale-after20show long a silent server waits before it counts as dead
ticket-life60show long a transfer "ticket" stays valid
Ranked
Un rating Elo per gioco, con divisioni e stagioni. Si attiva un gioco alla volta (ranked.enabled dentro games/<game>.yml), perché ha senso solo dove è l'abilità a decidere il risultato: un Block Party ranked è una lotteria con un numero attaccato.
ranked9 chiavienabledtruestart-rating1000k-factor24Quanto pesa una partita. Più alto = sali e scendi in fretta. Per le prime 10 partite è triplicato, così il piazzamento iniziale è veloce; sopra i 1600 punti scende, perché in cima la popolazione è scarsa e la scalata non deve ridursi a una questione di fortuna.
min-players2match-window150Quanto possono essere distanti due giocatori per finire comunque nella stessa partita. La finestra si allarga di 50 punti ogni 10 secondi di attesa: una partita perfetta che non parte mai è peggio di una leggermente sbilanciata.
match-window-max800decay-grace14dDecadimento per inattività: senza, la cima della classifica si riempie di gente che ha smesso di giocare.
decay-per-day2ranked.divisions8 chiavibronze{ display-name: "lang:content.division.bronze", minimum: 0, icon: COPPER_INGOT, color: "&8" }+3
silver{ display-name: "lang:content.division.silver", minimum: 900, icon: IRON_INGOT, color: "&7" }+3
gold{ display-name: "lang:content.division.gold", minimum: 1100, icon: GOLD_INGOT, color: "&6" }+3
platinum{ display-name: "lang:content.division.platinum", minimum: 1300, icon: DIAMOND, color: "&b" }+3
diamond{ display-name: "lang:content.division.diamond", minimum: 1500, icon: DIAMOND_BLOCK, color: "&3" }+3
master{ display-name: "lang:content.division.master", minimum: 1750, icon: NETHERITE_INGOT, color: "&5" }+3
champion{ display-name: "lang:content.division.champion", minimum: 2000, icon: NETHERITE_BLOCK, color: "&c" }+3
legend{ display-name: "lang:content.division.legend", minimum: 2300, icon: NETHER_STAR, color: "&e" }+3
Tornei
Una partita di torneo è una partita normale: stesse arene, stessi giochi, stesse regole. Il torneo decide solo chi ci gioca e cosa fare con il risultato -- ed è per questo che tutti e 32 i giochi si possono giocare come torneo senza che nessuno di loro sappia cos'è un torneo.
tournaments4 chiavienabledtruemin-entrants4between-rounds30stournaments.reward3 chiavicoins5000xp2000commands[ ]Obiettivi
Soglie su statistiche che esistono già. File in achievements/<game>/, oppure achievements/global/ per quelli che contano su tutti i giochi.
achievements3 chiavienabledtruefolder"achievements"broadcasttrueAnnuncia a tutto il server il livello finale di un obiettivo con broadcast: true. I livelli intermedi non vengono mai annunciati.
Importazione
Le mappe di lettura per gli altri plugin stanno in import/. Sono normali file: correggili, integrali, cancellali.
import1 chiavefolder"import"Statistiche
Le soglie qui sotto esistono per un motivo: senza, due giocatori possono farmare vittorie avviando e abbandonando una partita ogni venti secondi, e ogni classifica del server perde di senso.
stats3 chiavimin-duration30smin-players2autosave5mSalvataggio periodico: una partita lunga che crasha non deve cancellare un'ora di gioco.
leaderboards4 chiavirefresh5mhologram-refresh1mOgni quanto vengono riscritti gli ologrammi di /sg holo. Leggono la cache qui sopra, non il database: dieci classifiche costano dieci stringhe.
cache-size64ignore-inactive-after90dProtezione
Dentro un mondo di partita non c'è niente da configurare: queste sono regole del motore, non flag di regione.
protection4 chiavideny-outsiderstrueChi non è nella partita non tocca nulla dentro un mondo di partita.
original-blocks-unbreakabletrueI blocchi originali dell'arena non si possono rompere, quelli piazzati dai giocatori sì. Il motore lo sa perché registra cosa è stato piazzato.
block-external-teleporttrueUn giocatore in partita non riceve teletrasporti da altri plugin.
allowed-commands[/leave, /esci, /games, /giochi, /gstats, /gtop, /party, /p, /pc, /msg, /r, /tell, /spectate, /spec, /gkit, /shop]+13
Ogni altro comando è bloccato durante una partita. Una whitelist di proposito: non c'è modo di elencare ogni comando di ogni plugin che potrebbe curare, dare item o teletrasportare.
Cartelli di ingresso
Un cartello con [SG] sulla prima riga e il nome del gioco sulla seconda.
signs4 chiavienabledtrueQuando sono disattivati non si aggiornano e il clic destro non fa entrare.
update1sOgni quanto vengono riscritti. Un cartello viene riscritto solo quando è cambiato qualcosa, quindi anche 10t su un muro di cartelli non costa nulla.
signs.lines6 chiaviLe quattro righe, una lista per ogni stato della partita. Una riga di cartello contiene circa quindici caratteri: queste ci stanno.
Continua a leggere
%game_name% nome del gioco %players% giocatori dentro ora %game_short% nome breve del gioco %max% posti totali %game_id% id (skywars, oitc) %min% quanti per partire %arena_name% nome dell'arena %free% posti liberi %state% stato (WAITING, ...) %alive% ancora vivi %state_name% stato a parole %spectators% chi sta guardando %countdown% secondi all'inizio %time_left% tempo rimasto alla fine %time% secondi all'inizio se sta partendo, tempo di gioco se è in corso
Il nome completo di alcuni giochi non ci sta ("One in the Chamber" è più largo di una riga): i cartelli usano %game_short%, i menu il nome intero.
WAITING["lang:content.sign.waiting.top", "&f%game_short%", "&7%arena_name%", "lang:content.sign.waiting.bottom"]+3
COUNTDOWN["lang:content.sign.countdown.top", "&f%game_short%", "lang:content.sign.countdown.seconds", "lang:content.sign.countdown.bottom"]+3
PREPARING["lang:content.sign.running.top", "&f%game_short%", "&7%arena_name%", "lang:content.sign.preparing.bottom"]+3
RUNNING["lang:content.sign.running.top", "&f%game_short%", "lang:content.sign.running.time", "lang:content.sign.running.bottom"]+3
ENDING["lang:content.sign.ending.top", "&f%game_short%", "&7%arena_name%", "lang:content.sign.ending.bottom"]+3
RESETTING["lang:content.sign.resetting.top", "&f%game_short%", "&7%arena_name%", "lang:content.sign.resetting.bottom"]+3
signs.block-behind6 chiaviWAITINGLIME_CONCRETECOUNTDOWNYELLOW_CONCRETEPREPARINGRED_CONCRETERUNNINGRED_CONCRETEENDINGGRAY_CONCRETERESETTINGGRAY_CONCRETEPrestazioni
Le protezioni qui sotto proteggono il server da se stesso. Vedi docs/22-PERFORMANCE.md
performance3 chiaviprofilertrueperformance.entities4 chiaviitem-despawn60sPiù aggressivo del vanilla, di proposito.
arrow-despawn10smax-per-match400remove-below-y-32performance.guards3 chiavislow-tps18.0Sotto questi TPS il motore si difende.
critical-tps15.0slow-hook-millis50Un hook di gioco più lento di così viene registrato nel log.
bStats (statistiche d'uso anonime, https://bStats.org)
Cosa viene inviato, ogni 30 minuti: un id casuale del server (serverUuid, non derivato da nulla), la versione del plugin, le versioni di Minecraft/Paper e di Java, il sistema operativo e il numero di core, la modalità online, quanti giocatori sono online (solo un numero) e il livello di licenza (free/premium/creator). NESSUN dato dei giocatori: niente nomi, niente UUID, niente indirizzi, niente statistiche. Non viene inviato nulla mentre il plugin aspetta una licenza. false disattiva solo questo plugin. enabled: false in plugins/bStats/config.yml disattiva tutti i plugin bStats del server in una volta sola.
metrics1 chiaveenabledtrueLicenza
Senza chiave il plugin gira nell'edizione gratuita: tutto il motore, cinque giochi, limiti di dimensione. Una chiave firmata sblocca tutto. La chiave NON va qui: va in license.yml, che compare al primo avvio, così una config condivisa per il supporto non se la porta dietro.
license3 chiaviLA CHIAVE VIVE IN license.yml (stessa cartella di questo file), oppure nel file centrale plugins/ShadowControl/licenses.yml per tutta la suite. La 'key' qui sotto è solo un ripiego per i sistemi di deploy che generano config.yml: lasciala vuota.
La chiave NON sta qui: sta in license.yml, in questa cartella, scritto al primo avvio (oppure in plugins/ShadowControl/licenses.yml per tutta la suite). Solo se preferisci tenerla nella config invece che in license.yml. Funzionano anche la variabile d'ambiente SHADOWGAMES_LICENSE e la proprietà di sistema -Dshadowgames.license=...
grace-days7Giorni di tolleranza prima di ripiegare sulla versione free quando un abbonamento scade o quando l'indirizzo del server non corrisponde alla licenza.
resolve-public-iptrueUna sola chiamata, all'avvio, al servizio licenze (activation-url + /ip) per sapere l'indirizzo pubblico di questo server: dietro NAT è l'unico modo per riconoscerlo. Se la disattivi e la licenza è legata a un dominio, affidati al periodo di tolleranza. Solo con una licenza installata: un server senza chiave non chiede niente a nessuno. false = non chiedere mai.
activation-url'https://shadow-licences.riccardobotins.workers.dev'Servizio di attivazione, facoltativo. Questo è l'indirizzo BASE: il plugin aggiunge da solo /claim e /check.
Continua a leggere
Lascialo vuoto e il controllo è completamente offline, con la chiave incollata a mano. Se lo imposti:
/sg license claim <code> il server chiede da solo la licenza,
già legata ai propri indirizzi
ogni 15 minuti ricontrolla che non sia stata ritirataÈ anche l'unico modo per contare le postazioni e per revocare una chiave in giornata. Vedi docs/38-LICENZA-E-VERSIONI.md
chatgames.yml
Chatgames 60 impostazioni
chatgames.ymlplugins/ShadowGames/chatgames.yml Note del file
Giochi in chat: ogni pochi minuti in chat parte una piccola sfida e il primo giocatore che scrive la risposta giusta vince.
trivia una domanda, una o più risposte accettate
math un conto da risolvere: + - x /, risultato sempre intero
unscramble una parola con le lettere mescolate
type-fast una parola o un codice da copiare, vince il primo
reverse una parola da scrivere al contrario
fill-in una parola con alcune lettere nascoste
guess-number un numero segreto; a ogni tentativo viene detto, in
privato, "più alto" o "più basso"QUELLO CHE LEGGONO I GIOCATORI sta in lang/<locale>.yml sotto "chatgames": le righe di inizio, la riga del vincitore, il titolo e il suono. Svuota una chiave per spegnere quella parte, come per ogni altro messaggio del plugin.
UN TESTO, PIÙ LINGUE. Una domanda, una risposta o una parola si possono scrivere una volta sola:
question: "Which mob explodes?"
oppure una volta per lingua:
question: { it: "Quale mob esplode?", en: "Which mob explodes?" }Ogni giocatore legge la lingua del suo client (o quella del server), e può rispondere in UNA QUALSIASI delle lingue scritte. Una lingua che manca in un testo ripiega sulla lingua del server, poi sull'inglese.
Le RISPOSTE vengono confrontate senza badare a maiuscole, accenti, apostrofi, doppi spazi e punto finale: "Citta'", "citta" e quella con l'accento sono la stessa risposta.
Le RICOMPENSE si scrivono esattamente come le ricompense di un gioco (games/<game>.yml):
rewards:
coins: 25 coin di ShadowGames
xp: 50 esperienza di ShadowGames
money: 100 soldi del server: ShadowEconomy o Vault.
Senza un'economia viene saltato (la
console lo dice una volta), il resto viene pagato.
tokens: valute di ShadowEconomy per id, compreso
event_token: 2 l'event token. Richiede ShadowEconomy.
items: la sintassi degli item di kit e shop;
- "DIAMOND:2" anche item custom: "itemsadder:ruby",
- { material: "oraxen:ruby", name: "&cRuby" }
"nexo:...", "oraxen:...",
"shadowcustomizer:<id>", ...
Con l'inventario pieno cadono ai piedi.
commands: eseguiti dalla console, %player% = vincitore
- "say %player% is quick!"
message: "&aExtra line for the winner"
sound: "entity.player.levelup"Vince il blocco più specifico, e sostituisce gli altri (niente mescolanze):
una domanda trivia / un livello math > il tipo > questo file.
"rewards: {}" vuol dire "niente" apposta; nessuna chiave "rewards" vuol dire "eredita".
Comandi:
/chatgames di nuovo il gioco in corso, o quando
arriva il prossimo
/chatgames toggle|on|off nascondi o mostra i giochi in chat (salvato)
/sg chatgame start [type] avviane uno ora (anche /chatgames start)
/sg chatgame stop|list|reload
Permessi: shadowgames.chatgames.play (tutti),
shadowgames.chatgames.admin (op).
Vittorie: /gtop chatgames chat_wins, %shadowgames_chatgames_wins%,
%shadowgames_chatgames_wins_<type>%.config-version1enabledtrueL'intera funzione. False: non parte nessun gioco, nemmeno da comando.
Quando
schedule5 chiavienabledtrueFalse: i giochi partono solo con /sg chatgame start.
interval10mUn gioco a ogni intervallo, più o meno il jitter (10m +/- 2m vuol dire in un momento qualsiasi tra 8 e 12 minuti). Si conta dalla fine del gioco precedente.
jitter2mfirst-delay3mIl primo gioco dopo un avvio o un reload.
min-players2Se i giocatori che possono partecipare sono meno di così, quel gioco viene saltato e si prova il prossimo un intervallo dopo. Un avvio da comando lo ignora.
Chi partecipa
Online, con shadowgames.chatgames.play, che non hanno nascosto i giochi in chat, e in uno di questi mondi (lista vuota: tutti i mondi).
worlds[ ]exclude-in-matchfalseTrue: ai giocatori dentro una partita di ShadowGames (che giocano o guardano) non vengono mostrati i giochi in chat e non possono rispondere. False di default: la chat è comunque condivisa, e l'inizio non ha un titolo, quindi non copre un combattimento. Accendilo se le tue partite sono lunghe e movimentate.
Come
answer-time30sTempo per rispondere, a meno che il tipo non dica altro con un suo "time".
cancel-winning-messagetrueLa riga con la risposta giusta viene tolta dalla chat, così nessun altro può copiarla. Le risposte sbagliate restano visibili.
apply-multiplierstrueI moltiplicatori globali, di evento, VIP e booster di ShadowGames valgono per coin, xp e soldi di un gioco in chat, come per una partita.
log-to-consoletrueUna riga in console quando un gioco inizia (con la risposta) e quando finisce.
rewards2 chiaviLa ricompensa di ogni tipo che non ne scrive una sua.
coins25xp50I tipi
Ognuno: enabled, weight (quanto spesso viene scelto: 30 è tre volte più probabile di 10), time (facoltativo), rewards (facoltativo).
types7 chiavitypes.trivia4 chiavienabledtrueweight30time30squestions[{ question: {…}, answers: […] }, { question: {…}, answers: […] }, { question: {…}, answers: […] }, { question: {…}, answers: […] }, { question: {…}, answers: […] }, { question: {…}, answers: […] }, { question: {…}, ans …+26
questionUna domanda può avere una sua ricompensa: sostituisce quella del tipo solo per questa domanda.
types.math5 chiavienabledtrueweight25time25sallow-negativefalseFalse: una sottrazione non ha mai un risultato negativo.
types.math.difficulties3 chiavinumbers: l'intervallo dei due numeri di un + o di un -.
factors: l'intervallo dei due numeri di un x, e del divisore e
del risultato di un / (la divisione viene sempre intera).operations: uno qualsiasi tra "+", "-", "*", "/". Un livello può avere i suoi "rewards".
types.math.difficulties.easy3 chiaviweight50operations[+, "-"]numbers[1, 30]types.math.difficulties.medium4 chiaviweight35operations[+, "-", "*"]numbers[10, 99]factors[2, 12]types.math.difficulties.hard5 chiaviweight15operations[+, "-", "*", /]numbers[100, 999]factors[3, 20]types.math.difficulties.hard.rewards2 chiavicoins50xp100types.unscramble4 chiavienabledtrueweight20time40shinttrueA metà tempo, la prima lettera della parola.
La sua lista di parole; senza questa riga, quelle di "words" in fondo. words: [ ... ]
types.type-fast5 chiavienabledtrueweight15time20ssourcebothwords: una parola della lista in fondo, nella lingua di chi legge. code: un codice casuale come K7PX2M. both: uno dei due, a caso.
code-length8types.reverse3 chiaviViene mostrata una parola da scrivere al contrario: DIAMOND -> dnomaid.
enabledtrueweight10time30stypes.fill-in4 chiavienabledtrueweight15time40stypes.guess-number7 chiavienabledtrueweight10time60smin1max100max-guesses5Tentativi per giocatore; 0 = nessun limite.
hide-guessesfalseTrue: ogni tentativo viene tolto dalla chat, non solo quello giusto.
Parole
Usate da unscramble, type-fast, reverse e fill-in (un tipo può invece avere una sua lista "words"). Una parola per riga: una parola semplice quando è uguale in ogni lingua, { it: ..., en: ... } altrimenti. Una parola che non va bene per un tipo viene esclusa solo da quel tipo: una fatta di un'unica lettera ripetuta non si può mescolare, una che si legge uguale al contrario non è un gioco per reverse.
words[{ it: diamante, en: diamond }, { it: smeraldo, en: emerald }, { it: ossidiana, en: obsidian }, creeper, enderman, netherite, ghast, blaze, slime, cactus, { it: scheletro, en: skeleton }, { it: ragno, en: spider }, { it …+45
games/battleroyale.yml
Minigioco: Battle Royale 41 impostazioni
games/battleroyale.ymlplugins/ShadowGames/games/battleroyale.yml enabledtruecountdown45smax-duration25mlives1buildtruedrop5 chiavienabledtrueheight200elytratrueremove-elytra-on-landtruefree-jumptruezone3 chiaviLa pausa tra un restringimento e il successivo è ciò che ti permette di pianificare un percorso; il cerchio annunciato è ciò che trasforma la fuga in una decisione.
particlestrueshow-nexttruephases[{ wait: 3m, shrink: 2m, to: 400, damage: 1 }, { wait: 2m, shrink: 2m, to: 250, damage: 2 }, { wait: 90s, shrink: 90s, to: 150, damage: 4 }, { wait: 60s, shrink: 60s, to: 60, damage: 6 }, { wait: 45s, shrink: 45s, to: 2 …+5
markers4 chiaviBEACON"CENTER"CHEST"LOOT_CHEST:common"TRAPPED_CHEST"LOOT_CHEST:rare"GOLD_BLOCK"DROP_ZONE"events[{ at: 5m, type: SUPPLY, count: 2 }, { at: 10m, type: SUPPLY, count: 2 }, { at: 15m, type: SUPPLY, count: 3 }]+2
loot2 chiaviloot.common3 chiavimin-stacks3max-stacks6entries[{ item: {…}, weight: 22 }, { item: {…}, weight: 8 }, { item: {…}, weight: 14 }, { item: {…}, weight: 20, amount-range: […] }, { item: {…}, weight: 20 }, { item: {…}, weight: 10 }, { item: {…}, weight: 22, amount-range: …+7
loot.rare3 chiavimin-stacks5max-stacks8entries[{ item: {…}, weight: 8, unique: true }, { item: {…}, weight: 6, unique: true }, { item: {…}, weight: 12 }, { item: {…}, weight: 20, amount-range: […] }, { item: {…}, weight: 3, unique: true }, { item: {…}, weight: 10, …+6
downed3 chiavienabledtruetime45srevive-time6skits1 chiaveenabledfalseSidebar
Pronto così com'è. Cambialo liberamente: quello che scrivi qui batte il layout integrato del gioco, ed eliminare una sezione lo ripristina. L'elenco completo dei placeholder è in docs/11-HUD.md Una riga lang:<key> viene letta da lang/, nella lingua di ogni giocatore.
scoreboard2 chiavititle"&6&lBATTLE ROYALE"scoreboard.lines4 chiaviWAITING["&8&m ", "lang:content.board.map", "lang:content.board.players", "", "lang:content.board.waiting", "lang:content.board.needed", "&8&m ", "%server_ip%"]+7
COUNTDOWN["&8&m ", "lang:content.board.map", "lang:content.board.players", "", "lang:content.board.battleroyale.starting", "&8&m ", "%server_ip%"]+6
RUNNING["&8&m ", "lang:content.board.map", "lang:content.board.time", "", "lang:content.board.alive", "", "lang:content.board.kills", "", "lang:content.board.next-event", "&7%next_event_time%", "&8 …+11
ENDING["&8&m ", "lang:content.board.battleroyale.winner", "", "lang:content.board.your-kills", "lang:content.board.place", "", "lang:content.board.thanks", "&8&m ", "% …+8
rewards4 chiaviwin{ coins: 300, xp: 700 }lose{ coins: 20, xp: 40 }kill{ coins: 20, xp: 45 }play{ coins: 8, xp: 15 }Ranked
Tanta varianza, ma il piazzamento medio dice qualcosa. Le impostazioni generali (rating iniziale, divisioni, decadimento) stanno in config.yml sotto 'ranked'. Qui si decide solo se questo gioco assegna un rating.
ranked1 chiaveenabledtrueSuoni
Solo tre momenti. Svuota un valore per disattivarlo, oppure fallo puntare a un suono del tuo resource pack.
sounds3 chiavijoin"entity.experience_orb.pickup"start"entity.wither.spawn"kill"entity.player.levelup" games/bedwars.yml
Minigioco: BedWars 89 impostazioni
games/bedwars.ymlplugins/ShadowGames/games/bedwars.yml Note del file
Difendi il tuo letto, rompi quelli degli altri, compra tutto il resto. Riferimento completo: docs/giochi/bedwars.md
enabledtruecountdown30scountdown-full10sgrace-period0smax-duration45mend-duration12srespawn-delay5sfriendly-firefalsebuildtrueLetti
beds3 chiavirequire-toolfalseUn letto si rompe a mani nude: pretendere un attrezzo allunga solo la finestra in cui un difensore può arrivare, e non è questo che rende interessante la difesa.
own-bed-protectedtruebroadcasttrueFinal kill
Morire senza letto ti elimina. Vale più di una kill normale, e si vede.
final-kill1 chiavereward-multiplier2.5Generatori
team -> quelli dentro le basi, uno per squadra, potenziati dal
villager dei potenziamenti
neutral -> quelli in mezzo, uguali per tutti, che salgono di livello
col passare del tempomax-nearby è la regola che tiene in piedi il server: senza, una base abbandonata accumula migliaia di lingotti sul pavimento.
generators2 chiavigenerators.team3 chiavigenerators.team.iron6 chiaviresourceIRON_INGOTinterval1.2samount1max-nearby48generators.team.iron.tiers4 chiavi1{ interval: 1.2s }2{ interval: 0.8s }3{ interval: 0.5s, amount: 2 }4{ interval: 0.4s, amount: 2 }generators.team.gold6 chiaviresourceGOLD_INGOTinterval6samount1max-nearby16generators.team.gold.tiers4 chiavi1{ interval: 6s }2{ interval: 4s }3{ interval: 3s }4{ interval: 2.5s }generators.team.emerald5 chiaviresourceEMERALDinterval0s0 = disattivato finché la forgia non raggiunge il livello che lo attiva.
max-nearby8generators.team.emerald.tiers4 chiavi1{ interval: 0s }2{ interval: 0s }3{ interval: 45s }4{ interval: 35s }generators.neutral2 chiavigenerators.neutral.diamond7 chiaviresourceDIAMONDinterval30smax-nearby8hologramtruehologram-lines["lang:content.generator.diamond", "lang:hologram.generator.tier", "lang:hologram.generator.in-seconds"]+2
generators.neutral.diamond.spawn-effect2 chiaviparticleHAPPY_VILLAGERsound"block.note_block.pling"generators.neutral.diamond.tiers3 chiavi1{ interval: 30s }2{ interval: 23s }3{ interval: 12s }generators.neutral.emerald6 chiaviresourceEMERALDinterval65smax-nearby4hologramtruehologram-lines["lang:content.generator.emerald", "lang:hologram.generator.tier", "lang:hologram.generator.in-seconds"]+2
generators.neutral.emerald.tiers3 chiavi1{ interval: 65s }2{ interval: 50s }3{ interval: 30s }Shop
Il layout sta in shops/bedwars.yml
shop2 chiavifile"shops/bedwars.yml"shop.npc2 chiavienabledtruetypeVILLAGERMarker
Basta una sola schematic di base per tutte le squadre: il motore ricolora lana, vetro, terracotta, letto e stendardo con il colore della squadra assegnata a quella posizione.
markers8 chiaviRED_WOOL"TEAM_SPAWN"RED_BED"BED"IRON_BLOCK"GENERATOR:team"DIAMOND_BLOCK"GENERATOR:diamond"EMERALD_BLOCK"GENERATOR:emerald"GOLD_BLOCK"SHOP_NPC"LAPIS_BLOCK"UPGRADE_NPC"BARRIER"NO_BUILD"protection3 chiavioriginal-blocks-unbreakabletruegenerator-radius4Metti NO_BUILD intorno ai generatori centrali: senza, la prima cosa che fanno i giocatori è murarli.
build-height-limit25events[{ at: 6m, type: GENERATOR_UPGRADE, kind: diamond, tier: 2 }, { at: 6m, type: GENERATOR_UPGRADE, kind: emerald, tier: 2 }, { at: 12m, type: GENERATOR_UPGRADE, kind: diamond, tier: 3 }, { at: 12m, type: GENERATOR_UPGRADE …+6
kits1 chiaveenabledfalseSidebar
Pronto così com'è. Cambialo liberamente: quello che scrivi qui batte il layout integrato del gioco, ed eliminare una sezione lo ripristina. L'elenco completo dei placeholder è in docs/11-HUD.md Una riga lang:<key> viene letta da lang/, nella lingua di ogni giocatore.
scoreboard2 chiavititle"&c&lBEDWARS"scoreboard.lines4 chiaviWAITING["&8&m ", "lang:content.board.map", "lang:content.board.players", "", "lang:content.board.waiting", "lang:content.board.needed", "&8&m ", "%server_ip%"]+7
COUNTDOWN["&8&m ", "lang:content.board.map", "lang:content.board.players", "", "lang:content.board.bedwars.starting", "&8&m ", "%server_ip%"]+6
RUNNING["&8&m ", "lang:content.board.map", "lang:content.board.time", "", "%repeat_teams%%team_color%%team_name% &8» &f%team_status%", "", "lang:content.board.kills", "", "lang:content.board.next-e …+11
ENDING["&8&m ", "lang:content.board.bedwars.winner", "", "lang:content.board.your-kills", "lang:content.board.place", "", "lang:content.board.thanks", "&8&m ", "%serve …+8
rewards7 chiaviwin{ coins: 200, xp: 400 }lose{ coins: 20, xp: 40 }kill{ coins: 10, xp: 20 }final-kill{ coins: 25, xp: 50 }bed-broken{ coins: 50, xp: 100 }play{ coins: 5, xp: 10 }per-minute{ coins: 2, xp: 4 }sounds3 chiavijoin"entity.experience_orb.pickup"start"entity.ender_dragon.growl"kill"entity.player.levelup"Ranked
Partite a squadre lunghe: il risultato dipende molto più dall'abilità che dalla fortuna. Le impostazioni generali (rating iniziale, divisioni, decadimento) stanno in config.yml sotto 'ranked'. Qui si decide solo se questo gioco assegna un rating.
ranked1 chiaveenabledtrue games/bingo.yml
Minigioco: Bingo 32 impostazioni
games/bingo.ymlplugins/ShadowGames/games/bingo.yml enabledtruecountdown30smax-duration45mrespawn-delay5sbuildtrueboard4 chiavisize5win-conditionLINELINE | FULL | MOST
seed0Un seed fisso rende una partita ripetibile: ai tornei serve.
difficulty3 chiavieasy10medium10hard5items3 chiavieasy[OAK_LOG, COBBLESTONE, WHEAT, LEATHER, COAL, SAND, CLAY_BALL, EGG, APPLE, RED_MUSHROOM]+7
medium[IRON_INGOT, GOLD_INGOT, BOOK, BUCKET, COOKED_BEEF, BOW, SLIME_BALL, GLASS, PAPER, REDSTONE]+7
hard[DIAMOND, ENDER_PEARL, BLAZE_ROD, GOLDEN_APPLE, OBSIDIAN, NAME_TAG, CAKE, SADDLE]+5
rules3 chiaviauto-completetruepvpfalseshow-otherstruemarkers2 chiaviQUARTZ_BLOCK"PLAYER_SPAWN"BEACON"CENTER"kits1 chiaveenabledfalseSidebar
Pronto così com'è. Cambialo liberamente: quello che scrivi qui batte il layout integrato del gioco, ed eliminare una sezione lo ripristina. L'elenco completo dei placeholder è in docs/11-HUD.md Una riga lang:<key> viene letta da lang/, nella lingua di ogni giocatore.
scoreboard2 chiavititle"&a&lBINGO"scoreboard.lines4 chiaviWAITING["&8&m ", "lang:content.board.map", "lang:content.board.players", "", "lang:content.board.waiting", "lang:content.board.needed", "&8&m ", "%server_ip%"]+7
COUNTDOWN["&8&m ", "lang:content.board.map", "lang:content.board.players", "", "lang:content.board.bingo.starting", "&8&m ", "%server_ip%"]+6
RUNNING["&8&m ", "lang:content.board.map", "lang:content.board.time", "", "%repeat_teams%%team_color%%team_name% &8» &f%team_status%", "", "lang:content.board.kills", "lang:content.board.completed" …+12
ENDING["&8&m ", "lang:content.board.bingo.winner", "", "lang:content.board.your-kills", "lang:content.board.place", "", "lang:content.board.thanks", "&8&m ", "%server_ …+8
rewards3 chiaviwin{ coins: 200, xp: 450 }lose{ coins: 20, xp: 40 }play{ coins: 8, xp: 16 }Suoni
Solo tre momenti. Svuota un valore per disattivarlo, oppure fallo puntare a un suono del tuo resource pack.
sounds2 chiavijoin"entity.experience_orb.pickup"start"block.beacon.activate"Ranked
Dipende troppo da cosa salta fuori: non è una classifica di abilità.
Rating iniziale, divisioni e decadimento stanno in config.yml sotto 'ranked'. Qui si decide solo se questo gioco assegna un rating.
ranked1 chiaveenabledfalse games/blockparty.yml
Minigioco: Block Party 32 impostazioni
games/blockparty.ymlplugins/ShadowGames/games/blockparty.yml enabledtruecountdown15smax-duration10mlives1buildfalserounds5 chiaviUn round ha tre tempi, e quello centrale è tutto il gioco:
1. BALLO - la musica suona e il pavimento continua a cambiare
2. STOP - la musica si ferma, il pavimento si congela, e il colore
compare nella tua mano
3. CROLLO - tutto ciò che non è di quel colore spariscedance-time5Quanto dura il ballo prima che la musica si fermi.
start-time6Quanto tempo hai per raggiungere il colore, nel primo round.
decrease0.4Di quanto si accorcia ogni round, e il minimo sotto cui non scende mai.
min-time1.5clear-time2music3 chiaviplaylist[party, chase]Le tracce tra cui scegliere. Vuoto = una a caso tra tutte quelle in music/. I file stanno in music/<name>.yml e possono essere melodie da note block (nessun resource pack) o suoni di un tuo pack.
stop-instrumentPLINGLa nota secca nell'istante in cui la musica si ferma: il silenzio deve essere un evento, non un'assenza.
victoryvictoryfloor5 chiavimaterials[RED_WOOL, ORANGE_WOOL, YELLOW_WOOL, LIME_WOOL, LIGHT_BLUE_WOOL, BLUE_WOOL, MAGENTA_WOOL, PINK_WOOL]+5
Il colore chiamato compare anche come blocco in mano, non solo come parola: chi fa fatica con i colori non deve tirare a indovinare.
shuffle-each-roundtrueSenza rimescolare, dopo tre round tutti sanno dove andare.
live-shuffletrueIl pavimento si muove anche DURANTE il ballo: qualche mattonella ridipinta a caso ogni tanto, così il terreno non è mai fermo sotto i tuoi piedi e nessuna casella è sicura per più di un momento.
Si ferma di colpo quando si ferma la musica: una mattonella che cambia sotto chi ha già raggiunto il suo colore sarebbe il gioco che bara.
shuffle-every4A quanti tick di distanza, e quante mattonelle ogni volta. Poche alla volta: ridipingere tutto a intervalli farebbe lampeggiare il pavimento, e un pavimento che lampeggia non si riesce a leggere.
shuffle-blocks12markers2 chiaviQUARTZ_BLOCK"PLAYER_SPAWN"WHITE_WOOL"PARTY_FLOOR"kits1 chiaveenabledfalseSidebar
Pronto così com'è. Cambialo liberamente: quello che scrivi qui batte il layout integrato del gioco, ed eliminare una sezione lo ripristina. L'elenco completo dei placeholder è in docs/11-HUD.md Una riga lang:<key> viene letta da lang/, nella lingua di ogni giocatore.
scoreboard2 chiavititle"&d&lBLOCK PARTY"scoreboard.lines4 chiaviWAITING["&8&m ", "lang:content.board.map", "lang:content.board.players", "", "lang:content.board.waiting", "lang:content.board.needed", "&8&m ", "%server_ip%"]+7
COUNTDOWN["&8&m ", "lang:content.board.map", "lang:content.board.players", "", "lang:content.board.blockparty.starting", "&8&m ", "%server_ip%"]+6
RUNNING["&8&m ", "lang:content.board.map", "lang:content.board.time", "", "lang:content.board.alive", "", "lang:content.board.kills", "lang:content.board.round", "lang:content.board.colour", "lang: …+14
ENDING["&8&m ", "lang:content.board.blockparty.winner", "", "lang:content.board.your-kills", "lang:content.board.place", "", "lang:content.board.thanks", "&8&m ", "%se …+8
rewards3 chiaviwin{ coins: 60, xp: 140 }lose{ coins: 8, xp: 16 }play{ coins: 5, xp: 10 }Suoni
Solo tre momenti. Svuota un valore per disattivarlo, oppure fallo puntare a un suono del tuo resource pack.
sounds2 chiavijoin"entity.experience_orb.pickup"start"block.note_block.pling"Ranked
Un gioco di fortuna e riflessi, non di abilità misurabile.
Rating iniziale, divisioni e decadimento stanno in config.yml sotto 'ranked'. Qui si decide solo se questo gioco assegna un rating.
ranked1 chiaveenabledfalse games/bridge.yml
Minigioco: The Bridge 31 impostazioni
games/bridge.ymlplugins/ShadowGames/games/bridge.yml enabledtruecountdown15sgrace-period0smax-duration20mrespawn-delay2sgoals-to-win5friendly-firefalsebuildtruekit3 chiaviIl kit è fisso di proposito: The Bridge è un gioco di abilità, non di equipaggiamento.
fixed"bridge/default"infinite-blockstruearrow-regen3sgoal2 chiaviown-goal-blockedtruecelebration3svoid1 chiavekill-below40Cadere non è una vera morte: costa la corsa e nient'altro. È questo che mantiene il gioco rapido invece che punitivo.
markers3 chiaviRED_WOOL"TEAM_SPAWN"END_PORTAL_FRAME"GOAL"BEACON"CENTER"kits1 chiaveenabledfalseSidebar
Pronto così com'è. Cambialo liberamente: quello che scrivi qui batte il layout integrato del gioco, ed eliminare una sezione lo ripristina. L'elenco completo dei placeholder è in docs/11-HUD.md Una riga lang:<key> viene letta da lang/, nella lingua di ogni giocatore.
scoreboard2 chiavititle"&9&lTHE BRIDGE"scoreboard.lines4 chiaviWAITING["&8&m ", "lang:content.board.map", "lang:content.board.players", "", "lang:content.board.waiting", "lang:content.board.needed", "&8&m ", "%server_ip%"]+7
COUNTDOWN["&8&m ", "lang:content.board.map", "lang:content.board.players", "", "lang:content.board.bridge.starting", "&8&m ", "%server_ip%"]+6
RUNNING["&8&m ", "lang:content.board.map", "lang:content.board.time", "", "%repeat_teams%%team_color%%team_name% &8» &f%team_status%", "", "lang:content.board.kills", "", "lang:content.board.next-e …+11
ENDING["&8&m ", "lang:content.board.bridge.winner", "", "lang:content.board.your-kills", "lang:content.board.place", "", "lang:content.board.thanks", "&8&m ", "%server …+8
rewards4 chiaviwin{ coins: 80, xp: 200 }lose{ coins: 15, xp: 30 }kill{ coins: 8, xp: 15 }play{ coins: 5, xp: 10 }Ranked
Metà abilità nel combattimento e metà movimento, ma sempre 1v1 o 2v2. Le impostazioni generali (rating iniziale, divisioni, decadimento) stanno in config.yml sotto 'ranked'. Qui si decide solo se questo gioco assegna un rating.
ranked1 chiaveenabledtrueSuoni
Solo tre momenti. Svuota un valore per disattivarlo, oppure fallo puntare a un suono del tuo resource pack.
sounds3 chiavijoin"entity.experience_orb.pickup"start"entity.ender_dragon.growl"kill"entity.player.levelup" games/buildbattle.yml
Minigioco: Build Battle 35 impostazioni
games/buildbattle.ymlplugins/ShadowGames/games/buildbattle.yml enabledtruecountdown30smax-duration20mbuild-time6mvote-time20smodes3 chiavidefaultsolosolo{ players-per-plot: 1 }teams{ players-per-plot: 2 }themes4 chiavidifficultymediumeasy["lang:content.game.buildbattle.theme.house", "lang:content.game.buildbattle.theme.tree", "lang:content.game.buildbattle.theme.boat", "lang:content.game.buildbattle.theme.lighthouse", "lang:content.game.buildbattle.them …+7
medium["lang:content.game.buildbattle.theme.castle", "lang:content.game.buildbattle.theme.pirate-ship", "lang:content.game.buildbattle.theme.volcano", "lang:content.game.buildbattle.theme.space-station", "lang:content.game.bu …+7
hard["lang:content.game.buildbattle.theme.industrial-revolution", "lang:content.game.buildbattle.theme.passing-time", "lang:content.game.buildbattle.theme.sea-bed", "lang:content.game.buildbattle.theme.dream", "lang:content …+5
plot4 chiaviblocksALLflytrueisolatedtrueSe i giocatori possono vedersi, copiano.
voting5 chiaviscale5anonymoustrueself-votefalseshuffletruereveal-at-endtrueUn totale visibile trasforma gli ultimi lotti in una gara di popolarità.
markers2 chiaviLIME_WOOL"PLOT"BEACON"CENTER"kits1 chiaveenabledfalseSidebar
Pronto così com'è. Cambialo liberamente: quello che scrivi qui batte il layout integrato del gioco, ed eliminare una sezione lo ripristina. L'elenco completo dei placeholder è in docs/11-HUD.md Una riga lang:<key> viene letta da lang/, nella lingua di ogni giocatore.
scoreboard2 chiavititle"&b&lBUILD BATTLE"scoreboard.lines4 chiaviWAITING["&8&m ", "lang:content.board.map", "lang:content.board.players", "", "lang:content.board.waiting", "lang:content.board.needed", "&8&m ", "%server_ip%"]+7
COUNTDOWN["&8&m ", "lang:content.board.map", "lang:content.board.players", "", "lang:content.board.buildbattle.starting", "&8&m ", "%server_ip%"]+6
RUNNING["&8&m ", "lang:content.board.map", "lang:content.board.time", "", "lang:content.board.alive", "", "lang:content.board.kills", "", "lang:content.board.next-event", "&7%next_event_time%", "&8 …+11
ENDING["&8&m ", "lang:content.board.buildbattle.winner", "", "lang:content.board.your-kills", "lang:content.board.place", "", "lang:content.board.thanks", "&8&m ", "%s …+8
rewards3 chiaviwin{ coins: 300, xp: 600 }lose{ coins: 40, xp: 80 }play{ coins: 10, xp: 20 }Suoni
Solo tre momenti. Svuota un valore per disattivarlo, oppure fallo puntare a un suono del tuo resource pack.
sounds2 chiavijoin"entity.experience_orb.pickup"start"block.beacon.activate"Ranked
Sono i giocatori a votare: non è un rating da mettere in classifica.
Rating iniziale, divisioni e decadimento stanno in config.yml sotto 'ranked'. Qui si decide solo se questo gioco assegna un rating.
ranked1 chiaveenabledfalse games/ctf.yml
Minigioco: Capture the Flag 32 impostazioni
games/ctf.ymlplugins/ShadowGames/games/ctf.yml enabledtruecountdown30smax-duration20mrespawn-delay5scaptures-to-win3friendly-firefalsebuildfalseflag6 chiaviwear-on-headtrueglow-carriertruerequire-own-flag-hometruePer segnare ti serve la tua bandiera alla base: è questo che lo rende un gioco tattico invece che una corsa.
ally-touch-returnstruereturn-after30scarrier-effects[{ type: SLOWNESS, amplifier: 0 }]markers3 chiaviRED_WOOL"TEAM_SPAWN"RED_BANNER"FLAG"BEACON"CENTER"kits2 chiavienabledtruefolder"ctf"Sidebar
Pronto così com'è. Cambialo liberamente: quello che scrivi qui batte il layout integrato del gioco, ed eliminare una sezione lo ripristina. L'elenco completo dei placeholder è in docs/11-HUD.md Una riga lang:<key> viene letta da lang/, nella lingua di ogni giocatore.
scoreboard2 chiavititle"&c&lCAPTURE THE FLAG"scoreboard.lines4 chiaviWAITING["&8&m ", "lang:content.board.map", "lang:content.board.players", "", "lang:content.board.waiting", "lang:content.board.needed", "", "lang:content.board.kit", "&8&m …+9
COUNTDOWN["&8&m ", "lang:content.board.map", "lang:content.board.players", "", "lang:content.board.ctf.starting", "", "lang:content.board.kit", "&8&m ", "%server_ip%"]+8
RUNNING["&8&m ", "lang:content.board.map", "lang:content.board.time", "", "%repeat_teams%%team_color%%team_name% &8» &f%team_status%", "", "lang:content.board.kills", "", "lang:content.board.next-e …+11
ENDING["&8&m ", "lang:content.board.ctf.winner", "", "lang:content.board.your-kills", "lang:content.board.place", "", "lang:content.board.thanks", "&8&m ", "%server_ip …+8
rewards5 chiaviwin{ coins: 150, xp: 300 }lose{ coins: 25, xp: 50 }kill{ coins: 8, xp: 15 }capture{ coins: 60, xp: 120 }play{ coins: 5, xp: 10 }Ranked
Squadre bilanciate, un obiettivo chiaro. Le impostazioni generali (rating iniziale, divisioni, decadimento) stanno in config.yml sotto 'ranked'. Qui si decide solo se questo gioco assegna un rating.
ranked1 chiaveenabledtrueSuoni
Solo tre momenti. Svuota un valore per disattivarlo, oppure fallo puntare a un suono del tuo resource pack.
sounds3 chiavijoin"entity.experience_orb.pickup"start"entity.ender_dragon.growl"kill"entity.player.levelup" games/dropper.yml
Minigioco: Dropper 26 impostazioni
games/dropper.ymlplugins/ShadowGames/games/dropper.yml enabledtruecountdown10smax-duration15mbuildfalselevels3 chiaviauto-detecttruemodeSEQUENTIALtime-limit2mrules4 chiavifall-damagefalsetouch-killstrueno-elytratrueno-slow-falltruemarkers3 chiaviEMERALD_BLOCK"START"GOLD_BLOCK"FINISH"BEACON"CENTER"kits1 chiaveenabledfalseSidebar
Pronto così com'è. Cambialo liberamente: quello che scrivi qui batte il layout integrato del gioco, ed eliminare una sezione lo ripristina. L'elenco completo dei placeholder è in docs/11-HUD.md Una riga lang:<key> viene letta da lang/, nella lingua di ogni giocatore.
scoreboard2 chiavititle"&9&lDROPPER"scoreboard.lines4 chiaviWAITING["&8&m ", "lang:content.board.map", "lang:content.board.players", "", "lang:content.board.waiting", "lang:content.board.needed", "&8&m ", "%server_ip%"]+7
COUNTDOWN["&8&m ", "lang:content.board.map", "lang:content.board.players", "", "lang:content.board.dropper.starting", "&8&m ", "%server_ip%"]+6
RUNNING["&8&m ", "lang:content.board.map", "lang:content.board.time", "", "lang:content.board.alive", "", "lang:content.board.kills", "", "lang:content.board.next-event", "&7%next_event_time%", "&8 …+11
ENDING["&8&m ", "lang:content.board.dropper.winner", "", "lang:content.board.your-kills", "lang:content.board.place", "", "lang:content.board.thanks", "&8&m ", "%serve …+8
rewards3 chiavilose{ coins: 5, xp: 10 }win{ coins: 70, xp: 160 }play{ coins: 5, xp: 10 }Suoni
Solo tre momenti. Svuota un valore per disattivarlo, oppure fallo puntare a un suono del tuo resource pack.
sounds2 chiavijoin"entity.experience_orb.pickup"start"entity.bat.takeoff"Ranked
Il percorso non cambia mai: vince chi lo fa meglio, ogni volta.
Rating iniziale, divisioni e decadimento stanno in config.yml sotto 'ranked'. Qui si decide solo se questo gioco assegna un rating.
ranked1 chiaveenabledtrue games/duels.yml
Minigioco: Duels 34 impostazioni
games/duels.ymlplugins/ShadowGames/games/duels.yml Note del file
Ogni modalità è un kit più due interruttori: otto modalità costano otto blocchi di YAML, non otto classi.
enabledtruecountdown5smax-duration10mrounds1buildfalsemodes9 chiavidefaultclassicclassic{ kit: "duels/classic", build: false, natural-regen: true }+1
sumo{ kit: "duels/sumo", build: false, natural-regen: true }+1
bow{ kit: "duels/bow", build: false, natural-regen: true }+1
uhc{ kit: "duels/uhc", build: true, natural-regen: false }+1
nodebuff{ kit: "duels/nodebuff", build: false, natural-regen: true }+1
boxing{ kit: "duels/boxing", build: false, hits-to-win: 100 }+1
bridge{ kit: "duels/bridge", build: true }combo{ kit: "duels/combo", build: false }challenge4 chiavienabledtruetimeout60sbettingtrueLe scommesse usano le monete di gioco, mai l'economia reale.
max-bet10000markers2 chiaviQUARTZ_BLOCK"TEAM_SPAWN"BEACON"CENTER"kits1 chiaveenabledfalseSidebar
Pronto così com'è. Cambialo liberamente: quello che scrivi qui batte il layout integrato del gioco, ed eliminare una sezione lo ripristina. L'elenco completo dei placeholder è in docs/11-HUD.md Una riga lang:<key> viene letta da lang/, nella lingua di ogni giocatore.
scoreboard2 chiavititle"&e&lDUELS"scoreboard.lines4 chiaviWAITING["&8&m ", "lang:content.board.map", "lang:content.board.players", "", "lang:content.board.waiting", "lang:content.board.needed", "&8&m ", "%server_ip%"]+7
COUNTDOWN["&8&m ", "lang:content.board.map", "lang:content.board.players", "", "lang:content.board.duels.starting", "&8&m ", "%server_ip%"]+6
RUNNING["&8&m ", "lang:content.board.map", "lang:content.board.time", "", "lang:content.board.alive", "", "lang:content.board.kills", "", "lang:content.board.next-event", "&7%next_event_time%", "&8 …+11
ENDING["&8&m ", "lang:content.board.duels.winner", "", "lang:content.board.your-kills", "lang:content.board.place", "", "lang:content.board.thanks", "&8&m ", "%server_ …+8
rewards4 chiavikill{ coins: 15, xp: 30 }win{ coins: 60, xp: 140 }lose{ coins: 10, xp: 20 }play{ coins: 5, xp: 10 }Ranked
Un uno contro uno: il caso in cui l'Elo dice la verità esatta. Le impostazioni generali (rating iniziale, divisioni, decadimento) stanno in config.yml sotto 'ranked'. Qui si decide solo se questo gioco assegna un rating.
ranked1 chiaveenabledtrueSuoni
Solo tre momenti. Svuota un valore per disattivarlo, oppure fallo puntare a un suono del tuo resource pack.
sounds3 chiavijoin"entity.experience_orb.pickup"start"block.note_block.pling"kill"entity.player.levelup" games/eggwars.yml
Minigioco: EggWars 59 impostazioni
games/eggwars.ymlplugins/ShadowGames/games/eggwars.yml enabledtruecountdown30smax-duration40mrespawn-delay5sfriendly-firefalsebuildtrueeggs2 chiaviown-egg-protectedtruebroadcasttruegenerators2 chiaviI generatori stanno sull'isola e si potenziano quando ci clicchi sopra con le risorse in mano: è questo che ti costringe a tornare a casa, ed è la vera differenza tra EggWars e BedWars.
generators.tiers3 chiavigenerators.tiers.iron5 chiaviresourceIRON_INGOTinterval4smax-nearby48hologramtruegenerators.tiers.iron.tiers3 chiavi1{ interval: 4s }2{ interval: 2s }3{ interval: 1s, amount: 2 }generators.tiers.gold5 chiaviresourceGOLD_INGOTinterval12smax-nearby24hologramtruegenerators.tiers.gold.tiers3 chiavi1{ interval: 12s }2{ interval: 8s }3{ interval: 5s }generators.tiers.diamond5 chiaviresourceDIAMONDinterval60smax-nearby8hologramtruegenerators.tiers.diamond.tiers2 chiavi1{ interval: 60s }2{ interval: 40s }generators.upgrades3 chiaviQuanto costa un livello quando clicchi il generatore.
generators.upgrades.iron2 chiavi2{ cost: { IRON_INGOT: 8 } }3{ cost: { GOLD_INGOT: 12 } }generators.upgrades.gold2 chiavi2{ cost: { GOLD_INGOT: 8 } }3{ cost: { DIAMOND: 4 } }generators.upgrades.diamond1 chiave2{ cost: { DIAMOND: 6 } }shop2 chiavifile"shops/eggwars.yml"shop.npc2 chiavienabledtruetypeVILLAGERmarkers6 chiaviRED_WOOL"TEAM_SPAWN"DRAGON_EGG"EGG"IRON_BLOCK"GENERATOR:iron"GOLD_BLOCK"GENERATOR:gold"DIAMOND_BLOCK"GENERATOR:diamond"EMERALD_BLOCK"SHOP_NPC"events[{ at: 25m, type: BROADCAST, message: "lang:content.event.sudden-death-soon" }, { at: 30m, type: SUDDEN_DEATH }, { at: 40m, type: END, outcome: DRAW }]+2
kits1 chiaveenabledfalseSidebar
Pronto così com'è. Cambialo liberamente: quello che scrivi qui batte il layout integrato del gioco, ed eliminare una sezione lo ripristina. L'elenco completo dei placeholder è in docs/11-HUD.md Una riga lang:<key> viene letta da lang/, nella lingua di ogni giocatore.
scoreboard2 chiavititle"&e&lEGGWARS"scoreboard.lines4 chiaviWAITING["&8&m ", "lang:content.board.map", "lang:content.board.players", "", "lang:content.board.waiting", "lang:content.board.needed", "&8&m ", "%server_ip%"]+7
COUNTDOWN["&8&m ", "lang:content.board.map", "lang:content.board.players", "", "lang:content.board.eggwars.starting", "&8&m ", "%server_ip%"]+6
RUNNING["&8&m ", "lang:content.board.map", "lang:content.board.time", "", "%repeat_teams%%team_color%%team_name% &8» &f%team_status%", "", "lang:content.board.kills", "", "lang:content.board.next-e …+11
ENDING["&8&m ", "lang:content.board.eggwars.winner", "", "lang:content.board.your-kills", "lang:content.board.place", "", "lang:content.board.thanks", "&8&m ", "%serve …+8
rewards6 chiaviwin{ coins: 200, xp: 400 }lose{ coins: 20, xp: 40 }kill{ coins: 10, xp: 20 }final-kill{ coins: 25, xp: 50 }egg-broken{ coins: 50, xp: 100 }play{ coins: 5, xp: 10 }Ranked
Come per BedWars. Le impostazioni generali (rating iniziale, divisioni, decadimento) stanno in config.yml sotto 'ranked'. Qui si decide solo se questo gioco assegna un rating.
ranked1 chiaveenabledtrueSuoni
Solo tre momenti. Svuota un valore per disattivarlo, oppure fallo puntare a un suono del tuo resource pack.
sounds3 chiavijoin"entity.experience_orb.pickup"start"entity.ender_dragon.growl"kill"entity.player.levelup" games/gungame.yml
Minigioco: Gun Game 29 impostazioni
games/gungame.ymlplugins/ShadowGames/games/gungame.yml enabledtruecountdown15smax-duration20mrespawn-delay2sbuildfalserules5 chiavidemote-on-deathfalsePerdere un livello alla morte allunga le partite e frustra: lascialo disattivato a meno che qualcuno non lo chieda.
any-weapon-countstruefinal-level-winstrueheal-on-level-uptrueSenza, il leader è anche il più malconcio: il gioco punisce chi lo sta vincendo.
announce-level-uptrueladder[{ item: {…}, name: "lang:content.game.gungame.wooden-sword" }, { item: {…}, name: "lang:content.game.gungame.stone-sword" }, { item: {…}, name: "lang:content.game.gungame.iron-sword" }, { item: {…}, name: "lang:content …+9
I livelli difficili vanno per ultimi: finire a mani nude è la tradizione, ed è ciò che rende possibile una rimonta.
spawn2 chiavisafe-distance10protection2smarkers2 chiaviQUARTZ_BLOCK"PLAYER_SPAWN"BEACON"CENTER"kits1 chiaveenabledfalseSidebar
Pronto così com'è. Cambialo liberamente: quello che scrivi qui batte il layout integrato del gioco, ed eliminare una sezione lo ripristina. L'elenco completo dei placeholder è in docs/11-HUD.md Una riga lang:<key> viene letta da lang/, nella lingua di ogni giocatore.
scoreboard2 chiavititle"&f&lGUN GAME"scoreboard.lines4 chiaviWAITING["&8&m ", "lang:content.board.map", "lang:content.board.players", "", "lang:content.board.waiting", "lang:content.board.needed", "&8&m ", "%server_ip%"]+7
COUNTDOWN["&8&m ", "lang:content.board.map", "lang:content.board.players", "", "lang:content.board.gungame.starting", "&8&m ", "%server_ip%"]+6
RUNNING["&8&m ", "lang:content.board.map", "lang:content.board.time", "", "lang:content.board.alive", "", "lang:content.board.kills", "lang:content.board.level", "lang:content.board.weapon", "", "l …+13
ENDING["&8&m ", "lang:content.board.gungame.winner", "", "lang:content.board.your-kills", "lang:content.board.place", "", "lang:content.board.thanks", "&8&m ", "%serve …+8
rewards4 chiavilose{ coins: 10, xp: 20 }win{ coins: 120, xp: 260 }kill{ coins: 6, xp: 12 }play{ coins: 5, xp: 10 }Ranked
La stessa progressione per tutti. Le impostazioni generali (rating iniziale, divisioni, decadimento) stanno in config.yml sotto 'ranked'. Qui si decide solo se questo gioco assegna un rating.
ranked1 chiaveenabledtrueSuoni
Solo tre momenti. Svuota un valore per disattivarlo, oppure fallo puntare a un suono del tuo resource pack.
sounds3 chiavijoin"entity.experience_orb.pickup"start"block.note_block.pling"kill"entity.player.levelup" games/hideandseek.yml
Minigioco: Hide and Seek 38 impostazioni
games/hideandseek.ymlplugins/ShadowGames/games/hideandseek.yml enabledtruecountdown20smax-duration10mbuildfalsehide7 chiavitime45sblind-seekerstruedisguiseBLOCKblocks[ ]Vuoto = il motore campiona la mappa: un giardino offre cespugli, un castello offre mattoni, e nessuno finisce per essere l'unico cactus al chiuso.
allow-changetruechange-cooldown10ssnap-to-gridtrueseekers6 chiaviratio0.2minimum1kit"hideandseek/seeker"respawn-delay5sradartrueradar-range20anticamp4 chiaviNon è facoltativo: senza, una partita finisce con tre persone dentro un muro e venti minuti in cui nessuno le trova.
enabledtrueidle-time45ssound"block.note_block.pling"reveal-after90smarkers3 chiaviLIME_WOOL"TEAM_SPAWN:HIDERS"RED_WOOL"TEAM_SPAWN:SEEKERS"BEACON"CENTER"kits1 chiaveenabledfalseSidebar
Pronto così com'è. Cambialo liberamente: quello che scrivi qui batte il layout integrato del gioco, ed eliminare una sezione lo ripristina. L'elenco completo dei placeholder è in docs/11-HUD.md Una riga lang:<key> viene letta da lang/, nella lingua di ogni giocatore.
scoreboard2 chiavititle"lang:content.board.hideandseek.title"scoreboard.lines4 chiaviWAITING["&8&m ", "lang:content.board.map", "lang:content.board.players", "", "lang:content.board.waiting", "lang:content.board.needed", "&8&m ", "%server_ip%"]+7
COUNTDOWN["&8&m ", "lang:content.board.map", "lang:content.board.players", "", "lang:content.board.hideandseek.starting", "&8&m ", "%server_ip%"]+6
RUNNING["&8&m ", "lang:content.board.map", "lang:content.board.time", "", "%repeat_teams%%team_color%%team_name% &8» &f%team_status%", "", "lang:content.board.kills", "", "lang:content.board.next-e …+11
ENDING["&8&m ", "lang:content.board.hideandseek.winner", "", "lang:content.board.your-kills", "lang:content.board.place", "", "lang:content.board.thanks", "&8&m ", "%s …+8
rewards4 chiavikill{ coins: 12, xp: 25 }win{ coins: 90, xp: 200 }lose{ coins: 12, xp: 24 }play{ coins: 5, xp: 10 }Suoni
Solo tre momenti. Svuota un valore per disattivarlo, oppure fallo puntare a un suono del tuo resource pack.
sounds3 chiavijoin"entity.experience_orb.pickup"start"block.note_block.bell"kill"entity.player.levelup"Ranked
Dipende troppo dalla mappa e da quanti giocano.
Rating iniziale, divisioni e decadimento stanno in config.yml sotto 'ranked'. Qui si decide solo se questo gioco assegna un rating.
ranked1 chiaveenabledfalse games/hungergames.yml
Minigioco: HungerGames 40 impostazioni
games/hungergames.ymlplugins/ShadowGames/games/hungergames.yml enabledtruecountdown60smax-duration30mlives1buildtruestart3 chiavifreeze30sTrenta secondi fermi su un piedistallo a fissare la cornucopia: è da lì che nasce tutta la tensione della partita.
invulnerable-during-freezetrueremove-pedestalstruechests2 chiavifill-on-starttrueone-timetruemarkers5 chiaviQUARTZ_BLOCK"PLAYER_SPAWN"BEACON"CENTER"CHEST"LOOT_CHEST:tier1"TRAPPED_CHEST"LOOT_CHEST:tier2"RED_WOOL"SPECTATOR_SPAWN"events[{ at: 8m, type: CHEST_REFILL }, { at: 12m, type: FEAST, chests: 4 }, { at: 16m, type: CHEST_REFILL }, { at: 18m, type: BORDER_SHRINK, to: 120, over: 5m }, { at: 24m, type: BROADCAST, message: "lang:content.event.deathm …+6
loot3 chiaviloot.tier13 chiavimin-stacks2max-stacks5entries[{ item: {…}, weight: 20 }, { item: {…}, weight: 24 }, { item: {…}, weight: 10 }, { item: {…}, weight: 18, amount-range: […] }, { item: {…}, weight: 18 }, { item: {…}, weight: 18 }, { item: {…}, weight: 26, amount-range …+10
loot.tier23 chiavimin-stacks4max-stacks7entries[{ item: {…}, weight: 18 }, { item: {…}, weight: 4, unique: true }, { item: {…}, weight: 12 }, { item: {…}, weight: 20, amount-range: […] }, { item: {…}, weight: 12 }, { item: {…}, weight: 3, unique: true }, { item: {…} …+8
loot.feast3 chiavimin-stacks6max-stacks9inherittier2kits1 chiaveenabledfalseSidebar
Pronto così com'è. Cambialo liberamente: quello che scrivi qui batte il layout integrato del gioco, ed eliminare una sezione lo ripristina. L'elenco completo dei placeholder è in docs/11-HUD.md Una riga lang:<key> viene letta da lang/, nella lingua di ogni giocatore.
scoreboard2 chiavititle"&6&lHUNGER GAMES"scoreboard.lines4 chiaviWAITING["&8&m ", "lang:content.board.map", "lang:content.board.players", "", "lang:content.board.waiting", "lang:content.board.needed", "&8&m ", "%server_ip%"]+7
COUNTDOWN["&8&m ", "lang:content.board.map", "lang:content.board.players", "", "lang:content.board.hungergames.starting", "&8&m ", "%server_ip%"]+6
RUNNING["&8&m ", "lang:content.board.map", "lang:content.board.time", "", "lang:content.board.alive", "", "lang:content.board.kills", "", "lang:content.board.next-event", "&7%next_event_time%", "&8 …+11
ENDING["&8&m ", "lang:content.board.hungergames.winner", "", "lang:content.board.your-kills", "lang:content.board.place", "", "lang:content.board.thanks", "&8&m ", "%s …+8
rewards5 chiaviwin{ coins: 200, xp: 450 }lose{ coins: 15, xp: 30 }kill{ coins: 15, xp: 35 }play{ coins: 5, xp: 10 }per-minute{ coins: 2, xp: 5 }Ranked
Il loot conta, ma il piazzamento su molte partite è onesto. Le impostazioni generali (rating iniziale, divisioni, decadimento) stanno in config.yml sotto 'ranked'. Qui si decide solo se questo gioco assegna un rating.
ranked1 chiaveenabledtrueSuoni
Solo tre momenti. Svuota un valore per disattivarlo, oppure fallo puntare a un suono del tuo resource pack.
sounds3 chiavijoin"entity.experience_orb.pickup"start"entity.wither.spawn"kill"entity.player.levelup" games/infection.yml
Minigioco: Infection 37 impostazioni
games/infection.ymlplugins/ShadowGames/games/infection.yml enabledtruecountdown20smax-duration8mrespawn-delay3sbuildtrueinfection4 chiavidelay20sinitial-ratio0.150.15 su venti giocatori fa tre zombie: la quantità che rende la partita tesa senza darla già per persa.
minimum-initial1patient-zero-buff[{ type: SPEED, amplifier: 1 }, { type: STRENGTH, amplifier: 0 }]+1
Senza questo bonus il primo zombie non prende mai nessuno.
zombies4 chiavirespawn-delay3skit"infection/zombie"glowtrueeffects[{ type: SPEED, amplifier: 0 }]survivors3 chiavikit"infection/survivor"buildtruebuild-blocks[OAK_PLANKS, IRON_BARS]last-survivor3 chiaviglow-alltruebroadcasttruebuff[{ type: SPEED, amplifier: 1 }, { type: REGENERATION, amplifier: 0 }]+1
markers3 chiaviLIME_WOOL"TEAM_SPAWN:SURVIVORS"GREEN_WOOL"TEAM_SPAWN:ZOMBIES"BEACON"CENTER"kits2 chiavienabledtruefolder"infection"Sidebar
Pronto così com'è. Cambialo liberamente: quello che scrivi qui batte il layout integrato del gioco, ed eliminare una sezione lo ripristina. L'elenco completo dei placeholder è in docs/11-HUD.md Una riga lang:<key> viene letta da lang/, nella lingua di ogni giocatore.
scoreboard2 chiavititle"&2&lINFECTION"scoreboard.lines4 chiaviWAITING["&8&m ", "lang:content.board.map", "lang:content.board.players", "", "lang:content.board.waiting", "lang:content.board.needed", "", "lang:content.board.kit", "&8&m …+9
COUNTDOWN["&8&m ", "lang:content.board.map", "lang:content.board.players", "", "lang:content.board.infection.starting", "", "lang:content.board.kit", "&8&m ", "%server_ip …+8
RUNNING["&8&m ", "lang:content.board.map", "lang:content.board.time", "", "%repeat_teams%%team_color%%team_name% &8» &f%team_status%", "", "lang:content.board.kills", "", "lang:content.board.next-e …+11
ENDING["&8&m ", "lang:content.board.infection.winner", "", "lang:content.board.your-kills", "lang:content.board.place", "", "lang:content.board.thanks", "&8&m ", "%ser …+8
rewards4 chiaviwin{ coins: 100, xp: 220 }lose{ coins: 20, xp: 40 }kill{ coins: 10, xp: 20 }play{ coins: 5, xp: 10 }Suoni
Solo tre momenti. Svuota un valore per disattivarlo, oppure fallo puntare a un suono del tuo resource pack.
sounds3 chiavijoin"entity.experience_orb.pickup"start"entity.zombie.ambient"kill"entity.player.levelup"Ranked
Sopravvivere è abilità, e le partite durano abbastanza.
Rating iniziale, divisioni e decadimento stanno in config.yml sotto 'ranked'. Qui si decide solo se questo gioco assegna un rating.
ranked1 chiaveenabledtrue games/kitpvp.yml
Minigioco: KitPvP 38 impostazioni
games/kitpvp.ymlplugins/ShadowGames/games/kitpvp.yml enabledtruecountdown10smax-duration10mrespawn-delay2skills-to-win0buildfalsefriendly-firetruespawn4 chiavismarttrueSenza questo il gioco si trasforma in spawn camping in due minuti.
safe-distance12protection3sbreak-on-attacktruestreaks3 chiavienabledtrueshutdown-bonus2.0Interrompere una lunga serie vale più della kill: è ciò che trasforma "quel giocatore sta vincendo" in "andiamo a prenderlo".
streaks.rewards3 chiavistreaks.rewards.31 chiaveeffects[{ type: SPEED, amplifier: 0, duration: 30s }]streaks.rewards.52 chiavibroadcasttrueeffects[{ type: REGENERATION, amplifier: 0, duration:…]streaks.rewards.103 chiavibroadcasttrueglowtrueitems[{ material: GOLDEN_APPLE, amount: 2 }]markers3 chiaviQUARTZ_BLOCK"PLAYER_SPAWN"BARRIER"NO_BUILD"BEACON"CENTER"kits3 chiavienabledtruefolder"kitpvp"default"warrior"Sidebar
Pronto così com'è. Cambialo liberamente: quello che scrivi qui batte il layout integrato del gioco, ed eliminare una sezione lo ripristina. L'elenco completo dei placeholder è in docs/11-HUD.md Una riga lang:<key> viene letta da lang/, nella lingua di ogni giocatore.
scoreboard2 chiavititle"&c&lKITPVP"scoreboard.lines4 chiaviWAITING["&8&m ", "lang:content.board.map", "lang:content.board.players", "", "lang:content.board.waiting", "lang:content.board.needed", "", "lang:content.board.kit", "&8&m …+9
COUNTDOWN["&8&m ", "lang:content.board.map", "lang:content.board.players", "", "lang:content.board.kitpvp.starting", "", "lang:content.board.kit", "&8&m ", "%server_ip%"]+8
RUNNING["&8&m ", "lang:content.board.map", "lang:content.board.time", "", "lang:content.board.alive", "", "lang:content.board.kills", "lang:content.board.streak", "", "lang:content.board.next-event …+12
ENDING["&8&m ", "lang:content.board.kitpvp.winner", "", "lang:content.board.your-kills", "lang:content.board.place", "", "lang:content.board.thanks", "&8&m ", "%server …+8
rewards4 chiavilose{ coins: 10, xp: 20 }win{ coins: 80, xp: 180 }kill{ coins: 6, xp: 12 }play{ coins: 5, xp: 10 }Ranked
Gli stessi kit per tutti. Le impostazioni generali (rating iniziale, divisioni, decadimento) stanno in config.yml sotto 'ranked'. Qui si decide solo se questo gioco assegna un rating.
ranked1 chiaveenabledtrueSuoni
Solo tre momenti. Svuota un valore per disattivarlo, oppure fallo puntare a un suono del tuo resource pack.
sounds3 chiavijoin"entity.experience_orb.pickup"start"block.note_block.pling"kill"entity.player.levelup" games/koth.yml
Minigioco: King of the Hill 30 impostazioni
games/koth.ymlplugins/ShadowGames/games/koth.yml enabledtruecountdown20smax-duration15mrespawn-delay5spoints-to-win300buildfalsehill7 chiaviradius8height6capture-time10spoints-per-second1contest-modePAUSEContendere la collina mette in pausa la cattura invece di azzerarla: azzerarla punisce due volte l'attaccante e rende imprendibile una collina difesa.
multiplefalseparticlestruemarkers2 chiaviRED_WOOL"TEAM_SPAWN"BEACON"CAPTURE_POINT"kits2 chiavienabledtruefolder"koth"Sidebar
Pronto così com'è. Cambialo liberamente: quello che scrivi qui batte il layout integrato del gioco, ed eliminare una sezione lo ripristina. L'elenco completo dei placeholder è in docs/11-HUD.md Una riga lang:<key> viene letta da lang/, nella lingua di ogni giocatore.
scoreboard2 chiavititle"&6&lKING OF THE HILL"scoreboard.lines4 chiaviWAITING["&8&m ", "lang:content.board.map", "lang:content.board.players", "", "lang:content.board.waiting", "lang:content.board.needed", "", "lang:content.board.kit", "&8&m …+9
COUNTDOWN["&8&m ", "lang:content.board.map", "lang:content.board.players", "", "lang:content.board.koth.starting", "", "lang:content.board.kit", "&8&m ", "%server_ip%"]+8
RUNNING["&8&m ", "lang:content.board.map", "lang:content.board.time", "", "%repeat_teams%%team_color%%team_name% &8» &f%team_status%", "", "lang:content.board.kills", "lang:content.board.hill", "la …+13
ENDING["&8&m ", "lang:content.board.koth.winner", "", "lang:content.board.your-kills", "lang:content.board.place", "", "lang:content.board.thanks", "&8&m ", "%server_i …+8
rewards4 chiaviwin{ coins: 130, xp: 280 }lose{ coins: 20, xp: 40 }kill{ coins: 6, xp: 12 }play{ coins: 5, xp: 10 }Suoni
Solo tre momenti. Svuota un valore per disattivarlo, oppure fallo puntare a un suono del tuo resource pack.
sounds3 chiavijoin"entity.experience_orb.pickup"start"block.beacon.activate"kill"entity.player.levelup"Ranked
Tenere una collina contro gli altri è pura abilità.
Rating iniziale, divisioni e decadimento stanno in config.yml sotto 'ranked'. Qui si decide solo se questo gioco assegna un rating.
ranked1 chiaveenabledtrue games/luckywars.yml
Minigioco: LuckyWars 31 impostazioni
games/luckywars.ymlplugins/ShadowGames/games/luckywars.yml Note del file
SkyWars in cui ogni blocco può salvarti o ucciderti.
enabledtruecountdown20sgrace-period10smax-duration20mlives1buildtruevoid1 chiavekill-below0markers4 chiaviBLUE_WOOL"TEAM_SPAWN"BEACON"CENTER"CHEST"LOOT_CHEST:island"RED_WOOL"SPECTATOR_SPAWN"Lucky block
Regola di bilanciamento: gli esiti negativi devono restare sotto il 25% del peso totale. Oltre quella soglia i giocatori smettono di romperli e il gioco smette di esistere.
lucky2 chiaviblockYELLOW_TERRACOTTAoutcomes[{ weight: 20, type: ITEMS, items: […] }, { weight: 18, type: ITEMS, items: […] }, { weight: 16, type: ITEMS, items: […] }, { weight: 14, type: ITEMS, items: […] }, { weight: 12, type: MOB, mob: ZOMBIE, amount: 3 }, { w …+13
loot1 chiaveloot.island3 chiavimin-stacks2max-stacks4entries[{ item: {…}, weight: 20 }, { item: {…}, weight: 20, amount-range: […] }, { item: {…}, weight: 20, amount-range: […] }]+2
events[{ at: 10m, type: BORDER_SHRINK, to: 100, over: 60s }, { at: 20m, type: END, outcome: DRAW }]+1
kits1 chiaveenabledfalseSidebar
Pronto così com'è. Cambialo liberamente: quello che scrivi qui batte il layout integrato del gioco, ed eliminare una sezione lo ripristina. L'elenco completo dei placeholder è in docs/11-HUD.md Una riga lang:<key> viene letta da lang/, nella lingua di ogni giocatore.
scoreboard2 chiavititle"&a&lLUCKYWARS"scoreboard.lines4 chiaviWAITING["&8&m ", "lang:content.board.map", "lang:content.board.players", "", "lang:content.board.waiting", "lang:content.board.needed", "&8&m ", "%server_ip%"]+7
COUNTDOWN["&8&m ", "lang:content.board.map", "lang:content.board.players", "", "lang:content.board.luckywars.starting", "&8&m ", "%server_ip%"]+6
RUNNING["&8&m ", "lang:content.board.map", "lang:content.board.time", "", "%repeat_teams%%team_color%%team_name% &8» &f%team_status%", "", "lang:content.board.kills", "", "lang:content.board.next-e …+11
ENDING["&8&m ", "lang:content.board.luckywars.winner", "", "lang:content.board.your-kills", "lang:content.board.place", "", "lang:content.board.thanks", "&8&m ", "%ser …+8
rewards4 chiavilose{ coins: 10, xp: 20 }win{ coins: 100, xp: 250 }kill{ coins: 10, xp: 25 }play{ coins: 5, xp: 10 }Suoni
Solo tre momenti. Svuota un valore per disattivarlo, oppure fallo puntare a un suono del tuo resource pack.
sounds3 chiavijoin"entity.experience_orb.pickup"start"entity.ender_dragon.growl"kill"entity.player.levelup"Ranked
I lucky block sono metà della partita: sarebbe una classifica della fortuna.
Rating iniziale, divisioni e decadimento stanno in config.yml sotto 'ranked'. Qui si decide solo se questo gioco assegna un rating.
ranked1 chiaveenabledfalse games/manhunt.yml
Minigioco: Manhunt 32 impostazioni
games/manhunt.ymlplugins/ShadowGames/games/manhunt.yml enabledtruecountdown20smax-duration60mbuildtrueobjectiveSURVIVEhead-start3mhunters3 chiavirespawn-delay10skit"manhunt/hunter"hunters.compass5 chiavienabledtrueupdate5sLe due manopole che decidono se il runner ha una possibilità. Aggiornamenti rari e bassa precisione = una caccia interessante.
inaccuracy0cross-dimensiontrueproximity-soundtruerunner3 chiavikit"manhunt/runner"max-health24radartruemarkers2 chiaviLIME_WOOL"TEAM_SPAWN:RUNNER"RED_WOOL"TEAM_SPAWN:HUNTERS"kits1 chiaveenabledfalseSidebar
Pronto così com'è. Cambialo liberamente: quello che scrivi qui batte il layout integrato del gioco, ed eliminare una sezione lo ripristina. L'elenco completo dei placeholder è in docs/11-HUD.md Una riga lang:<key> viene letta da lang/, nella lingua di ogni giocatore.
scoreboard2 chiavititle"&5&lMANHUNT"scoreboard.lines4 chiaviWAITING["&8&m ", "lang:content.board.map", "lang:content.board.players", "", "lang:content.board.waiting", "lang:content.board.needed", "&8&m ", "%server_ip%"]+7
COUNTDOWN["&8&m ", "lang:content.board.map", "lang:content.board.players", "", "lang:content.board.manhunt.starting", "&8&m ", "%server_ip%"]+6
RUNNING["&8&m ", "lang:content.board.map", "lang:content.board.time", "", "%repeat_teams%%team_color%%team_name% &8» &f%team_status%", "", "lang:content.board.kills", "", "lang:content.board.next-e …+11
ENDING["&8&m ", "lang:content.board.manhunt.winner", "", "lang:content.board.your-kills", "lang:content.board.place", "", "lang:content.board.thanks", "&8&m ", "%serve …+8
rewards4 chiaviwin{ coins: 250, xp: 500 }lose{ coins: 30, xp: 60 }kill{ coins: 20, xp: 40 }play{ coins: 10, xp: 20 }Suoni
Solo tre momenti. Svuota un valore per disattivarlo, oppure fallo puntare a un suono del tuo resource pack.
sounds3 chiavijoin"entity.experience_orb.pickup"start"entity.ender_dragon.growl"kill"entity.player.levelup"Ranked
Vale sia per il runner sia per i cacciatori.
Rating iniziale, divisioni e decadimento stanno in config.yml sotto 'ranked'. Qui si decide solo se questo gioco assegna un rating.
ranked1 chiaveenabledtrue games/murdermystery.yml
Minigioco: Murder Mystery 35 impostazioni
games/murdermystery.ymlplugins/ShadowGames/games/murdermystery.yml enabledtruecountdown20smax-duration8mlives1buildfalseroles3 chiavimurderers1detectives1roles.scale2 chiaviUn assassino su sedici non prende mai nessuno; due su sei chiudono il round in trenta secondi.
12{ murderers: 2, detectives: 1 }16{ murderers: 2, detectives: 2 }murderer2 chiavithrowabletruethrow-cooldown5sdetective1 chiavedrop-on-deathtrueinnocent1 chiavegold-needed10gold2 chiavispawn-interval10smax-on-ground20rules3 chiavifriendly-fire-penaltytrueSenza penalità l'innocente armato spara a tutti finché non colpisce l'assassino, e il gioco del sospetto evapora.
penaltyBOW_LOSTmurder-trail5smarkers3 chiaviQUARTZ_BLOCK"PLAYER_SPAWN"GOLD_BLOCK"GOLD_SPAWN"BEACON"CENTER"kits1 chiaveenabledfalseSidebar
Pronto così com'è. Cambialo liberamente: quello che scrivi qui batte il layout integrato del gioco, ed eliminare una sezione lo ripristina. L'elenco completo dei placeholder è in docs/11-HUD.md Una riga lang:<key> viene letta da lang/, nella lingua di ogni giocatore.
scoreboard2 chiavititle"&5&lMURDER MYSTERY"scoreboard.lines4 chiaviWAITING["&8&m ", "lang:content.board.map", "lang:content.board.players", "", "lang:content.board.waiting", "lang:content.board.needed", "&8&m ", "%server_ip%"]+7
COUNTDOWN["&8&m ", "lang:content.board.map", "lang:content.board.players", "", "lang:content.board.murdermystery.starting", "&8&m ", "%server_ip%"]+6
RUNNING["&8&m ", "lang:content.board.map", "lang:content.board.time", "", "lang:content.board.alive", "", "lang:content.board.kills", "lang:content.board.role", "", "lang:content.board.next-event", …+12
ENDING["&8&m ", "lang:content.board.murdermystery.winner", "", "lang:content.board.your-kills", "lang:content.board.place", "", "lang:content.board.thanks", "&8&m ", " …+8
rewards4 chiaviwin{ coins: 90, xp: 200 }lose{ coins: 10, xp: 20 }kill{ coins: 15, xp: 30 }play{ coins: 5, xp: 10 }Suoni
Solo tre momenti. Svuota un valore per disattivarlo, oppure fallo puntare a un suono del tuo resource pack.
sounds3 chiavijoin"entity.experience_orb.pickup"start"ambient.cave"kill"entity.player.levelup"Ranked
Il caso assegna il ruolo, e il ruolo cambia tutto.
Rating iniziale, divisioni e decadimento stanno in config.yml sotto 'ranked'. Qui si decide solo se questo gioco assegna un rating.
ranked1 chiaveenabledfalse games/oitc.yml
Minigioco: One in the Chamber 29 impostazioni
games/oitc.ymlplugins/ShadowGames/games/oitc.yml enabledtruecountdown15smax-duration10mrespawn-delay3slives3buildfalserules5 chiavione-hit-killtruesword-instant-killtruepickup-arrowstruearrows-per-kill1arrow-despawn5sSenza questo, dopo tre minuti il pavimento è pieno di frecce e chi le raccoglie diventa imbattibile.
spawn2 chiavisafe-distance10protection2smarkers2 chiaviQUARTZ_BLOCK"PLAYER_SPAWN"BEACON"CENTER"kits1 chiaveenabledfalseSidebar
Pronto così com'è. Cambialo liberamente: quello che scrivi qui batte il layout integrato del gioco, ed eliminare una sezione lo ripristina. L'elenco completo dei placeholder è in docs/11-HUD.md Una riga lang:<key> viene letta da lang/, nella lingua di ogni giocatore.
scoreboard2 chiavititle"&6&lONE IN THE CHAMBER"scoreboard.lines4 chiaviWAITING["&8&m ", "lang:content.board.map", "lang:content.board.players", "", "lang:content.board.waiting", "lang:content.board.needed", "&8&m ", "%server_ip%"]+7
COUNTDOWN["&8&m ", "lang:content.board.map", "lang:content.board.players", "", "lang:content.board.oitc.starting", "&8&m ", "%server_ip%"]+6
RUNNING["&8&m ", "lang:content.board.map", "lang:content.board.time", "", "lang:content.board.alive", "", "lang:content.board.kills", "", "lang:content.board.next-event", "&7%next_event_time%", "&8 …+11
ENDING["&8&m ", "lang:content.board.oitc.winner", "", "lang:content.board.your-kills", "lang:content.board.place", "", "lang:content.board.thanks", "&8&m ", "%server_i …+8
rewards4 chiavilose{ coins: 10, xp: 20 }win{ coins: 90, xp: 200 }kill{ coins: 8, xp: 16 }play{ coins: 5, xp: 10 }Ranked
Una freccia, un colpo: la fortuna conta poco. Le impostazioni generali (rating iniziale, divisioni, decadimento) stanno in config.yml sotto 'ranked'. Qui si decide solo se questo gioco assegna un rating.
ranked1 chiaveenabledtrueSuoni
Solo tre momenti. Svuota un valore per disattivarlo, oppure fallo puntare a un suono del tuo resource pack.
sounds3 chiavijoin"entity.experience_orb.pickup"start"block.note_block.pling"kill"entity.player.levelup" games/paintball.yml
Minigioco: Paintball 59 impostazioni
games/paintball.ymlplugins/ShadowGames/games/paintball.yml enabledtruecountdown20smax-duration10mrespawn-delay5sbuildfalsefriendly-firefalsemodeKILLSCome si vince.
KILLS - la prima squadra ad arrivare a 'kills-to-win' colpi
COVERAGE - vince chi ha dipinto più pavimento. Cambia quello che fanno i giocatori:
un colpo contro un muro vale qualcosa, e nascondersi in un
angolo non vale niente.kills-to-win50coverage-to-win70Solo COVERAGE: la quota di vernice che chiude la partita in anticipo, e quanti blocchi devono essere dipinti prima che conti (così nessuno vince con il primo colpo del round).
coverage-minimum200streak-announce5Quante kill di fila prima che la serie venga annunciata.
Le armi
La differenza tra paintball e una battaglia a palle di neve sta tutta qui, ed è fatta di quattro numeri: quanti pallini escono dalla canna, quanto si allargano, quanto devi aspettare per sparare di nuovo, e quanto è grande lo schizzo. Il resto è decorazione.
Continua a leggere
Tutti ricevono OGNI arma che possono usare e cambiano con la rotella: è un gioco arcade, e cambiare arma a metà scontro è metà del divertimento.
Il cooldown è per GIOCATORE, non per arma: cambiare arma per saltare l'attesa è la prima cosa che provano tutti, e renderebbe ogni arma veloce quanto la più veloce.
weapons4 chiaviweapons.rifle11 chiavidisplay-name"lang:content.game.paintball.rifle.name"description["lang:content.game.paintball.rifle.lore"]itemSNOWBALLslot0pellets1spread0.0speed1.8cooldown-ticks6ammo-cost1splat-radius1sound"entity.snowball.throw"rifle:
shotgun, sniperweapons.grenade11 chiavidisplay-name"lang:content.game.paintball.grenade.name"description["lang:content.game.paintball.grenade.lore"]itemFIRE_CHARGEslot3pellets1spread0.0speed1.1cooldown-ticks60ammo-cost6splat-radius4sound"entity.witch.throw"Riservala ai VIP togliendo il commento: permission: "shadowgames.paintball.grenade"
gun7 chiaviammo16Le munizioni con cui inizi un round, e il tetto massimo.
max-ammo32regen2sRigenerazione lenta ovunque, così non resti mai a secco per sempre.
trailstrueLa scia colorata di un pallino in volo: vedi da dove è arrivato un colpo, ed è questo che rende leggibile uno scontro a fuoco.
splattrueGli schizzi sono cosmetici in KILLS e sono il punteggio in COVERAGE.
splat-duration30ssplat-radius1ammo-stations2 chiaviLe stazioni di ricarica sono blocchi marker che piazzi tu sulla mappa. Dove le metti è una scelta di design: una stazione sicura è una stazione che nessuno si contende.
radius3per-tick4markers3 chiaviRED_WOOL"TEAM_SPAWN"DISPENSER"AMMO_STATION"BEACON"CENTER"kits1 chiaveenabledfalseSidebar
Pronto così com'è. Cambialo liberamente: quello che scrivi qui batte il layout integrato del gioco, ed eliminare una sezione lo ripristina. L'elenco completo dei placeholder è in docs/11-HUD.md Una riga lang:<key> viene letta da lang/, nella lingua di ogni giocatore.
scoreboard2 chiavititle"&d&lPAINTBALL"scoreboard.lines4 chiaviWAITING["&8&m ", "lang:content.board.map", "lang:content.board.players", "", "lang:content.board.waiting", "lang:content.board.needed", "&8&m ", "%server_ip%"]+7
COUNTDOWN["&8&m ", "lang:content.board.map", "lang:content.board.players", "", "lang:content.board.paintball.starting", "&8&m ", "%server_ip%"]+6
RUNNING["&8&m ", "lang:content.board.map", "lang:content.board.time", "", "%repeat_teams%%team_color%%team_name% &8» &f%team_status%", "", "lang:content.board.kills", "lang:content.board.ammo", "la …+13
ENDING["&8&m ", "lang:content.board.paintball.winner", "", "lang:content.board.your-kills", "lang:content.board.place", "", "lang:content.board.thanks", "&8&m ", "%ser …+8
rewards4 chiavilose{ coins: 12, xp: 24 }win{ coins: 100, xp: 220 }kill{ coins: 5, xp: 10 }play{ coins: 5, xp: 10 }Suoni
Solo tre momenti. Svuota un valore per disattivarlo, oppure fallo puntare a un suono del tuo resource pack.
sounds3 chiavijoin"entity.experience_orb.pickup"start"block.note_block.pling"kill"entity.slime.squish"Ranked
Mira e movimento, nient'altro.
Rating iniziale, divisioni e decadimento stanno in config.yml sotto 'ranked'. Qui si decide solo se questo gioco assegna un rating.
ranked1 chiaveenabledtrue games/parkour.yml
Minigioco: Parkour 37 impostazioni
games/parkour.ymlplugins/ShadowGames/games/parkour.yml enabledtruecountdown5smax-duration30mbuildfalsemodeFREEFREE = l'arena resta aperta e la gara è la classifica. RACE = partono tutti insieme e vince il primo che arriva.
checkpoints4 chiaviradius2strict-ordertrueBlocca le scorciatoie: quasi sempre è quello che vuoi.
sound"entity.experience_orb.pickup"beam-nexttruerules5 chiaviinvulnerabletruefall-damagefalsereset-below0no-flytrueno-collisiontrueCon più di due giocatori è essenziale: senza, la gente si spinge giù al primo salto.
records3 chiavienabledtrueshow-on-finishtruerecords.medals3 chiavigold45ssilver60sbronze90smarkers3 chiaviEMERALD_BLOCK"START"LIGHT_BLUE_WOOL"CHECKPOINT"GOLD_BLOCK"FINISH"kits1 chiaveenabledfalseSidebar
Pronto così com'è. Cambialo liberamente: quello che scrivi qui batte il layout integrato del gioco, ed eliminare una sezione lo ripristina. L'elenco completo dei placeholder è in docs/11-HUD.md Una riga lang:<key> viene letta da lang/, nella lingua di ogni giocatore.
scoreboard2 chiavititle"&a&lPARKOUR"scoreboard.lines4 chiaviWAITING["&8&m ", "lang:content.board.map", "lang:content.board.players", "", "lang:content.board.waiting", "lang:content.board.needed", "&8&m ", "%server_ip%"]+7
COUNTDOWN["&8&m ", "lang:content.board.map", "lang:content.board.players", "", "lang:content.board.parkour.starting", "&8&m ", "%server_ip%"]+6
RUNNING["&8&m ", "lang:content.board.map", "lang:content.board.time", "", "lang:content.board.alive", "", "lang:content.board.kills", "lang:content.board.checkpoint", "", "lang:content.board.next-e …+12
ENDING["&8&m ", "lang:content.board.parkour.winner", "", "lang:content.board.your-kills", "lang:content.board.place", "", "lang:content.board.thanks", "&8&m ", "%serve …+8
rewards6 chiavilose{ coins: 5, xp: 10 }win{ coins: 50, xp: 120 }finish{ coins: 50, xp: 100 }personal-best{ coins: 100, xp: 200 }map-record{ coins: 500, xp: 1000 }play{ coins: 5, xp: 10 }Suoni
Solo tre momenti. Svuota un valore per disattivarlo, oppure fallo puntare a un suono del tuo resource pack.
sounds2 chiavijoin"entity.experience_orb.pickup"start"entity.firework_rocket.launch"Ranked
Un tempo su un percorso fisso è la definizione stessa di abilità.
Rating iniziale, divisioni e decadimento stanno in config.yml sotto 'ranked'. Qui si decide solo se questo gioco assegna un rating.
ranked1 chiaveenabledtrue games/quake.yml
Minigioco: Quake 32 impostazioni
games/quake.ymlplugins/ShadowGames/games/quake.yml enabledtruecountdown15smax-duration10mrespawn-delay1skills-to-win25buildfalserailgun6 chiavireload1.2spiercingtrueIl raggio attraversa i giocatori: allinearne due e prenderli entrambi è il momento migliore della partita.
max-range100sound-fire"entity.firework_rocket.blast"sound-hit"entity.player.levelup"knockback0.4movement1 chiavespeed0.16Quake è un gioco di movimento, non di combattimento.
powerups2 chiavienabledtruerespawn30smarkers3 chiaviQUARTZ_BLOCK"PLAYER_SPAWN"GOLD_BLOCK"POWERUP"BEACON"CENTER"kits1 chiaveenabledfalseSidebar
Pronto così com'è. Cambialo liberamente: quello che scrivi qui batte il layout integrato del gioco, ed eliminare una sezione lo ripristina. L'elenco completo dei placeholder è in docs/11-HUD.md Una riga lang:<key> viene letta da lang/, nella lingua di ogni giocatore.
scoreboard2 chiavititle"&b&lQUAKE"scoreboard.lines4 chiaviWAITING["&8&m ", "lang:content.board.map", "lang:content.board.players", "", "lang:content.board.waiting", "lang:content.board.needed", "&8&m ", "%server_ip%"]+7
COUNTDOWN["&8&m ", "lang:content.board.map", "lang:content.board.players", "", "lang:content.board.quake.starting", "&8&m ", "%server_ip%"]+6
RUNNING["&8&m ", "lang:content.board.map", "lang:content.board.time", "", "lang:content.board.alive", "", "lang:content.board.kills", "lang:content.board.kills-to-win", "lang:content.board.reload", …+13
ENDING["&8&m ", "lang:content.board.quake.winner", "", "lang:content.board.your-kills", "lang:content.board.place", "", "lang:content.board.thanks", "&8&m ", "%server_ …+8
rewards4 chiavilose{ coins: 10, xp: 20 }win{ coins: 100, xp: 220 }kill{ coins: 5, xp: 10 }play{ coins: 5, xp: 10 }Ranked
Mira pura. Le impostazioni generali (rating iniziale, divisioni, decadimento) stanno in config.yml sotto 'ranked'. Qui si decide solo se questo gioco assegna un rating.
ranked1 chiaveenabledtrueSuoni
Solo tre momenti. Svuota un valore per disattivarlo, oppure fallo puntare a un suono del tuo resource pack.
sounds3 chiavijoin"entity.experience_orb.pickup"start"entity.blaze.shoot"kill"entity.firework_rocket.blast" games/race.yml
Minigioco: Race 32 impostazioni
games/race.ymlplugins/ShadowGames/games/race.yml enabledtruecountdown20smax-duration10mlaps3buildfalsemodeFOOTFOOT | BOAT | ELYTRA | HORSE
vehicle4 chiaviboat-typeOAKhorse-speed0.35rocket-regen3srocket-max8checkpoints4 chiaviradius4strict-ordertrueSenza un ordine rigido ogni percorso ha una scorciatoia, e la scorciatoia è sempre più efficiente del percorso.
sound"entity.experience_orb.pickup"beam-nexttruerules3 chiavipvpfalseoff-track-respawntruerecord-timestruemarkers3 chiaviEMERALD_BLOCK"START"LIGHT_BLUE_WOOL"CHECKPOINT"GOLD_BLOCK"FINISH"kits1 chiaveenabledfalseSidebar
Pronto così com'è. Cambialo liberamente: quello che scrivi qui batte il layout integrato del gioco, ed eliminare una sezione lo ripristina. L'elenco completo dei placeholder è in docs/11-HUD.md Una riga lang:<key> viene letta da lang/, nella lingua di ogni giocatore.
scoreboard2 chiavititle"&e&lRACE"scoreboard.lines4 chiaviWAITING["&8&m ", "lang:content.board.map", "lang:content.board.players", "", "lang:content.board.waiting", "lang:content.board.needed", "&8&m ", "%server_ip%"]+7
COUNTDOWN["&8&m ", "lang:content.board.map", "lang:content.board.players", "", "lang:content.board.race.starting", "&8&m ", "%server_ip%"]+6
RUNNING["&8&m ", "lang:content.board.map", "lang:content.board.time", "", "lang:content.board.alive", "", "lang:content.board.kills", "lang:content.board.lap", "lang:content.board.position", "", "l …+13
ENDING["&8&m ", "lang:content.board.race.winner", "", "lang:content.board.your-kills", "lang:content.board.place", "", "lang:content.board.thanks", "&8&m ", "%server_i …+8
rewards3 chiaviwin{ coins: 90, xp: 200 }lose{ coins: 12, xp: 24 }play{ coins: 5, xp: 10 }Suoni
Solo tre momenti. Svuota un valore per disattivarlo, oppure fallo puntare a un suono del tuo resource pack.
sounds2 chiavijoin"entity.experience_orb.pickup"start"entity.firework_rocket.launch"Ranked
Lo stesso tracciato per tutti.
Rating iniziale, divisioni e decadimento stanno in config.yml sotto 'ranked'. Qui si decide solo se questo gioco assegna un rating.
ranked1 chiaveenabledtrue games/skywars.yml
Minigioco: SkyWars 50 impostazioni
games/skywars.ymlplugins/ShadowGames/games/skywars.yml Note del file
Isole nel vuoto, chest da saccheggiare, vince l'ultimo rimasto in piedi. Riferimento completo: docs/giochi/skywars.md
Ogni valore qui vale per OGNI arena SkyWars. Per cambiarne uno su una singola mappa, riscrivilo nel file di quell'arena.
enabledtruecountdown20scountdown-full10sgrace-period10smax-duration20mend-duration10slives1Niente respawn: chi muore diventa spettatore.
friendly-firefalsebuildtrueGabbie
Un cubo di vetro intorno a ogni spawn durante il conto alla rovescia. Non è decorazione: senza, metà della lobby se ne va dall'isola mentre l'altra metà aspetta, e quella metà si prende una kill gratis.
cages3 chiavienabledtruematerial"%team%_STAINED_GLASS"%team% diventa il colore della squadra: una gabbia per colore.
remove-on-starttrueIl vuoto
void1 chiavekill-below0Sotto questa altezza muori.
assist-window10sChi ha messo a segno un colpo negli ultimi N secondi si prende la kill anche quando a uccidere è stato il vuoto. In SkyWars sono la maggior parte delle kill: non attribuirle a nessuno renderebbe inutile la statistica.
Marker
Quale blocco significa cosa. Piazzali nella schematic mentre costruisci: il motore li legge, registra la posizione e li rimuove. /sg marker list skywars li mostra in gioco.
markers5 chiaviBLUE_WOOL"TEAM_SPAWN"BEACON"CENTER"CHEST"LOOT_CHEST:island"TRAPPED_CHEST"LOOT_CHEST:middle"RED_WOOL"SPECTATOR_SPAWN"Eventi programmati
Sono ciò che dà forma a una partita. Cambiarli qui cambia il ritmo di ogni mappa; cambiarli nel file di un'arena cambia solo quella.
events[{ at: 5m, type: CHEST_REFILL }, { at: 10m, type: CHEST_REFILL }, { at: 12m, type: BORDER_SHRINK, to: 120, over: 60s }, { at: 16m, type: SUDDEN_DEATH }, { at: 20m, type: END, outcome: DRAW }]+4
Loot
Una tabella pesata. "unique" impedisce che una chest contenga tre spade di diamante.
loot3 chiaviloot.island4 chiavimin-stacks4max-stacks7clear-firsttrueentries[{ item: {…}, weight: 30 }, { item: {…}, weight: 8 }, { item: {…}, weight: 1, unique: true }, { item: {…}, weight: 12 }, { item: {…}, weight: 20, amount-range: […] }, { item: {…}, weight: 20 }, { item: {…}, weight: 10 } …+19
loot.middle4 chiavimin-stacks6max-stacks10clear-firsttrueentries[{ item: {…}, weight: 20 }, { item: {…}, weight: 6, unique: true }, { item: {…}, weight: 12 }, { item: {…}, weight: 20, amount-range: […] }, { item: {…}, weight: 14 }, { item: {…}, weight: 3, unique: true }, { item: {…} …+13
loot.refill2 chiaviIl refill usa di nuovo la tabella del centro, senza ripeterla.
inheritmiddleclear-firsttrueKit
Stanno in kits/skywars/. Con enabled: false tutti partono uguali, che è la versione classica del gioco.
kits5 chiavienabledtruefolder"skywars"include-commontruedefault"warrior"remember-last-choicetrueSidebar
Pronto così com'è. Cambialo liberamente: quello che scrivi qui batte il layout integrato del gioco, ed eliminare una sezione lo ripristina. L'elenco completo dei placeholder è in docs/11-HUD.md Una riga lang:<key> viene letta da lang/, nella lingua di ogni giocatore.
scoreboard2 chiavititle"&b&lSKYWARS"scoreboard.lines4 chiaviWAITING["&8&m ", "lang:content.board.map", "lang:content.board.players", "", "lang:content.board.waiting", "lang:content.board.needed", "", "lang:content.board.kit", "&8&m …+9
COUNTDOWN["&8&m ", "lang:content.board.map", "lang:content.board.players", "", "lang:content.board.skywars.starting", "", "lang:content.board.kit", "&8&m ", "%server_ip%"]+8
RUNNING["&8&m ", "lang:content.board.map", "lang:content.board.time", "", "lang:content.board.alive", "", "lang:content.board.kills", "lang:content.board.chests", "", "lang:content.board.next-event …+12
ENDING["&8&m ", "lang:content.board.skywars.winner", "", "lang:content.board.your-kills", "lang:content.board.place", "", "lang:content.board.thanks", "&8&m ", "%serve …+8
Ricompense
rewards5 chiaviwin{ coins: 100, xp: 250 }lose{ coins: 10, xp: 25 }kill{ coins: 10, xp: 25 }play{ coins: 5, xp: 10 }per-minute{ coins: 2, xp: 4 }Suoni
Svuota un valore per disattivarlo.
sounds3 chiavijoin"entity.experience_orb.pickup"start"entity.ender_dragon.growl"kill"entity.player.levelup"protection1 chiaveoriginal-blocks-unbreakabletrueRanked
Il loot aggiunge varianza, ma su cento partite vince l'abilità. Le impostazioni generali (rating iniziale, divisioni, decadimento) stanno in config.yml sotto 'ranked'. Qui si decide solo se questo gioco assegna un rating.
ranked1 chiaveenabledtrue games/speedbuilders.yml
Minigioco: Speed Builders 32 impostazioni
games/speedbuilders.ymlplugins/ShadowGames/games/speedbuilders.yml enabledtruecountdown20smax-duration20mrounds8lives5round4 chiavipreview-time10sbuild-time60stime-decrease5smin-time20sbuilds4 chiavifolder"speedbuilders"orderBY_SIZEexact-materialstruedecoys2I blocchi che non fanno nulla sono ciò che rende il gioco difficile senza allungare i tempi.
scoring4 chiavicorrect1wrong-1pass-threshold0.9perfect-bonus50markers3 chiaviLIME_WOOL"PLOT"WHITE_WOOL"PREVIEW"BEACON"CENTER"kits1 chiaveenabledfalseSidebar
Pronto così com'è. Cambialo liberamente: quello che scrivi qui batte il layout integrato del gioco, ed eliminare una sezione lo ripristina. L'elenco completo dei placeholder è in docs/11-HUD.md Una riga lang:<key> viene letta da lang/, nella lingua di ogni giocatore.
scoreboard2 chiavititle"&e&lSPEED BUILDERS"scoreboard.lines4 chiaviWAITING["&8&m ", "lang:content.board.map", "lang:content.board.players", "", "lang:content.board.waiting", "lang:content.board.needed", "&8&m ", "%server_ip%"]+7
COUNTDOWN["&8&m ", "lang:content.board.map", "lang:content.board.players", "", "lang:content.board.speedbuilders.starting", "&8&m ", "%server_ip%"]+6
RUNNING["&8&m ", "lang:content.board.map", "lang:content.board.time", "", "lang:content.board.alive", "", "lang:content.board.kills", "", "lang:content.board.next-event", "&7%next_event_time%", "&8 …+11
ENDING["&8&m ", "lang:content.board.speedbuilders.winner", "", "lang:content.board.your-kills", "lang:content.board.place", "", "lang:content.board.thanks", "&8&m ", " …+8
rewards3 chiaviwin{ coins: 200, xp: 420 }lose{ coins: 25, xp: 50 }play{ coins: 8, xp: 16 }Suoni
Solo tre momenti. Svuota un valore per disattivarlo, oppure fallo puntare a un suono del tuo resource pack.
sounds2 chiavijoin"entity.experience_orb.pickup"start"block.beacon.activate"Ranked
Velocità e memoria, entrambe misurabili.
Rating iniziale, divisioni e decadimento stanno in config.yml sotto 'ranked'. Qui si decide solo se questo gioco assegna un rating.
ranked1 chiaveenabledtrue games/spleef.yml
Minigioco: Spleef 30 impostazioni
games/spleef.ymlplugins/ShadowGames/games/spleef.yml enabledtruecountdown15smax-duration8mlives1buildfalsefloor3 chiavimaterialSNOW_BLOCKinstant-breaktruedropsfalsemodes5 chiavidefaultclassicclassic{ kit: "spleef/shovel" }bow{ kit: "spleef/bow", arrows-break-floor: true }ender{ kit: "spleef/ender", pearl-breaks-floor: true }splegg{ kit: "spleef/splegg", egg-breaks-floor: true }rules3 chiavipvpfalsekill-below0only-floor-materialtrueImpedisce di scavare i muri dell'arena, che è l'errore più comune quando si costruisce una nuova mappa.
markers2 chiaviQUARTZ_BLOCK"PLAYER_SPAWN"BEACON"CENTER"kits1 chiaveenabledfalseSidebar
Pronto così com'è. Cambialo liberamente: quello che scrivi qui batte il layout integrato del gioco, ed eliminare una sezione lo ripristina. L'elenco completo dei placeholder è in docs/11-HUD.md Una riga lang:<key> viene letta da lang/, nella lingua di ogni giocatore.
scoreboard2 chiavititle"&f&lSPLEEF"scoreboard.lines4 chiaviWAITING["&8&m ", "lang:content.board.map", "lang:content.board.players", "", "lang:content.board.waiting", "lang:content.board.needed", "&8&m ", "%server_ip%"]+7
COUNTDOWN["&8&m ", "lang:content.board.map", "lang:content.board.players", "", "lang:content.board.spleef.starting", "&8&m ", "%server_ip%"]+6
RUNNING["&8&m ", "lang:content.board.map", "lang:content.board.time", "", "lang:content.board.alive", "", "lang:content.board.kills", "", "lang:content.board.next-event", "&7%next_event_time%", "&8 …+11
ENDING["&8&m ", "lang:content.board.spleef.winner", "", "lang:content.board.your-kills", "lang:content.board.place", "", "lang:content.board.thanks", "&8&m ", "%server …+8
rewards3 chiaviwin{ coins: 60, xp: 140 }lose{ coins: 8, xp: 16 }play{ coins: 5, xp: 10 }Suoni
Solo tre momenti. Svuota un valore per disattivarlo, oppure fallo puntare a un suono del tuo resource pack.
sounds2 chiavijoin"entity.experience_orb.pickup"start"block.snow.break"Ranked
Niente item, niente fortuna: solo movimento.
Rating iniziale, divisioni e decadimento stanno in config.yml sotto 'ranked'. Qui si decide solo se questo gioco assegna un rating.
ranked1 chiaveenabledtrue games/sumo.yml
Minigioco: Sumo 28 impostazioni
games/sumo.ymlplugins/ShadowGames/games/sumo.yml enabledtruecountdown5smax-duration5mrounds3round-duration90sbuildfalserules3 chiaviknockback-multiplier1.4L'unica vera manopola: 1.0 fa partite lunghissime, 2.0 le fa da tre minuti. 1.4 è il punto in cui il gioco funziona.
kill-below0kit"sumo/default"shrink3 chiavienabledtruestart-at30severy15smarkers2 chiaviQUARTZ_BLOCK"TEAM_SPAWN"BEACON"CENTER"kits1 chiaveenabledfalseSidebar
Pronto così com'è. Cambialo liberamente: quello che scrivi qui batte il layout integrato del gioco, ed eliminare una sezione lo ripristina. L'elenco completo dei placeholder è in docs/11-HUD.md Una riga lang:<key> viene letta da lang/, nella lingua di ogni giocatore.
scoreboard2 chiavititle"&e&lSUMO"scoreboard.lines4 chiaviWAITING["&8&m ", "lang:content.board.map", "lang:content.board.players", "", "lang:content.board.waiting", "lang:content.board.needed", "&8&m ", "%server_ip%"]+7
COUNTDOWN["&8&m ", "lang:content.board.map", "lang:content.board.players", "", "lang:content.board.sumo.starting", "&8&m ", "%server_ip%"]+6
RUNNING["&8&m ", "lang:content.board.map", "lang:content.board.time", "", "lang:content.board.alive", "", "lang:content.board.kills", "", "lang:content.board.next-event", "&7%next_event_time%", "&8 …+11
ENDING["&8&m ", "lang:content.board.sumo.winner", "", "lang:content.board.your-kills", "lang:content.board.place", "", "lang:content.board.thanks", "&8&m ", "%server_i …+8
rewards4 chiavikill{ coins: 15, xp: 30 }win{ coins: 50, xp: 120 }lose{ coins: 10, xp: 20 }play{ coins: 5, xp: 10 }Ranked
Niente equipaggiamento, niente casualità: solo chi spinge meglio. Le impostazioni generali (rating iniziale, divisioni, decadimento) stanno in config.yml sotto 'ranked'. Qui si decide solo se questo gioco assegna un rating.
ranked1 chiaveenabledtrueSuoni
Solo tre momenti. Svuota un valore per disattivarlo, oppure fallo puntare a un suono del tuo resource pack.
sounds3 chiavijoin"entity.experience_orb.pickup"start"block.note_block.bell"kill"entity.player.levelup" games/tdm.yml
Minigioco: Team Deathmatch 30 impostazioni
games/tdm.ymlplugins/ShadowGames/games/tdm.yml enabledtruecountdown20smax-duration12mrespawn-delay3skills-to-win50buildfalsefriendly-firefalserules2 chiavispawn-camp-penaltytruespawn-camp-radius15spawn3 chiavismarttrueLa differenza tra un gioco giocabile e uno in cui muori ogni tre secondi appena rinato.
protection3sbreak-on-attacktruemarkers3 chiaviRED_WOOL"TEAM_SPAWN"BARRIER"NO_BUILD"BEACON"CENTER"kits2 chiavienabledtruefolder"tdm"Sidebar
Pronto così com'è. Cambialo liberamente: quello che scrivi qui batte il layout integrato del gioco, ed eliminare una sezione lo ripristina. L'elenco completo dei placeholder è in docs/11-HUD.md Una riga lang:<key> viene letta da lang/, nella lingua di ogni giocatore.
scoreboard2 chiavititle"&c&lTEAM DEATHMATCH"scoreboard.lines4 chiaviWAITING["&8&m ", "lang:content.board.map", "lang:content.board.players", "", "lang:content.board.waiting", "lang:content.board.needed", "", "lang:content.board.kit", "&8&m …+9
COUNTDOWN["&8&m ", "lang:content.board.map", "lang:content.board.players", "", "lang:content.board.tdm.starting", "", "lang:content.board.kit", "&8&m ", "%server_ip%"]+8
RUNNING["&8&m ", "lang:content.board.map", "lang:content.board.time", "", "%repeat_teams%%team_color%%team_name% &8» &f%team_status%", "", "lang:content.board.kills", "", "lang:content.board.next-e …+11
ENDING["&8&m ", "lang:content.board.tdm.winner", "", "lang:content.board.your-kills", "lang:content.board.place", "", "lang:content.board.thanks", "&8&m ", "%server_ip …+8
rewards4 chiaviwin{ coins: 120, xp: 250 }lose{ coins: 20, xp: 40 }kill{ coins: 6, xp: 12 }play{ coins: 5, xp: 10 }Ranked
Squadre bilanciate, un obiettivo chiaro. Le impostazioni generali (rating iniziale, divisioni, decadimento) stanno in config.yml sotto 'ranked'. Qui si decide solo se questo gioco assegna un rating.
ranked1 chiaveenabledtrueSuoni
Solo tre momenti. Svuota un valore per disattivarlo, oppure fallo puntare a un suono del tuo resource pack.
sounds3 chiavijoin"entity.experience_orb.pickup"start"entity.ender_dragon.growl"kill"entity.player.levelup" games/tntrun.yml
Minigioco: TNT Run 24 impostazioni
games/tntrun.ymlplugins/ShadowGames/games/tntrun.yml enabledtruecountdown15smax-duration8mlives1buildfalsefloor2 chiavifall-delay0.5sMezzo secondo: istantaneo vorrebbe dire morire al primo passo.
sound"block.sand.break"rules3 chiavipvpfalsekill-below0double-jumpfalsemarkers2 chiaviQUARTZ_BLOCK"PLAYER_SPAWN"BEACON"CENTER"kits1 chiaveenabledfalseSidebar
Pronto così com'è. Cambialo liberamente: quello che scrivi qui batte il layout integrato del gioco, ed eliminare una sezione lo ripristina. L'elenco completo dei placeholder è in docs/11-HUD.md Una riga lang:<key> viene letta da lang/, nella lingua di ogni giocatore.
scoreboard2 chiavititle"&c&lTNT RUN"scoreboard.lines4 chiaviWAITING["&8&m ", "lang:content.board.map", "lang:content.board.players", "", "lang:content.board.waiting", "lang:content.board.needed", "&8&m ", "%server_ip%"]+7
COUNTDOWN["&8&m ", "lang:content.board.map", "lang:content.board.players", "", "lang:content.board.tntrun.starting", "&8&m ", "%server_ip%"]+6
RUNNING["&8&m ", "lang:content.board.map", "lang:content.board.time", "", "lang:content.board.alive", "", "lang:content.board.kills", "", "lang:content.board.next-event", "&7%next_event_time%", "&8 …+11
ENDING["&8&m ", "lang:content.board.tntrun.winner", "", "lang:content.board.your-kills", "lang:content.board.place", "", "lang:content.board.thanks", "&8&m ", "%server …+8
rewards3 chiaviwin{ coins: 60, xp: 140 }lose{ coins: 8, xp: 16 }play{ coins: 5, xp: 10 }Suoni
Solo tre momenti. Svuota un valore per disattivarlo, oppure fallo puntare a un suono del tuo resource pack.
sounds2 chiavijoin"entity.experience_orb.pickup"start"entity.tnt.primed"Ranked
Niente item, niente fortuna: solo movimento.
Rating iniziale, divisioni e decadimento stanno in config.yml sotto 'ranked'. Qui si decide solo se questo gioco assegna un rating.
ranked1 chiaveenabledtrue games/uhc.yml
Minigioco: UHC 45 impostazioni
games/uhc.ymlplugins/ShadowGames/games/uhc.yml enabledtruecountdown60smax-duration120mlives1buildtruepvp-at20mscatter4 chiaviradius800min-distance150safe-surfacetrueMai dentro la roccia, mai in un lago, mai sopra la lava.
team-togethertruerules7 chiavinatural-regenerationfalsegolden-apple-heal4enchanted-applesfalsenethertruestrength-nerftrueextra-dropstrueapple-drop-chance0.05scenarios10 chiaviGli scenari classici. Ognuno è un interruttore, non una classe.
cutcleanfalsetimberfalsebleedingfalsefirelessfalserodlessfalsegoldlessfalsebowlessfalsevanilla-plustruehastey-boysfalsediamondlessfalsemarkers2 chiaviBEACON"CENTER"RED_WOOL"SPECTATOR_SPAWN"events[{ at: 0m, type: BROADCAST, message: "lang:content.event.uhc-pvp-in-20" }, { at: 20m, type: PVP_ON }, { at: 40m, type: BORDER_SHRINK, to: 400, over: 10m }, { at: 60m, type: BORDER_SHRINK, to: 150, over: 10m }, { at: 80m …+6
La timeline è ciò che rende una partita UHC diversa da un'altra: cambiarla fa più che cambiare la mappa.
kits1 chiaveenabledfalseSidebar
Pronto così com'è. Cambialo liberamente: quello che scrivi qui batte il layout integrato del gioco, ed eliminare una sezione lo ripristina. L'elenco completo dei placeholder è in docs/11-HUD.md Una riga lang:<key> viene letta da lang/, nella lingua di ogni giocatore.
scoreboard2 chiavititle"&4&lUHC"scoreboard.lines4 chiaviWAITING["&8&m ", "lang:content.board.map", "lang:content.board.players", "", "lang:content.board.waiting", "lang:content.board.needed", "&8&m ", "%server_ip%"]+7
COUNTDOWN["&8&m ", "lang:content.board.map", "lang:content.board.players", "", "lang:content.board.uhc.starting", "&8&m ", "%server_ip%"]+6
RUNNING["&8&m ", "lang:content.board.map", "lang:content.board.time", "", "lang:content.board.alive", "", "lang:content.board.kills", "", "lang:content.board.next-event", "&7%next_event_time%", "&8 …+11
ENDING["&8&m ", "lang:content.board.uhc.winner", "", "lang:content.board.your-kills", "lang:content.board.place", "", "lang:content.board.thanks", "&8&m ", "%server_ip …+8
rewards5 chiaviwin{ coins: 400, xp: 900 }lose{ coins: 25, xp: 50 }kill{ coins: 30, xp: 70 }play{ coins: 10, xp: 20 }per-minute{ coins: 3, xp: 6 }Ranked
Lunga e dura, ma decisa dalle scelte. Le impostazioni generali (rating iniziale, divisioni, decadimento) stanno in config.yml sotto 'ranked'. Qui si decide solo se questo gioco assegna un rating.
ranked1 chiaveenabledtrueSuoni
Solo tre momenti. Svuota un valore per disattivarlo, oppure fallo puntare a un suono del tuo resource pack.
sounds3 chiavijoin"entity.experience_orb.pickup"start"entity.wither.spawn"kill"entity.player.levelup" games/woolwars.yml
Minigioco: Wool Wars 29 impostazioni
games/woolwars.ymlplugins/ShadowGames/games/woolwars.yml enabledtruecountdown20smax-duration15mrespawn-delay5srounds3friendly-firefalsebuildtruewool3 chiaviinfinitetruebreak-enemytruebreak-ownfalseNon puoi rompere la tua lana: nessuno può disfare il proprio lavoro per sbaglio, e quello che è tuo resta tuo finché qualcuno non viene a prenderselo.
markers3 chiaviRED_WOOL"TEAM_SPAWN"WHITE_WOOL"WOOL_AREA"BEACON"CENTER"kits3 chiavienabledtruefolder"woolwars"default"warrior"Sidebar
Pronto così com'è. Cambialo liberamente: quello che scrivi qui batte il layout integrato del gioco, ed eliminare una sezione lo ripristina. L'elenco completo dei placeholder è in docs/11-HUD.md Una riga lang:<key> viene letta da lang/, nella lingua di ogni giocatore.
scoreboard2 chiavititle"&d&lWOOL WARS"scoreboard.lines4 chiaviWAITING["&8&m ", "lang:content.board.map", "lang:content.board.players", "", "lang:content.board.waiting", "lang:content.board.needed", "", "lang:content.board.kit", "&8&m …+9
COUNTDOWN["&8&m ", "lang:content.board.map", "lang:content.board.players", "", "lang:content.board.woolwars.starting", "", "lang:content.board.kit", "&8&m ", "%server_ip% …+8
RUNNING["&8&m ", "lang:content.board.map", "lang:content.board.time", "", "%repeat_teams%%team_color%%team_name% &8» &f%team_extra% &8(&f%team_score%&8)", "", "lang:content.board.kills", "", "lang: …+11
ENDING["&8&m ", "lang:content.board.woolwars.winner", "", "lang:content.board.your-kills", "lang:content.board.place", "", "lang:content.board.thanks", "&8&m ", "%serv …+8
rewards4 chiaviwin{ coins: 120, xp: 260 }lose{ coins: 20, xp: 40 }kill{ coins: 6, xp: 12 }play{ coins: 5, xp: 10 }Ranked
Squadre, un obiettivo, niente loot casuale. Le impostazioni generali (rating iniziale, divisioni, decadimento) stanno in config.yml sotto 'ranked'. Qui si decide solo se questo gioco assegna un rating.
ranked1 chiaveenabledtrueSuoni
Solo tre momenti. Svuota un valore per disattivarlo, oppure fallo puntare a un suono del tuo resource pack.
sounds3 chiavijoin"entity.experience_orb.pickup"start"block.note_block.pling"kill"entity.player.levelup"Lingue
I testi che il plugin mostra ai giocatori, un file per lingua.
lang/
Testi e messaggi 2 file
lang/plugins/ShadowGames/lang/ Note del file
ShadowGames - Inglese Ogni chiave può avere quattro varianti indipendenti:
key -> chat key@title -> titolo key@subtitle -> sottotitolo key@actionbar -> action bar key@sound -> suono
Svuotarne una la disattiva. È così che zittisci un messaggio senza toccare codice: match.player-joined: ""
I colori usano i soliti codici con la &. I tag più ricchi funzionano ancora:
<gradient:#FFD700:#FFA500>GOLD</gradient>
Una chiave che manca qui viene letta dalla copia di questa lingua dentro il jar del plugin, poi dalla lingua predefinita, poi dall'inglese; solo una chiave che manca ovunque compare tra graffe, così la lacuna è evidente.
Tutti i messaggi che il plugin mostra ai giocatori, un file per lingua. Le chiavi non sono elencate una per una: qui ci sono i file, quanti testi contengono e i segnaposto che usano.
| File | Lingua | Testi |
|---|---|---|
lang/en_US.yml riferimento | — | 1847 |
lang/it_IT.yml | — | 1847 |
Segnaposto più usati
Il plugin li sostituisce con il valore giusto: vanno lasciati scritti così.
%prefix%%count%%player%%time%%id%%game%%winner%%countdown%%arena%%name%%total%%team%%max%%type%
Gruppi di messaggi
prefix1command21play16match52death11hud93kit11shop4spectator6party19queue6vote2reward21progression2top3stats1stat134gui115lobby4sign10setup31arena86admin292games7category5game195cosmetic24common4state6leaderboard1ranked10achievement5tournament38network14parkour43license49locked4hologram5chatgames73content423
Altro
Contenuti pronti, esempi, importazioni: i file che si copiano e si modificano come modello.
import/bedwars1058.yml
Importazione da: bedwars1058 21 impostazioni
import/bedwars1058.ymlplugins/ShadowGames/import/bedwars1058.yml Note del file
Un import non è una conversione perfetta e non può esserlo: ogni plugin salva cose diverse e nessuno salva ciò che serve al nostro sistema di marker. Quello che fa questo file è dire ESATTAMENTE da dove leggiamo: se una nuova versione rinomina una chiave, la correggi qui invece di aspettare un aggiornamento del plugin.
Ogni arena importata arriva DISATTIVATA, con un elenco di ciò che non è stato possibile portare. Controllala con /sg check e attivala con /sg enable.
Uso: /sg import bedwars1058 "plugins/BedWars1058"
formatbedwars1058gamebedwarsdescription"lang:content.import.bedwars1058"detect[Arenas, arenas]Se uno di questi esiste dentro la cartella indicata, il formato viene riconosciuto da solo da /sg import auto <folder>.
source"Arenas/*.yml"I file da leggere, relativi alla cartella indicata.
fields7 chiaviDove si trova ogni valore nel file di origine.
id"name"world"worldName"min-players"minPlayers"max-players"maxPlayers"team-size"maxInTeam"lobby"waitingLocation"spectator"spectatorLocation"teams7 chiavipath"Team"La sezione le cui chiavi sono i nomi delle squadre.
color"Color"spawn"Spawn"bed"Bed"shop"Shop"upgrade"Upgrade"teams.generators2 chiaviGeneratori di squadra: nome della risorsa -> chiave nel file di origine.
IRON"Iron"GOLD"Gold"generators1 chiaveGeneratori condivisi: ogni chiave è una risorsa, ogni valore una lista di posizioni.
path"generator" import/bedwars2023.yml
Importazione da: bedwars2023 21 impostazioni
import/bedwars2023.ymlplugins/ShadowGames/import/bedwars2023.yml Note del file
Un import non è una conversione perfetta e non può esserlo: ogni plugin salva cose diverse e nessuno salva ciò che serve al nostro sistema di marker. Quello che fa questo file è dire ESATTAMENTE da dove leggiamo: se una nuova versione rinomina una chiave, la correggi qui invece di aspettare un aggiornamento del plugin.
Ogni arena importata arriva DISATTIVATA, con un elenco di ciò che non è stato possibile portare. Controllala con /sg check e attivala con /sg enable.
Uso: /sg import bedwars2023 "plugins/BedWars2023"
formatbedwars2023gamebedwarsdescription"lang:content.import.bedwars2023"detect[Arenas, arenas]Se uno di questi esiste dentro la cartella indicata, il formato viene riconosciuto da solo da /sg import auto <folder>.
source"Arenas/*.yml"I file da leggere, relativi alla cartella indicata.
fields7 chiaviDove si trova ogni valore nel file di origine.
id"name"world"worldName"min-players"minPlayers"max-players"maxPlayers"team-size"maxInTeam"lobby"waitingLocation"spectator"spectatorLocation"teams7 chiavipath"Team"La sezione le cui chiavi sono i nomi delle squadre.
color"Color"spawn"Spawn"bed"Bed"shop"Shop"upgrade"Upgrade"teams.generators2 chiaviGeneratori di squadra: nome della risorsa -> chiave nel file di origine.
IRON"Iron"GOLD"Gold"generators1 chiaveGeneratori condivisi: ogni chiave è una risorsa, ogni valore una lista di posizioni.
path"generator" import/mbedwars.yml
Importazione da: mbedwars 21 impostazioni
import/mbedwars.ymlplugins/ShadowGames/import/mbedwars.yml Note del file
MBedwars tiene le sue arene in plugins/MBedwars/arenas/<name>.yml con una struttura più piatta di 1058. Le chiavi qui sotto sono quelle della 5.x: se la tua versione ne usa altre, aprile e correggile, il resto del meccanismo non cambia.
Uso: /sg import mbedwars "plugins/MBedwars"
formatmbedwarsgamebedwarsdescription"lang:content.import.mbedwars"detect[arenas, arena]source"arenas/*.yml"fields7 chiaviid"name"world"world"min-players"min-players"max-players"max-players"team-size"players-per-team"lobby"lobby"spectator"spectator-spawn"teams7 chiavipath"teams"color"color"spawn"spawn"bed"bed"shop"shop-villager"upgrade"upgrade-villager"teams.generators2 chiaviIRON"iron-spawner"GOLD"gold-spawner"generators1 chiavepath"spawners" import/skywarsreloaded.yml
Importazione da: skywarsreloaded 16 impostazioni
import/skywarsreloaded.ymlplugins/ShadowGames/import/skywarsreloaded.yml Note del file
SkyWars è insieme il caso più facile e quello più incompleto: gli spawn delle isole si portano bene, le chest no, perché nel formato di origine sono blocchi nel mondo e non coordinate in un file.
Il modo giusto di finire un'arena importata da qui è aprire il mondo con /sg setup <id> e piazzare i marker LOOT_CHEST con la bacchetta; se invece vuoi il vero vantaggio delle schematic (isole diverse a ogni partita) conviene ritagliare un'isola con /sg schem save e ricostruire l'arena con /sg build.
Uso: /sg import skywarsreloaded "plugins/SkyWarsReloaded"
formatskywarsreloadedgameskywarsdescription"lang:content.import.skywarsreloaded"detect[maps, arenas]source"maps/*.yml"fields8 chiaviid"displayname"world"world"min-players"minplayers"max-players"maxplayers"team-size"teamsize"lobby"waitingroom"spectator"spectatorspawn"center"center"teams3 chiavipath"spawns"color"color"spawn"spawn" achievements/
Gli obiettivi 15 file
achievements/plugins/ShadowGames/achievements/ 15 file con la stessa forma. Qui sotto quello più commentato, per intero, come modello; gli altri sono elencati per nome.
bedwars/bed-breaker.ymlbedwars/finisher.ymlbridge/scorer.ymlglobal/champion.ymlglobal/marksman.ymlglobal/persistent.ymlglobal/rich.ymlglobal/slayer.ymlglobal/streaker.ymlglobal/veteran.ymlmurdermystery/detective.ymlparkour/runner.ymlskywars/island-hopper.ymlskywars/void-hunter.ymltntrun/survivor.yml
Esempio achievements/global/veteran.yml
Note del file
Un obiettivo è una soglia su una statistica che esiste già: questa è tutta l'idea, ed è ciò che li rende quasi gratis. Non si conta niente di nuovo, non si salva niente di nuovo, e qualsiasi statistica che il motore tiene già può diventare un traguardo in otto righe di YAML.
La cartella è il gioco. "global" conta su tutti i giochi insieme.
I nomi dicono lang:<key>: il testo è in lang/, nella lingua di ogni giocatore. Un tuo testo al posto di quello viene mostrato così com'è, a tutti.
idveterandisplay-name"lang:content.achievement.veteran.name"description["lang:content.achievement.veteran.lore"]iconCLOCKstatplayedbroadcasttruetiers[{ target: 10, name: "lang:content.achievement.veteran.tier-1", coins: 100, xp: 50 }, { target: 100, name: "lang:content.achievement.veteran.tier-2", coins: 500, xp: 250 }, { target: 500, name: "lang:content.achievement …+3
arenas/
Le arene incluse 14 file
arenas/plugins/ShadowGames/arenas/ 14 file con la stessa forma. Qui sotto 2 esempi per intero, uno per ogni forma diversa; gli altri sono elencati per nome.
battleroyale/highlands.ymlbedwars/fortini.ymlbingo/outback.ymlduels/piazzale.ymlgungame/chiostro.ymlkitpvp/cortile.ymloitc/loggia.ymlparkour/scala.ymlquake/atrio.ymlskywars/orbita.ymlspleef/disco.ymlsumo/pedana.ymltntrun/torre.ymluhc/wildlands.yml
Il README della cartella
Qui vivono le arene, una cartella per gioco:
arenas/skywars/ruins.yml arenas/bedwars/castle.yml
Il nome del file è l'id dell'arena. Cancellare il file cancella l'arena; copiarlo su un altro server, insieme alle sue schematic, la ricrea identica. Tenerlo in git è il modo giusto per lavorarci insieme a qualcun altro.
Non devi scrivere questi file a mano:
/sg create <game> <id>
apre una sessione di configurazione che li scrive per te, con i commenti. Restano comunque normali file YAML, e modificarli a mano è previsto: dopo una modifica, basta /sg reload arenas.
Vedi docs/24-PRIMO-AVVIO.md per creare la tua prima arena in dieci minuti.
LE QUATTORDICI ARENE CHE CI SONO GIÀ
Subito dopo l'installazione questa cartella non è vuota. Quattordici dei trentadue giochi si possono giocare senza costruire niente, e arrivano qui in due modi diversi.
Tre non hanno bisogno di nessuna mappa, perché si fanno generare il mondo dal server:
arenas/uhc/wildlands.yml arenas/bingo/outback.yml arenas/battleroyale/highlands.yml
UHC sparpaglia i giocatori da sé, Battle Royale li fa scendere con le elytra, Bingo va a caccia in un terreno normale.
Le altre undici un pavimento ce l'hanno, e arriva con loro come schematic dentro schematics/:
arenas/skywars/orbita.yml quattro isole e un centro arenas/bedwars/fortini.yml quattro basi con i letti arenas/sumo/pedana.yml disco di quarzo che si restringe arenas/spleef/disco.yml disco di neve arenas/tntrun/torre.yml tre piani di sabbia e TNT arenas/parkour/scala.yml spirale di trenta salti arenas/duels/piazzale.yml \ arenas/kitpvp/cortile.yml | lo stesso cortile con cinque nomi: arenas/oitc/loggia.yml | tutti e cinque leggono lo stesso blocco arenas/gungame/chiostro.yml | come punto di spawn arenas/quake/atrio.yml /
Nessuno ha costruito quelle schematic in creativa: le calcola tools/genera_schematic.py, che scrive direttamente i file .schem. Un'isola è un cono di terra con un marker in cima, e quattro coni in cerchio fanno una SkyWars. Si vede che sono uscite da un calcolo, e va bene così: servono per farti giocare dal primo giorno, non per fare bella figura. Aprile con /sg schem paste, guardale, poi rifalle a modo tuo.
Restano diciotto giochi che vogliono una mappa costruita a mano, e non c'è una scorciatoia onesta: CTF vuole due basi con le bandiere, Murder Mystery vuole una villa con angoli ciechi. Per quelli, /play non ti pianta in asso, ti dice cosa scrivere:
/sg create <game> <name> apre la sessione di configurazione /sg wand la bacchetta per i marker /sg finish controlla l'arena e la accende
Le quattordici sono file normali e sono tue: aprile, cambia i numeri, rinominale. Cancellarle non basta per toglierle - come i kit e gli shop forniti, tornano al riavvio successivo - quindi per spegnerne una, scrivici enabled: false.
IL SEED DEL MONDO (world.seed)
Vale solo per le arene che si fanno generare il mondo dal server:
world: mode: GENERATED generator: NORMAL # oppure il nome di un plugin generatore di mondi seed: 0
seed: 0 (o nessuna riga) un mondo nuovo a ogni partita. seed: 1234567890 sempre quello stesso mondo.
Zero non è il seed zero: vuol dire "nessun seed", ed è il default perché una UHC o un Bingo vive del fatto di avere una mappa diversa ogni volta. Con un seed fisso la seconda partita è identica alla prima, stesso villaggio e stesse grotte, e chi l'ha già giocata va dritto lì.
Un numero scritto lì blocca la mappa: serve per un torneo, dove ogni gruppo deve giocare sullo stesso terreno, e per chi sta misurando un bordo e vuole ritrovare il punto di ieri.
Con world.generator: VOID non c'è niente da generare e il seed non viene guardato; con FLAT il mondo è comunque piatto.
Esempio arenas/battleroyale/highlands.yml
Battle Royale - Highlands
Note del file
Arena fornita con il plugin. Non c'è niente da costruire: il server genera il mondo, i giocatori scendono dall'alto con le elytra e atterrano dove vogliono, e la zona che si restringe li riunisce da sola. È l'unico dei trentadue giochi che piazza i giocatori da solo, dall'alto, ed è per questo che può arrivare senza mappa.
È un normale file YAML: modificalo, poi /sg reload arenas.
idhighlandsgamebattleroyaledisplay-name"lang:content.arena.battleroyale.highlands.name"description"lang:content.arena.battleroyale.highlands.description"author"ShadowMC"enabledtrueiconELYTRAplayers3 chiavimin4max20team-size1world6 chiavimodeGENERATEDenvironmentNORMALgeneratorNORMALNORMAL, non VOID: qui la gente atterra. Sotto ci deve essere del terreno, e ci devono essere legno e pietra, perché questa mappa non ha chest piazzate (il motivo è spiegato più sotto).
Niente world.seed, ed è voluto: senza quella riga il motore ne tira fuori uno nuovo a ogni partita, così il terreno sotto il lancio non è mai lo stesso. Un numero lì lo fissa, per un torneo.
border500La zona parte da qui: BattleRoyaleMatch legge world.border e ripiega su 500 solo se è zero. Le fasi in games/battleroyale.yml scendono 400 -> 250 -> 150 -> 60 -> 20 -> 0, quindi partire da 500 dà una prima stretta che si sente senza che diventi un massacro.
time6000Mezzogiorno fisso: nei mondi delle partite il ciclo giorno-notte è spento (worlds.gamerules in config.yml). Alla luce del giorno vedi chi sta scendendo.
weather-stormfalseNiente punti LOOT_CHEST e niente DROP_ZONE, e non è una svista. Sono coordinate fisse, e qui è il generatore a decidere il terreno: una chest scritta a mano finisce sepolta dentro una collina o sospesa in aria sopra un lago, e in entrambi i casi il giocatore non la trova mai. Senza DROP_ZONE, BattleRoyaleMatch.dropSupplies() passa al suo fallback, che calcola sul momento l'altezza del terreno con getHighestBlockYAt(): le chest dei rifornimenti - a 5, 10 e 15 minuti, già nel file del gioco - atterrano sempre sul terreno. Qui il fallback è meglio del marker. Su una mappa costruita, invece, i marker sono la scelta giusta.
points2 chiaviCENTER[{ at: […] }]Obbligatorio: BattleRoyaleGame chiede esattamente un CENTER, ed è il centro della zona. La sua altezza non viene mai usata per posarci sopra qualcuno - il lancio porta tutti a 200 e le chest si posano sul terreno - quindi 64 va bene come qualsiasi altro valore: è scritto così perché si legga come "livello del mare, 0 0".
SPECTATOR_SPAWN[{ at: […] }]Gli spettatori restano in aria sopra la zona (il motore aggiunge 8 blocchi da solo). Sono in gamemode SPECTATOR: in aria stanno bene, mentre a terra, su un terreno che nessuno ha costruito, finirebbero dentro una collina.
Esempio arenas/sumo/pedana.yml
Sumo - Pedana
Note del file
Un disco di quarzo sopra il vuoto, due posti, tre round.
Due cose qui dentro non sono ovvie e vale la pena spiegarle.
1. world.region. SumoMatch legge da lì il bordo della
piattaforma, e senza quel blocco il restringimento non parte mai: il round arriva a 90 secondi e finisce in pareggio anche fra due giocatori che non hanno nessuna intenzione di cadere.
2. markers. Per Sumo QUARTZ_BLOCK vuol dire TEAM_SPAWN, ma la
piattaforma È fatta di quartz_block, perché alla fine di un round SumoMatch rimette i blocchi mangiati dal restringimento con setType(QUARTZ_BLOCK), e con qualsiasi altro materiale la piattaforma cambierebbe aspetto dal secondo round in poi. Lasciando la regola com'è, i 123 blocchi della piattaforma sarebbero 123 punti di spawn e il paste li toglierebbe tutti: resterebbe solo il vuoto. Quindi la regola viene svuotata e lo spawn passa a DIAMOND_BLOCK.
idpedanagamesumodisplay-name"lang:content.arena.sumo.pedana.name"description"lang:content.arena.sumo.pedana.description"author"ShadowMC"enabledtrueiconSLIME_BLOCKplayers3 chiavimin2max2team-size1world8 chiavimodeGENERATEDenvironmentNORMALgeneratorVOIDspawn-height100border100time6000weather-stormfalseworld.region2 chiavimin[-6, 100, -6]max[6, 100, 6]build1 chiavecomponents[{ id: pedana, layout: {…}, schematic: {…} }]markers2 chiaviQUARTZ_BLOCK""DIAMOND_BLOCK"TEAM_SPAWN"rules1 chiavekill-below90 cosmetics/
I cosmetici 29 file
cosmetics/plugins/ShadowGames/cosmetics/ 29 file con la stessa forma. Qui sotto 2 esempi per intero, uno per ogni forma diversa; gli altri sono elencati per nome.
cage/emerald.ymlcage/glass.ymlcage/gold.ymlcage/ice.ymlcage/obsidian.ymldeath-effect/ashes.ymldeath-effect/farewell.ymldeath-effect/smoke.ymlkill-effect/blood.ymlkill-effect/confetti.ymlkill-effect/explosion.ymlkill-effect/lightning.ymlkill-effect/souls.ymlprojectile-trail/arcane.ymlprojectile-trail/smoke.ymlprojectile-trail/sparks.ymltrail/dripping.ymltrail/ender.ymltrail/flame.ymltrail/hearts.ymltrail/magic.ymltrail/notes.ymltrail/snow.ymlvictory-dance/flames.ymlvictory-dance/hearts.ymlvictory-dance/spiral.ymlwin-effect/fireworks.ymlwin-effect/thunder.ymlwin-effect/totem.yml
Esempio cosmetics/kill-effect/lightning.yml
Note del file
Un cosmetico è un file come un kit: id, nome, icona, regola di sblocco. Gli effetti passano per lo stesso motore delle abilità delle classi, quindi tutto ciò che può fare una classe lo può fare anche un cosmetico -- tranne cambiare una partita: qui non c'è modo di dare danno, velocità o qualsiasi vantaggio.
display-name e description dicono lang:<key>: il testo è in lang/, nella lingua di ogni giocatore. Un testo tuo invece viene mostrato così com'è.
idlightningdisplay-name"lang:content.cosmetic.kill-effect.lightning.name"description["lang:content.cosmetic.kill-effect.lightning.…]iconLIGHTNING_RODunlock1 chiavecost10000effect[{ type: LIGHTNING, target: VICTIM }, { type: SOUND, value: ENTITY_LIGHTNING_BOLT_THUNDER, target: VICTIM }]+1
Esempio cosmetics/trail/ender.yml
idenderdisplay-name"lang:content.cosmetic.trail.ender.name"description["lang:content.cosmetic.trail.ender.lore"]iconENDER_PEARLparticlePORTALcount6unlock1 chiavelevel20 kits/
I kit, uno per file 30 file
kits/plugins/ShadowGames/kits/ 30 file con la stessa forma. Qui sotto 2 esempi per intero, uno per ogni forma diversa; gli altri sono elencati per nome.
bedwars/default.ymlbridge/default.ymlcommon/default.ymlctf/defender.ymlctf/runner.ymlctf/support.ymlduels/classic.ymlduels/sumo.ymlhideandseek/seeker.ymlinfection/survivor.ymlinfection/zombie.ymlkitpvp/archer.ymlkitpvp/warrior.ymlkoth/guardian.ymlkoth/raider.ymlkoth/sniper.ymlmanhunt/hunter.ymlmanhunt/runner.ymlskywars/archer.ymlskywars/builder.ymlskywars/warrior.ymlspleef/bow.ymlspleef/shovel.ymlsumo/default.ymltdm/assault.ymltdm/sniper.ymltdm/soldier.ymlwoolwars/builder.ymlwoolwars/swift.ymlwoolwars/warrior.yml
Esempio kits/common/default.yml
Kit predefinito
Note del file
Sta in kits/common/, quindi ogni partita che permette i kit lo offre.
La sintassi degli item è la stessa ovunque nel plugin: kit, shop, loot, ricompense e icone dei menu. Vedi docs/09-TEAM-KIT-CLASSI.md
display-name e description dicono lang:<key>: il testo è in lang/, nella lingua di ogni giocatore. Scrivi invece un tuo testo e viene mostrato quello, uguale per tutti.
iddefaultdisplay-name"lang:content.kit.common.default.name"description["lang:content.kit.common.default.lore"]iconSTONE_SWORDslot10unlock1 chiavedefaulttrueitems2 chiavi0{ material: STONE_SWORD }1{ material: COOKED_BEEF, amount: 4 }armor2 chiavichestplate{ material: LEATHER_CHESTPLATE, unbreakable: true }+1
La pelle senza un colore esplicito prende quello della squadra: è così che a una mappa a quattro squadre basta un solo kit.
boots{ material: LEATHER_BOOTS, unbreakable: true } Esempio kits/bridge/default.yml
Note del file
Il kit è fisso: The Bridge è un gioco di abilità, non di equipaggiamento. I blocchi e le frecce si rigenerano da soli.
iddefaultdisplay-name"lang:content.kit.bridge.default.name"iconIRON_SWORDunlock{ default: true }items5 chiavi0{ material: IRON_SWORD, unbreakable: true }1{ material: BOW, enchants: { infinity: 1 }, unbreakable: true }+1
2{ material: DIAMOND_PICKAXE, enchants: { efficiency: 2 }, unbreakable: true }+2
3{ material: GOLDEN_APPLE, amount: 8 }8{ material: ARROW }armor4 chiavihelmet{ material: LEATHER_HELMET, unbreakable: true }chestplate{ material: LEATHER_CHESTPLATE, unbreakable: true }+1
leggings{ material: LEATHER_LEGGINGS, unbreakable: true }boots{ material: LEATHER_BOOTS, unbreakable: true } music/
La musica 5 file
music/plugins/ShadowGames/music/ 5 file con la stessa forma. Qui sotto quello più commentato, per intero, come modello; gli altri sono elencati per nome.
chase.ymlcustom-pack-example.ymlparty.ymltension.ymlvictory.yml
Esempio music/custom-pack-example.yml
La tua musica, quella vera
Note del file
Un plugin non può mandare un file audio a un client: il client deve averlo già. Quindi la strada è questa, ed è in tre passi:
1. Metti il tuo .ogg in un resource pack, sotto
assets/<yournamespace>/sounds/music/party.ogg
2. Dichiaralo nel sounds.json del pack:
{
"music.party": {
"category": "record",
"sounds": [ { "name": "<yournamespace>:music/party",
"stream": true } ]
}
}
"stream": true conta per le tracce lunghe: senza, il client
la carica tutta in memoria.3. Scrivi la chiave qui sotto, e assicurati che il server distribuisca il pack
(server.properties -> resource-pack).
Un giocatore che rifiuta il pack non sente niente: è per questo che le altre tracce di esempio usano melodie di note block, che funzionano per tutti, sempre.
Questo file è spento apposta: togli il commento a 'sound' quando hai davvero il pack, altrimenti chi lo scompatta si ritrova una traccia muta nella playlist.
idpack_exampledisplay-name"lang:content.music.pack_example.name"sound: "shadowgames:music.party"
length2m30sQuanto dura la traccia. Al motore serve per sapere quando la traccia è finita da sola, perché il server non ha altro modo di saperlo.
volume1.0pitch1.0melody4 chiaviUn ripiego che suona per tutti anche senza il pack: se 'sound' manca o il giocatore non ha il pack, è questo che sente.
tempo5instrumentHARPlooptruenotes"C4 E4 G4 E4 F4 A4 C5 A4 G4 B4 D5 B4 C5 . . ." parkour/
I percorsi parkour 3 file
parkour/plugins/ShadowGames/parkour/ 3 file con la stessa forma. Qui sotto quello più commentato, per intero, come modello; gli altri sono elencati per nome.
easy.ymlhard.ymlmarathon.yml
Esempio parkour/easy.yml
Un percorso parkour della lobby
Note del file
Non è una partita: è arredamento. Sempre lì, chiunque può saltarci sopra in qualsiasi momento, e caderne giù non costa nulla. È quello che fa la gente mentre aspetta che parta un gioco.
Questo file è il PROFILO di un percorso -- nome, difficoltà, modalità, limite di tempo, ricompensa. Il tracciato non c'è e non può esserci: un tracciato sono coordinate in una lobby che non abbiamo mai visto, e una coordinata tirata a indovinare è un percorso che butta il giocatore nel vuoto.
Quindi finché qualcuno non lo percorre, questo percorso NON compare in /parkour, né nel menu, né nel completamento con Tab. Un percorso che un giocatore può scegliere e che lo teletrasporta nel nulla è peggio di un percorso che non c'è. Compare invece in /sg parkour, con il comando che lo completa, che è l'unico posto in cui una cosa incompleta è utile.
Il tracciato non lo scrivi a mano: lo percorri.
/sg parkour set easy start <- dove ti trovi ora /sg parkour set easy checkpoint <- a ogni atterraggio /sg parkour set easy finish <- alla fine
Questi tre scrivono in QUESTO file: il file ha il nome dell'id, quindi easy.yml è il percorso "easy". Nome, difficoltà, livello, tempo e ricompensa puoi ancora cambiarli a mano.
ideasyenabledtrueenabled: false lo spegne del tutto: sparisce anche da /sg parkour e non si vede più. Usalo se non vuoi questo percorso: cancellare il file non basta, al riavvio successivo torna dal jar come i kit e gli shop inclusi.
display-name"lang:content.parkour.easy.name"description["lang:content.parkour.easy.lore"]difficulty"easy"level1modeCHECKPOINTCome si comporta il percorso:
CHECKPOINT i checkpoint ti riprendono, il tentativo ricomincia quando
esci dal percorso. Questo.
PERSISTENT come sopra, ma i progressi restano: esci al checkpoint
7, torni domani, riparti dal 7.
ONESHOT nessuna rete di sicurezza: una caduta e torni all'inizio.time-limit0Quanto tempo hai per finirlo.
0 (o nessuna riga) = ILLIMITATO. Il default, e quello che vuole quasi ogni percorso di lobby: un passatempo, non una prova. Un valore (5m, 90s, 1h) lo trasforma in una sfida a tempo: avvisi a un minuto, a trenta e a dieci secondi, poi si torna all'inizio.
Puoi cambiarlo anche in gioco: /sg parkour time easy 5m
/sg parkour time easy 0
Il percorso -- partenza, arrivo, checkpoint -- lo scrive /sg parkour set. Non lo trovi qui come una riga vuota da riempire: un campo vuoto sembra qualcosa che qualcuno ha dimenticato, e questo invece aspetta che qualcuno lo percorra.
Le posizioni sono "world,x,y,z[,yaw,pitch]", se vuoi ritoccarle:
start: "lobby,10,70,10,90,0" finish: "lobby,60,80,10,90,0" checkpoints: - "lobby,20,72,10"
radius1.5Quanto vicino devi passare a un checkpoint perché conti. 1.5 è generoso; sotto 1.0 diventa frustrante.
Sotto questa altezza sei caduto e torni all'ultimo checkpoint. Togli la riga e si usa "10 blocchi sotto la partenza". fall-y: 60
effects{ }Effetti attivi mentre corri: è ciò che fa sembrare un percorso diverso da un altro senza bisogno di un motore diverso. Il numero è il livello (1 = I).
checkpoint-commands[ ]Comandi eseguiti a OGNI checkpoint raggiunto. Segnaposto: %player% %course% %checkpoint%
reward3 chiaviLa ricompensa paga OGNI VOLTA che finisci, non solo la prima. Un percorso che paga una volta è un percorso che fai una volta, e il senso di un percorso di lobby è che venga fatto per mesi.
coins50xp25commands[ ]Per riservarlo: il nodo necessario per farlo. permission: "shadowgames.parkour.facile"
shops/
I negozi, uno per file 2 file
shops/plugins/ShadowGames/shops/ 2 file con la stessa forma. Qui sotto quello più commentato, per intero, come modello; gli altri sono elencati per nome.
bedwars.ymleggwars.yml
Esempio shops/bedwars.yml
Shop BedWars
Note del file
Due schermate: gli item (qui) e i potenziamenti di squadra (in fondo).
DUE PROPRIETÀ CHE CAMBIANO TUTTO
tier-group + tier
Comprare il livello successivo toglie quello precedente dallo shop e dall'inventario. Nessuno si porta dietro tre spade, e lo shop non si riempie di voci inutili a metà partita.
permanent
L'item torna dopo la morte. Vero per armature e attrezzi, non per i blocchi: morire deve costare risorse, non l'equipaggiamento.
%team% dentro un materiale diventa il colore della squadra, quindi RED_WOOL, BLUE_WOOL e così via senza doverli scrivere tutti.
title"lang:content.shop.title"rows6categories[{ id: blocks, slot: 1, icon: TERRACOTTA, name: "lang:content.shop.category.blocks" }, { id: melee, slot: 2, icon: GOLDEN_SWORD, name: "lang:content.shop.category.melee" }, { id: armor, slot: 3, icon: CHAINMAIL_BOOTS, n …+6
items7 chiaviblocks[{ slot: 19, cost: {…}, give: {…} }, { slot: 20, cost: {…}, give: {…} }, { slot: 21, cost: {…}, give: {…} }, { slot: 22, cost: {…}, give: {…}, lore-extra: […] }, { slot: 23, cost: {…}, give: {…} }, { slot: 24, cost: {…} …+5
melee[{ slot: 19, cost: {…}, give: {…}, tier-group: sword, tier: 1 }, { slot: 20, cost: {…}, give: {…}, tier-group: sword, tier: 2 }, { slot: 21, cost: {…}, give: {…}, tier-group: sword, tier: 3 }, { slot: 22, cost: {…}, giv …+3
armor[{ slot: 19, cost: {…}, give-armor: CHAINMAIL, permanent: true, tier-group: armor, tier: 1, lore-extra: […] }, { slot: 20, cost: {…}, give-armor: IRON, permanent: true, tier-group: armor, tier: 2 }, { slot: 21, cost: {… …+2
tools[{ slot: 19, cost: {…}, give: {…}, permanent: true, tier-group: pickaxe, tier: 1 }, { slot: 20, cost: {…}, give: {…}, permanent: true, tier-group: pickaxe, tier: 2 }, { slot: 21, cost: {…}, give: {…}, permanent: true, t …+5
ranged[{ slot: 19, cost: {…}, give: {…} }, { slot: 20, cost: {…}, give: {…} }, { slot: 21, cost: {…}, give: {…} }, { slot: 22, cost: {…}, give: {…} }]+3
potions[{ slot: 19, cost: {…}, give: {…} }, { slot: 20, cost: {…}, give: {…} }, { slot: 21, cost: {…}, give: {…} }]+2
utility[{ slot: 19, cost: {…}, give: {…} }, { slot: 20, cost: {…}, give: {…} }, { slot: 21, cost: {…}, give: {…} }, { slot: 22, cost: {…}, give: {…} }, { slot: 23, cost: {…}, give: {…} }, { slot: 24, cost: {…}, give: {…}, lore …+5
Potenziamenti di squadra
Un potenziamento non è un item: è una proprietà della squadra, e copre anche gli item comprati dopo e i giocatori che rinascono. Chi compra Affilatezza e poi una spada nuova si aspetta che la spada sia affilata: è il bug più segnalato di ogni BedWars mai scritto.
upgrades3 chiavititle"lang:content.shop.upgrades-title"rows4items