Vai al contenuto
ShadowMC

Configurazione

ShadowGames

Trentadue minigiochi in un plugin solo: arene, code, party, spettatori e classifiche.

Premium v1.0.4

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.

Cosa c’è dentro

138 file · 1636 impostazioni

Da dove partire: config.yml

Impostazioni

I file che decidono come si comporta il plugin. Si parte da qui.

config.yml

Impostazioni generali
199 impostazioni
plugins/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 mappa

Un 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-version1
core5 chiavi
server-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-localetrue

Ogni giocatore vede la lingua del proprio client, quando quel file esiste.

update-checktrue

Salvataggio 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 chiavi
storage.mysql7 chiavi
enabledfalse
host"127.0.0.1"
port3306
database"shadowgames"
username""
password""
storage.mysql.properties3 chiavi
useSSLfalse
characterEncoding"utf8mb4"
serverTimezone"UTC"
storage
table-prefix"sg_"

Prefisso delle tabelle. Utile quando più server condividono un database.

fallback-to-localtrue
true  -> 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-databasefalse

Se ShadowEssentials è installato e usa un database, possiamo condividerlo: un solo pool, un solo backup, e il prefisso tiene separate le tabelle.

storage.pool6 chiavi
maximum-size10

Regola pratica: (core della CPU * 2) + 1, mai sopra 20.

minimum-idle2
connection-timeout10s
idle-timeout10m
max-lifetime30m
leak-detection0s

Sopra 0 registra nel log le connessioni che non tornano mai nel pool.

Lobby

lobby6 chiavi
location""

Dove finisce un giocatore quando lascia una partita. Vuoto = lo spawn del mondo principale. /sg lobby lo imposta dove ti trovi.

use-shadowessentials-spawntrue

Quando 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 chiavi

I 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
enabledtrue
folder"parkour"
particlestrue
lobby.waiting-items4 chiavi

Cosa tiene in mano un giocatore mentre aspetta l'inizio.

lobby.waiting-items.02 chiavi
materialCOMPASS
name"lang:lobby.item.team"
lobby.waiting-items.12 chiavi
materialCHEST
name"lang:lobby.item.kit"
lobby.waiting-items.72 chiavi
materialPAPER
name"lang:lobby.item.vote"
lobby.waiting-items.82 chiavi
materialRED_BED
name"lang:lobby.item.leave"

Valori che ogni gioco eredita

Ogni gioco e ogni arena possono sovrascriverli.

defaults11 chiavi
countdown30s
countdown-full10s

Quando l'arena è piena il conto alla rovescia scende a questo valore.

grace-period10s

Niente PvP nei primi secondi: un atterraggio sfortunato allo spawn non deve far perdere la partita.

max-duration20m

Un tetto rigido. Una partita che non finisce mai è peggio di una che finisce male.

end-duration10s

Quanto resta visibile la schermata finale.

allow-rejoin60s

Riconnettiti entro questo tempo e torni dov'eri.

respawn-delay3s
assist-window10s

Per 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-firefalse
buildtrue
lives1

Mondi 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 chiavi
prefix"sg_"

Prefisso per i mondi delle partite. Non usarlo per mondi tuoi.

max-concurrent-matches20

Quante partite possono girare contemporaneamente su tutto il server.

max-instances-per-arena4

Quante istanze della stessa arena possono girare contemporaneamente.

preload-instances1

Con 1, il mondo per la prossima partita è pronto in anticipo: nessuno aspetta mai un paste.

delete-on-closetrue
clean-orphans-on-starttrue

Se il server è crashato lasciando in giro mondi sg_*, cancellali all'avvio.

difficultyNORMAL
view-distance8

Un'arena sta in poche centinaia di blocchi: 12 chunk di view distance sarebbero sprecati.

simulation-distance5
worlds.gamerules9 chiavi

Le 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é.

doDaylightCyclefalse
doWeatherCyclefalse
doMobSpawningfalse
doFireTickfalse
mobGriefingfalse
announceAdvancementsfalse
naturalRegenerationtrue
keepInventoryfalse
doImmediateRespawntrue

Schematic

schematics6 chiavi
folder"schematics"
paste-budget4000

Blocchi 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.0

Se il server scende sotto questi TPS il budget si dimezza da solo, e torna normale appena il server respira di nuovo.

cachetrue

Le schematic restano in memoria una volta lette: venti partite, una lettura.

cache-size32
cache-ttl30m

Configurazione in gioco

setup2 chiavi
wandEND_ROD
particle-range48

Fino 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 chiavi
hud.scoreboard3 chiavi
enabledtrue
only-in-matchestrue

Un giocatore ha una sola sidebar. Con true la usiamo solo dentro le partite e lasciamo la lobby a ShadowEssentials.

update-ticks10
hud.bossbar1 chiave
enabledtrue
hud.tablist5 chiavi
enabledtrue
header
["&b&lSHADOW&f&lGAMES", "&7%game_name% &8| &f%arena_name%"]+1
group-by-teamtrue
spectators-lasttrue

Code e scelta della mappa

matchmaking4 chiavi
arena-selectionLEAST_PLAYED

WEIGHTED_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-emptyfalse

Su un server piccolo conviene riempire una partita alla volta.

min-fill-before-new-instance0.5

Non aprire una nuova istanza finché ce n'è una sotto questa percentuale.

merge-waitingtrue

Unisce due partite in attesa quando ci stanno insieme.

vote3 chiavi
enabledtrue
candidates4
change-allowedtrue
queue3 chiavi
enabledtrue
show-progresstrue
max-wait10m
auto3 chiavi
rejoin-same-gametrue

Quando una partita finisce ne parte un'altra da sola: è questo che tiene vivo un server.

rejoin-delay5s
back-to-lobby-on-quittrue

Party

Se il server ha già un plugin di party, AUTO usa quello.

party7 chiavi
providerAUTO
max-size8
invite-timeout60s
all-or-nothingtrue

Un party entra come un blocco unico: tutti, o nessuno.

keep-togethertrue

E resta nella stessa squadra, quando ci sta.

offline-grace2m

Un crash del client non deve spezzare il gruppo.

chat-prefix"&d[PARTY] "

Spettatori

spectator5 chiavi
gamemodeSPECTATOR

SPECTATOR | ADVENTURE_INVISIBLE ADVENTURE_INVISIBLE è per i server in cui vedere attraverso i muri conta come un vantaggio eccessivo anche per un giocatore morto.

night-visiontrue
confinedtrue
max-distance300
spectator-chattrue

Ricompense

Le monete di gioco restano separate dall'economia del server, di proposito.

rewards8 chiavi
enabledtrue
economy-bridgefalse

Con true, ogni moneta di gioco conia anche valuta reale.

economy-bridge-rate0.1
currency"default"
vip-multiplier-perk"games.reward-multiplier"

Perk letto da ShadowEssentials; senza, dai nodi shadowgames.perk.*

global-multiplier1.0

Un moltiplicatore permanente, per i server che vogliono una progressione veloce.

announce-multipliertrue
forfeit-on-quitfalse

Uscire prima fa perdere quello che hai guadagnato? No: punire qualcuno a cui è crashato il client è ingiusto.

economy1 chiave
free-when-missingtrue

Senza un'economia installata: true = i kit a pagamento diventano gratis, false = restano bloccati.

progression3 chiavi
enabledtrue
xp-curve"500 * level ^ 1.15"

Quanto costa il livello di esperienza N.

max-level200

Mob 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 chiavi
enabledtrue
spawns{ }

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 chiavi
enabledtrue
folder"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 chiavi
enabledtrue
folder"cosmetics"
trail-every-ticks2

Ogni 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 chiavi
enabledfalse
roleGAMES
GAMES  = 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.

capacity0

0 = use the server's max-players

heartbeat5s
stale-after20s

how long a silent server waits before it counts as dead

ticket-life60s

how 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 chiavi
enabledtrue
start-rating1000
k-factor24

Quanto 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-players2
match-window150

Quanto 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-max800
decay-grace14d

Decadimento per inattività: senza, la cima della classifica si riempie di gente che ha smesso di giocare.

decay-per-day2
ranked.divisions8 chiavi
bronze
{ 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 chiavi
enabledtrue
min-entrants4
between-rounds30s
tournaments.reward3 chiavi
coins5000
xp2000
commands[ ]

Obiettivi

Soglie su statistiche che esistono già. File in achievements/<game>/, oppure achievements/global/ per quelli che contano su tutti i giochi.

achievements3 chiavi
enabledtrue
folder"achievements"
broadcasttrue

Annuncia 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 chiave
folder"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 chiavi
min-duration30s
min-players2
autosave5m

Salvataggio periodico: una partita lunga che crasha non deve cancellare un'ora di gioco.

leaderboards4 chiavi
refresh5m
hologram-refresh1m

Ogni quanto vengono riscritti gli ologrammi di /sg holo. Leggono la cache qui sopra, non il database: dieci classifiche costano dieci stringhe.

cache-size64
ignore-inactive-after90d

Protezione

Dentro un mondo di partita non c'è niente da configurare: queste sono regole del motore, non flag di regione.

protection4 chiavi
deny-outsiderstrue

Chi non è nella partita non tocca nulla dentro un mondo di partita.

original-blocks-unbreakabletrue

I blocchi originali dell'arena non si possono rompere, quelli piazzati dai giocatori sì. Il motore lo sa perché registra cosa è stato piazzato.

block-external-teleporttrue

Un 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 chiavi
enabledtrue

Quando sono disattivati non si aggiornano e il clic destro non fa entrare.

update1s

Ogni quanto vengono riscritti. Un cartello viene riscritto solo quando è cambiato qualcosa, quindi anche 10t su un muro di cartelli non costa nulla.

signs.lines6 chiavi

Le 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 chiavi
WAITINGLIME_CONCRETE
COUNTDOWNYELLOW_CONCRETE
PREPARINGRED_CONCRETE
RUNNINGRED_CONCRETE
ENDINGGRAY_CONCRETE
RESETTINGGRAY_CONCRETE

Prestazioni

Le protezioni qui sotto proteggono il server da se stesso. Vedi docs/22-PERFORMANCE.md

performance3 chiavi
profilertrue
performance.entities4 chiavi
item-despawn60s

Più aggressivo del vanilla, di proposito.

arrow-despawn10s
max-per-match400
remove-below-y-32
performance.guards3 chiavi
slow-tps18.0

Sotto questi TPS il motore si difende.

critical-tps15.0
slow-hook-millis50

Un 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 chiave
enabledtrue

Licenza

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 chiavi

LA 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-days7

Giorni di tolleranza prima di ripiegare sulla versione free quando un abbonamento scade o quando l'indirizzo del server non corrisponde alla licenza.

resolve-public-iptrue

Una 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
plugins/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-version1
enabledtrue

L'intera funzione. False: non parte nessun gioco, nemmeno da comando.

Quando

schedule5 chiavi
enabledtrue

False: i giochi partono solo con /sg chatgame start.

interval10m

Un 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.

jitter2m
first-delay3m

Il primo gioco dopo un avvio o un reload.

min-players2

Se 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-matchfalse

True: 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-time30s

Tempo per rispondere, a meno che il tipo non dica altro con un suo "time".

cancel-winning-messagetrue

La riga con la risposta giusta viene tolta dalla chat, così nessun altro può copiarla. Le risposte sbagliate restano visibili.

apply-multiplierstrue

I 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-consoletrue

Una riga in console quando un gioco inizia (con la risposta) e quando finisce.

rewards2 chiavi

La ricompensa di ogni tipo che non ne scrive una sua.

coins25
xp50

I tipi

Ognuno: enabled, weight (quanto spesso viene scelto: 30 è tre volte più probabile di 10), time (facoltativo), rewards (facoltativo).

types7 chiavi
types.trivia4 chiavi
enabledtrue
weight30
time30s
questions
[{ question: {…}, answers: […] }, { question: {…}, answers: […] }, { question: {…}, answers: […] }, { question: {…}, answers: […] }, { question: {…}, answers: […] }, { question: {…}, answers: […] }, { question: {…}, ans …+26
question

Una domanda può avere una sua ricompensa: sostituisce quella del tipo solo per questa domanda.

types.math5 chiavi
enabledtrue
weight25
time25s
allow-negativefalse

False: una sottrazione non ha mai un risultato negativo.

types.math.difficulties3 chiavi

numbers: 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 chiavi
weight50
operations[+, "-"]
numbers[1, 30]
types.math.difficulties.medium4 chiavi
weight35
operations[+, "-", "*"]
numbers[10, 99]
factors[2, 12]
types.math.difficulties.hard5 chiavi
weight15
operations[+, "-", "*", /]
numbers[100, 999]
factors[3, 20]
types.math.difficulties.hard.rewards2 chiavi
coins50
xp100
types.unscramble4 chiavi
enabledtrue
weight20
time40s
hinttrue

A metà tempo, la prima lettera della parola.

La sua lista di parole; senza questa riga, quelle di "words" in fondo. words: [ ... ]

types.type-fast5 chiavi
enabledtrue
weight15
time20s
sourceboth
words: una parola della lista in fondo, nella lingua di chi legge.
code:  un codice casuale come K7PX2M.
both:  uno dei due, a caso.
code-length8
types.reverse3 chiavi

Viene mostrata una parola da scrivere al contrario: DIAMOND -> dnomaid.

enabledtrue
weight10
time30s
types.fill-in4 chiavi
enabledtrue
weight15
time40s
hidden0.4

Quante lettere vengono nascoste: 0.4 = circa quattro su dieci, sempre almeno una nascosta e una visibile.

types.guess-number7 chiavi
enabledtrue
weight10
time60s
min1
max100
max-guesses5

Tentativi per giocatore; 0 = nessun limite.

hide-guessesfalse

True: 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
plugins/ShadowGames/games/battleroyale.yml
enabledtrue
countdown45s
max-duration25m
lives1
buildtrue
drop5 chiavi
enabledtrue
height200
elytratrue
remove-elytra-on-landtrue
free-jumptrue
zone3 chiavi

La 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.

particlestrue
show-nexttrue
phases
[{ 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 chiavi
BEACON"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 chiavi
loot.common3 chiavi
min-stacks3
max-stacks6
entries
[{ 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 chiavi
min-stacks5
max-stacks8
entries
[{ 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 chiavi
enabledtrue
time45s
revive-time6s
kits1 chiave
enabledfalse

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 chiavi
title"&6&lBATTLE ROYALE"
scoreboard.lines4 chiavi
WAITING
["&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 chiavi
win{ 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 chiave
enabledtrue

Suoni

Solo tre momenti. Svuota un valore per disattivarlo, oppure fallo puntare a un suono del tuo resource pack.

sounds3 chiavi
join"entity.experience_orb.pickup"
start"entity.wither.spawn"
kill"entity.player.levelup"

games/bedwars.yml

Minigioco: BedWars
89 impostazioni
plugins/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

enabledtrue
countdown30s
countdown-full10s
grace-period0s
max-duration45m
end-duration12s
respawn-delay5s
friendly-firefalse
buildtrue

Letti

beds3 chiavi
require-toolfalse

Un 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-protectedtrue
broadcasttrue

Final kill

Morire senza letto ti elimina. Vale più di una kill normale, e si vede.

final-kill1 chiave
reward-multiplier2.5

Generatori

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 tempo

max-nearby è la regola che tiene in piedi il server: senza, una base abbandonata accumula migliaia di lingotti sul pavimento.

generators2 chiavi
generators.team3 chiavi
generators.team.iron6 chiavi
resourceIRON_INGOT
interval1.2s
amount1
max-nearby48
share-with-teamtrue
generators.team.iron.tiers4 chiavi
1{ interval: 1.2s }
2{ interval: 0.8s }
3{ interval: 0.5s, amount: 2 }
4{ interval: 0.4s, amount: 2 }
generators.team.gold6 chiavi
resourceGOLD_INGOT
interval6s
amount1
max-nearby16
share-with-teamtrue
generators.team.gold.tiers4 chiavi
1{ interval: 6s }
2{ interval: 4s }
3{ interval: 3s }
4{ interval: 2.5s }
generators.team.emerald5 chiavi
resourceEMERALD
interval0s

0 = disattivato finché la forgia non raggiunge il livello che lo attiva.

max-nearby8
share-with-teamtrue
generators.team.emerald.tiers4 chiavi
1{ interval: 0s }
2{ interval: 0s }
3{ interval: 45s }
4{ interval: 35s }
generators.neutral2 chiavi
generators.neutral.diamond7 chiavi
resourceDIAMOND
interval30s
max-nearby8
hologramtrue
hologram-lines
["lang:content.generator.diamond", "lang:hologram.generator.tier", "lang:hologram.generator.in-seconds"]+2
generators.neutral.diamond.spawn-effect2 chiavi
particleHAPPY_VILLAGER
sound"block.note_block.pling"
generators.neutral.diamond.tiers3 chiavi
1{ interval: 30s }
2{ interval: 23s }
3{ interval: 12s }
generators.neutral.emerald6 chiavi
resourceEMERALD
interval65s
max-nearby4
hologramtrue
hologram-lines
["lang:content.generator.emerald", "lang:hologram.generator.tier", "lang:hologram.generator.in-seconds"]+2
generators.neutral.emerald.tiers3 chiavi
1{ interval: 65s }
2{ interval: 50s }
3{ interval: 30s }

Shop

Il layout sta in shops/bedwars.yml

shop2 chiavi
file"shops/bedwars.yml"
shop.npc2 chiavi
enabledtrue
typeVILLAGER

Marker

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 chiavi
RED_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 chiavi
original-blocks-unbreakabletrue
generator-radius4

Metti NO_BUILD intorno ai generatori centrali: senza, la prima cosa che fanno i giocatori è murarli.

build-height-limit25
events
[{ 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 chiave
enabledfalse

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 chiavi
title"&c&lBEDWARS"
scoreboard.lines4 chiavi
WAITING
["&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 chiavi
win{ 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 chiavi
join"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 chiave
enabledtrue

games/bingo.yml

Minigioco: Bingo
32 impostazioni
plugins/ShadowGames/games/bingo.yml
enabledtrue
countdown30s
max-duration45m
respawn-delay5s
buildtrue
board4 chiavi
size5
win-conditionLINE

LINE | FULL | MOST

shared-boardtrue

La stessa cartella per tutti è ciò che rende il gioco competitivo: tutti cercano le stesse cose e si incontrano negli stessi posti.

seed0

Un seed fisso rende una partita ripetibile: ai tornei serve.

difficulty3 chiavi
easy10
medium10
hard5
items3 chiavi
easy
[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 chiavi
auto-completetrue
pvpfalse
show-otherstrue
markers2 chiavi
QUARTZ_BLOCK"PLAYER_SPAWN"
BEACON"CENTER"
kits1 chiave
enabledfalse

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 chiavi
title"&a&lBINGO"
scoreboard.lines4 chiavi
WAITING
["&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 chiavi
win{ 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 chiavi
join"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 chiave
enabledfalse

games/blockparty.yml

Minigioco: Block Party
32 impostazioni
plugins/ShadowGames/games/blockparty.yml
enabledtrue
countdown15s
max-duration10m
lives1
buildfalse
rounds5 chiavi

Un 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 sparisce
dance-time5

Quanto dura il ballo prima che la musica si fermi.

start-time6

Quanto tempo hai per raggiungere il colore, nel primo round.

decrease0.4

Di quanto si accorcia ogni round, e il minimo sotto cui non scende mai.

min-time1.5
clear-time2
music3 chiavi
playlist[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-instrumentPLING

La nota secca nell'istante in cui la musica si ferma: il silenzio deve essere un evento, non un'assenza.

victoryvictory
floor5 chiavi
materials
[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-roundtrue

Senza rimescolare, dopo tre round tutti sanno dove andare.

live-shuffletrue

Il 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-every4

A 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-blocks12
markers2 chiavi
QUARTZ_BLOCK"PLAYER_SPAWN"
WHITE_WOOL"PARTY_FLOOR"
kits1 chiave
enabledfalse

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 chiavi
title"&d&lBLOCK PARTY"
scoreboard.lines4 chiavi
WAITING
["&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 chiavi
win{ 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 chiavi
join"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 chiave
enabledfalse

games/bridge.yml

Minigioco: The Bridge
31 impostazioni
plugins/ShadowGames/games/bridge.yml
enabledtrue
countdown15s
grace-period0s
max-duration20m
respawn-delay2s
goals-to-win5
friendly-firefalse
buildtrue
kit3 chiavi

Il kit è fisso di proposito: The Bridge è un gioco di abilità, non di equipaggiamento.

fixed"bridge/default"
infinite-blockstrue
arrow-regen3s
goal2 chiavi
own-goal-blockedtrue
celebration3s
void1 chiave
kill-below40

Cadere non è una vera morte: costa la corsa e nient'altro. È questo che mantiene il gioco rapido invece che punitivo.

markers3 chiavi
RED_WOOL"TEAM_SPAWN"
END_PORTAL_FRAME"GOAL"
BEACON"CENTER"
kits1 chiave
enabledfalse

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 chiavi
title"&9&lTHE BRIDGE"
scoreboard.lines4 chiavi
WAITING
["&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 chiavi
win{ 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 chiave
enabledtrue

Suoni

Solo tre momenti. Svuota un valore per disattivarlo, oppure fallo puntare a un suono del tuo resource pack.

sounds3 chiavi
join"entity.experience_orb.pickup"
start"entity.ender_dragon.growl"
kill"entity.player.levelup"

games/buildbattle.yml

Minigioco: Build Battle
35 impostazioni
plugins/ShadowGames/games/buildbattle.yml
enabledtrue
countdown30s
max-duration20m
build-time6m
vote-time20s
modes3 chiavi
defaultsolo
solo{ players-per-plot: 1 }
teams{ players-per-plot: 2 }
themes4 chiavi
difficultymedium
easy
["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 chiavi
blocksALL
flytrue
isolatedtrue

Se i giocatori possono vedersi, copiano.

options-menutrue
voting5 chiavi
scale5
anonymoustrue
self-votefalse
shuffletrue
reveal-at-endtrue

Un totale visibile trasforma gli ultimi lotti in una gara di popolarità.

markers2 chiavi
LIME_WOOL"PLOT"
BEACON"CENTER"
kits1 chiave
enabledfalse

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 chiavi
title"&b&lBUILD BATTLE"
scoreboard.lines4 chiavi
WAITING
["&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 chiavi
win{ 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 chiavi
join"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 chiave
enabledfalse

games/ctf.yml

Minigioco: Capture the Flag
32 impostazioni
plugins/ShadowGames/games/ctf.yml
enabledtrue
countdown30s
max-duration20m
respawn-delay5s
captures-to-win3
friendly-firefalse
buildfalse
flag6 chiavi
wear-on-headtrue
glow-carriertrue
require-own-flag-hometrue

Per segnare ti serve la tua bandiera alla base: è questo che lo rende un gioco tattico invece che una corsa.

ally-touch-returnstrue
return-after30s
carrier-effects[{ type: SLOWNESS, amplifier: 0 }]
markers3 chiavi
RED_WOOL"TEAM_SPAWN"
RED_BANNER"FLAG"
BEACON"CENTER"
kits2 chiavi
enabledtrue
folder"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 chiavi
title"&c&lCAPTURE THE FLAG"
scoreboard.lines4 chiavi
WAITING
["&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 chiavi
win{ 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 chiave
enabledtrue

Suoni

Solo tre momenti. Svuota un valore per disattivarlo, oppure fallo puntare a un suono del tuo resource pack.

sounds3 chiavi
join"entity.experience_orb.pickup"
start"entity.ender_dragon.growl"
kill"entity.player.levelup"

games/dropper.yml

Minigioco: Dropper
26 impostazioni
plugins/ShadowGames/games/dropper.yml
enabledtrue
countdown10s
max-duration15m
buildfalse
levels3 chiavi
auto-detecttrue
modeSEQUENTIAL
time-limit2m
rules4 chiavi
fall-damagefalse
touch-killstrue
no-elytratrue
no-slow-falltrue
markers3 chiavi
EMERALD_BLOCK"START"
GOLD_BLOCK"FINISH"
BEACON"CENTER"
kits1 chiave
enabledfalse

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 chiavi
title"&9&lDROPPER"
scoreboard.lines4 chiavi
WAITING
["&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 chiavi
lose{ 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 chiavi
join"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 chiave
enabledtrue

games/duels.yml

Minigioco: Duels
34 impostazioni
plugins/ShadowGames/games/duels.yml
Note del file

Ogni modalità è un kit più due interruttori: otto modalità costano otto blocchi di YAML, non otto classi.

enabledtrue
countdown5s
max-duration10m
rounds1
buildfalse
modes9 chiavi
defaultclassic
classic
{ 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 chiavi
enabledtrue
timeout60s
bettingtrue

Le scommesse usano le monete di gioco, mai l'economia reale.

max-bet10000
markers2 chiavi
QUARTZ_BLOCK"TEAM_SPAWN"
BEACON"CENTER"
kits1 chiave
enabledfalse

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 chiavi
title"&e&lDUELS"
scoreboard.lines4 chiavi
WAITING
["&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 chiavi
kill{ 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 chiave
enabledtrue

Suoni

Solo tre momenti. Svuota un valore per disattivarlo, oppure fallo puntare a un suono del tuo resource pack.

sounds3 chiavi
join"entity.experience_orb.pickup"
start"block.note_block.pling"
kill"entity.player.levelup"

games/eggwars.yml

Minigioco: EggWars
59 impostazioni
plugins/ShadowGames/games/eggwars.yml
enabledtrue
countdown30s
max-duration40m
respawn-delay5s
friendly-firefalse
buildtrue
eggs2 chiavi
own-egg-protectedtrue
broadcasttrue
generators2 chiavi

I 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 chiavi
generators.tiers.iron5 chiavi
resourceIRON_INGOT
interval4s
max-nearby48
hologramtrue
generators.tiers.iron.tiers3 chiavi
1{ interval: 4s }
2{ interval: 2s }
3{ interval: 1s, amount: 2 }
generators.tiers.gold5 chiavi
resourceGOLD_INGOT
interval12s
max-nearby24
hologramtrue
generators.tiers.gold.tiers3 chiavi
1{ interval: 12s }
2{ interval: 8s }
3{ interval: 5s }
generators.tiers.diamond5 chiavi
resourceDIAMOND
interval60s
max-nearby8
hologramtrue
generators.tiers.diamond.tiers2 chiavi
1{ interval: 60s }
2{ interval: 40s }
generators.upgrades3 chiavi

Quanto costa un livello quando clicchi il generatore.

generators.upgrades.iron2 chiavi
2{ cost: { IRON_INGOT: 8 } }
3{ cost: { GOLD_INGOT: 12 } }
generators.upgrades.gold2 chiavi
2{ cost: { GOLD_INGOT: 8 } }
3{ cost: { DIAMOND: 4 } }
generators.upgrades.diamond1 chiave
2{ cost: { DIAMOND: 6 } }
shop2 chiavi
file"shops/eggwars.yml"
shop.npc2 chiavi
enabledtrue
typeVILLAGER
markers6 chiavi
RED_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 chiave
enabledfalse

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 chiavi
title"&e&lEGGWARS"
scoreboard.lines4 chiavi
WAITING
["&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 chiavi
win{ 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 chiave
enabledtrue

Suoni

Solo tre momenti. Svuota un valore per disattivarlo, oppure fallo puntare a un suono del tuo resource pack.

sounds3 chiavi
join"entity.experience_orb.pickup"
start"entity.ender_dragon.growl"
kill"entity.player.levelup"

games/gungame.yml

Minigioco: Gun Game
29 impostazioni
plugins/ShadowGames/games/gungame.yml
enabledtrue
countdown15s
max-duration20m
respawn-delay2s
buildfalse
rules5 chiavi
demote-on-deathfalse

Perdere un livello alla morte allunga le partite e frustra: lascialo disattivato a meno che qualcuno non lo chieda.

any-weapon-countstrue
final-level-winstrue
heal-on-level-uptrue

Senza, il leader è anche il più malconcio: il gioco punisce chi lo sta vincendo.

announce-level-uptrue
ladder
[{ 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 chiavi
safe-distance10
protection2s
markers2 chiavi
QUARTZ_BLOCK"PLAYER_SPAWN"
BEACON"CENTER"
kits1 chiave
enabledfalse

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 chiavi
title"&f&lGUN GAME"
scoreboard.lines4 chiavi
WAITING
["&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 chiavi
lose{ 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 chiave
enabledtrue

Suoni

Solo tre momenti. Svuota un valore per disattivarlo, oppure fallo puntare a un suono del tuo resource pack.

sounds3 chiavi
join"entity.experience_orb.pickup"
start"block.note_block.pling"
kill"entity.player.levelup"

games/hideandseek.yml

Minigioco: Hide and Seek
38 impostazioni
plugins/ShadowGames/games/hideandseek.yml
enabledtrue
countdown20s
max-duration10m
buildfalse
hide7 chiavi
time45s
blind-seekerstrue
disguiseBLOCK
blocks[ ]

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-changetrue
change-cooldown10s
snap-to-gridtrue
seekers6 chiavi
ratio0.2
minimum1
kit"hideandseek/seeker"
respawn-delay5s
radartrue
radar-range20
anticamp4 chiavi

Non è facoltativo: senza, una partita finisce con tre persone dentro un muro e venti minuti in cui nessuno le trova.

enabledtrue
idle-time45s
sound"block.note_block.pling"
reveal-after90s
markers3 chiavi
LIME_WOOL"TEAM_SPAWN:HIDERS"
RED_WOOL"TEAM_SPAWN:SEEKERS"
BEACON"CENTER"
kits1 chiave
enabledfalse

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 chiavi
title"lang:content.board.hideandseek.title"
scoreboard.lines4 chiavi
WAITING
["&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 chiavi
kill{ 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 chiavi
join"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 chiave
enabledfalse

games/hungergames.yml

Minigioco: HungerGames
40 impostazioni
plugins/ShadowGames/games/hungergames.yml
enabledtrue
countdown60s
max-duration30m
lives1
buildtrue
start3 chiavi
freeze30s

Trenta secondi fermi su un piedistallo a fissare la cornucopia: è da lì che nasce tutta la tensione della partita.

invulnerable-during-freezetrue
remove-pedestalstrue
chests2 chiavi
fill-on-starttrue
one-timetrue
markers5 chiavi
QUARTZ_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 chiavi
loot.tier13 chiavi
min-stacks2
max-stacks5
entries
[{ 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 chiavi
min-stacks4
max-stacks7
entries
[{ 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 chiavi
min-stacks6
max-stacks9
inherittier2
kits1 chiave
enabledfalse

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 chiavi
title"&6&lHUNGER GAMES"
scoreboard.lines4 chiavi
WAITING
["&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 chiavi
win{ 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 chiave
enabledtrue

Suoni

Solo tre momenti. Svuota un valore per disattivarlo, oppure fallo puntare a un suono del tuo resource pack.

sounds3 chiavi
join"entity.experience_orb.pickup"
start"entity.wither.spawn"
kill"entity.player.levelup"

games/infection.yml

Minigioco: Infection
37 impostazioni
plugins/ShadowGames/games/infection.yml
enabledtrue
countdown20s
max-duration8m
respawn-delay3s
buildtrue
infection4 chiavi
delay20s
initial-ratio0.15

0.15 su venti giocatori fa tre zombie: la quantità che rende la partita tesa senza darla già per persa.

minimum-initial1
patient-zero-buff
[{ type: SPEED, amplifier: 1 }, { type: STRENGTH, amplifier: 0 }]+1

Senza questo bonus il primo zombie non prende mai nessuno.

zombies4 chiavi
respawn-delay3s
kit"infection/zombie"
glowtrue
effects[{ type: SPEED, amplifier: 0 }]
survivors3 chiavi
kit"infection/survivor"
buildtrue
build-blocks[OAK_PLANKS, IRON_BARS]
last-survivor3 chiavi
glow-alltrue
broadcasttrue
buff
[{ type: SPEED, amplifier: 1 }, { type: REGENERATION, amplifier: 0 }]+1
markers3 chiavi
LIME_WOOL"TEAM_SPAWN:SURVIVORS"
GREEN_WOOL"TEAM_SPAWN:ZOMBIES"
BEACON"CENTER"
kits2 chiavi
enabledtrue
folder"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 chiavi
title"&2&lINFECTION"
scoreboard.lines4 chiavi
WAITING
["&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 chiavi
win{ 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 chiavi
join"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 chiave
enabledtrue

games/kitpvp.yml

Minigioco: KitPvP
38 impostazioni
plugins/ShadowGames/games/kitpvp.yml
enabledtrue
countdown10s
max-duration10m
respawn-delay2s
kills-to-win0
buildfalse
friendly-firetrue
spawn4 chiavi
smarttrue

Senza questo il gioco si trasforma in spawn camping in due minuti.

safe-distance12
protection3s
break-on-attacktrue
streaks3 chiavi
enabledtrue
shutdown-bonus2.0

Interrompere una lunga serie vale più della kill: è ciò che trasforma "quel giocatore sta vincendo" in "andiamo a prenderlo".

streaks.rewards3 chiavi
streaks.rewards.31 chiave
effects[{ type: SPEED, amplifier: 0, duration: 30s }]
streaks.rewards.52 chiavi
broadcasttrue
effects[{ type: REGENERATION, amplifier: 0, duration:…]
streaks.rewards.103 chiavi
broadcasttrue
glowtrue
items[{ material: GOLDEN_APPLE, amount: 2 }]
markers3 chiavi
QUARTZ_BLOCK"PLAYER_SPAWN"
BARRIER"NO_BUILD"
BEACON"CENTER"
kits3 chiavi
enabledtrue
folder"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 chiavi
title"&c&lKITPVP"
scoreboard.lines4 chiavi
WAITING
["&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 chiavi
lose{ 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 chiave
enabledtrue

Suoni

Solo tre momenti. Svuota un valore per disattivarlo, oppure fallo puntare a un suono del tuo resource pack.

sounds3 chiavi
join"entity.experience_orb.pickup"
start"block.note_block.pling"
kill"entity.player.levelup"

games/koth.yml

Minigioco: King of the Hill
30 impostazioni
plugins/ShadowGames/games/koth.yml
enabledtrue
countdown20s
max-duration15m
respawn-delay5s
points-to-win300
buildfalse
hill7 chiavi
radius8
height6
capture-time10s
points-per-second1
contest-modePAUSE

Contendere la collina mette in pausa la cattura invece di azzerarla: azzerarla punisce due volte l'attaccante e rende imprendibile una collina difesa.

multiplefalse
particlestrue
markers2 chiavi
RED_WOOL"TEAM_SPAWN"
BEACON"CAPTURE_POINT"
kits2 chiavi
enabledtrue
folder"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 chiavi
title"&6&lKING OF THE HILL"
scoreboard.lines4 chiavi
WAITING
["&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 chiavi
win{ 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 chiavi
join"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 chiave
enabledtrue

games/luckywars.yml

Minigioco: LuckyWars
31 impostazioni
plugins/ShadowGames/games/luckywars.yml
Note del file

SkyWars in cui ogni blocco può salvarti o ucciderti.

enabledtrue
countdown20s
grace-period10s
max-duration20m
lives1
buildtrue
void1 chiave
kill-below0
markers4 chiavi
BLUE_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 chiavi
blockYELLOW_TERRACOTTA
outcomes
[{ 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 chiave
loot.island3 chiavi
min-stacks2
max-stacks4
entries
[{ 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 chiave
enabledfalse

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 chiavi
title"&a&lLUCKYWARS"
scoreboard.lines4 chiavi
WAITING
["&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 chiavi
lose{ 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 chiavi
join"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 chiave
enabledfalse

games/manhunt.yml

Minigioco: Manhunt
32 impostazioni
plugins/ShadowGames/games/manhunt.yml
enabledtrue
countdown20s
max-duration60m
buildtrue
objectiveSURVIVE
head-start3m
hunters3 chiavi
respawn-delay10s
kit"manhunt/hunter"
hunters.compass5 chiavi
enabledtrue
update5s

Le due manopole che decidono se il runner ha una possibilità. Aggiornamenti rari e bassa precisione = una caccia interessante.

inaccuracy0
cross-dimensiontrue
proximity-soundtrue
runner3 chiavi
kit"manhunt/runner"
max-health24
radartrue
markers2 chiavi
LIME_WOOL"TEAM_SPAWN:RUNNER"
RED_WOOL"TEAM_SPAWN:HUNTERS"
kits1 chiave
enabledfalse

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 chiavi
title"&5&lMANHUNT"
scoreboard.lines4 chiavi
WAITING
["&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 chiavi
win{ 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 chiavi
join"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 chiave
enabledtrue

games/murdermystery.yml

Minigioco: Murder Mystery
35 impostazioni
plugins/ShadowGames/games/murdermystery.yml
enabledtrue
countdown20s
max-duration8m
lives1
buildfalse
roles3 chiavi
murderers1
detectives1
roles.scale2 chiavi

Un 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 chiavi
throwabletrue
throw-cooldown5s
detective1 chiave
drop-on-deathtrue
innocent1 chiave
gold-needed10
gold2 chiavi
spawn-interval10s
max-on-ground20
rules3 chiavi
friendly-fire-penaltytrue

Senza penalità l'innocente armato spara a tutti finché non colpisce l'assassino, e il gioco del sospetto evapora.

penaltyBOW_LOST
murder-trail5s
markers3 chiavi
QUARTZ_BLOCK"PLAYER_SPAWN"
GOLD_BLOCK"GOLD_SPAWN"
BEACON"CENTER"
kits1 chiave
enabledfalse

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 chiavi
title"&5&lMURDER MYSTERY"
scoreboard.lines4 chiavi
WAITING
["&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 chiavi
win{ 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 chiavi
join"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 chiave
enabledfalse

games/oitc.yml

Minigioco: One in the Chamber
29 impostazioni
plugins/ShadowGames/games/oitc.yml
enabledtrue
countdown15s
max-duration10m
respawn-delay3s
lives3
buildfalse
rules5 chiavi
one-hit-killtrue
sword-instant-killtrue
pickup-arrowstrue
arrows-per-kill1
arrow-despawn5s

Senza questo, dopo tre minuti il pavimento è pieno di frecce e chi le raccoglie diventa imbattibile.

spawn2 chiavi
safe-distance10
protection2s
markers2 chiavi
QUARTZ_BLOCK"PLAYER_SPAWN"
BEACON"CENTER"
kits1 chiave
enabledfalse

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 chiavi
title"&6&lONE IN THE CHAMBER"
scoreboard.lines4 chiavi
WAITING
["&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 chiavi
lose{ 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 chiave
enabledtrue

Suoni

Solo tre momenti. Svuota un valore per disattivarlo, oppure fallo puntare a un suono del tuo resource pack.

sounds3 chiavi
join"entity.experience_orb.pickup"
start"block.note_block.pling"
kill"entity.player.levelup"

games/paintball.yml

Minigioco: Paintball
59 impostazioni
plugins/ShadowGames/games/paintball.yml
enabledtrue
countdown20s
max-duration10m
respawn-delay5s
buildfalse
friendly-firefalse
modeKILLS

Come 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-win50
coverage-to-win70

Solo 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-minimum200
streak-announce5

Quante 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 chiavi
weapons.rifle11 chiavi
display-name"lang:content.game.paintball.rifle.name"
description["lang:content.game.paintball.rifle.lore"]
itemSNOWBALL
slot0
pellets1
spread0.0
speed1.8
cooldown-ticks6
ammo-cost1
splat-radius1
sound"entity.snowball.throw"
Ancora 2 voci con la stessa forma di rifle: shotgun, sniper
weapons.grenade11 chiavi
display-name"lang:content.game.paintball.grenade.name"
description["lang:content.game.paintball.grenade.lore"]
itemFIRE_CHARGE
slot3
pellets1
spread0.0
speed1.1
cooldown-ticks60
ammo-cost6
splat-radius4
sound"entity.witch.throw"

Riservala ai VIP togliendo il commento: permission: "shadowgames.paintball.grenade"

gun7 chiavi
ammo16

Le munizioni con cui inizi un round, e il tetto massimo.

max-ammo32
regen2s

Rigenerazione lenta ovunque, così non resti mai a secco per sempre.

trailstrue

La scia colorata di un pallino in volo: vedi da dove è arrivato un colpo, ed è questo che rende leggibile uno scontro a fuoco.

splattrue

Gli schizzi sono cosmetici in KILLS e sono il punteggio in COVERAGE.

splat-duration30s
splat-radius1
ammo-stations2 chiavi

Le 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.

radius3
per-tick4
markers3 chiavi
RED_WOOL"TEAM_SPAWN"
DISPENSER"AMMO_STATION"
BEACON"CENTER"
kits1 chiave
enabledfalse

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 chiavi
title"&d&lPAINTBALL"
scoreboard.lines4 chiavi
WAITING
["&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 chiavi
lose{ 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 chiavi
join"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 chiave
enabledtrue

games/parkour.yml

Minigioco: Parkour
37 impostazioni
plugins/ShadowGames/games/parkour.yml
enabledtrue
countdown5s
max-duration30m
buildfalse
modeFREE
FREE = l'arena resta aperta e la gara è la classifica.
RACE = partono tutti insieme e vince il primo che arriva.
checkpoints4 chiavi
radius2
strict-ordertrue

Blocca le scorciatoie: quasi sempre è quello che vuoi.

sound"entity.experience_orb.pickup"
beam-nexttrue
rules5 chiavi
invulnerabletrue
fall-damagefalse
reset-below0
no-flytrue
no-collisiontrue

Con più di due giocatori è essenziale: senza, la gente si spinge giù al primo salto.

records3 chiavi
enabledtrue
show-on-finishtrue
records.medals3 chiavi
gold45s
silver60s
bronze90s
markers3 chiavi
EMERALD_BLOCK"START"
LIGHT_BLUE_WOOL"CHECKPOINT"
GOLD_BLOCK"FINISH"
kits1 chiave
enabledfalse

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 chiavi
title"&a&lPARKOUR"
scoreboard.lines4 chiavi
WAITING
["&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 chiavi
lose{ 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 chiavi
join"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 chiave
enabledtrue

games/quake.yml

Minigioco: Quake
32 impostazioni
plugins/ShadowGames/games/quake.yml
enabledtrue
countdown15s
max-duration10m
respawn-delay1s
kills-to-win25
buildfalse
railgun6 chiavi
reload1.2s
piercingtrue

Il raggio attraversa i giocatori: allinearne due e prenderli entrambi è il momento migliore della partita.

max-range100
sound-fire"entity.firework_rocket.blast"
sound-hit"entity.player.levelup"
knockback0.4
movement1 chiave
speed0.16

Quake è un gioco di movimento, non di combattimento.

powerups2 chiavi
enabledtrue
respawn30s
markers3 chiavi
QUARTZ_BLOCK"PLAYER_SPAWN"
GOLD_BLOCK"POWERUP"
BEACON"CENTER"
kits1 chiave
enabledfalse

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 chiavi
title"&b&lQUAKE"
scoreboard.lines4 chiavi
WAITING
["&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 chiavi
lose{ 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 chiave
enabledtrue

Suoni

Solo tre momenti. Svuota un valore per disattivarlo, oppure fallo puntare a un suono del tuo resource pack.

sounds3 chiavi
join"entity.experience_orb.pickup"
start"entity.blaze.shoot"
kill"entity.firework_rocket.blast"

games/race.yml

Minigioco: Race
32 impostazioni
plugins/ShadowGames/games/race.yml
enabledtrue
countdown20s
max-duration10m
laps3
buildfalse
modeFOOT

FOOT | BOAT | ELYTRA | HORSE

vehicle4 chiavi
boat-typeOAK
horse-speed0.35
rocket-regen3s
rocket-max8
checkpoints4 chiavi
radius4
strict-ordertrue

Senza un ordine rigido ogni percorso ha una scorciatoia, e la scorciatoia è sempre più efficiente del percorso.

sound"entity.experience_orb.pickup"
beam-nexttrue
rules3 chiavi
pvpfalse
off-track-respawntrue
record-timestrue
markers3 chiavi
EMERALD_BLOCK"START"
LIGHT_BLUE_WOOL"CHECKPOINT"
GOLD_BLOCK"FINISH"
kits1 chiave
enabledfalse

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 chiavi
title"&e&lRACE"
scoreboard.lines4 chiavi
WAITING
["&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 chiavi
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.

sounds2 chiavi
join"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 chiave
enabledtrue

games/skywars.yml

Minigioco: SkyWars
50 impostazioni
plugins/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.

enabledtrue
countdown20s
countdown-full10s
grace-period10s
max-duration20m
end-duration10s
lives1

Niente respawn: chi muore diventa spettatore.

friendly-firefalse
buildtrue

Gabbie

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 chiavi
enabledtrue
material"%team%_STAINED_GLASS"

%team% diventa il colore della squadra: una gabbia per colore.

remove-on-starttrue

Il vuoto

void1 chiave
kill-below0

Sotto questa altezza muori.

assist-window10s

Chi 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 chiavi
BLUE_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 chiavi
loot.island4 chiavi
min-stacks4
max-stacks7
clear-firsttrue
entries
[{ 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 chiavi
min-stacks6
max-stacks10
clear-firsttrue
entries
[{ 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 chiavi

Il refill usa di nuovo la tabella del centro, senza ripeterla.

inheritmiddle
clear-firsttrue

Kit

Stanno in kits/skywars/. Con enabled: false tutti partono uguali, che è la versione classica del gioco.

kits5 chiavi
enabledtrue
folder"skywars"
include-commontrue
default"warrior"
remember-last-choicetrue

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 chiavi
title"&b&lSKYWARS"
scoreboard.lines4 chiavi
WAITING
["&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 chiavi
win{ 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 chiavi
join"entity.experience_orb.pickup"
start"entity.ender_dragon.growl"
kill"entity.player.levelup"
protection1 chiave
original-blocks-unbreakabletrue

Ranked

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 chiave
enabledtrue

games/speedbuilders.yml

Minigioco: Speed Builders
32 impostazioni
plugins/ShadowGames/games/speedbuilders.yml
enabledtrue
countdown20s
max-duration20m
rounds8
lives5
round4 chiavi
preview-time10s
build-time60s
time-decrease5s
min-time20s
builds4 chiavi
folder"speedbuilders"
orderBY_SIZE
exact-materialstrue
decoys2

I blocchi che non fanno nulla sono ciò che rende il gioco difficile senza allungare i tempi.

scoring4 chiavi
correct1
wrong-1
pass-threshold0.9
perfect-bonus50
markers3 chiavi
LIME_WOOL"PLOT"
WHITE_WOOL"PREVIEW"
BEACON"CENTER"
kits1 chiave
enabledfalse

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 chiavi
title"&e&lSPEED BUILDERS"
scoreboard.lines4 chiavi
WAITING
["&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 chiavi
win{ 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 chiavi
join"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 chiave
enabledtrue

games/spleef.yml

Minigioco: Spleef
30 impostazioni
plugins/ShadowGames/games/spleef.yml
enabledtrue
countdown15s
max-duration8m
lives1
buildfalse
floor3 chiavi
materialSNOW_BLOCK
instant-breaktrue
dropsfalse
modes5 chiavi
defaultclassic
classic{ 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 chiavi
pvpfalse
kill-below0
only-floor-materialtrue

Impedisce di scavare i muri dell'arena, che è l'errore più comune quando si costruisce una nuova mappa.

markers2 chiavi
QUARTZ_BLOCK"PLAYER_SPAWN"
BEACON"CENTER"
kits1 chiave
enabledfalse

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 chiavi
title"&f&lSPLEEF"
scoreboard.lines4 chiavi
WAITING
["&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 chiavi
win{ 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 chiavi
join"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 chiave
enabledtrue

games/sumo.yml

Minigioco: Sumo
28 impostazioni
plugins/ShadowGames/games/sumo.yml
enabledtrue
countdown5s
max-duration5m
rounds3
round-duration90s
buildfalse
rules3 chiavi
knockback-multiplier1.4

L'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-below0
kit"sumo/default"
shrink3 chiavi
enabledtrue
start-at30s
every15s
markers2 chiavi
QUARTZ_BLOCK"TEAM_SPAWN"
BEACON"CENTER"
kits1 chiave
enabledfalse

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 chiavi
title"&e&lSUMO"
scoreboard.lines4 chiavi
WAITING
["&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 chiavi
kill{ 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 chiave
enabledtrue

Suoni

Solo tre momenti. Svuota un valore per disattivarlo, oppure fallo puntare a un suono del tuo resource pack.

sounds3 chiavi
join"entity.experience_orb.pickup"
start"block.note_block.bell"
kill"entity.player.levelup"

games/tdm.yml

Minigioco: Team Deathmatch
30 impostazioni
plugins/ShadowGames/games/tdm.yml
enabledtrue
countdown20s
max-duration12m
respawn-delay3s
kills-to-win50
buildfalse
friendly-firefalse
rules2 chiavi
spawn-camp-penaltytrue
spawn-camp-radius15
spawn3 chiavi
smarttrue

La differenza tra un gioco giocabile e uno in cui muori ogni tre secondi appena rinato.

protection3s
break-on-attacktrue
markers3 chiavi
RED_WOOL"TEAM_SPAWN"
BARRIER"NO_BUILD"
BEACON"CENTER"
kits2 chiavi
enabledtrue
folder"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 chiavi
title"&c&lTEAM DEATHMATCH"
scoreboard.lines4 chiavi
WAITING
["&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 chiavi
win{ 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 chiave
enabledtrue

Suoni

Solo tre momenti. Svuota un valore per disattivarlo, oppure fallo puntare a un suono del tuo resource pack.

sounds3 chiavi
join"entity.experience_orb.pickup"
start"entity.ender_dragon.growl"
kill"entity.player.levelup"

games/tntrun.yml

Minigioco: TNT Run
24 impostazioni
plugins/ShadowGames/games/tntrun.yml
enabledtrue
countdown15s
max-duration8m
lives1
buildfalse
floor2 chiavi
fall-delay0.5s

Mezzo secondo: istantaneo vorrebbe dire morire al primo passo.

sound"block.sand.break"
rules3 chiavi
pvpfalse
kill-below0
double-jumpfalse
markers2 chiavi
QUARTZ_BLOCK"PLAYER_SPAWN"
BEACON"CENTER"
kits1 chiave
enabledfalse

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 chiavi
title"&c&lTNT RUN"
scoreboard.lines4 chiavi
WAITING
["&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 chiavi
win{ 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 chiavi
join"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 chiave
enabledtrue

games/uhc.yml

Minigioco: UHC
45 impostazioni
plugins/ShadowGames/games/uhc.yml
enabledtrue
countdown60s
max-duration120m
lives1
buildtrue
pvp-at20m
scatter4 chiavi
radius800
min-distance150
safe-surfacetrue

Mai dentro la roccia, mai in un lago, mai sopra la lava.

team-togethertrue
rules7 chiavi
natural-regenerationfalse
golden-apple-heal4
enchanted-applesfalse
nethertrue
strength-nerftrue
extra-dropstrue
apple-drop-chance0.05
scenarios10 chiavi

Gli scenari classici. Ognuno è un interruttore, non una classe.

cutcleanfalse
timberfalse
bleedingfalse
firelessfalse
rodlessfalse
goldlessfalse
bowlessfalse
vanilla-plustrue
hastey-boysfalse
diamondlessfalse
markers2 chiavi
BEACON"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 chiave
enabledfalse

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 chiavi
title"&4&lUHC"
scoreboard.lines4 chiavi
WAITING
["&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 chiavi
win{ 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 chiave
enabledtrue

Suoni

Solo tre momenti. Svuota un valore per disattivarlo, oppure fallo puntare a un suono del tuo resource pack.

sounds3 chiavi
join"entity.experience_orb.pickup"
start"entity.wither.spawn"
kill"entity.player.levelup"

games/woolwars.yml

Minigioco: Wool Wars
29 impostazioni
plugins/ShadowGames/games/woolwars.yml
enabledtrue
countdown20s
max-duration15m
respawn-delay5s
rounds3
friendly-firefalse
buildtrue
wool3 chiavi
infinitetrue
break-enemytrue
break-ownfalse

Non 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 chiavi
RED_WOOL"TEAM_SPAWN"
WHITE_WOOL"WOOL_AREA"
BEACON"CENTER"
kits3 chiavi
enabledtrue
folder"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 chiavi
title"&d&lWOOL WARS"
scoreboard.lines4 chiavi
WAITING
["&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 chiavi
win{ 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 chiave
enabledtrue

Suoni

Solo tre momenti. Svuota un valore per disattivarlo, oppure fallo puntare a un suono del tuo resource pack.

sounds3 chiavi
join"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
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.

FileLinguaTesti
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

  • prefix 1
  • command 21
  • play 16
  • match 52
  • death 11
  • hud 93
  • kit 11
  • shop 4
  • spectator 6
  • party 19
  • queue 6
  • vote 2
  • reward 21
  • progression 2
  • top 3
  • stats 1
  • stat 134
  • gui 115
  • lobby 4
  • sign 10
  • setup 31
  • arena 86
  • admin 292
  • games 7
  • category 5
  • game 195
  • cosmetic 24
  • common 4
  • state 6
  • leaderboard 1
  • ranked 10
  • achievement 5
  • tournament 38
  • network 14
  • parkour 43
  • license 49
  • locked 4
  • hologram 5
  • chatgames 73
  • content 423

Altro

Contenuti pronti, esempi, importazioni: i file che si copiano e si modificano come modello.

import/bedwars1058.yml

Importazione da: bedwars1058
21 impostazioni
plugins/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"
formatbedwars1058
gamebedwars
description"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 chiavi

Dove 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 chiavi
path"Team"

La sezione le cui chiavi sono i nomi delle squadre.

color"Color"
spawn"Spawn"
bed"Bed"
shop"Shop"
upgrade"Upgrade"
teams.generators2 chiavi

Generatori di squadra: nome della risorsa -> chiave nel file di origine.

IRON"Iron"
GOLD"Gold"
generators1 chiave

Generatori condivisi: ogni chiave è una risorsa, ogni valore una lista di posizioni.

path"generator"

import/bedwars2023.yml

Importazione da: bedwars2023
21 impostazioni
plugins/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"
formatbedwars2023
gamebedwars
description"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 chiavi

Dove 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 chiavi
path"Team"

La sezione le cui chiavi sono i nomi delle squadre.

color"Color"
spawn"Spawn"
bed"Bed"
shop"Shop"
upgrade"Upgrade"
teams.generators2 chiavi

Generatori di squadra: nome della risorsa -> chiave nel file di origine.

IRON"Iron"
GOLD"Gold"
generators1 chiave

Generatori condivisi: ogni chiave è una risorsa, ogni valore una lista di posizioni.

path"generator"

import/mbedwars.yml

Importazione da: mbedwars
21 impostazioni
plugins/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"
formatmbedwars
gamebedwars
description"lang:content.import.mbedwars"
detect[arenas, arena]
source"arenas/*.yml"
fields7 chiavi
id"name"
world"world"
min-players"min-players"
max-players"max-players"
team-size"players-per-team"
lobby"lobby"
spectator"spectator-spawn"
teams7 chiavi
path"teams"
color"color"
spawn"spawn"
bed"bed"
shop"shop-villager"
upgrade"upgrade-villager"
teams.generators2 chiavi
IRON"iron-spawner"
GOLD"gold-spawner"
generators1 chiave
path"spawners"

import/skywarsreloaded.yml

Importazione da: skywarsreloaded
16 impostazioni
plugins/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"
formatskywarsreloaded
gameskywars
description"lang:content.import.skywarsreloaded"
detect[maps, arenas]
source"maps/*.yml"
fields8 chiavi
id"displayname"
world"world"
min-players"minplayers"
max-players"maxplayers"
team-size"teamsize"
lobby"waitingroom"
spectator"spectatorspawn"
center"center"
teams3 chiavi
path"spawns"
color"color"
spawn"spawn"

achievements/

Gli obiettivi
15 file
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.yml
  • bedwars/finisher.yml
  • bridge/scorer.yml
  • global/champion.yml
  • global/marksman.yml
  • global/persistent.yml
  • global/rich.yml
  • global/slayer.yml
  • global/streaker.yml
  • global/veteran.yml
  • murdermystery/detective.yml
  • parkour/runner.yml
  • skywars/island-hopper.yml
  • skywars/void-hunter.yml
  • tntrun/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.

idveteran
display-name"lang:content.achievement.veteran.name"
description["lang:content.achievement.veteran.lore"]
iconCLOCK
statplayed
broadcasttrue
tiers
[{ 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
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.yml
  • bedwars/fortini.yml
  • bingo/outback.yml
  • duels/piazzale.yml
  • gungame/chiostro.yml
  • kitpvp/cortile.yml
  • oitc/loggia.yml
  • parkour/scala.yml
  • quake/atrio.yml
  • skywars/orbita.yml
  • spleef/disco.yml
  • sumo/pedana.yml
  • tntrun/torre.yml
  • uhc/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.

idhighlands
gamebattleroyale
display-name"lang:content.arena.battleroyale.highlands.name"
description"lang:content.arena.battleroyale.highlands.description"
author"ShadowMC"
enabledtrue
iconELYTRA
players3 chiavi
min4
max20
team-size1
world6 chiavi
modeGENERATED
environmentNORMAL
generatorNORMAL

NORMAL, 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.

border500

La 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.

time6000

Mezzogiorno fisso: nei mondi delle partite il ciclo giorno-notte è spento (worlds.gamerules in config.yml). Alla luce del giorno vedi chi sta scendendo.

weather-stormfalse

Niente 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 chiavi
CENTER[{ 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.
idpedana
gamesumo
display-name"lang:content.arena.sumo.pedana.name"
description"lang:content.arena.sumo.pedana.description"
author"ShadowMC"
enabledtrue
iconSLIME_BLOCK
players3 chiavi
min2
max2
team-size1
world8 chiavi
modeGENERATED
environmentNORMAL
generatorVOID
spawn-height100
border100
time6000
weather-stormfalse
world.region2 chiavi
min[-6, 100, -6]
max[6, 100, 6]
build1 chiave
components[{ id: pedana, layout: {…}, schematic: {…} }]
markers2 chiavi
QUARTZ_BLOCK""
DIAMOND_BLOCK"TEAM_SPAWN"
rules1 chiave
kill-below90

cosmetics/

I cosmetici
29 file
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.yml
  • cage/glass.yml
  • cage/gold.yml
  • cage/ice.yml
  • cage/obsidian.yml
  • death-effect/ashes.yml
  • death-effect/farewell.yml
  • death-effect/smoke.yml
  • kill-effect/blood.yml
  • kill-effect/confetti.yml
  • kill-effect/explosion.yml
  • kill-effect/lightning.yml
  • kill-effect/souls.yml
  • projectile-trail/arcane.yml
  • projectile-trail/smoke.yml
  • projectile-trail/sparks.yml
  • trail/dripping.yml
  • trail/ender.yml
  • trail/flame.yml
  • trail/hearts.yml
  • trail/magic.yml
  • trail/notes.yml
  • trail/snow.yml
  • victory-dance/flames.yml
  • victory-dance/hearts.yml
  • victory-dance/spiral.yml
  • win-effect/fireworks.yml
  • win-effect/thunder.yml
  • win-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'è.

idlightning
display-name"lang:content.cosmetic.kill-effect.lightning.name"
description["lang:content.cosmetic.kill-effect.lightning.…]
iconLIGHTNING_ROD
unlock1 chiave
cost10000
effect
[{ type: LIGHTNING, target: VICTIM }, { type: SOUND, value: ENTITY_LIGHTNING_BOLT_THUNDER, target: VICTIM }]+1

Esempio cosmetics/trail/ender.yml

idender
display-name"lang:content.cosmetic.trail.ender.name"
description["lang:content.cosmetic.trail.ender.lore"]
iconENDER_PEARL
particlePORTAL
count6
unlock1 chiave
level20

kits/

I kit, uno per file
30 file
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.yml
  • bridge/default.yml
  • common/default.yml
  • ctf/defender.yml
  • ctf/runner.yml
  • ctf/support.yml
  • duels/classic.yml
  • duels/sumo.yml
  • hideandseek/seeker.yml
  • infection/survivor.yml
  • infection/zombie.yml
  • kitpvp/archer.yml
  • kitpvp/warrior.yml
  • koth/guardian.yml
  • koth/raider.yml
  • koth/sniper.yml
  • manhunt/hunter.yml
  • manhunt/runner.yml
  • skywars/archer.yml
  • skywars/builder.yml
  • skywars/warrior.yml
  • spleef/bow.yml
  • spleef/shovel.yml
  • sumo/default.yml
  • tdm/assault.yml
  • tdm/sniper.yml
  • tdm/soldier.yml
  • woolwars/builder.yml
  • woolwars/swift.yml
  • woolwars/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.

iddefault
display-name"lang:content.kit.common.default.name"
description["lang:content.kit.common.default.lore"]
iconSTONE_SWORD
slot10
unlock1 chiave
defaulttrue
items2 chiavi
0{ material: STONE_SWORD }
1{ material: COOKED_BEEF, amount: 4 }
armor2 chiavi
chestplate
{ 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.

iddefault
display-name"lang:content.kit.bridge.default.name"
iconIRON_SWORD
unlock{ default: true }
items5 chiavi
0{ 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 chiavi
helmet{ 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
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.yml
  • custom-pack-example.yml
  • party.yml
  • tension.yml
  • victory.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_example
display-name"lang:content.music.pack_example.name"

sound: "shadowgames:music.party"

length2m30s

Quanto dura la traccia. Al motore serve per sapere quando la traccia è finita da sola, perché il server non ha altro modo di saperlo.

volume1.0
pitch1.0
melody4 chiavi

Un ripiego che suona per tutti anche senza il pack: se 'sound' manca o il giocatore non ha il pack, è questo che sente.

tempo5
instrumentHARP
looptrue
notes"C4 E4 G4 E4 F4 A4 C5 A4 G4 B4 D5 B4 C5 . . ."

parkour/

I percorsi parkour
3 file
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.yml
  • hard.yml
  • marathon.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.

ideasy
enabledtrue

enabled: 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"
level1
modeCHECKPOINT

Come 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-limit0

Quanto 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.5

Quanto 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 chiavi

La 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.

coins50
xp25
commands[ ]

Per riservarlo: il nodo necessario per farlo. permission: "shadowgames.parkour.facile"

shops/

I negozi, uno per file
2 file
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.yml
  • eggwars.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"
rows6
categories
[{ 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 chiavi
blocks
[{ 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 chiavi
title"lang:content.shop.upgrades-title"
rows4
items
[{ id: sharpness, slot: 10, icon: DIAMOND_SWORD, name: "lang:content.shop.upgrade.sharpness.name", max-level: 1, levels: {…} }, { id: protection, slot: 11, icon: IRON_CHESTPLATE, name: "lang:content.shop.upgrade.protect …+5

Tutta la documentazione