Configurazione
ShadowEssentials
Il cuore della suite: case, warp, kit, VIP, chat e i comandi di ogni giorno.
Dove sono i file
plugins/ShadowEssentials/ Il plugin li crea al primo avvio e li aggiorna da solo alle nuove versioni, senza toccare le tue modifiche.
Applicare le modifiche
/shadowessentials reload Rilegge i file senza riavviare il server.
Nessuna impostazione trovata
Prova con un’altra parola, oppure cerca in tutti i plugin.
Impostazioni
I file che decidono come si comporta il plugin. Si parte da qui.
config.yml
Impostazioni generali 86 impostazioni
config.ymlplugins/ShadowEssentials/config.yml Note del file
Solo le impostazioni principali. Tutto il resto sta nel suo file:
modules/<module>.yml impostazioni dei moduli kits/<kit>.yml un file per ogni kit vips/<tier>.yml un file per ogni tier VIP menus/<menu>.yml layout delle GUI lang/<locale>.yml traduzioni
COLORI - scrivili alla maniera di Minecraft, con &
&0-&9 &a-&f colori &l grassetto &o corsivo &n sottolineato &#ff8800 un colore esatto &r torna al normale && una & letterale
Funziona in ogni file del plugin: config, lingue, kit, ranghi VIP, ologrammi, cartelli e menu.
I tag più ricchi ci sono ancora per le cose che & non sa fare:
<gradient:#FFD700:#FFA500>GOLD</gradient> <click:open_url:'https://...'>site</click> <hover:show_text:'...'>hover me</hover>
Puoi mescolare i due sulla stessa riga senza problemi.
config-version1core6 chiaviserver-id"server-1"Identificativo di questo server, usato quando più server condividono un unico database.
profile-linger"5m"Per quanto tempo il profilo di un giocatore offline resta in cache nella memoria.
autosave"5m"Ogni quanto i profili dei giocatori online vengono scritti nel database.
audit-logtrueRegistra le azioni amministrative (ban, assegnazioni VIP, modifiche ai warp) in sb_audit_log.
auto-update-filestrueQuando aggiorni, i tuoi file vengono portati alla nuova versione automaticamente.
Continua a leggere
Ogni file viene ricostruito partendo da quello nuovo dentro il plugin (nuove impostazioni, nuovi messaggi, default corretti, nuovi commenti) e ogni valore che avevi cambiato o aggiunto viene riportato al suo interno; una chiave che hai cancellato resta cancellata. I vecchi file vengono conservati in backup/<date>/. Se qualcosa non si è potuto riportare - un'opzione che non esiste più, un valore del tipo sbagliato - PORTING-<version>.txt in questa cartella ti dice cosa sistemare. I kit (kits/) non vengono mai toccati.
false: i tuoi file non vengono mai toccati. Le nuove impostazioni e i nuovi messaggi funzionano comunque, letti dal plugin stesso, ma non compaiono nei tuoi file.
core.update-check3 chiavienabledtruenotify-consoletruenotify-playerstrueMessaggi e traduzioni
Il motore supporta QUALSIASI lingua: metti un file <locale>.yml in lang/ e viene caricato automaticamente. Le chiavi mancanti hanno un fallback chiave per chiave, quindi una traduzione parziale è utilizzabile fin dal primo giorno.
messages4 chiavidefault-locale"en_US"Usata quando il giocatore non ha una preferenza e la lingua del client è sconosciuta. Include en_US e it_IT. Imposta qui "it_IT" per un server italiano.
follow-client-localetrueSegui la lingua impostata nel client di Minecraft.
allow-player-choicetruePermetti ai giocatori di scegliere la lingua con /lang.
obfuscatedbarsCosa fa &k, ovunque: chat, tab list, ologrammi, tag di rango.
Continua a leggere
&k non disegna mai la lettera che hai scritto. Sessanta volte al secondo il client la butta via e disegna un glifo a caso "della stessa larghezza" - e decide cosa conta come stessa larghezza arrotondando per eccesso al pixel intero. Il font unicode viene caricato sopra quello normale a metà scala, quindi i suoi glifi sono larghi 1.5, 2.5, 3.5 px: il gruppo di una lettera da 2 px come la i contiene 624 glifi larghi 2 px e 376 larghi 1.5. Quel mezzo pixel viene ridisegnato a ogni frame, quindi tutto quello che segue il tag scivola a destra e a sinistra - e siccome la tab list è centrata, un solo tag di rango che trema fa tremare ogni nome sullo schermo. Un tag come "&b&ki&5Founder&b&ki &f" fa esattamente questo, a entrambe le estremità. Nel font normale ogni larghezza da 2 a 9 px è mescolata così, quindi non esiste un carattere sicuro su cui far girare &k.
La via d'uscita è un font diverso. "minecraft:alt" non contiene nessun carattere unicode, quindi ogni sua larghezza è un numero intero di pixel e un gruppo non può contenerne due: le barre girano tra tutte le forme di una sola larghezza esatta e non spingono niente. È quello che fa "bars".
bars le barre si muovono, la riga no. IL DEFAULT.
bars:X lo stesso sulla lettera X, ed è così che scegli la larghezza:
i 2 px, 4 forme (larga come la solita i - default)
C 3 px, 4 forme
G 4 px, 8 forme
N 5 px, 6 forme
A 6 px, 30 forme (la più vistosa)
stop toglie &k e mantiene i colori. Niente è più casuale,
quindi niente può muoversi - e se ne vanno anche le lettere di
riempimento sotto il tag, altrimenti il tag si leggerebbe iFounderi.
keep lascia &k esattamente com'era scritto, tremolio compreso.
un carattere fa girare &k su quel carattere nel font normale. Il vecchio
comportamento: trema a meno che il carattere non sia largo 10 px.Anche le parole di un giocatore ricevono le barre - nickname, tab, il nome sopra la testa, la riga di chat. Vengono interpretate con il set ridotto di tag più <font> e nient'altro, e qualsiasi <font> scritto da LORO viene spezzato prima, quindi l'unico font che può arrivare sullo schermo è questo.
/se obfuscated li mostra affiancati, così puoi scegliere a occhio.
bars è il default, e keep è l'impostazione che fa tremare. I due erano invertiti nelle build fino a questa: la nota sotto keep diceva che "non sposta mai il resto della riga", che è quello che il gioco promette e non quello che fa. Un nickname &ki faceva tremare l'intera riga di chat, l'intera tab list e il nome sopra la testa, e l'impostazione che lo risolve era proprio lì, spenta. Chi lo rimette come prima: è questo che stai accendendo.
Archiviazione dati
AUTO -> file YAML dentro la cartella di questo plugin (il default).
Niente da installare, niente da configurare, ogni file leggibile
e modificabile a mano. Se compili l'host MySQL qui sotto,
AUTO passa invece a quel database.
YAML -> usa sempre i file, anche se ci sono le credenziali MySQL
MYSQL -> usa sempre il database qui sottoContinua a leggere
Passare a un database in seguito non fa perdere nulla: crea un database vuoto, compila i cinque campi, poi esegui /se storage migrate ShadowEssentials crea da solo ogni tabella e indice alla prima connessione.
storage6 chiavitypeAUTODove stanno i file YAML, rispetto alla cartella di questo plugin:
data/players/<uuid>.yml un file per giocatore: profilo, home,
kit riscattati e consegne di kit in sospeso
data/players-index.yml nome -> uuid, così le ricerche offline sono istantanee
data/warps.yml tutti i warp del server
data/vip-grants.yml chi ha quale rango e fino a quando
data/audit.log azioni amministrativeflush-interval"30s"Ogni quanto i dati dei giocatori in buffer vengono scritti su disco. Le modifiche vengono salvate anche quando un giocatore esce e allo spegnimento, quindi questo decide solo quanto ti potrebbe costare un crash improvviso.
table-prefix"sb_"Prefisso delle tabelle, usato solo con il database. Comodo quando più server condividono un unico database.
storage.mysql6 chiavihost""Lascia vuoto l'host per restare sui file YAML.
port3306database"shadowessentials"username""password""storage.mysql.properties3 chiaviuseSSLfalsecharacterEncoding"utf8mb4"serverTimezone"UTC"storage.pool6 chiavimaximum-size10Solo database. Regola pratica: (core della CPU * 2) + 1, mai sopra 20.
minimum-idle2connection-timeout"10s"idle-timeout"10m"max-lifetime"30m"leak-detection"0s"Imposta un valore sopra 0 per registrare nel log le connessioni che non tornano mai nel pool.
storagefail-safetruetrue -> se l'archiviazione dati non funziona, continua con i moduli che non ne hanno bisogno false -> se l'archiviazione dati non funziona, spegni il plugin
Economia
ShadowEssentials NON implementa un'economia. Il denaro è compito del plugin ShadowEconomy. Questa sezione dice solo a chi chiederlo. Senza nessun provider installato, ogni costo è semplicemente zero.
economy3 chiaviproviderAUTOAUTO | SHADOW | VAULT | NONE
currency"default"Valuta usata per i costi di ShadowEssentials (kit, warp, home, teletrasporti).
free-when-missingtruetrue -> senza provider è tutto gratis false -> senza provider i comandi che hanno un costo vengono rifiutati
Comunicare con l'esterno
Qui è tutto SPENTO di default: il codice c'è ed è pronto, ma niente esce dal server e niente può raggiungerlo finché non lo accendi tu.
web2 chiaviIn uscita: eventi inviati a un sito web o a Discord
web.webhooks5 chiaviOgni evento qui sotto manda al suo indirizzo (url); un url vuoto vuol dire che quell'evento non viene mandato. "format" dice cosa viene mandato:
DISCORD un messaggio per un canale Discord. In Discord: impostazioni
del canale, Integrazioni, Webhook, creane uno e incolla
il suo indirizzo come url.
JSON un normale corpo JSON, per un sito tuo:
{ "event": "...", "timestamp": 0, "data": { ... } }Il formato scritto qui vale per ogni evento. Un evento può avere il suo,
accanto al suo url: join: { url: "...", format: JSON }enabledfalseformatDISCORDrate-limit20Numero massimo di invii al minuto, così Discord non ti applica il rate limit.
max-retries3web.webhooks.events4 chiaviweb.webhooks.events.punishments1 chiaveurl""web.webhooks.events.join1 chiaveurl""web.webhooks.events.vip1 chiaveurl""web.webhooks.events.audit1 chiaveurl""In entrata: un endpoint HTTP che il tuo sito può chiamare
web.api5 chiaviPer assegnare un rango nel momento in cui un pagamento va a buon fine, o per mostrare statistiche in tempo reale sul sito.
NON si avvia se il token è vuoto o più corto di 16 caratteri. Lascia bind su 127.0.0.1 e metti un reverse proxy (nginx, Caddy) davanti se il sito sta su un'altra macchina.
enabledfalsebind"127.0.0.1"port8123token""Genera qualcosa di lungo e casuale. Invialo con ogni richiesta:
Authorization: Bearer <token>
rate-limit60Endpoint disponibili:
GET /status versione, online, moduli GET /players chi e collegato GET /player?name=X profilo, playtime, tier VIP POST /vip/grant?player=X&tier=gold&duration=30d POST /command?run=say%20ciao
Moduli
Se elenchi un modulo qui, il suo valore prevale su "enabled" dentro il suo file. Un modulo disattivato non registra comandi, listener né tabelle: non costa nulla.
modules33 chiavicoretrueOgni modulo ha anche il suo "enabled" in cima a modules/<id>.yml. Basta uno dei due interruttori per spegnere un modulo, quindi quello che trovi per primo fa quello che ti aspetti. Questa lista serve a spegnere le cose da un unico file; non può forzare l'accensione di un modulo che il suo file ha disattivato.
teleporttruehomestruewarpstruespawntruekitstrueviptrueplayertruemoderationtruechattrueafktruemailtruerewardtruevouchertrueleaderboardtruetablisttruehologramtrueworldtruecustom-commandtruesigntrueportaltruemotdtruecommand-rulestrueteamstruerulestruespawnertrueparticlestruenpctruearmorstandtrueelevatortrueautotooltruelocktrueskintrueMigrazione
migration1 chiavecoexistfalseMigrazione graduale da EssentialsX o CMI.
Con questa opzione attiva, ShadowEssentials NON registra un comando che un altro plugin fornisce già. Tieni installato il vecchio plugin, poi sposta una funzione alla volta disattivando il modulo corrispondente in quel plugin: il comando passa di qua al riavvio successivo, da solo.
All'avvio la console elenca ogni comando lasciato all'altro plugin.
bStats - statistiche d'uso anonime (https://bstats.org)
metrics1 chiaveenabledtrueCosa viene inviato, ogni 30 minuti: che questo server usa ShadowEssentials, le versioni del plugin, di Minecraft/Paper e di Java, il sistema operativo, il numero di core della CPU, quanti giocatori sono online (un numero, niente altro), un serverUuid casuale che non identifica niente, e se l'archiviazione è YAML o MySQL. Nessun dato dei giocatori lascia il server: niente nomi, niente UUID, niente indirizzi.
Continua a leggere
false lo spegne solo per questo plugin. enabled: false in plugins/bStats/config.yml lo spegne per tutti i plugin di questo server in un colpo solo.
Diagnostica
debug4 chiavienabledfalsewatchdogfalseRegistra uno stack trace ogni volta che qualcosa fa I/O su file o database nel main thread. Aiuto per lo sviluppo, tienilo spento in produzione.
profilertruelevelINFO armorstand-poses.yml
Armorstand poses 28 impostazioni
armorstand-poses.ymlplugins/ShadowEssentials/armorstand-poses.yml Note del file
Le pose pronte dell'editor degli armor stand: la schermata "Pose pronte" e /armorstand pose <name>. Sono tue: aggiungine quante vuoi, cambiale, elimina quelle che non vuoi. L'ordine qui è l'ordine sullo schermo.
Una posa:
my-pose: a-z, 0-9, _ e -; usato nel comando
name: "<gold>My pose" MiniMessage, o "lang:<key>" per prenderlo
dai file di lingua (tradotto)
icon: GOLDEN_SWORD l'item mostrato nella lista
permission: "my.perm" facoltativo: chi può usarla
head: [x, y, z]
body: [x, y, z]
left-arm: [x, y, z]
right-arm: [x, y, z]
left-leg: [x, y, z]
right-leg: [x, y, z]Gli angoli sono in gradi, esattamente come li scrive il gioco in /summon (una posa copiata da un sito generatore funziona così com'è, "10f" compreso). Una parte che ometti resta come ce l'ha un armor stand appena piazzato.
Cosa fanno i numeri, su braccia e gambe:
x negativo oscilla in avanti, positivo all'indietro (-90 = dritto davanti, -180 = dritto in alto) z lo apre di lato: positivo sugli arti destri, negativo su quelli sinistri y lo ruota intorno all'asse verticale
Sulla testa: x positivo guarda in basso, y la gira, z la inclina.
L'editor delle pose mostra i tre numeri di ogni parte, quindi il modo più facile per crearne una nuova è: metti in posa uno stand in gioco, leggi i numeri (o /armorstand info), scrivili qui.
config-version1poses18 chiaviposes.default8 chiaviname"lang:armorstand.preset.default"iconARMOR_STANDhead[0, 0, 0]body[0, 0, 0]left-arm[-10, 0, -10]right-arm[-15, 0, 10]left-leg[-1, 0, -1]right-leg[1, 0, 1]default:
salute, wave, t-pose, walk, run, point, think, facepalm, shrug, dance, cheer, zombie, hero, bowposes.sit6 chiaviLe gambe vanno dritte in avanti: abbassa lo stand ("Sposta e gira", o portalo su un gradino) così che stia seduto su qualcosa invece di fluttuare.
name"lang:armorstand.preset.sit"iconOAK_STAIRSright-arm[-40, 0, 5]left-arm[-40, 0, -5]right-leg[-90, 10, 0]left-leg[-90, -10, 0]poses.archer6 chiaviMettigli l'arco nella mano principale (la destra).
name"lang:armorstand.preset.archer"iconBOWright-arm[-90, 0, 0]left-arm[-90, 35, 0]right-leg[-10, 0, 3]left-leg[10, 0, -3]poses.guard7 chiaviUna spada nella mano principale, uno scudo nell'altra.
name"lang:armorstand.preset.guard"iconSHIELDhead[5, 0, 0]right-arm[-70, 0, 10]left-arm[-80, 30, 0]right-leg[10, 0, 3]left-leg[-15, 0, -3] blocked-words.yml
Parole bloccate in chat 26 impostazioni
blocked-words.ymlplugins/ShadowEssentials/blocked-words.yml Note del file
Le parole che non vuoi leggere sul tuo server.
Scrivile così come sono, in minuscolo, come le diresti. Il filtro pensa al resto: riconosce da solo i trucchi che la gente usa per passare, così non devi elencarli.
merda intercettata m3rda intercettata (leetspeak) m.e.r.d.a intercettata (separatori) m e r d a intercettata (separatori) meeeerda intercettata (lettere ripetute) mErDa intercettata (maiuscole) mèrda intercettata (accenti) мerda intercettata (lettere cirilliche disegnate come quelle latine)
/se filter <sentence> ti dice cosa succederebbe a quella frase, senza doverla scrivere nella chat pubblica per scoprirlo.
config-version1enabledtruecensor-char"*"Il carattere con cui viene coperta la parola.
Riconoscere le parole scritte storpiate
smart5 chiaviSpegnine uno solo se ti dà fastidio: ognuno chiude una via di fuga diversa.
leettruem3rda, c4zzo, $tronzo
separatorstruem.e.r.d.a, m-e-r-d-a, m e r d a (al massimo 3 caratteri in mezzo:
oltre non è più una parola che qualcuno legge)
repeatstruemeeeerda, mmmerda
accentstruemèrda, merdà
lookalikestrueLettere cirilliche e greche disegnate identiche a quelle latine
Parole
words[merd, stronz, vaffancul, cazz, coglion, puttan, troia, troie, bastard, fottit, figa, fica, "figo di", minchia, mignotta, zoccola, sborr, pompin, inculat, inculare, "cesso di", schifos, deficient, idiota, imbecill, cret …+82
La lista normale, quella che userai per il 90% delle cose.
Vengono intercettate quando INIZIANO dove inizia una parola, e possono continuare. È quello che serve alla maggior parte delle lingue: scrivi "merda" e intercetta anche "merdaio" e "merdata", senza che tu debba elencarle.
Non intercetta una parola che ne contiene una solo nel mezzo: "merda" non tocca "camerda" (se fosse una parola), perché lì non inizia nessuna parola.
Parole intere
whole-word[ass, cul, figa, sega, seghe, fag, cum, dick, cock, tits, wtf]+8
Intercettate SOLO quando stanno da sole come parola.
QUI VANNO LE PAROLE CORTE. "ass" scritto qui non tocca "passage", "class", "assassin" o "bass". Scritto nella lista sopra le intercetterebbe quasi tutte.
Regola pratica: sotto le 4 lettere, mettila qui.
Ovunque
anywhere[ ]Intercettate anche nel mezzo di un'altra parola. Per stringhe lunghe e inconfondibili, come il dominio di un client di cheat.
Qui una parola corta fa danni. Nel dubbio, usa una delle due liste qui sopra.
Bloccate
blocked["negro di merda", "sporco negro", "torna al tuo paese", "froci di merda", "ti ammazzo", "ti vengo a casa", "so dove abiti", "ti stupro", "kill yourself", "kys yourself", "hang yourself", "gas the", "heil hitler", "sieg …+17
Il messaggio non viene inviato affatto, invece di essere censurato. Per le cose che non vuoi che arrivino nemmeno camuffate: insulti gravi, minacce, link a cheat.
Sostituzioni
replacements5 chiaviLa parola viene scambiata con un'altra invece che con degli asterischi. Spesso funziona meglio: chi scrive non si accorge di essere stato filtrato, e smette di provarci.
stupido"simpatico"scemo"adorabile"noob"campione"loser"campione"trash"fenomeno"Espressioni regolari
patterns[ ]Per chi sa cosa sta facendo. Applicate esattamente come sono scritte, senza nessuna delle tolleranze qui sopra.
pattern: l'espressione action: CENSOR | BLOCK | REPLACE | WARN with: con cosa sostituirla, solo per REPLACE
- pattern: "(?i)\\bcompra\\s+oro\\b" action: BLOCK
Dove si applica
apply-to8 chiaviIl filtro non vale niente se copre solo la chat pubblica e poi la stessa parola arriva in un messaggio privato o su un cartello.
chattrueprivate-messagestruenicknamestruesignstrueanviltruebooksfalseteam-chattrueChat del team e chat dello staff. Di solito lo staff non va filtrato, ma la chat del team è una chat tra giocatori a tutti gli effetti.
staff-chatfalseChi salta tutto questo: shadowessentials.chat.bypass-filter
npcs.yml
Gli NPC 2 impostazioni
npcs.ymlplugins/ShadowEssentials/npcs.yml Note del file
Gli NPC creati con /npc. QUESTO FILE LO SCRIVE IL PLUGIN.
Puoi leggerlo, e correggerlo a server spento. Le modifiche fatte con il server acceso vengono sovrascritte al primo cambiamento.
Le impostazioni stanno in modules/npc.yml.
config-version1npcs{ } rules.yml
Le regole del server 17 impostazioni
rules.ymlplugins/ShadowEssentials/rules.yml Note del file
Testi in italiano: esempi/it_IT/rules.yml - copialo al posto di questo file.
Le regole del tuo server, scritte da te.
Escono in due modi, dagli stessi identici testi:
/rules apre la GUI, una voce per regola /rules chat le stampa in chat, per chi preferisce leggerle lì
I colori si scrivono con &, come ha sempre fatto Minecraft.
config-version1enabledtruedefault-viewGUICosa fa /rules senza argomenti: GUI o CHAT.
gui5 chiavititle"&5&lRules"rows6gui.entry3 chiaviL'aspetto di una regola nella GUI. Valori: <number>, <title>, <short>, <text> (tutte le righe della regola, una dopo l'altra). Una riga che nomina un valore che la regola non ha sparisce.
glowfalsename"<title>"lore[<text>, <empty>]guidefault-iconPAPERL'item usato per una regola che non ne indica uno suo.
fillerBLACK_STAINED_GLASS_PANEchat3 chiaviheader"&8&m &r &5&lRules &8&m "numberedtrueNumera le regole automaticamente: 1. 2. 3.
Le regole
rules10 chiaviOgnuna ha un titolo e una descrizione su più righe.
icon: l'item nella GUI (facoltativo)
short: la riga scritta in chat (facoltativo: senza, viene usato
il titolo)rules.respect4 chiavititle"&e1. Respect"iconPLAYER_HEADshort"&7Treat others the way you want to be treated."lines["&7No insults, harassment or discrimination.", "&7In public chat, in private, on signs", "&7and in the names of items, pets and builds."]+2
respect:
cheat, grief, exploit, spam, ads, scam, accounts, content, staff teams.yml
Le squadre 2 impostazioni
teams.ymlplugins/ShadowEssentials/teams.yml Note del file
I team creati dai giocatori. QUESTO FILE LO SCRIVE IL PLUGIN.
Puoi leggerlo per vedere cosa c'è, e correggerlo a server spento se qualcosa è andato storto. Le modifiche fatte con il server acceso vengono sovrascritte al primo cambiamento.
Le impostazioni - quanti membri, quanto durano gli inviti - stanno invece in modules/teams.yml.
config-version1teams{ } modules/afk.yml
Modulo: afk 13 impostazioni
modules/afk.ymlplugins/ShadowEssentials/modules/afk.yml config-version1enabledtruecommands1 chiaveafk{ enabled: true, aliases: [ ] }detection2 chiavitimeout"5m"Quanto tempo senza attività prima che qualcuno venga segnato come AFK.
ignore-rotationtrueSe true, girare la testa senza muoversi NON conta come attività: il modo più semplice per fermare le macro anti-AFK banali.
while-afk2 chiaviIl tempo in AFK non conta come playtime, quindi non fa guadagnare premi orari: stare fermi con il client acceso non paga.
count-playtimefalsetag"&7[AFK] "kick4 chiavienabledfalseafter"30m"bypass-permission"shadowessentials.afk.no-kick"min-players30Non kickare nessuno finché il server ha meno di questo numero di giocatori.
broadcast2 chiavion-afktrueon-returntrue modules/armorstand.yml
Modulo: armorstand 24 impostazioni
modules/armorstand.ymlplugins/ShadowEssentials/modules/armorstand.yml Note del file
Armor stand e mannequin, messi in posa e vestiti da una GUI.
Come funziona in gioco:
/armorstand guarda uno stand e apri il suo editor
/armorstand tool lo strumento: tasto destro su uno stand per selezionarlo,
sneak + tasto destro per aprire l'editorSi possono modificare sia gli ARMOR STAND (sei arti messi in posa uno per uno, braccia, base, small, marker) sia i MANNEQUIN (l'entità a forma di giocatore: skin, le pose del gioco, la riga sotto il nome). I mannequin degli NPC creati con /npc vengono lasciati stare: li gestisce /npc.
Le pose che tutti possono scegliere stanno in armorstand-poses.yml. Le pose che i giocatori salvano per sé le scrive il plugin in data/armorstand-poses.yml.
Permessi: shadowessentials.command.armorstand apre la porta (di default solo per gli op); per il resto, vedi docs/10-PERMESSI.md.
config-version1enabledtruecommands1 chiavearmorstand{ enabled: true, aliases: [ "ast" ] }Lo strumento
tool1 chiavematerialBREEZE_RODQualsiasi item. Viene riconosciuto da un segno nascosto, non dal tipo, quindi un item normale dello stesso tipo non fa niente.
Selezionare uno stand
selection2 chiavirange8.0Da quanto lontano si può selezionare uno stand guardandolo (blocchi). Vengono trovati anche gli stand marker, che non hanno hitbox.
edit-distance16.0Quanto puoi allontanarti dallo stand mentre lo modifichi.
Spostare e ruotare
move3 chiavisteps[0.05, 0.25, 1]Gli spostamenti proposti nella schermata di movimento, in blocchi.
max-step1.0Lo spostamento più grande che un clic può fare: i passi oltre questo valore vengono ridotti. Ogni spostamento chiede anche ai plugin di protezione del posto DOVE va, non solo del posto che lascia.
rotate-steps[5, 15, 45, 90]Le rotazioni proposte nella schermata di movimento, in gradi.
carry3 chiavi"Portalo in mano": lo stand segue dove guardi finché non clicchi.
distance3.0Quanto davanti a te fluttua quando non stai guardando un blocco.
reach6.0Quanto può essere lontano un blocco che guardi per posarci sopra lo stand.
timeout"60s"Dopo questo tempo senza un clic torna dov'era.
Mettere in posa
pose1 chiavesteps[1, 5, 15, 45]I passi dell'editor delle pose, in gradi.
saved-poses2 chiaviPose che i giocatori possono salvare per sé (/armorstand savepose, o la schermata delle pose). Quante, in base al permesso, come per le home:
shadowessentials.limit.armorstand-poses.<n> shadowessentials.limit.armorstand-poses.unlimited
default-limit5Per chi non ha un permesso numerico.
hard-cap54Mai più di questo, qualunque cosa dicano i permessi. -1 = nessun tetto.
Annulla
history2 chiavisize15Passi per giocatore. 0 disattiva l'annullamento.
merge-within"3s"I clic sulla stessa parte dello stesso stand più ravvicinati di così diventano UN SOLO passo di annullamento: venti clic per sistemare un braccio si annullano con uno.
Dimensione
scale3 chiaviLa scala di uno stand o di un mannequin (l'attributo scale del gioco stesso).
min0.5max2.0step0.1Nomi
names1 chiavemax-length48Lunghezza massima del nome personalizzato, contata senza colori. I nomi si scrivono in chat e seguono le stesse regole di qualsiasi testo scritto da un giocatore: colori e stili sì (codici & e tag colore), click e hover no. Si applicano anche le parole bloccate di blocked-words.yml.
Survival
survival1 chiaveconsume-stand-itemtruePiazzare un nuovo stand dal menu, clonarne uno, o creare un item "stand pronto" costa un armor stand dall'inventario - così il menu non è un modo per avere armor stand gratis. La modalità creativa e shadowessentials.armorstand.free non pagano.
Protezione
protection1 chiavecheck-regionstruetrue: prima di ogni modifica, chiede ai plugin di protezione (WorldGuard, GriefPrevention, Lands, ShadowRegions...) se lì potresti modificare un armor stand a mano. Lancia gli stessi eventi che lancia il gioco quando un giocatore scambia un item su un armor stand, su uno stand sonda invisibile - mai una finta rottura di blocco, quindi nessun logger registra niente. false: contano solo i permessi, i lucchetti e i mondi qui sotto.
disabled-worlds[ ]Mondi in cui gli strumenti non fanno niente (tranne che per shadowessentials.armorstand.bypass). Esempio: [ "spawn", "pvp_arena" ]
modules/autotool.yml
Modulo: autotool 30 impostazioni
modules/autotool.ymlplugins/ShadowEssentials/modules/autotool.yml Note del file
L'attrezzo migliore in mano quando inizi a scavare, l'arma migliore dopo che colpisci qualcosa. Ogni giocatore lo accende per sé con /autotool, come /autopickup.
È silenzioso apposta: nessun messaggio e nessun suono quando cambia. /autotool why dice a un giocatore perché ha scelto l'ultimo attrezzo o l'ultima arma.
config-version1enabledtruecommands1 chiaveautotool{ enabled: true, aliases: [ "besttool" ] }default-onfalseUn attrezzo che ti salta in mano da solo sorprende chi non l'ha chiesto: spento per i nuovi giocatori, /autotool lo accende.
defaults4 chiaviCosa riceve un giocatore finché non sceglie. Può cambiare ognuna con /autotool <weapons|source|ores|swapback>.
weaponstruesourceHOTBARHOTBAR | INVENTORY (INVENTORY needs shadowessentials.autotool.inventory)
oresFORTUNEFORTUNE | SILK_TOUCH | ANY
swap-backfalsedisabled-worlds[ ]Mondi in cui non fa mai niente.
disable-while-sneakingtrueAccovacciarsi = "lasciami stare, scavo con quello che ho in mano".
disable-in-minigamestrueNon durante una partita di ShadowGames: i kit sono disposti apposta.
mining5 chiavienabledtrueskip-if-instanttrueL'attrezzo in mano rompe già il blocco in un colpo: non fare niente. (Erba alta, fiori: lì un cambio sarebbe solo rumore.)
min-durability-left5Non scegliere mai un attrezzo con meno usi rimasti di questo, così il piccone buono non si rompe all'ultimo colpo.
prefer-cheapest-when-instanttrueDiversi attrezzi lo rompono in un colpo: prendi il più economico, e tieni il piccone di netherite per quello che ne ha bisogno.
rules[{ blocks: […], prefer: SILK_TOUCH, mode: PREFER }, { blocks: […], prefer: SILK_TOUCH, mode: REQUIRE }, { blocks: […], prefer: PLAYER, mode: PREFER }, { blocks: […], prefer: FORTUNE, mode: PREFER, even-if-instant: true …+4
Preferenze per blocco. "blocks" accetta materiali e tag (#name). Conta la prima regola che nomina un blocco.
prefer: SILK_TOUCH | FORTUNE | PLAYER (quello scelto dal giocatore con /autotool ores)
mode: PREFER (un bonus: senza un attrezzo così, il più veloce)
REQUIRE (senza un attrezzo così, non cambiare proprio)
avoid: tipi di attrezzo mai usati su questi blocchi (SHEARS, HOE, ...)
even-if-instant: true = applica anche quando qualsiasi cosa lo rompe all'istanteblocksSenza Tocco di velluto questi blocchi vanno persi.
blocksSenza Silk Touch un ender chest diventa otto ossidiana: meglio nessuno scambio che quello sbagliato.
blocksLa scelta più personale di tutte: chi costruisce con i blocchi di minerale vuole Silk Touch. Ogni giocatore sceglie con /autotool ores.
blocksFortune dà più semi, carote e patate.
blocksLe cesoie danno il blocco di foglie e tolgono arbusti e mele.
weapons8 chiavienabledtrueagainst-playerstrueNel PvP qualcuno lo considera un vantaggio: spegnilo qui senza spegnere il resto.
metricDPSDPS = danno x velocità d'attacco (una spada batte un'ascia lenta); DAMAGE = un colpo.
axe-vs-shieldtrueUn colpo d'ascia disattiva uno scudo alzato.
mace-min-fall1.5La mazza solo mentre cadi da almeno questa altezza (blocchi).
min-gain-percent10Cambia solo per un guadagno reale, e non più spesso di così: due spade quasi uguali non devono far ballare la hotbar.
swap-cooldown"1s"pre-swap-on-aimfalseLo scambio avviene nel tick DOPO un colpo: la carica di quel colpo è già spesa, quindi non costa niente. Con questa opzione attiva, un clic sinistro in aria mentre guardi un mob fa lo scambio anche prima del primo colpo. Costa un clic; spento di default.
actions2 chiavishears-on-entitiestrueClick destro su una pecora, un mooshroom, un golem di neve, un bogged o un golem di rame: le cesoie ti arrivano in mano per quel click.
brush-on-suspicious-blocksfalseSpazzolare è un'azione "tieni premuto il pulsante" avviata dal client di gioco: il cambio fatto dal server può richiedere una seconda pressione. Provalo con un client vero prima di attivarlo.
swap-back1 chiaveafter"3s"Per i giocatori che hanno attivato /autotool swapback: quanto tempo senza scavare né colpire prima di tornare allo slot di prima. Gli item spostati dall'inventario tornano indietro solo se nessuno li ha spostati nel frattempo.
never-use3 chiaviItem che AutoTool non prende mai e non lascia mai. I giocatori possono segnare un item da soli con /autotool ignore (il segno viaggia con l'item).
materials[ ]customizer-items[ ]Id degli item di ShadowCustomizer.
lore-contains[ ]Qualsiasi riga di lore che contiene una di queste (senza distinzione tra maiuscole e minuscole), per gli item "Soulbound" di altri plugin.
modules/chat.yml
Modulo: chat 47 impostazioni
modules/chat.ymlplugins/ShadowEssentials/modules/chat.yml Note del file
Testi in italiano: esempi/it_IT/modules/chat.yml - copialo al posto di questo file. Formato, canali, messaggi privati, filtri, menzioni. Spegnilo del tutto se usi un plugin di chat dedicato.
config-version1enabledtruecommands8 chiavimsg{ enabled: true, aliases: [ "tell", "w", "whisper", "pm" ] }+1
reply{ enabled: true, aliases: [ "r" ] }ignore{ enabled: true, aliases: [ ] }unignore{ enabled: true, aliases: [ ] }ignorelist{ enabled: true, aliases: [ ] }socialspy{ enabled: true, aliases: [ ] }broadcast{ enabled: true, aliases: [ "bc" ] }chat{ enabled: true, aliases: [ ] }Formato dei messaggi
Placeholder disponibili qui:
<name> il nickname, o il nome se non ne ha uno <player> il nome vero, sempre <message> quello che ha scritto <rank_prefix> prefisso del rango, dal plugin dei permessi <rank_suffix> suffisso del rango <rank_group> nome del gruppo di permessi <channel> il canale in cui sta parlando <world> il mondo in cui si trova
Continua a leggere
ATTENZIONE: <prefix> NON è il prefisso del rango. È il prefisso dei messaggi di ShadowEssentials stesso. Per il rango, usa <rank_prefix>.
Prefisso e suffisso arrivano da ShadowPermissions (o LuckPerms, o Vault: quello che c'è). Senza un plugin dei permessi, o con un gruppo che non ha prefisso, quei due placeholder restano vuoti e la riga resta pulita.
/perm group vip meta setprefix 100 "<gold>[VIP] "
format4 chiavidefault"<rank_prefix><name><rank_suffix><dark_gray>: <gray><message>"format.by-group1 chiavePer gruppo di permessi. La scala dei ranghi l'hai già scritta in ShadowPermissions: qui basta il nome del gruppo, non serve riscriverla come lista di permessi.
staff"<dark_gray>[<red>STAFF<dark_gray>] <rank_prefix><name><rank_suffix><dark_gray>: <white><message>"formatby-permission[{ permission: shadowessentials.chat.format.owner, format: "<gradient:#FF4E50:#F9D423>[OWNER]</gradient> <rank_prefix><name><rank_suffix><dark_gray>: <white><message>" }, { permission: shadowessentials.vip.epic, format: …+1
Per permesso: vince il primo posseduto, partendo dall'alto. Ha la precedenza su by-group.
allow-formatting-permission"shadowessentials.chat.colors"Chi può usare MiniMessage nei propri messaggi. Senza questo permesso il testo viene inserito alla lettera: un giocatore normale non può iniettare tag nel formato.
Il nome dentro il messaggio
Passando il mouse sopra appare il tooltip, cliccando si apre un messaggio privato. Imposta interactive: false per avere solo il nome e nient'altro.
Chi entra e chi esce
Al posto della riga del gioco ("Tizio e' ora nella partita"), che e' l'unica cosa in chat che non assomiglia al resto del server: niente grado, niente nickname, e il nome vero anche di chi ne ha scelto un altro.
Continua a leggere
Valgono gli stessi segnaposto della chat: <name> (il nickname se ce l'ha), <player> (il nome vero), <rank_prefix>, <rank_suffix>, <rank_group>, <world>.
Lasciare vuota una delle due righe = non dire niente per quel caso. Chi e' invisibile non compare mai, qualunque cosa ci sia scritto qui.
announce3 chiavienabledtruejoin"<gray>[<green><bold>+</bold></green><gray>] <name>"Le parentesi restano grigie: il colore lo porta il segno, non la scatola. Il <name> e' cliccabile come in chat - mouse sopra per il grado, clic per scrivergli in privato - e tiene i colori del suo grado o del suo nickname.
quit"<gray>[<red><bold>-</bold></red><gray>] <name>"name3 chiaviinteractivetruehover[<rank_prefix><name><rank_suffix>, "<dark_gray>rank: <gray><rank_group>", "", "<yellow>Click <gray>to message them in private"]+3
click"/msg <player> "<player> viene sostituito con il nome vero. Vuoto = nessuna azione al clic.
default-channel"global"Canali radius: -1 = tutto il server, altrimenti un raggio in blocchi.
channels2 chiavichannels.global5 chiavidisplay-name"Globale"prefix""command"g"radius-1cross-worldtruechannels.local6 chiavidisplay-name"Locale"prefix"&8[&aL&8] "command"l"radius100cross-worldfalseempty-warning"&7Nessuno ti ha sentito. Usa &f/chat global."Filtri
Chi ha shadowessentials.chat.bypass-filter li salta tutti.
filters5 chiavifilters.cooldown2 chiavienabledtrueduration"2s"filters.repeat2 chiaviBlocca lo stesso messaggio ripetuto (o quasi uguale).
enabledtruesimilarity0.85filters.caps3 chiavienabledtruethreshold0.6Percentuale di maiuscole oltre la quale il messaggio viene messo in minuscolo.
min-length8filters.advertising3 chiavienabledtruewhitelist[ ]Domini e IP lasciati passare: metti qui il TUO server e il TUO Discord, altrimenti anche i tuoi link vengono bloccati insieme agli altri.
whitelist: [ "discord.gg/iltuoinvito", "example.com" ]
actionBLOCKALLOW | CENSOR | BLOCK | WARN
filters.words3 chiaviactionCENSORCENSOR sostituisce le lettere con asterischi, BLOCK rifiuta il messaggio.
normalizetrueNormalizza il leetspeak e i caratteri cirillici somiglianti prima del confronto, così una grafia camuffata viene riconosciuta lo stesso.
list[ ]Scrivi le parole in minuscolo, senza accenti.
Menzioni
mentions2 chiavienabledtrueformat"&e&l@<name>" modules/command-rules.yml
Modulo: command-rules 22 impostazioni
modules/command-rules.ymlplugins/ShadowEssentials/modules/command-rules.yml Note del file
Attese e prezzi sui comandi. Una regola si mette davanti a un comando e decide se può essere eseguito: quanto tempo è passato dall'ultima volta, e quanto costa eseguirlo di nuovo.
Funziona su qualsiasi comando, non solo su quelli di questo plugin, quindi una regola può coprire /repair da qui, un comando di un altro plugin, o uno vanilla. Il comando stesso non deve saperne niente.
Le attese sopravvivono al riavvio. Vengono scritte nello stesso archivio dei kit riscattati nel momento in cui un comando viene usato, quindi spegnere il server non regala a tutti un giro gratis.
config-version1enabledtrueRegole
rules3 chiaviIl nome di ogni blocco lo scegli tu. È quello che mostra /cooldowns e quello sotto cui viene salvata l'attesa, quindi se ne rinomini uno le sue attese vengono dimenticate.
rules.repair-all6 chiavienabledtruecommands["repair all", "fix all"]Quali comandi copre. Scritti come li digita un giocatore, senza lo slash. Il namespace viene ignorato, quindi elencare "repair" copre anche "/shadowessentials:repair".
repair all esattamente quello, niente di più repair * /repair con qualsiasi argomento, o nessuno repair /repair da solo
Elenca anche gli alias se vuoi coprirli: "fix all".
cooldown"24h"Quanto tempo tra un uso e l'altro. Un tempo semplice, oppure uno tra:
daily una volta al giorno, si azzera a mezzanotte weekly una volta a settimana once una volta sola, per sempre
rules.repair-all.cost3 chiaviQuanto costa. Qualsiasi combinazione; vengono presi tutti. Il denaro richiede un plugin di economia - senza, è semplicemente gratis.
money500.0xp-levels10xp-points0rules.repair-allbypass-permission"shadowessentials.bypass.rule.repair-all"A chi la regola non si applica. Se lo ometti, il default è shadowessentials.bypass.rule.<name>.
message""Una chiave di lingua con cui rispondere al posto del messaggio di attesa standard. Lascia vuoto per quello standard.
rules.repair-hand4 chiaviUn secondo esempio: lo stesso comando, senza prezzo, un'attesa breve, così una singola riparazione non diventa un modo per spammare il server.
enabledtruecommands[repair, fix]cooldown"30m"rules.repair-hand.cost3 chiavimoney50.0xp-levels0xp-points0rules.daily-crate4 chiaviSpento di default: un esempio di come coprire il comando di un altro plugin, e di un'attesa che lo lascia usare solo due volte a settimana.
enabledfalsecommands["crate daily"]cooldown"daily"rules.daily-crate.cost3 chiavimoney0.0xp-levels0xp-points0 modules/custom-command.yml
Modulo: custom-command 23 impostazioni
modules/custom-command.ymlplugins/ShadowEssentials/modules/custom-command.yml Note del file
Testi in italiano: esempi/it_IT/modules/custom-command.yml - copialo al posto di questo file. Comandi definiti interamente in questo file.
Ogni voce diventa un vero comando Brigadier: compare nel completamento con tab del client con i tipi di argomento giusti, e un argomento sbagliato viene rifiutato prima che parta una sola azione.
Linguaggio delle azioni: docs/moduli/kits.md (stessa sintassi ovunque)
config-version1enabledtrueNOTA: Minecraft accetta nuovi comandi solo mentre il server si avvia, quindi un comando AGGIUNTO qui compare dopo un riavvio. Cambiare il corpo di un comando esistente (azioni, costo, cooldown) funziona con /se reload.
commands7 chiaviDove inizia un nuovo giocatore
commands.guide4 chiaviLa scheda che risponde a "e adesso cosa faccio", con i comandi che questo plugin dà già a ogni giocatore. Attiva dal primo avvio.
enabledtruealiases[howtoplay]description"How to play here"actions["message:&8&m ", "message:<gradient:#8A2BE2:#00BFFF>&lHOW TO PLAY HERE</gradient>", "message:&7", "message:&e/kits &8- &7your kits, starting with the starter", "message: …+13
Le regole, sotto un secondo nome
commands.serverrules4 chiaviIl nome che un giocatore scrive quando /rules non gli viene in mente. L'esempio italiano (esempi/it_IT) lo chiama /regolamento.
enabledtruealiases[regulations]description"The rules of the server"actions["command:/rules"]Il più semplice possibile
commands.discord4 chiaviSpento, perché solo tu conosci il tuo invito: scrivilo e accendilo. È l'unica cosa in questo file che nessuno può scrivere al posto tuo.
enabledfalsealiases[dc]description"Discord invite"actions["message:&9Discord: &f<click:open_url:'https:…]guide:
fixallArgomenti tipizzati
commands.reward4 chiaviI tipi qui sotto guidano il completamento con tab che vede il giocatore. STRING · GREEDY_STRING · INTEGER · DOUBLE · BOOLEAN · PLAYER · OFFLINE_PLAYER · WORLD · MATERIAL · MONEY · DURATION · KIT · WARP · VIP_TIER · CHOICE (con una lista "values:")
enabledfalsepermission"server.reward"arguments[{ name: target, type: PLAYER, required: true }, { name: amount, type: MONEY, required: true }, { name: reason, type: GREEDY_STRING, required: false, default: "Well played" }]+2
actions["console:eco give <target> <amount>", "message:&aYou rewarded <target> with <amount>.", "console:mail send <target> <reason>"]+2
Diramazioni
commands.myvip2 chiaviif:<condition> ? <action> : <action>
Condizioni: permission · has-vip · world · gamemode · sneaking ·
flying · op · level · money · playtime · health ·
item-in-hand. Un ! davanti la nega.enabledfalseactions["if:has-vip:any ? message:&6You are VIP. : me…]Solo console, per l'automazione
commands.restartwarn3 chiavi"sleep:" passa il resto della catena allo scheduler, non blocca il server.
enabledfalseconsole-onlytrueactions["broadcast:&cRestart in 5 minutes!", "sleep:4m", "broadcast:&cRestart in 1 minute!"]+2
modules/elevator.yml
Modulo: elevator 23 impostazioni
modules/elevator.ymlplugins/ShadowEssentials/modules/elevator.yml Note del file
Ascensori, come in CMI: mettiti su un blocco ascensore e premi SALTO per salire al prossimo proprio sopra di te, o ACCOVACCIATI per scendere al prossimo sotto di te.
Costruiscine uno:
1. Piazza un blocco ascensore (WHITE_WOOL, con i livelli qui sotto). 2. Più in alto, nella STESSA colonna, piazza un altro blocco dello STESSO livello, entro il max-distance di quel livello, con 2 blocchi liberi sopra. 3. Mettiti su quello in basso e salta. Accovacciati su quello in alto per tornare giù.
Quello che c'è in mezzo non conta - pavimenti, soffitti, muri: la corsa ci passa dritta attraverso.
/elevator elenca i livelli come li ha capiti il plugin, e quali puoi usare (shadowessentials.command.elevator, solo op). /se reload applica le modifiche a questo file.
config-version1enabledtruecommands1 chiaveelevator{ enabled: true, aliases: [ ] }Livelli
levels3 chiaviUn livello è un tipo di ascensore: quali blocchi, a che distanza, e chi può usarlo. Aggiungi, togli e rinomina i livelli come vuoi - i nomi (level-1, level-2...) li scegli tu.
Continua a leggere
blocks uno o più blocchi di Minecraft: WHITE_WOOL, EMERALD_BLOCK,
minecraft:lime_wool... Devono essere blocchi SOLIDI su cui si
può stare in piedi (tappeti, fiori, cartelli, binari vengono
rifiutati). Un nome sbagliato viene saltato e la console dice
perché. Un blocco appartiene a UN solo livello: quando due
livelli elencano lo stesso blocco, lo tiene il primo.
max-distance la differenza di altezza più grande, in blocchi, tra un
blocco ascensore e il prossimo dello stesso livello.
10 = il piano successivo può essere al massimo 10 blocchi più
in alto (o più in basso). Uno più lontano non viene trovato.
permission "" = tutti possono usarlo. Altrimenti il nodo che serve a un
giocatore. Inventa quello che preferisci e dallo ai tuoi rank
con ShadowPermissions o LuckPerms, per esempio
/lp group vip permission set shadowessentials.elevator.level.2Si collegano solo blocchi dello STESSO livello: un blocco level-1 non ti porta mai a uno level-2. Ogni giocatore ha anche bisogno di shadowessentials.elevator.use, che hanno tutti a meno che tu non lo tolga.
levels.level-13 chiaviblocks[WHITE_WOOL]max-distance10permission""levels.level-23 chiaviblocks[LIGHT_BLUE_WOOL]max-distance25permission"shadowessentials.elevator.level.2"levels.level-33 chiaviblocks[LIME_WOOL, EMERALD_BLOCK]max-distance50permission"shadowessentials.elevator.level.3"disabled-worlds[ ]Mondi in cui gli ascensori non fanno niente (lì i blocchi sono solo blocchi).
cooldown"0.5s"L'attesa tra due corse dello stesso giocatore. Funzionano i decimali: "0.5s", "1.5s", "250ms". "0" per nessuna attesa. Warm-up, cooldown e prezzo del modulo teletrasporti qui non valgono mai: un ascensore deve sembrare istantaneo.
center-playertruetrue: arrivi al centro del blocco di destinazione. false: arrivi nello stesso punto del blocco da cui sei partito. La direzione dello sguardo resta sempre quella.
record-backfalsefalse: /back ignora le corse in ascensore, quindi ti riporta comunque al punto da cui ti sei teletrasportato l'ultima volta. true: una corsa conta come un teletrasporto.
Protezione
protectionenterSe ogni lana bianca è un ascensore, un giocatore potrebbe metterne una sotto la base di qualcun altro e saltarci dentro. Cosa lo impedisce:
Continua a leggere
enter (predefinito) la corsa viene controllata come un teletrasporto: i plugin
di regioni e claim che sorvegliano i teletrasporti (i flag di ingresso di
ShadowRegions, WorldGuard...) possono rifiutarla, e lo stesso vale per
qualsiasi blocco dei teletrasporti registrato in ShadowEssentials.
Basta quando le tue aree protette rifiutano l'ingresso agli estranei.
build "enter", e in più il giocatore deve poter COSTRUIRE dove arriva -
la stessa domanda che l'editor degli armor stand fa ai plugin di
protezione. La scelta sicura per i claim in cui chiunque può entrare
a piedi: nessuno arriva in ascensore dove non potrebbe costruire.
Il prezzo: in un edificio condiviso dove gli ospiti possono entrare
ma non costruire, gli ospiti non possono usarne nemmeno gli ascensori.
none nessun controllo nostro. Il server annuncia comunque la corsa come
teletrasporto, quindi un plugin che rifiuta i teletrasporti può
comunque rifiutarla.shadowessentials.elevator.bypass (op) salta questi controlli.
Feedback
messageactionbarDove vanno i messaggi brevi ("nessun ascensore sopra entro 10 blocchi", "l'ascensore sopra è bloccato"...): actionbar, chat, title, subtitle o none. I testi sono in lang/*.yml sotto "elevator:"; un testo lasciato vuoto lì non viene mandato. Lo stesso messaggio viene ripetuto allo stesso giocatore al massimo ogni 2 secondi.
sound3 chiaviSuono riprodotto al giocatore quando arriva. name: "" per il silenzio.
name"ENTITY_ENDERMAN_TELEPORT"volume0.5pitch1.6particles2 chiaviSi vede nel punto in cui arriva il giocatore. type: NONE (o count: 0) per non mostrare niente.
typePORTALcount20 modules/hologram.yml
Modulo: hologram 23 impostazioni
modules/hologram.ymlplugins/ShadowEssentials/modules/hologram.yml Note del file
Testo fluttuante costruito sulle display entity del gioco stesso: niente armor stand invisibili, niente libreria di pacchetti, nessuna dipendenza.
Gli ologrammi veri e propri stanno in fondo a questo file. Creali in gioco con /hologram, o scrivili qui a mano - funzionano entrambi, e il file è sempre la fonte di verità.
Colori con &, come ovunque: &6 oro, &l grassetto, &#ff8800 per un colore esatto. I gradienti usano ancora <gradient:...>.
config-version1enabledtruecommands1 chiavehologram{ enabled: true, aliases: [ "holo", "hd" ] }Convivere con un altro plugin di ologrammi
conflict2 chiaviauto-disabletrueSe è installato DecentHolograms, HolographicDisplays, FancyHolograms o un plugin simile, questo modulo si fa da parte da solo: non crea niente e /hologram spiega perché. Spegni questa opzione per usarli entrambi.
include-cmifalseCMI è un intero plugin essentials, quindi la sua presenza non significa di per sé che stia disegnando ologrammi. Imposta true se usi quelli di CMI.
Valori predefiniti
defaults12 chiaviOgni ologramma eredita questi valori e può sovrascriverne uno qualsiasi.
billboardCENTERCENTER è sempre rivolto verso di te. FIXED non gira mai. VERTICAL e HORIZONTAL girano su un solo asse.
scale1.0view-range40.0Distanza in blocchi oltre la quale il testo smette del tutto di essere inviato.
background"transparent"ARGB, quindi la prima coppia è l'opacità. "transparent" per nessuno sfondo.
default-backgroundfalsetrue usa il riquadro scuro vanilla invece del colore qui sopra.
text-shadowfalsesee-throughfalsealignmentCENTERCENTER | LEFT | RIGHT
line-spacing0.28Spazio verticale tra le righe, in blocchi.
line-width200Larghezza in pixel oltre la quale una riga molto lunga va a capo.
item-spintrueSe le righe con icona girano e ondeggiano sul posto. false: restano ferme sospese.
update-interval"1s"Ogni quanto viene ridisegnato un ologramma con placeholder. Un ologramma senza niente di dinamico non viene mai ridisegnato, qualunque cosa ci sia scritto qui.
Distanza
visibility1 chiavespawn-distance32Un ologramma esiste solo mentre un giocatore è entro questo numero di blocchi da lui. Più lontano le sue entità vengono rimosse - niente da tickare, niente da inviare - e rimesse appena qualcuno si avvicina. Ogni plugin della suite che disegna tramite ShadowEssentials lo ottiene gratis. 0 = sempre presente.
Animazioni
animations2 chiaviUsane una da una riga con: animation:<name>
animations.arrow2 chiaviinterval"250ms"frames["&e>>> &7CLICK &e ", "&e >>> &7CLICK &e ", "&e >>> &7CLICK &e ", "&e >>> &7CLICK &e "]+3
animations.rainbow2 chiaviinterval"150ms"frames["&c&lWELCOME", "&6&lWELCOME", "&e&lWELCOME", "&a&lWELCOME", "&b&lWELCOME", "&d&lWELCOME"]+3
Gli ologrammi
holograms{ }Tipi di riga:
testo normale colori con &
"" una riga vuota di spaziatura
icon:DIAMOND un item che fluttua, gira e ondeggia
animation:<name> scorre i frame definiti sopra
leaderboard:<board>:<1-10>:<fmt> una riga per posizione, dal
modulo leaderboardContinua a leggere
Placeholder: %online% %max_players% %tps% uguali per tutti %player% <player> %world% i valori di chi guarda %shadowessentials_...% e qualsiasi placeholder di PlaceholderAPI
Un ologramma il cui testo cambia per ogni spettatore viene disegnato una volta per spettatore, automaticamente, e solo per i giocatori abbastanza vicini da leggerlo.
Esempio, copialo fuori dalle { } qui sopra per usarlo:
holograms:
spawn:
world: "world"
x: 0.5
y: 66.0
z: 0.5
lines:
- "<gradient:#8A2BE2:#00BFFF>&lWELCOME</gradient>"
- "&7Online: &f%online%&7/&f%max_players%"
- ""
- "icon:DIAMOND"
- "&eClick for the kits"
click:
actions: [ "command:/kits" ]
radius: 1.5top-playtime:
world: "world"
x: 10.5
y: 66.0
z: 0.5
update-interval: "60s"
lines:
- "&6&lMOST HOURS PLAYED"
- "leaderboard:playtime:1-10:&7<rank>. &f<name> &8- &e<value>"vip-only:
world: "world"
x: 20.5
y: 66.0
z: 0.5
# Mostrato solo a chi soddisfa la condizione. Stesse condizioni di
# tutto il resto: permission, has-vip, world, playtime, level...
show-if: "has-vip:any"
lines:
- "&6Welcome back, &f%player%&6!" modules/homes.yml
Modulo: homes 20 impostazioni
modules/homes.ymlplugins/ShadowEssentials/modules/homes.yml config-version1enabledtruecommands4 chiavihome{ enabled: true, aliases: [ "h" ] }homes{ enabled: true, aliases: [ "listhomes" ] }sethome{ enabled: true, aliases: [ "sh" ] }delhome{ enabled: true, aliases: [ "dh", "removehome" ] }limits3 chiavidefault1Per i giocatori senza nessun permesso specifico.
permission-basedtrueLegge shadowessentials.limit.homes.<n> - vince il valore più alto. shadowessentials.limit.homes.unlimited toglie il limite.
hard-cap50Tetto massimo assoluto, anche con i permessi. -1 = nessun tetto.
naming4 chiavidefault-name"home"Nome usato da /sethome senza argomenti.
max-length16pattern"[a-zA-Z0-9_-]+"blacklist[list, help, set, del, icon]placement1 chiaveblacklist-worlds[ ]Mondi in cui non si possono creare home.
teleport3 chiaviwarmup"3s"Lascia vuoto per ereditare da modules/teleport.yml.
cooldown"10s"teleport.cost1 chiaveamount0gui3 chiaviallow-custom-icontrueI giocatori possono scegliere l'icona di ogni home con /home icon <name> tenendo in mano l'item che vogliono.
right-click-deletetrueCliccando col tasto destro su una home nel menu viene proposto di eliminarla. La domanda viene fatta in chat con i due pulsanti, mai direttamente al clic, e serve comunque shadowessentials.command.delhome.
sortNAMENAME | DATE | WORLD
modules/inventory.yml
Modulo: inventory 15 impostazioni
modules/inventory.ymlplugins/ShadowEssentials/modules/inventory.yml Note del file
/chestorder on ogni cassa, barile, shulker box o ender chest che il
giocatore apre viene prima riordinato: gli stack a metà
dello stesso oggetto vengono uniti, e gli stack ordinati.
/autopickup on quello che il giocatore rompe o uccide finisce dritto
nell'inventario; quello che non ci sta cade come al solito.Entrambi sono ATTIVI per un nuovo giocatore (default-on qui sotto) e vengono ricordati per ogni giocatore una volta che li cambia.
config-version1enabledtruecommands2 chiavichestorder{ enabled: true, aliases: [ "chestsort", "sortchest" ] }+1
autopickup{ enabled: true, aliases: [ "autopick" ] }chest-order4 chiavienabledtruedefault-ontrueAttivo per ogni giocatore finché non lo spegne con /chestorder off.
shulker-boxestrueVengono ordinate anche le shulker box. Spegnilo se i tuoi giocatori le usano come kit organizzati e preferiscono che restino esattamente come le hanno riempite.
ender-chesttrueauto-pickup7 chiavienabledtruedefault-ontrueAttivo per ogni giocatore finché non lo spegne con /autopickup off.
mob-dropstrueAnche i drop di un mob ucciso dal giocatore.
experiencetrueL'esperienza: dai blocchi che il giocatore rompe e dai mob che uccide.
Si azzera quella che cadrebbe e si da' la stessa quantita' al giocatore, quindi il conto e' identico: cambia solo che non ci sono sfere da inseguire. Quella delle fornaci non si tocca - si ritira aprendole, e prenderla a distanza vorrebbe dire svuotarle senza guardarle.
experience-default-ontrueAccesa per tutti finche' non la spengono con /autopickupxp off.
creative-toofalseIn modalità creativa di solito i drop non contano; attivalo se lo vuoi comunque.
never-collect[ ]Materiali che cadono sempre a terra anche con la raccolta automatica attiva.
modules/kits.yml
Modulo: kits 17 impostazioni
modules/kits.ymlplugins/ShadowEssentials/modules/kits.yml Note del file
Impostazioni GLOBALI dei kit. Ogni kit è un file a sé in kits/<name>.yml
config-version1enabledtruecommands2 chiavikit{ enabled: true, aliases: [ "k" ] }kits{ enabled: true, aliases: [ "kitlist" ] }defaults4 chiaviValori predefiniti applicati ai kit che non definiscono un valore proprio.
cooldown"24h"full-inventoryQUEUEDROP = lascia cadere a terra gli item in eccesso QUEUE = tienili finché il giocatore non ha spazio (consigliato) CANCEL = rifiuta il riscatto se l'inventario è pieno
cooldown-modeDURATIONrespect-vip-multipliertrueCoda di consegna
Quando l'inventario è pieno gli item rimasti vengono conservati invece di cadere a terra. Sopravvivono a relog, morti e riavvii. Riscattali con /kit claim.
queue3 chiavienabledtruemax-items200Numero massimo di item conservati per giocatore. -1 = illimitati.
notify-on-jointrueAvvisa il giocatore al login che c'è qualcosa in attesa.
first-join2 chiaviKit consegnati automaticamente la prima volta che un giocatore entra.
enabledtruekits[starter]timezone"Europe/Rome"Fuso orario usato da cooldown-mode DAILY / WEEKLY / MONTHLY. DAILY si azzera a mezzanotte in questo fuso, che è quello che i giocatori si aspettano, invece che 24 ore dopo l'ultimo riscatto.
preview2 chiavienabledtrueallow-lockedtruePermetti ai giocatori di vedere in anteprima i kit che non possono ancora riscattare: vedere cosa c'è dietro un rango lo vende meglio di qualsiasi descrizione.
modules/leaderboard.yml
Modulo: leaderboard 16 impostazioni
modules/leaderboard.ymlplugins/ShadowEssentials/modules/leaderboard.yml Note del file
Testi in italiano: esempi/it_IT/modules/leaderboard.yml - copialo al posto di questo file. Classifiche. Ricalcolate in background e servite dalla cache: /leaderboard non tocca mai lo storage. Gli altri plugin Shadow possono registrare le proprie classifiche tramite l'API, e quelle compaiono qui da sole.
config-version1enabledtruecommands1 chiaveleaderboard{ enabled: true, aliases: [ "top10", "lb" ] }refresh"5m"Ogni quanto viene ricalcolata ogni classifica.
boards3 chiaviboards.playtime4 chiavidisplay-name"&bMost hours played"stat"playtime""playtime" e "first-join" arrivano dal profilo, il resto dalle statistiche vanilla.
size10format"&7<rank>. &f<name> &8- &b<value>"boards.kills4 chiavidisplay-name"&cPiu uccisioni"stat"kills"size10format"&7<rank>. &f<name> &8- &c<value>"boards.deaths4 chiavidisplay-name"&4Piu morti"stat"deaths"size10format"&7<rank>. &f<name> &8- &4<value>" modules/lock.yml
Modulo: lock 39 impostazioni
modules/lock.ymlplugins/ShadowEssentials/modules/lock.yml Note del file
Blocca per te una cassa, un barile, una fornace o una porta: appendici un cartello con [Lock] sulla prima riga. Click destro sul cartello per scegliere chi altro può aprirla.
Dove stanno i lucchetti: nel mondo stesso (i dati dei chunk), non in un database. Un backup del mondo si riporta dietro i suoi lucchetti, un mondo eliminato se li porta via. data/locks.yml (o la tabella sb_lock) è solo un indice per contare ed elencare: perderlo non fa perdere nessun lucchetto.
Un lucchetto aggiunge un rifiuto, non concede mai niente: se una regione o un'isola tiene chiusa una cassa a qualcuno, essere tra gli ammessi del lucchetto non gliela apre.
config-version1enabledtruecommands1 chiavelock{ enabled: true, aliases: [ "chestlock" ] }sign-tags[Lock, Private, Privato]Prima riga di un cartello del lucchetto. Maiuscole e minuscole non contano; valgono entrambe le facce. Questi tag sono riservati: un tipo di cartello in modules/sign.yml con lo stesso tag viene ignorato, e la console lo dice.
quick-locktrueClic destro su un contenitore con un cartello in mano: il cartello si appende da solo su un lato libero e il contenitore viene chiuso col lucchetto. Se non c'è un lato libero viene chiuso senza cartello.
lockable15 chiaviCosa si può bloccare. Le casse di rame e i vasi decorati sono spenti finché i golem di rame e le frecce non vengono gestiti (vedi il manuale). Le porte di ferro mai: le apre solo la redstone.
cheststruechest, trapped chest
copper-chestsfalsebarrelstrueshulker-boxestruefurnacestruefurnace, smoker, blast furnace
hopperstruedroppers-dispenserstruebrewing-standstruecrafterstruedoorstruewooden doors, trapdoors, fence gates
shelvesfalselecternsfalsejukeboxesfalsedecorated-potsfalsechiseled-bookshelvesfalseconnected-doorstrueLe porte doppie si aprono e si chiudono insieme, e un solo lucchetto le copre entrambe.
disabled-worlds[ ]Mondi dove non si possono creare lucchetti (quelli già esistenti lì restano validi).
command-range5Fin dove arriva /lock per il blocco che guardi.
notice-cooldown"2s"Lo stesso "questa cassa è chiusa" viene detto allo stesso giocatore al massimo una volta in questo intervallo: un clic destro tenuto premuto ripete il clic.
limits1 chiavedefault25Lucchetti per giocatore. shadowessentials.lock.limit.<n> alza il limite (vince il nodo più alto), shadowessentials.lock.limit.unlimited lo toglie. Una cassa doppia conta uno. Il conteggio viene dall'indice.
hoppers1 chiaveauto-lock-own-hopperstrueUn hopper che il proprietario piazza contro un proprio contenitore protetto viene protetto anche lui a suo nome, così le sue catene di hopper continuano a funzionare. Quegli hopper non contano per il limite.
modes1 chiavedeposittrueDEPOSIT: tutti ci mettono le cose, solo i membri le tirano fuori.
groups1 chiavepermission-groups[ ]Gruppi extra offerti nel menu, accanto a team, isola e regione. "vip" qui significa: chi ha shadowessentials.lock.group.vip (dallo a un gruppo in ShadowPermissions o LuckPerms).
land-owner2 chiaviChi possiede il terreno può toglierci un lucchetto (mai aprirlo di nascosto).
islandstrueregionsfalseSpento: le regioni dello spawn appartengono allo staff, che ha il bypass.
orphan-on-island-leavetrueUn membro che ha lasciato l'isola: i suoi lucchetti lì contano come scaduti per il proprietario dell'isola, che può aprirli e toglierli.
expiry4 chiaviafter-days00 = i lucchetti non scadono mai. Altrimenti: proprietario non visto da questo numero di giorni.
actionBREAKABLEUNLOCK chiunque lo apre
BREAKABLE resta chiuso, ma chiunque può romperlo
NOTHING lo dice solo /lock info
purgefalseToglie da solo, ogni tanto, i lucchetti dei proprietari scaduti.
purge-every"24h"import4 chiavisignsfalseConverte i cartelli [Private] di Lockette, LockettePro e BlockLocker man mano che si caricano i loro chunk. Solo finché quei plugin NON sono installati.
private-tags[Private, Privato]La prima riga di quei cartelli.
more-users-tags["More Users", "Altri Utenti"]lwc-table"lwc_protections"/lock admin import lwc mysql legge questa tabella nel database che usa ShadowEssentials.
modules/mail.yml
Modulo: mail 9 impostazioni
modules/mail.ymlplugins/ShadowEssentials/modules/mail.yml config-version1enabledtruecommands1 chiavemail{ enabled: true, aliases: [ "inbox" ] }limits2 chiavimax-messages50Numero massimo di messaggi che una casella può contenere.
max-length256expiry2 chiaviunread"30d"I messaggi non letti scadono dopo...
read"7d"I messaggi letti vengono eliminati dopo...
notify2 chiavion-jointrueUn avviso al login quando ci sono messaggi non letti.
delay"2s" modules/moderation.yml
Modulo: moderation 61 impostazioni
modules/moderation.ymlplugins/ShadowEssentials/modules/moderation.yml Note del file
Testi in italiano: esempi/it_IT/modules/moderation.yml - copialo al posto di questo file. Ban, mute, kick, warn, jail, freeze, vanish. Tutto nello storage: funziona offline e su più server.
config-version1enabledtruecommands15 chiaviban{ enabled: true, aliases: [ ] }tempban{ enabled: true, aliases: [ "tban" ] }unban{ enabled: true, aliases: [ "pardon" ] }kick{ enabled: true, aliases: [ ] }mute{ enabled: true, aliases: [ ] }tempmute{ enabled: true, aliases: [ "tmute" ] }unmute{ enabled: true, aliases: [ ] }warn{ enabled: true, aliases: [ ] }jail{ enabled: true, aliases: [ ] }unjail{ enabled: true, aliases: [ ] }freeze{ enabled: true, aliases: [ ] }history{ enabled: true, aliases: [ "punishments" ] }alts{ enabled: true, aliases: [ ] }vanish{ enabled: true, aliases: [ "v" ] }staffchat{ enabled: true, aliases: [ "sc" ] }Modelli di punizione
Motivi preimpostati con le durate già decise:
/ban SomePlayer #cheating
Quale durata viene scelta dipende da quante volte quel giocatore ha già ricevuto lo stesso modello, così due moderatori diversi danno la stessa pena per la stessa cosa senza doverselo ricordare.
templates4 chiavitemplates.spam3 chiavidisplay"Spam in chat"typeMUTEdurations[10m, 1h, 12h, 7d]templates.insults3 chiavidisplay"Offensive language"typeMUTEdurations[30m, 3h, 1d, 7d]templates.cheating4 chiavidisplay"Cheating clients"typeBANdurations[30d, perm]broadcasttruetemplates.griefing3 chiavidisplay"Griefing"typeBANdurations[3d, 14d, perm]Avvertimenti
warns2 chiaviexpire"30d"Quanto tempo prima che un avvertimento smetta di contare per la scala.
warns.ladder3 chiaviAzioni automatiche al raggiungimento di N avvertimenti attivi. Scatta solo il gradino esatto, non tutti quelli sotto.
warns.ladder.33 chiaviactionMUTEduration"1h"reason"3 warnings"warns.ladder.53 chiaviactionBANduration"1d"reason"5 warnings"warns.ladder.83 chiaviactionBANduration"perm"reason"8 warnings"Ban
ban2 chiaviscreen["&c&lYOU ARE BANNED", "", "&7Reason: &f<reason>", "&7By: &f<actor>", "&7Expires: &f<expires>", "", "&eIf you think this is a mistake, write on Discord."]+5
La schermata mostrata a un giocatore bannato. Qui funziona MiniMessage. Placeholder: <reason> <actor> <expires>
broadcasttruekick1 chiavescreen["&c&lYOU WERE KICKED", "", "&7Reason: &f<reason>"]+1
Mute
mute2 chiaviblocked-commands[msg, tell, w, r, reply, mail, me, sc]Comandi bloccati durante il mute, così non si aggira un mute scrivendo in privato.
shadow-mutetrueShadow mute: il giocatore vede i propri messaggi, nessun altro li vede. Molto più efficace di un mute normale contro chi provoca.
Prigione
Le celle si creano con /jail create <name> stando nel punto giusto, o si scrivono qui a mano.
jail2 chiavicells{ }contain-radius20Un giocatore che si allontana dalla cella viene rimesso dentro.
Rilevamento degli account secondari
alts3 chiavienabledtruenotify-on-jointrueAvvisa lo staff al login quando l'indirizzo è già noto per altri account.
only-if-punishedfalsetrue = avvisa solo quando uno degli altri account è bannato
Vanish
/vanish nasconde del tutto l'entità del giocatore agli altri client: niente modello, niente armatura, niente nome, niente particelle delle pozioni, nessuna riga nella tab list. Per quanto li riguarda, il giocatore non c'è.
Le impostazioni qui sotto riguardano tutti gli altri modi in cui chi è invisibile si tradisce comunque.
vanish10 chiavisilent-join-quittrueNessun messaggio di entrata e uscita mentre sei invisibile.
block-pickuptrueUn item che si alza da terra verso il nulla si nota.
block-mob-targetingtrueAnche uno zombie che insegue un corridoio vuoto.
block-pressure-platestrueE una pedana a pressione che si abbassa da sola, ancora di più.
invulnerabletrueNessun danno mentre sei invisibile: non puoi morire durante un'indagine.
freeze-hungertrueLa fame resta dov'è.
remindertrueUn promemoria nella action bar, perché dimenticarsi di essere invisibili è il modo classico di rovinare un'indagine.
hide-from-player-counttrueIl conteggio dei giocatori - lista dei server, tab list, ologrammi, placeholder - esclude chi è invisibile.
hide-from-listtrueIl /list vanilla nominerebbe comunque tutti, quindi rispondiamo noi, con le stesse parole e senza chi non può essere visto.
auto-on-joinfalseChi ha shadowessentials.vanish.auto entra già invisibile.
notify1 chiavepermission"shadowessentials.moderation.notify"Chi riceve le notifiche di moderazione.
modules/motd.yml
Modulo: motd 24 impostazioni
modules/motd.ymlplugins/ShadowEssentials/modules/motd.yml Note del file
Testi in italiano: esempi/it_IT/modules/motd.yml - copialo al posto di questo file.
Come appare il tuo server nella lista multiplayer: le due righe di testo, l'immagine accanto, il conteggio dei giocatori e la piccola lista che appare quando passi il mouse sul conteggio.
È la prima cosa che chiunque vede del tuo server, e di solito l'unica in base a cui lo confronta.
COLORI con &, come ovunque:
&6 oro &c rosso &l grassetto &#ff8800 colore esatto &r reset
I gradienti usano il tag, perché & non sa farli:
<gradient:#8A2BE2:#00BFFF>SHADOW</gradient>
config-version1enabledtruecommands1 chiavemotd{ enabled: true, aliases: [ ] }Le due righe
motd4 chiavienabledtruemodeRANDOMRANDOM = una diversa a ogni aggiornamento della lista dei server ORDERED = una dopo l'altra, nell'ordine scritto qui
Una sola voce significa che non cambia mai, e va bene anche così.
centertrueRiempie ogni riga di spazi così che stia al centro del pannello. La larghezza viene misurata carattere per carattere, perché il font di Minecraft non è monospaziato e "basta contare le lettere" viene storto.
motd.messages3 chiaviPlaceholder che funzionano qui:
%online% %max_players% %tps% %version% e ogni placeholder di PlaceholderAPI, se è installato.
motd.messages.default1 chiavelines["<gradient:#8A2BE2:#00BFFF>&lSHADOW &fNETWORK</gradient>", "&7Survival &8| &7SkyBlock &8| &7Events every weekend"]+1
motd.messages.second1 chiavelines["<gradient:#8A2BE2:#00BFFF>&lSHADOW &fNETWORK</gradient>", "&e&lNEW &8| &7A new SkyBlock season is out"]+1
motd.messages.third1 chiavelines["<gradient:#8A2BE2:#00BFFF>&lSHADOW &fNETWORK</gradient>", "&7Online now: &a%online%&7/&f%max_players%"]+1
L'immagine
icon3 chiavienabledtruefolder"icons"Metti i tuoi file PNG in plugins/ShadowEssentials/<folder>/. Minecraft vuole esattamente 64x64: qualsiasi altra misura viene ridimensionata per te all'avvio, quindi puoi metterci il logo che hai già.
modeRANDOMRANDOM | ORDERED | FIRST
La lista sotto il conteggio dei giocatori
hover2 chiaviPassando il mouse sul conteggio compare questa. Anche qui funzionano i colori con &, esadecimali compresi. Una riga vuota "" lascia uno spazio. Tieni le righe corte: il riquadro è largo solo quanto la più lunga.
enabledtruelines["&7Welcome to", "A2BE2SHADOW", "", "&7Online: &f%online%"]+1
Conteggio dei giocatori
players5 chiavihidefalseNasconde del tutto il conteggio e la lista.
count-modeREALREAL = la verità ADD = la verità più "add" qui sotto FIXED = sempre "fixed" qui sotto ALWAYS_ONE_MORE = gli slot mostrano sempre un posto libero, così non sembra mai pieno
add0fixed0max-slots00 = lascia stare gli slot di server.properties.
Riga della versione
version1 chiaveMostrata in rosso accanto al conteggio quando la versione del client del giocatore non corrisponde, che è proprio il momento di dirgli cosa usare. null = lascia quella vera.
textnullEsempio: "&cRequires 1.26.2"
Manutenzione
maintenance4 chiaviAttivala con /motd maintenance on|off. Cambia solo quello che mostra la lista dei server: non chiude il server a nessuno.
enabledfalselines["&c&lMAINTENANCE", "&7Back soon. Thank you for your patience!"]+1
iconnullUn PNG dalla stessa cartella delle icone, senza l'estensione.
hover["&cUnder maintenance", "&7Back soon"] modules/npc.yml
Modulo: npc 4 impostazioni
modules/npc.ymlplugins/ShadowEssentials/modules/npc.yml Note del file
NPC a cui puoi avvicinarti e che puoi cliccare.
Sono costruiti sul MANNEQUIN, l'entità a forma di giocatore che il gioco stesso fornisce. Conta più di quanto sembri: ogni altro plugin che mette nel mondo un giocatore con skin lo fa inviando pacchetti finti, il che significa una libreria in più, una dipendenza in più, e una cosa in più che si rompe al prossimo aggiornamento. Un mannequin è una normale entità con una normale API.
Gli NPC stanno in npcs.yml. Quel file lo scrive il plugin.
config-version1enabledtruecommands1 chiavenpc{ enabled: true, aliases: [ ] }look-range6.0Entro quanti blocchi un NPC gira la testa verso chi passa.
modules/particles.yml
Modulo: particles 16 impostazioni
modules/particles.ymlplugins/ShadowEssentials/modules/particles.yml Note del file
Testi in italiano: esempi/it_IT/modules/particles.yml - copialo al posto di questo file.
Particelle: quelle che indossano i giocatori, e quelle fissate in un punto preciso - un altare, una fontana, una crate.
Un effetto è due cose separate: la FORMA, dove vengono disegnate, e la PARTICELLA, quale. Tenerle separate vuol dire che un'aureola per ogni particella del gioco è una riga di config invece di cento, e che una particella aggiunta da un aggiornamento del gioco funziona senza che qui si tocchi niente.
config-version1enabledtruecommands1 chiaveparticles{ enabled: true, aliases: [ "particle", "pp" ] }interval-ticks4Quanti tick tra un ridisegno e l'altro. 4 = cinque volte al secondo, che sembra fluido. Alzalo se tantissimi giocatori hanno un effetto attivo.
max-range32La distanza oltre la quale non ha senso disegnarle.
hide-when-vanishedtrueUn membro dello staff invisibile che si lascia dietro una scia di scintille non è invisibile.
hide-when-afktrueUn giocatore lasciato AFK allo spawn per sei ore è un generatore di particelle che nessuno ha chiesto.
Le forme
HALO anello sopra la testa AURA nuvola intorno al corpo TRAIL una scia lasciata camminando FEET cerchio ai piedi WINGS due ali dietro le spalle (seguono la rotazione) ORBIT anello che gira all'altezza della vita BEAM colonna che sale verso l'alto RAIN pioggia dall'alto HELIX doppia elica che sale
Le voci
effects7 chiavishape una delle forme qui sopra particle il nome Minecraft della particella color #RRGGBB, solo per DUST e ENTITY_EFFECT count quante per frame size raggio, o scala per DUST group come vengono raggruppate nel menu permission chi può indossarla (default shadowessentials.particle.<id>) icon l'item nel menu
effects.sparks8 chiaviname"&eSparks"shapeHALOparticleEND_RODcount8size0.7groupbaseiconNETHER_STARlore["&7A ring of light above your head."]sparks:
flame, hearts, dust, wings, helix, beamEffetti fissati in un punto
blocks{ }Scritti da /particles block <name> <effect> mentre guardi il blocco.
Gli altri plugin - quello delle crate, per esempio - NON scrivono qui: attaccano i loro a runtime tramite l'API, e spariscono quando il plugin li rimuove. Così cento crate non ti lasciano cento blocchi di YAML da leggere.
modules/player.yml
Modulo: player 38 impostazioni
modules/player.ymlplugins/ShadowEssentials/modules/player.yml Note del file
Le classiche utilità essentials.
config-version1enabledtruecommands17 chiaviheal{ enabled: true, aliases: [ ] }feed{ enabled: true, aliases: [ "eat" ] }fly{ enabled: true, aliases: [ ] }god{ enabled: true, aliases: [ ] }gamemode{ enabled: true, aliases: [ "gm" ] }speed{ enabled: true, aliases: [ ] }repair{ enabled: true, aliases: [ "fix" ] }hat{ enabled: true, aliases: [ ] }more{ enabled: true, aliases: [ ] }workbench{ enabled: true, aliases: [ "craft", "wb" ] }enderchest{ enabled: true, aliases: [ "ec" ] }trash{ enabled: true, aliases: [ "disposal", "bin" ] }invsee{ enabled: true, aliases: [ ] }clearinventory{ enabled: true, aliases: [ "ci" ] }suicide{ enabled: true, aliases: [ ] }ping{ enabled: true, aliases: [ ] }seen{ enabled: true, aliases: [ ] }heal5 chiavicooldown"60s"restore-healthtruerestore-hungertrueclear-effectstrueextinguishtruefly3 chiavipersisttrueMantieni il volo attivo tra un relog e l'altro.
blacklist-worlds[ ]Mondi in cui il volo viene rifiutato anche con il permesso.
safe-landingtrueBreve immunità alla caduta quando il volo viene tolto a mezz'aria, così togliere il volo a qualcuno in cielo non è una condanna a morte.
invsee2 chiaviallow-edittruereadonly-against"shadowessentials.invsee.protect"I giocatori con questo permesso non possono avere l'inventario modificato, solo visto. Protegge lo staff senior dallo staff junior.
repair1 chiavecooldown"30s"Nickname
nick8 chiaviIl nome mostrato in chat, nella tab list e agli altri plugin. Il nome vero dell'account non cambia mai, e /realname lo mostra sempre.
Continua a leggere
I colori vengono concessi un permesso alla volta, così un rango può avere un nome colorato senza che ogni rango possa colorarsi come un membro dello staff:
shadowessentials.nick.color &a &c &7 ... shadowessentials.nick.hex &#ff8800 shadowessentials.nick.gradient <gradient:...> shadowessentials.nick.format grassetto, corsivo, sottolineato shadowessentials.nick.magic &k
Tutto ciò che non è consentito viene tolto dal nome, non rifiutato.
enabledtruemin-length3La lunghezza si misura sul testo visibile, i colori non contano.
max-length16allow-spacesfalseSolo lettere, cifre e _. shadowessentials.nick.bypass.characters salta questo controllo.
prefix"&7~&r"Messo davanti a ogni nickname, così un giocatore con un nickname è riconoscibile. Lascia vuoto per nessun segno.
block-real-namestrueRifiuta un nickname che è il nome vero dell'account di qualcun altro. Spegnendo questa opzione un giocatore può diventare indistinguibile da un altro.
uniquetrueRifiuta un nickname che un altro giocatore online sta già usando.
blacklist[admin, owner, staff, mod, console, server]Confrontato con il testo visibile, senza distinguere maiuscole e minuscole, in qualsiasi punto.
modules/portal.yml
Modulo: portal 10 impostazioni
modules/portal.ymlplugins/ShadowEssentials/modules/portal.yml Note del file
Aree che eseguono qualcosa quando un giocatore ci entra.
NON sono regioni protette: niente claim, niente flag, nessuna sovrapposizione con ShadowRegions. Tutto quello che fa un portale è accorgersi che sei entrato.
Costruiscine uno in gioco:
/portal wand poi clic sinistro su un angolo, clic destro sull'altro /portal create hub-to-survival command:/warp survival
Due portali che portano l'uno nell'altro:
/portal create entrance (vai da un'altra parte) /portal create exit /portal link entrance exit both
"both" collega anche il ritorno; toglilo per un solo senso. /portal da solo apre la lista, e da lì ogni portale ha una scheda con tutto questo - collegamento, blocco, costo, attesa, specchio.
config-version1enabledtruecommands1 chiaveportal{ enabled: true, aliases: [ ] }Portali
portals{ }Vuoto di default. Il listener del movimento è sempre registrato, ma la sua prima riga esce subito quando non ci sono portali, quindi una lista vuota costa un confronto per movimento e nient'altro.
Prima veniva registrato solo se all'avvio esisteva già un portale, ed è per questo che il PRIMO portale di un server non faceva niente fino al riavvio successivo - mentre il messaggio diceva che era attivo da subito.
Esempio, copialo fuori dalle { } qui sopra per usarlo:
portals:
hub-to-survival:
world: "world"
corner1: { x: 10, y: 60, z: 10 }
corner2: { x: 14, y: 65, z: 14 }
actions:
- "command:/warp survival"# Limite di accesso facoltativo. Senza il permesso al giocatore viene detto perché. permission: null denied-message: "&cYou cannot go through here."
# Prezzo e attesa facoltativi. cooldown: "3s" cost: amount: 0
# Requisiti facoltativi. requirements: vip-tier: null playtime: null
# Scatta solo stando in questo blocco, così puoi posare l'area # sopra un vero portale del Nether o una colonna d'acqua. trigger-block: null
effects:
sound: { name: "BLOCK_PORTAL_TRAVEL", volume: 0.4, pitch: 1.2 }
particles: { type: PORTAL, count: 30 }
title: "<gradient:#8A2BE2:#00BFFF>SURVIVAL</gradient>"Come appare quando lo crei
creation3 chiaviUn portale è un'area, non dei blocchi: senza questo, chi ne creava uno non vedeva niente nel mondo e doveva costruirlo a mano per sapere dov'era.
filltruefalse per lasciare l'area invisibile, come prima.
blockNETHER_PORTALDi cosa è riempito. Cambia il blocco di un portale esistente con
/portal block <id> <blocco>
e usa "air" per svuotarlo.
Continua a leggere
Deve essere un blocco in cui puoi ENTRARE camminando. Questo esclude vetro, pannelli e ogni altro blocco solido: un portale fatto di quelli è un muro, ti fermi davanti e non succede niente - senza niente sullo schermo che dica perché. NETHER_PORTAL ha l'aspetto giusto e ti lascia passare; il viaggio vanilla verso il Nether viene annullato dentro i nostri portali, quindi si va invece dove dice il collegamento. Funzionano anche WATER, AIR e LIGHT.
frame-blockOBSIDIANIl blocco con cui vengono disegnate le cornici già pronte (/portal shape ... circle, rect). Un contorno a mano libera (/portal build) è fatto dei blocchi che piazzi tu.
Forme, aspetto e lo specchio
Un portale è un'area fatta con la wand, o qualsiasi insieme di celle disegnate su un piano:
/portal shape <id> circle <radius> un anello dove guardi /portal shape <id> rect <width> <height> /portal build <id> ...piazza i blocchi... /portal finish [action]
Il contorno che costruisci resta; quello che racchiude è il portale (cells:).
Per ogni portale, nel file o con /portal edit <id> <field> <value>:
fill-block: WHITE_STAINED_GLASS_PANE il blocco all'interno (air = niente)
facing: SOUTH il lato su cui stanno i giocatori; impostato
alla creazione, conta per lo specchio
effects:
ambient: { type: PORTAL, count: 6, distance: 24, interval: 10 }
particelle al suo interno mentre qualcuno
è entro "distance" blocchi
mirror: vedi l'altro lato di un altro portale
enabled: true
target: other-portal /portal mirror <id> <target|off>
distance: 24 solo per i giocatori così vicini
depth: 12 quanto è profonda la finestra
refresh-ticks: 40 ogni quanto viene ridisegnata la finestra
max-blocks: 4096 il massimo di blocchi che una finestra può usare
show-players: true i giocatori dall'altro lato, come un nome
con la loro testa sottoLo specchio viene disegnato solo sul client: i blocchi dietro il portale vengono mostrati come i blocchi davanti al target, per ogni spettatore, e rimessi a posto appena si allontana. Non costa niente finché nessuno è vicino.
Azioni: "portal:<id>" fa arrivare sulla soglia di quel portale, girati di spalle al portale - il modo solito per collegare due portali tra loro.
Prestazioni
performance1 chiaveLe aree sono indicizzate per chunk, quindi il controllo sul movimento è una sola ricerca in una mappa, per quanti portali esistano. Niente da regolare qui, la voce resta per memoria.
check-on-block-change-onlytrueSicurezza
safety2 chiaviUn portale è un pezzo di mondo che reagisce a chi ci sta dentro, e un attimo dopo quel giocatore di solito è da un'altra parte. Da questo nascono tre tipi di guai, e sono di quelli che fermano il server, non di quelli che danno fastidio alla gente:
Continua a leggere
- due portali che puntano l'uno all'altro: A ti porta a B, B ti riporta ad A, e all'arrivo scatta di nuovo. Nella config non c'è niente di sbagliato; il server semplicemente smette di rispondere. - il bordo: stare sul confine ed entrare e uscire fa scattare il portale a ogni cambio di blocco. Per un portale che esegue comandi da console, significa eseguirli venti volte al secondo. - pagare due volte: il prezzo passa dal plugin di economia, che risponde più tardi. Rientrare mentre la prima risposta è ancora in viaggio fa partire un secondo pagamento.
Sono una sola cosa vista da tre lati, quindi hanno una sola cura: dopo che un portale scatta, quel giocatore è sordo ai portali per un momento.
grace"1s"Per quanto tempo resta sordo. Alzalo se hai catene di portali vicini tra loro.
max-per-10s20Una rete di sicurezza per una catena abbastanza lunga da superare il periodo di grazia: oltre questo numero di attivazioni in 10 secondi il portale viene rifiutato e la console ti dice chi e dove.
modules/reward.yml
Modulo: reward 25 impostazioni
modules/reward.ymlplugins/ShadowEssentials/modules/reward.yml Note del file
Testi in italiano: esempi/it_IT/modules/reward.yml - copialo al posto di questo file. Ricompense giornaliere con serie di giorni consecutivi, e ricompense per il playtime. Le azioni usano lo stesso linguaggio di GUI, voucher e cartelli:
money:give:500 · xp:give:100 · kit:give:bonus · console:<command> message:&aCiao · sound:ENTITY_PLAYER_LEVELUP
config-version1enabledtruecommands1 chiavedaily{ enabled: true, aliases: [ "dailyreward" ] }Ricompensa giornaliera
daily6 chiavienabledtruetimezone"Europe/Rome"grace-period"6h"Di quanto puoi sforare prima di perdere la serie. Senza questo, entrare alle 00:30 invece che alle 23:30 cancellerebbe trenta giorni di fila, che è la parte più esasperante di sistemi come questo.
cycle7Durata del ciclo: una volta finito ricomincia dal giorno 1.
daily.streak-bonus2 chiaviUn bonus cumulativo per le serie lunghe.
multiplier1.1+10% for every week in a row
max-multiplier2.0daily.days7 chiavidaily.days.12 chiaviiconIRON_INGOTactions["money:give:250", "message:&aDay 1: 250 coins"]daily.days.22 chiaviiconIRON_INGOTactions["money:give:500", "message:&aDay 2: 500 coins"]daily.days.32 chiaviiconDIAMONDactions["console:give <player> diamond 2", "message:&aDay 3: 2 diamonds"]+1
daily.days.42 chiaviiconGOLD_INGOTactions["money:give:1000", "message:&aDay 4: 1000 coins"]+1
daily.days.52 chiaviiconCHESTactions["xp:give:200", "message:&aDay 5: 200 experience"]+1
daily.days.62 chiaviiconEMERALDactions["money:give:2000", "message:&aDay 6: 2000 coins"]+1
daily.days.72 chiaviiconNETHER_STARactions["money:give:5000", "console:give <player> diamond 5", "sound:UI_TOAST_CHALLENGE_COMPLETE", "broadcast:&6<player> completed the week!"]+3
Ricompense per il playtime
Il tempo in AFK NON conta (vedi modules/afk.yml), quindi non si possono farmare lasciando il client acceso.
playtime2 chiavienabledtruetiers[{ after: 1h, repeating: true, actions: […] }, { after: 10h, repeating: false, actions: […] }, { after: 50h, repeating: false, actions: […] }, { after: 100h, repeating: false, actions: […] }]+3
modules/sign.yml
Modulo: sign 20 impostazioni
modules/sign.ymlplugins/ShadowEssentials/modules/sign.yml Note del file
Cartelli che fanno qualcosa quando vengono cliccati, più i colori sui cartelli normali.
Un tipo di cartello è solo un blocco in "types:" qui sotto. Le azioni sono lo stesso linguaggio a catena usato da GUI, kit e voucher, quindi puoi inventare i tuoi tipi di cartello senza aspettare un aggiornamento del plugin.
config-version1enabledtrueColori sui cartelli normali
colors2 chiavienabledtruepermission"shadowessentials.sign.color"Solo ai giocatori con questo permesso vengono convertiti i codici colore.
Cartelli funzionali
types7 chiaviLa prima riga è [Tag]. Le altre righe sono parametri, disponibili nelle azioni come <line2>, <line3> e <line4>.
types.warp5 chiavitag"Warp"create-permission"shadowessentials.sign.create.warp"use-permission"shadowessentials.sign.use.warp"format["&8[&bWarp&8]", "&f<line2>"]Come viene riscritto il cartello quando viene piazzato.
actions["command:/warp <line2>"]warp:
kit, heal, spawn, trash, crafttypes.command5 chiaviEsegue quello che è scritto sulle righe da 2 a 4. Solo per lo staff, per ovvie ragioni: chi può piazzarne uno può eseguire qualsiasi comando.
tag"Command"create-permission"shadowessentials.sign.create.command"use-permission"shadowessentials.sign.use.command"format["&8[&dCommand&8]", "&f<line2>", "&f<line3>", "&f<line4>"]+1
actions["command:/<line2> <line3> <line4>"]Protezione
protection3 chiaviprevent-breaktrueUn cartello funzionale può essere rotto solo da chi ha il permesso.
break-permission"shadowessentials.sign.break"protect-attachedtrueProtegge anche il blocco a cui è appeso il cartello, così non lo si può far cadere minando il muro dietro.
Feedback
feedback1 chiavefeedback.sound3 chiaviname"UI_BUTTON_CLICK"volume0.6pitch1.2 modules/skin.yml
Modulo: skin 23 impostazioni
modules/skin.ymlplugins/ShadowEssentials/modules/skin.yml Note del file
Skin: /skin set <name>, /skin url <link>, /skin reset, e un menu guardaroba con /skin. Le stesse sorgenti funzionano per gli NPC (npcs.yml "skin:") e per i manichini.
Una sorgente di skin è una riga:
Notch o name:Notch la skin di quell'account Mojang url:https://.../skin.png un'immagine, firmata tramite MineSkin (*) file:guard skins/guard.png, firmata una volta tramite MineSkin (*) preset:knight uno dei preset qui sotto
(*) solo dopo che hai compilato "mineskin:" qui sotto. Le skin per nome
non chiedono niente: arrivano da Mojang.
La skin viene messa nel profilo del giocatore PRIMA che entri, così nessuno lo vede mai con quella sbagliata, nemmeno per un secondo.
config-version1enabledAUTOAUTO = attivo, a meno che SkinsRestorer non sia installato su questo server (si tiene /skin, e la console lo dice una volta). Se SkinsRestorer gira sul tuo PROXY, scrivi tu false qui: un server non vede il proxy, e due plugin che scrivono la stessa skin si sovrascrivono a vicenda.
commands1 chiaveskin{ enabled: true, aliases: [ "skins" ] }default-skinAUTOCosa indossa un giocatore prima di scegliere qualcosa.
AUTO OWN_NAME in offline mode, KEEP in online mode (e KEEP
ogni volta che il login ha già portato una skin firmata, come
succede con un proxy che inoltra quella vera)
KEEP quella che gli ha dato il login
OWN_NAME la skin Mojang dell'account con lo stesso nome, se esiste
LIST una di default-list, sempre la stessa per lo stesso giocatoredefault-list[ ]sources3 chiaviQuali tipi di sorgente possono usare i giocatori (ognuno ha anche un permesso).
nametrueurltrueneeds "mineskin:" below filled in
filetrueskins/<id>.png, uploaded once through MineSkin
presets3 chiaviSkin pronte per il guardaroba: name:, url: o file:. Un preset file richiede il PNG in plugins/ShadowEssentials/skins/ e
"mineskin:" compilato, es. knight: "file:knight"
notch"name:Notch"jeb"name:jeb_"dinnerbone"name:Dinnerbone"mineskin6 chiaviendpoint""Le skin da link o da file sono firmate da MineSkin, un servizio esterno, e restano spente finché non compili ENTRAMBE le righe qui sotto: crea un account MineSkin e incolla qui l'indirizzo e la chiave della sua API (il manuale mostra dove trovarli). Finché una delle due è vuota, /skin url e le skin file: vengono rifiutate e dicono perché. Ogni server usa la sua chiave: una chiave condivisa da tutti i server finirebbe in un'ora.
api-key""visibilityUNLISTEDUNLISTED tiene le skin dei tuoi giocatori fuori dalla galleria pubblica di MineSkin.
timeout"30s"max-queue5Quanti caricamenti possono restare in attesa insieme su questo server.
allowed-hosts[ ]Vuoto = qualsiasi indirizzo https. Altrimenti solo questi host (e i loro sottodomini). Gli indirizzi locali e privati vengono sempre rifiutati.
cache2 chiaviname-refresh"3d"Una skin presa da un nome viene riscaricata dopo questo tempo: il proprietario di quell'account potrebbe averla cambiata.
keep-unused"30d"Le voci che nessuno ha indossato per tutto questo tempo vengono buttate.
cooldown"30s"Tra due cambi dello stesso giocatore (shadowessentials.skin.bypass-cooldown lo salta).
apply-livetrueApplica subito (Paper aggiorna il giocatore; una finestra aperta si chiude). false = dal prossimo ingresso. Su Folia è sempre dal prossimo ingresso.
join-wait"1s"Quanto può aspettare un ingresso per una skin non ancora in cache. Dopo, il giocatore entra, e la skin arriva un attimo più tardi.
blocked-names[ ]Nomi la cui skin non si può copiare: il tuo staff, per esempio.
modules/spawn.yml
Modulo: spawn 16 impostazioni
modules/spawn.ymlplugins/ShadowEssentials/modules/spawn.yml config-version1enabledtruecommands2 chiavispawn{ enabled: true, aliases: [ ] }setspawn{ enabled: true, aliases: [ ] }main{ }Scritto automaticamente da /setspawn. Puoi anche modificarlo a mano.
per-world2 chiavienabledfalseworlds{ }Scritto da /setspawn --world
first-join5 chiaviteleporttrueTeletrasporta il giocatore la prima volta che si collega.
Va al punto qui sotto se c'è, altrimenti allo spawn normale. Spegnerlo NON spegne il messaggio, l'annuncio e i comandi: quelli vengono eseguiti lo stesso, sono cose separate.
location{ }Il punto del primo accesso, scritto da /setfirstspawn. Per quando la prima cosa che vuoi far vedere a qualcuno non è il centro dell'hub ma il cartello che spiega le regole. Toglilo, o usa /setfirstspawn clear, per usare lo spawn normale.
message"<gradient:#8A2BE2:#00BFFF>Welcome, <player>!</gradient>"broadcast"&8[&a+&8] &f<player> &7joined for the first time!"commands[ ]Comandi eseguiti una volta, al primo accesso. <player> viene sostituito.
on-join1 chiaveteleportfalseTeletrasporta allo spawn a ogni login.
respawn1 chiavemodeBEDSPAWN = sempre lo spawn del plugin BED = letto o ancora di rinascita se disponibili, altrimenti lo spawn del plugin VANILLA = lascia fare al server
teleport2 chiaviwarmup"3s"cooldown"5s" modules/spawner.yml
Modulo: spawner 15 impostazioni
modules/spawner.ymlplugins/ShadowEssentials/modules/spawner.yml Note del file
Testi in italiano: esempi/it_IT/modules/spawner.yml - copialo al posto di questo file.
Raccogliere gli spawner, e decidere DOVE si possono raccogliere.
La seconda metà è quella che conta. Un server vuole quasi sempre che si possano raccogliere in alcuni mondi e non in altri: lasciare che un piccone con silk touch svuoti il mondo delle risorse e porti gli spawner in un mondo dei plot è la strada più breve verso un'economia che poi non si può più riparare.
config-version1enabledtruecommands1 chiavespawner{ enabled: true, aliases: [ "spawnermob" ] }Condividere il server con un altro plugin di spawner
conflict1 chiaveShadowSpawners, SilkSpawners e simili fanno questo stesso lavoro. Due plugin sullo stesso evento di rottura significano che lo spawner che piazzi e quello che raccogli prendono il nome da plugin diversi, e non corrispondono.
Quindi quando uno di questi è installato questo modulo si fa da parte e lo lascia lavorare. Imposta false per prendere comunque il controllo - e aspettati che i due non vadano d'accordo.
auto-disabletrueDove
worlds4 chiaviRaccogliere e piazzare sono due domande separate: volerli raccoglibili solo in survival ma piazzabili ovunque è del tutto normale.
pickup-everywherefalsetrue = si possono raccogliere in qualsiasi mondo e la lista qui sotto viene ignorata. false = solo nei mondi elencati.
pickup[world]place-everywheretrueplace[ ]Come
pickup5 chiavirequire-silk-touchtrueServe il silk touch sul piccone in mano.
minimum-fortune0Livello minimo di fortuna. 0 per non richiederlo.
chance1.0Probabilità che lo spawner sopravviva alla rottura. 1.0 = sempre. Sotto 1 diventa un drop raro invece di una certezza.
creative-always-dropstrueIn creativa cade comunque, senza silk touch.
explosions-dropfalseLe esplosioni lo fanno cadere. Lasciato spento: acceso significa raccoglierli con il TNT e senza nessun piccone.
L'item
item2 chiavi<mob> è il nome leggibile, <type> quello tecnico. Colori con &.
name"&e&l<mob> Spawner"lore["&7Place it to make &f<mob> &7appear.", "&8<type>"]+1
Permessi: shadowessentials.spawner.pickup raccoglierli shadowessentials.spawner.place piazzarli shadowessentials.spawner.mob.<mob> un mob in particolare shadowessentials.spawner.mob.* tutti shadowessentials.command.spawner /spawner
modules/tablist.yml
Modulo: tablist 17 impostazioni
modules/tablist.ymlplugins/ShadowEssentials/modules/tablist.yml Note del file
Testi in italiano: esempi/it_IT/modules/tablist.yml - copialo al posto di questo file. Header della lista giocatori e scoreboard laterale. Le righe vengono ridisegnate solo quando cambiano davvero: una scoreboard di righe fisse non costa niente per tick.
config-version1enabledtruecommands1 chiavescoreboard{ enabled: true, aliases: [ "sidebar" ] }Lista giocatori (il tasto TAB)
Placeholder disponibili: %player%, %world%, %ping%, %online%, %max_players%, %tps%, e ogni %shadowessentials_...%
tablist6 chiavienabledtrueheader["<gradient:#8A2BE2:#00BFFF>&lSHADOW &fNETWORK</gradient>", "&7Online: &f%online%&8/&f%max_players%", ""]+2
name-format"<rank_prefix><white><name><rank_suffix>"Il nome mostrato nella lista. Oltre ai placeholder %...%, qui funzionano anche <name>, <player>, <rank_prefix>, <rank_suffix> e <rank_group>. Lascia esattamente "<name>" per non toccare affatto il nome.
nametagtrueAnche il rango sopra la testa, usando i team della scoreboard che servono già per l'ordinamento: non costa nemmeno un pacchetto in più. Imposta false se è un altro plugin a gestire i nametag.
tablist.sorting1 chiaveenabledtrueOrdina per peso del rango, così lo staff e i giocatori con un rango finiscono in cima. Usa i team della scoreboard, che sono l'unico modo affidabile per farlo senza pacchetti personalizzati.
Scoreboard laterale
Ogni riga è un componente, non testo semplice: colori, gradienti e placeholder funzionano su tutta la riga, e due righe identiche non sono un problema (non servono spazi finti per distinguerle).
Continua a leggere
Una scoreboard con "worlds" vale solo in quei mondi. Due nomi hanno un significato speciale:
default vale dovunque non valga nessun'altra scoreboard
skyblock senza "worlds", vale nel mondo delle isole di ShadowSkyBlock
comunque si chiami: il nome lo chiediamo a lui.
Senza ShadowSkyBlock installato non vale mai.CHI GESTISCE LA SIDEBAR
Minecraft ne ha una per giocatore. Di serie la gestisce questo plugin, ovunque, isole comprese: sulle isole disegna la scoreboard "skyblock" qui sotto, i cui dati reali - livello, membri, banca - li chiede a ShadowSkyBlock. Dall'altra parte island_scoreboard.yml ha "enabled: false", quindi i due non si scontrano mai.
Se la preferisci al contrario - la sidebar delle isole disegnata da ShadowSkyBlock stesso - imposta "yield-to-skyblock: true" qui e "enabled: true" nel suo island_scoreboard.yml.
scoreboard5 chiavienabledtrueupdate-interval"1s"yield-to-skyblockfalsetrue = nel mondo delle isole la sidebar la disegna ShadowSkyBlock e a questo plugin restano solo header, footer e ordinamento del TAB. False di serie: la disegna questo plugin, con la scoreboard "skyblock".
ignored-worlds[ ]Mondi in cui questa sidebar non deve comparire, per qualsiasi motivo (una lobby con la sua GUI, un minigioco). Header, footer e ordinamento del TAB continuano a funzionare.
scoreboard.boards2 chiaviscoreboard.boards.default2 chiavititle"<gradient:#8A2BE2:#00BFFF>&lSHADOW &fNETWORK</gradient>"lines["&7", "&f%player%", "&7Rank: &f%shadowessentials_vip_tier_name%", "&7Money: &a%shadowessentials_balance_formatted%", "&7", "&7Online: &f%online%&7/&f%max_players%", "&7Played: &f%shadowessentials_playtime%", "&7", "&7H …+7
scoreboard.boards.skyblock2 chiaviLa scoreboard dell'isola. I placeholder %island_...% arrivano da ShadowSkyBlock, e una riga che ne contiene uno si toglie da sola per chi non ha un'isola - un visitatore, qualcuno appena arrivato - invece di mostrargli degli zeri:
%island_name% %island_owner% %island_role% %island_level% %island_members% %island_max_members% %island_radius% %island_bank% %has_island%
title"<gradient:#8A2BE2:#00BFFF>&lSKYBLOCK</gradient>"lines["&7", "&f%player%", "&7Money: &a%shadowessentials_balance_formatted%", "&7", "&fIsland: &b%island_name%", "&7Owner: &f%island_owner%", "&7Role: &f%island_role%", "&7Level: &e%island_level%", "&7Members: &f%island_membe …+11
modules/teams.yml
Modulo: teams 9 impostazioni
modules/teams.ymlplugins/ShadowEssentials/modules/teams.yml Note del file
I team che i giocatori si creano da soli: un gruppo, qualche ruolo, e una chat tutta loro.
Non è un gruppo di permessi e non è un rango. È la squadra, la gilda, i quattro amici che costruiscono sempre insieme.
I team stanno in teams.yml, nella cartella del plugin. Quel file lo scrive il plugin: puoi leggerlo e correggerlo, ma di solito non c'è bisogno di toccarlo.
config-version1enabledtruecommands2 chiaviteam{ enabled: true, aliases: [ "t", "party" ] }teamchat{ enabled: true, aliases: [ "tc" ] }max-size8Quanti membri al massimo. Un tier VIP che definisce teams.size-multiplier lo allarga per chi lo possiede.
name2 chiavimin-length3max-length16invite-timeout"2m"Quanto tempo resta valido un invito prima di scadere.
allow-tagstruePermette al proprietario di dare al team un tag breve, mostrato accanto ai nomi dei suoi membri.
modules/teleport.yml
Modulo: teleport 40 impostazioni
modules/teleport.ymlplugins/ShadowEssentials/modules/teleport.yml Note del file
Tutto ciò che sposta un giocatore: /tp, /tpa, /back, /rtp, /top. Home, warp e spawn riusano la logica di warmup/cooldown/sicurezza di qui.
config-version1enabledtruecommands9 chiaviRinomina un comando, aggiungi alias, o spegnilo del tutto.
tp{ enabled: true, aliases: [ "teleport" ] }tphere{ enabled: true, aliases: [ "s" ] }tpa{ enabled: true, aliases: [ "call", "tpask" ] }tpahere{ enabled: true, aliases: [ ] }tpaccept{ enabled: true, aliases: [ "tpyes", "tpok" ] }tpdeny{ enabled: true, aliases: [ "tpno" ] }back{ enabled: true, aliases: [ ] }rtp{ enabled: true, aliases: [ "wild", "randomtp" ] }top{ enabled: true, aliases: [ ] }Warmup: l'attesa prima che avvenga il teletrasporto
warmup5 chiaviduration"3s"cancel-on-movetruecancel-on-damagetruemove-tolerance0.6Blocchi di movimento tollerati prima che il teletrasporto venga annullato. Senza questo, il minimo movimento del mouse annulla il teletrasporto, ed è per questo che la maggior parte dei server finisce per disattivare del tutto i warmup.
displayACTION_BARACTION_BAR | BOSSBAR | TITLE | CHAT | NONE
cooldown1 chiaveduration"5s"cost1 chiaveamount0Richieste /tpa
requests2 chiaviexpire"60s"max-pending5/back
back3 chiavienabledtruehistory-size3Quante posizioni precedenti ricordare: /back 1, /back 2, ...
on-deathtrue/rtp - teletrasporto casuale
Le destinazioni vengono preparate in background e verificate prima che un giocatore le chieda, così il comando risponde all'istante invece di bloccare il server mentre cerca un punto sicuro.
rtp9 chiavirtp.cache2 chiavienabledtruesize-per-world20rtp.center2 chiavix0z0rtpmin-radius500max-radius10000min-y50max-attempts20cooldown"5m"rtp.cost1 chiaveamount0rtpworlds[ ]Lista vuota = tutti i mondi sono consentiti.
Sicurezza
Prima che un teletrasporto arrivi, la destinazione viene controllata e, se serve, viene usato invece il punto sicuro più vicino.
safety6 chiavienabledtruesearch-radius5require-solid-groundtruerequire-air-above2on-failCANCELCANCEL = rifiuta il teletrasporto | FORCE = vai comunque
unsafe-blocks[LAVA, FIRE, SOUL_FIRE, MAGMA_BLOCK, CACTUS, POWDER_SNOW, WITHER_ROSE, SWEET_BERRY_BUSH, CAMPFIRE]+6
modules/vip.yml
Modulo: vip 10 impostazioni
modules/vip.ymlplugins/ShadowEssentials/modules/vip.yml Note del file
Impostazioni GLOBALI dei VIP. Ogni tier è un file a sé in vips/<name>.yml
config-version1enabledtruecommands1 chiavevip{ enabled: true, aliases: [ ] }check-interval"1m"Ogni quanto vengono controllate le scadenze. Il controllo viene fatto sul database, quindi funziona anche per i giocatori offline e su più server.
Risoluzione dei perk
Un giocatore può avere più di un tier alla volta. Queste impostazioni decidono cosa succede quando due tier definiscono lo stesso perk.
perk-resolution3 chiaviflagsANY_TRUEANY_TRUE | ALL_TRUE | HIGHEST_WEIGHT
valuesHIGHESTHIGHEST | LOWEST | HIGHEST_WEIGHT | SUM
multipliersBESTBEST = quello più favorevole al giocatore (il più basso per i perk di costo/cooldown, il più alto per i perk di guadagno)
MULTIPLY | HIGHEST_WEIGHT
Cosa succede ai perk "materiali" quando un tier scade
Per esempio un giocatore con 15 home il cui limite base è 1.
KEEP = le home in più restano utilizzabili LOCK = restano ma non si possono usare finché il rango non viene rinnovato REMOVE = vengono eliminate (sconsigliato)
overflow-policyLOCKIl testo dei perk
Ogni perk che questo plugin conosce ha già una riga tradotta nei file di lingua, sotto vip.perk. Questa sezione ti serve solo per sovrascriverne uno, o per dare un nome a un perk inventato da un altro plugin.
Continua a leggere
Disponibili dentro una riga:
<value> il numero in sé 7 1.25x <percent> la differenza dal normale, sempre positiva 25%
Colori con &, come ovunque.
perk-descriptionsEsempio, togli il # per usarlo: homes.limit: "&8 • &7Up to &f<value>&7 homes"
modules/voucher.yml
Modulo: voucher 7 impostazioni
modules/voucher.ymlplugins/ShadowEssentials/modules/voucher.yml Note del file
Codici riscattabili. Un codice esegue una catena di azioni, quindi copre giveaway, consegne dello store, premi degli eventi e promozioni senza una riga di codice per ogni caso.
config-version1enabledtruecommands2 chiaviredeem{ enabled: true, aliases: [ "code" ] }voucher{ enabled: true, aliases: [ ] }generation2 chiavipattern"XXXX-XXXX-XXXX"X viene sostituita con un carattere casuale.
charset"ABCDEFGHJKLMNPQRSTUVWXYZ23456789"Niente 0/O e niente 1/I/l: un codice deve anche poter essere letto ad alta voce.
redeem1 chiavecooldown"3s"L'attesa tra un tentativo e il successivo, che rende impraticabile indovinare un codice.
Esempi: /voucher create christmas money:give:5000;kit:give:bonus --uses 500 --per-player 1 --expires 30d /voucher create vipgold vip:give:gold:30d --uses 1 /voucher bulk christmas 100 genera 100 codici monouso
modules/warps.yml
Modulo: warps 20 impostazioni
modules/warps.ymlplugins/ShadowEssentials/modules/warps.yml Note del file
Warp di sistema, creati dallo staff. Documentazione: docs/moduli/warps.md
config-version1enabledtruecommands4 chiaviwarp{ enabled: true, aliases: [ ] }warps{ enabled: true, aliases: [ "warplist" ] }setwarp{ enabled: true, aliases: [ "createwarp" ] }delwarp{ enabled: true, aliases: [ "removewarp" ] }permissions2 chiaviper-warptrueRichiedi shadowessentials.warp.<name> per ogni warp.
show-lockedtrueMostra i warp che il giocatore non può usare (in grigio) invece di nasconderli. Mostrare ciò che esiste di solito è meglio: dà ai giocatori un obiettivo.
teleport3 chiaviwarmup"3s"cooldown"10s"teleport.cost1 chiaveamount0categories3 chiaviLe categorie servono a raggruppare i warp nella GUI. Un warp dichiara la sua categoria quando viene creato: /setwarp <name> <category>
categories.main3 chiavidisplay-name"&6Main"iconNETHER_STARweight100categories.shops3 chiavidisplay-name"&aShops"iconEMERALDweight90categories.events3 chiavidisplay-name"&dEvents"iconFIREWORK_ROCKETweight80 modules/world.yml
Modulo: world 35 impostazioni
modules/world.ymlplugins/ShadowEssentials/modules/world.yml Note del file
Gestione dei mondi e comandi diagnostici.
Crea, carica, scarica, elimina e applica regole ai mondi, così un server non ha bisogno di un secondo plugin per averne più di uno:
/world create <name> <kind> [--seed <s>] [--no-structures] /world delete <name> chiede due volte, poi la cartella sparisce /world load <name> [<kind>] per una cartella copiata a mano /world tp <name>
Tipi: normal, flat, large_biomes, amplified, void, nether, end
config-version1enabledtruecommands7 chiaviworld{ enabled: true, aliases: [ ] }time{ enabled: true, aliases: [ ] }weather{ enabled: true, aliases: [ ] }killall{ enabled: true, aliases: [ "butcher" ] }tps{ enabled: true, aliases: [ ] }entitycount{ enabled: true, aliases: [ "entities" ] }gc{ enabled: true, aliases: [ "memory", "mem" ] }Mondi gestiti
worlds3 chiaviVengono toccati solo i mondi elencati qui. Un mondo non elencato mantiene le impostazioni che gli ha dato il server stesso.
Continua a leggere
/world create scrive qui il suo mondo da solo, con il "kind" con cui è stato creato. Quella riga non è decorazione: il server ricorda i blocchi di un mondo ma non il generatore che li ha creati, quindi un mondo void riaperto senza di essa torna pieno di pietra.
kind: normal | flat | large_biomes | amplified | void
| nether | end (omettilo per un mondo che il server
conosce già, come quelli in server.properties)
seed: il seed con cui è stato creato, omesso per lasciarlo scegliere al server
structures: false per non generare villaggi, templi o fortezzeworlds.world10 chiaviauto-loadtrueCarica questo mondo all'avvio se il server non l'ha già caricato. Il caricamento genera terreno, quindi avviene solo all'avvio, mai con un /se reload.
worlds.world.gamerules4 chiaviApplicato ogni volta che il mondo viene caricato o il modulo viene ricaricato.
doDaylightCycletruekeepInventoryfalsemobGriefingtrueannounceAdvancementstrueworlds.worlddifficultyNORMALpvptruefixed-timenullBlocca l'orologio su questo tick. Impostarlo spegne anche doDaylightCycle, altrimenti l'ora si sposterebbe subito. 0 = alba, 6000 = mezzogiorno, 13000 = notte, 18000 = mezzanotte.
fixed-weathernullCLEAR | RAIN | THUNDER, oppure null per non toccare il meteo.
spawn-monsterstruespawn-animalstrueallow-flytrueIl volo in questo mondo. A un giocatore che arriva qui mentre vola il volo viene tolto, a meno che non abbia shadowessentials.world.fly.bypass.
enter-messagenullMostrato quando un giocatore entra in questo mondo. MiniMessage, <world> funziona.
worlds.world_nether3 chiaviauto-loadtrueallow-flytrueworlds.world_nether.gamerules1 chiavekeepInventoryfalseworlds.world_the_end2 chiaviauto-loadtrueallow-flytruekillall
killall5 chiaviprotected[PLAYER, ARMOR_STAND, ITEM_FRAME, GLOW_ITEM_FRAME, PAINTING, VILLAGER, ALLAY, END_CRYSTAL]+5
Mai rimossi, qualunque cosa dica il comando.
skip-namedtrueUn mob con un nome è il progetto del cuore di qualcuno: lascialo stare.
skip-tamedtruedefault-radius-1-1 = tutto il mondo. Qualsiasi altro numero è un raggio in blocchi intorno al giocatore che ha eseguito il comando.
confirm-above200Oltre questo numero di entità il comando chiede prima una conferma, con i soliti pulsanti cliccabili.
Diagnostica
diagnostics3 chiavidetailed-tpstrue/tps mostra anche MSPT, memoria, chunk ed entità.
tps-historytrueDue giorni di TPS come fila di barre sotto /tps, una barra ogni mezz'ora, passa il mouse sopra per l'ora e il valore più basso registrato. Salvati in data/tps-history.yml.
entity-warn-threshold200/entitycount segnala i chunk peggiori appena uno di loro supera questo numero di entità.
Lingue
I testi che il plugin mostra ai giocatori, un file per lingua.
lang/
Testi e messaggi 2 file
lang/plugins/ShadowEssentials/lang/ Note del file
Questo file è l'ultimo fallback: ogni chiave che manca in un'altra lingua viene cercata qui, quindi una traduzione parziale funziona comunque.
Formato: MiniMessage, spiegato nel manuale. I placeholder si scrivono <in_questo_modo>.
Per iniziare una nuova lingua: /se lang export <locale>
Tutti i messaggi che il plugin mostra ai giocatori, un file per lingua. Le chiavi non sono elencate una per una: qui ci sono i file, quanti testi contengono e i segnaposto che usano.
| File | Lingua | Testi |
|---|---|---|
lang/en_US.yml riferimento | English (US) | 1681 |
lang/it_IT.yml | Italiano | 1681 |
Segnaposto più usati
Il plugin li sostituisce con il valore giusto: vanno lasciati scritti così.
<prefix><player><id><count><name><world><value><time><state><file><kit><x><y><z>
Gruppi di messaggi
prefix1common2command7confirm6input3gui14lang5admin179economy1world98teleport31homes21warps18spawn9kits55vip44kitadmin6kiteditor16chat25inventory8afk3mail15moderation80reward3voucher28leaderboard7tablist5hologram40player59custom2sign5portal108motd10rules10teams68rules-book3spawner12particles31npc47item10armorstand312elevator18autotool65lock145skin46
Altro
Contenuti pronti, esempi, importazioni: i file che si copiano e si modificano come modello.
data/particles.yml
Dati scritti dal plugin 1 impostazione
data/particles.ymlplugins/ShadowEssentials/data/particles.yml Note del file
Quale effetto ha scelto ogni giocatore. QUESTO FILE LO SCRIVE IL PLUGIN: le impostazioni stanno in modules/particles.yml.
config-version1 kits/
I kit, uno per file 9 file
kits/plugins/ShadowEssentials/kits/ 9 file con la stessa forma. Qui sotto quello più commentato, per intero, come modello; gli altri sono elencati per nome.
daily-basic.ymldaily-epic.ymldaily-magic.ymldaily-staff.ymldaily.ymlstarter.ymltwitch.ymlyoutuber-daily.ymlyoutuber.yml
Esempio kits/starter.yml
Note del file
Un file per kit. Copia questo file per crearne uno nuovo: il nome del file è l'id del kit, quindi kits/pvp.yml diventa /kit pvp.
config-version1enabledtruePresentazione
display-name"&a&lStarter"description"&7Il necessario per iniziare."category"base"iconWOODEN_SWORDweight100Peso più alto = più in alto nel menu.
hide-when-lockedfalseNascondi il kit dal menu quando il giocatore non ha il permesso.
Chi può riscattarlo
permission"shadowessentials.kit.starter"publictruetrue = nessun permesso necessario, il kit è aperto a tutti.
requirements4 chiaviplaytime"0m"level0vip-tiernullworlds[ ]Lista vuota = tutti i mondi.
Cooldown
cooldown"once""once" = riscattabile una volta sola, per sempre.
cooldown-modeDURATIONDURATION = N ore dopo l'ultimo riscatto DAILY = si azzera a mezzanotte (vedi modules/kits.yml -> timezone)
WEEKLY | MONTHLY
max-claims-1-1 = riscatti illimitati
respect-vip-multipliertruecost1 chiaveamount0full-inventoryQUEUECosa fare quando l'inventario è pieno: DROP | QUEUE | CANCEL
Contenuto
items["STONE_SWORD 1", "STONE_PICKAXE 1", "STONE_AXE 1", "STONE_SHOVEL 1", "COOKED_BEEF 16", "TORCH 32", { material: LEATHER_CHESTPLATE, amount: 1, slot: 38, name: "&6Corazza del Novizio", lore: […], enchantments: {…}, color …+5
Forma breve: "MATERIAL amount" Forma lunga: un blocco con name, lore, enchantments, slot, chance, ...
slot38 = slot della corazza. Omettilo per usare il primo slot libero dell'inventario.
Ricompense extra
rewards3 chiaviexperience0rewards.money1 chiaveRichiede un provider di economia (ShadowEconomy o Vault).
default0rewardscommands[ ]Feedback
feedback5 chiavimessage"&aBenvenuto! Hai ricevuto il kit &f<kit>."title"<gradient:#00FF87:#60EFFF>KIT RICEVUTO</gradient>"subtitle"&7Starter"feedback.sound3 chiaviname"ENTITY_PLAYER_LEVELUP"volume0.8pitch1.2feedbackbroadcastnullAnnuncia a tutto il server. null = nessun annuncio.
vips/
I gradi VIP, uno per file 3 file
vips/plugins/ShadowEssentials/vips/ 3 file con la stessa forma. Qui sotto quello più commentato, per intero, come modello; gli altri sono elencati per nome.
basic.ymlepic.ymlmagic.yml
Esempio vips/basic.yml
Note del file
Testi in italiano: esempi/it_IT/vips/basic.yml - copialo al posto di questo file.
COLORI: si scrivono con &, come in Minecraft. &6 oro &c rosso &7 grigio &#ff8800 colore esatto &r reset
Solo i gradienti usano il tag, perché non si possono fare con &.
config-version1enabledtruedisplay-name"<gradient:#7FD8FF:#3BA7E0>BASIC</gradient>"short-name"&b[BASIC]"description["&7The first step. What you need to be comfortable:", "&7more homes, less waiting, and flight at the spawn."]+1
iconIRON_INGOTweight100inheritsnullnext"magic"permission"shadowessentials.vip.basic"default-duration"30d"grant1 chiaveCosa eseguire quando il rango viene dato e tolto. Niente di default: i permessi li gestisce il tuo plugin dei permessi, e questi comandi sono il posto dove glielo dici.
commands[ ]revoke1 chiavecommands[ ]perks3 chiaviperks.flags3 chiavifly.enabledtruechat.colorstruekits.preview-lockedtrueperks.values3 chiavihomes.limit5back.history2warps.player-limit1perks.multipliers9 chiaviteleport.cooldown-multiplier0.75teleport.warmup-multiplier0.5kits.cooldown-multiplier0.9economy.cost-multiplier0.95economy.gain-multiplier1.1shop.price-multiplier0.95crate.luck-multiplier1.05minion.speed-multiplier1.1skyblock.island-size-multiplier1.1on-grant3 chiavimessage"<gradient:#7FD8FF:#3BA7E0>You are BASIC now. Thank you for your support!</gradient>"broadcast"&7Welcome &f<player> &7to the <gradient:#7FD8FF:#3BA7E0>BASIC</gradient> &7rank!"commands[ ]expiry2 chiavireminders[7d, 3d, 1d, 6h, 1h]expiry.on-expire1 chiavemessage"&7Your BASIC rank has expired. &fThank you for supporting us."