Vai al contenuto
ShadowMC

Configurazione

ShadowCustomizer

Item, incantesimi, mob, blocchi e ricette personalizzati.

Premium v1.0.4

Dove sono i file

plugins/ShadowCustomizer/

Il plugin li crea al primo avvio e li aggiorna da solo alle nuove versioni, senza toccare le tue modifiche.

Applicare le modifiche

/scus reload

Rilegge i file senza riavviare il server.

Cosa c’è dentro

23 file · 574 impostazioni

Da dove partire: config.yml

Impostazioni

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

config.yml

Impostazioni generali
33 impostazioni
plugins/ShadowCustomizer/config.yml

Questo file spiega il perché di ogni opzione, non solo il cosa

Un valore sbagliato non ferma mai il plugin: viene sostituito con il default e segnalato in console con il percorso e cosa ci si aspettava, così correggi una riga invece di tirare a indovinare.

Continua a leggere

AGGIORNAMENTI: quando una nuova versione cambia questo file, o uno dei file che include in lang/, menus/, items/, mobs/, enchants/, blocks/ o recipes/, viene portato alla nuova versione per te. Tutto ciò che hai cambiato o aggiunto viene mantenuto; le impostazioni che non hai mai toccato prendono i nuovi default. Il tuo file precedente viene conservato in backup/<date>/, e se qualcosa non si è potuto portare (un'opzione che non esiste più, un valore di tipo diverso) lo trovi in PORTING-<version>.txt, con cosa fare.

OGNI CHIAVE IN OGNI FILE È IN INGLESE. Un file di configurazione è codice: una chiave che si può scrivere in due lingue compare in due forme in ogni guida, ogni esempio copiato e ogni domanda al supporto. Si traduce ciò che legge un GIOCATORE - messaggi, nomi degli item, lore - e quello sta in lang/, dove le lingue sono due apposta.

Dove sta il contenuto:

items/*.yml       gli item
mobs/*.yml        i mob e i boss
enchants/*.yml    gli incantesimi
blocks/*.yml      i blocchi
recipes/*.yml     le ricette
menus/*.yml       le GUI: righe, slot, materiali e testo
lang/*.yml        i messaggi

Metti quanti file vuoi in quelle cartelle: vengono caricati da soli, in ordine di nome, senza registrare niente da nessuna parte.

Dopo un aggiornamento ne compaiono altri due:

backup/<date>/          i tuoi file com'erano prima
PORTING-<version>.txt   solo se qualcosa richiede la tua attenzione

Puoi cancellarli entrambi quando non ti servono più.

config-version1

Il numero di formato di questo file. Non toccarlo: un aggiornamento scrive sempre quello della nuova versione.

core

core1 chiave
server-ip''

L'indirizzo con cui questo server è conosciuto dall'esterno.

Serve solo alla licenza: una chiave Premium è legata agli indirizzi del server che l'ha riscattata, e un server dietro un proxy non può vedere nessuno dei propri indirizzi pubblici. Se la licenza dice "server sbagliato" ma il server è quello giusto, quasi sempre è questo che manca.

Vuoto va benissimo per la grande maggioranza dei server.

messages

messages2 chiavi
default-localeen_US

La lingua da usare quando quella del giocatore non è disponibile.

Il plugin include en_US e it_IT. Aggiungi un file in lang/ e viene caricato: questo è l'unico posto in cui ha senso una lingua diversa dall'inglese, perché queste sono le parole che leggono i tuoi giocatori.

follow-client-localetrue

Se seguire la lingua impostata nel client di ogni giocatore.

Con true un giocatore italiano e uno inglese leggono ognuno la propria senza che nessuno debba fare niente. Con false tutti leggono quella di default, che è ciò che vuoi se hai riscritto i messaggi a modo tuo e non vuoi che metà dei tuoi giocatori se li perda.

models - come un item dice al client quale modello disegnare

models2 chiavi

Il modo in cui Minecraft lega un modello a un item È CAMBIATO, e cambierà ancora. Questa sezione esiste perché cambiarlo non voglia dire riscrivere le tue definizioni.

bindingauto

Come legare i modelli. Uno tra:

Continua a leggere
auto              decide da solo guardando cosa dichiara ogni
                  definizione, E soprattutto guardando se qualcosa
                  su questo server fornisce davvero un resource
                  pack - l'estensione models, o un resource-pack
                  impostato in server.properties.
Se niente lo fa, i modelli NON vengono legati e
gli item appaiono come il materiale di cui sono
fatti. Non è pigrizia: un item che dichiara un
modello che il client non ha non appare come il
suo materiale, appare come il CUBO VIOLA E NERO
di un modello mancante. Meglio una spada di
diamante chiamata Spada di Rubino che una spada
che sembra un errore.
Questa è la scelta giusta e il default.
item-model        solo il componente item_model, cioè il meccanismo
                  moderno: un modello per nome, niente numeri e
                  nessun conflitto possibile con altri plugin. È ciò
                  che genera l'estensione dei modelli 3D.
custom-model-data il componente custom_model_data nella sua forma
                  stringa. Per chi ha già un pack costruito così e
                  non vuole rifarlo.
legacy-number     il vecchio custom_model_data numerico. Funziona
                  ancora ed è deprecato: è qui perché un pack di tre
                  anni fa possa continuare a funzionare mentre lo
                  rifai con calma.
none              nessun modello. Gli item restano del materiale di
                  cui sono fatti, e tutto il resto - attributi,
                  comportamenti, incantesimi - funziona identico.
namespaceshadow

Il namespace da mettere davanti a un modello scritto senza.

"model: ruby_sword" diventa "shadow:ruby_sword". Cambialo se il tuo resource pack usa un namespace diverso: deve corrispondere, altrimenti il client non trova il modello e disegna il cubo viola e nero.

Cosa può avere un aspetto personalizzato, e come - la mappa completa

Non c'è un solo meccanismo, ce ne sono quattro, e usare quello sbagliato è il motivo per cui i contenuti custom così spesso sembrano giusti in un posto e vanilla in un altro. Ogni riga qui sotto dice quale chiave lo fa e dove.

1. UN ITEM IN MANO O NELL'INVENTARIO

'model' sull'item. Immagine piatta o modello 3D completo, la stessa
chiave in entrambi i casi. Questo lo conoscono tutti.

2. UN BLOCCO NEL MONDO

'model' sul blocco. Sotto c'è un note block che usa uno dei suoi
stati, e il pack punta quello stato al tuo modello - che NON DEVE
PER FORZA ESSERE UN CUBO. Una cassa, una lampada, una lapide: qui i
mobili sono solo questo, e blocks/furniture.yml ne include due.
Il limite è la hitbox: resta un blocco intero, e un note block non
ha orientamento, quindi niente rotazione libera.

3. L'ARMATURA ADDOSSO, E UN'ELYTRA IN VOLO

'equipment' sull'item, NON 'model'. Una volta indossata l'armatura,
il gioco smette di disegnare il modello dell'item e stende strati di
texture sul corpo: 'humanoid' per il corpo, 'humanoid_leggings' per
le gambe, 'wings' per un'elytra. Questo è in assoluto l'errore più
comune nei set custom - un modello da solo ti dà un bellissimo
aspetto da spada e scudo nell'inventario e netherite semplice addosso.
Gli strati si dichiarano in equipment.yml, estensione models.

4. UNA TESTA - di un giocatore, o di un mob

'model', e nient'altro. Lo slot della testa è l'unico posto in cui
il gioco disegna il modello DELL'ITEM invece di uno strato. È così
che funzionano i cappelli, ed è così che i boss in mobs/mobs.yml
hanno una faccia tutta loro senza un plugin di modelli a parte:
indossano un item.

IL CORPO DI UN MOB non è nessuno di questi. Rimodellare il mob stesso richiede un plugin di modelli (ModelEngine e simili), con cui questo plugin non parla e non finge di farlo: ciò che ti dà sono gli slot dell'equipaggiamento, che bastano per un boss che sembri un boss.

TUTTI E QUATTRO HANNO BISOGNO DI QUALCUNO CHE FORNISCA IL PACK. Con 'binding: auto' e niente che ne fornisca uno, né 'model' né 'equipment' vengono applicati, e tutto torna ai materiali semplici - apposta. Applicato a metà è peggio che non applicato: è così che si ottengono cubi viola e armature invisibili.

E SI CHIEDE PER OGNI MODELLO, non una volta per tutto il server. Un pack può essere servito e comunque non contenere un certo modello - l'estensione models senza la sua chiave genera le texture piatte e non quelle 3D. Quegli item restano non legati e appaiono come il loro materiale. Così un item non punta mai a un modello che il pack non ha, che è l'unico modo in cui può comparire il cubo viola.

item

items1 chiave
hold-period-ticks10

Quanti tick tra un'esecuzione e l'altra del comportamento "hold".

Dieci sono mezzo secondo. Alzarlo risparmia lavoro, abbassarlo rende più preciso un effetto continuo. Questo task non parte proprio se nessuna definizione ha un comportamento "hold", quindi se non usi quella funzione questo numero non ha effetto su niente.

mobs

mobs2 chiavi
ability-period-ticks10

Quanti tick fra un giro e l'altro del servizio dei boss sui mob vivi.

È il ciclo che aggiorna le barre della vita, cambia le fasi e fa scattare le abilità a tempo. Dieci tick - mezzo secondo - è un buon compromesso: le abilità restano precise al mezzo secondo e il costo non si vede.

Anche questo non parte se nessun mob ha abilità, fasi o una barra del boss.

max-live500

Quanti mob custom possono essere vivi contemporaneamente in tutto il server.

Continua a leggere

È una rete di sicurezza contro un errore che si scrive in tre righe: un boss con un'abilità che evoca due aiutanti ogni venti secondi, e gli aiutanti che sono la stessa definizione del boss. La crescita è esponenziale e te ne accorgi dal TPS.

Nessun server ha cinquecento mob custom vivi contemporaneamente per scelta. Se il tetto viene raggiunto lo trovi in /scus diag: quasi sempre significa che c'è un'abilità di spawn a cui manca un limite.

abilities - i limiti sulle azioni ad area

abilities1 chiave
max-radius32.0

Il raggio massimo di un'azione ad area (pull, push, damage-nearby).

Un raggio grande chiede al server di esaminare centinaia di entità a ogni uso, e su Folia quasi certamente esce dalla regione di proprietà del thread - il che significa che non funziona affatto. Meglio un tetto scritto qui che una funzione che a volte funziona.

blocks

blocks1 chiave
track-placedtrue

Se tenere un registro di dove sono piazzati i blocchi custom.

Continua a leggere

LASCIALO ATTIVO. Non è una funzione in più: è il modo in cui questo plugin distingue uno dei suoi blocchi dal note block di un giocatore, ed è il motivo per cui qui non succede quello che succede altrove.

Il problema, in breve. Un blocco custom è un note block accordato su una certa combinazione di strumento e nota. Ma il note block di un giocatore può avere quella stessa combinazione: ne piazza uno, lo accorda con i clic destri, e prima o poi finisce esattamente su una delle nostre. Un plugin che riconosce i propri blocchi solo dalla nota da quel momento lo scambia per suo, e comincia a "difenderlo": annulla l'aggiornamento della fisica, che è anche il modo in cui un note block riceve un segnale di redstone. Da lì in poi quel blocco non suona più quando lo alimenti, non si accorda più, e rompendolo droppa un item che il giocatore non ha mai craftato. È il motivo per cui su tanti server con blocchi custom i circuiti musicali smettono di funzionare e nessuno capisce perché.

Con questo registro attivo, la domanda non è "ha la nota giusta?" ma "l'abbiamo piazzato noi?", e per il note block di un giocatore la risposta è sempre no: la sua redstone funziona, si accorda, e se lo rompi dà un note block.

Spegnilo e il plugin non sa più quali blocchi sono suoi, quindi SPEGNE LE DIFESE invece di tirare a indovinare: i blocchi custom restano visibili, ma si comportano come note block - cambiano nota con un clic destro e droppano un note block. È il compromesso scelto apposta, perché tra "uno dei nostri blocchi perde le difese" e "il circuito di un giocatore smette di funzionare", il secondo colpisce qualcuno che non ha chiesto niente di tutto questo.

Ti dice anche DOVE sono i blocchi di una definizione che hai appena cancellato, e rende possibile una migrazione il giorno in cui Minecraft cambia le combinazioni disponibili.

Ogni scrittura sul database è asincrona: un giocatore che piazza cento blocchi in un minuto non la aspetta mai. Alla domanda "è nostro?" si risponde invece in memoria, otto byte per blocco piazzato.

recipes

recipes1 chiave
protect-from-vanillatrue

Se impedire che un item custom venga usato in una ricetta vanilla.

Continua a leggere

Lasciarlo attivo è quasi sempre giusto, ed è il buco che i plugin di item custom storicamente hanno lasciato aperto: una "Spada del Drago" costruita su una DIAMOND_SWORD è, per un banco da lavoro, un diamante e un bastone. Si può fondere in un lingotto. Si può usare come ingrediente al posto di un item normale. Chi ha passato un mese a guadagnarsela può distruggerla con uno shift click.

Spegnilo solo se hai davvero bisogno che i tuoi item entrino nelle ricette del gioco, e sapendo cosa significa.

ui

ui1 chiave
confirm-timeout30s

Per quanto tempo un pulsante di conferma resta valido prima di scadere.

In questo plugin - come in tutta la suite - a nessuno viene mai chiesto di riscrivere un comando per confermare: clicchi [ CONFERMA ] o [ ANNULLA ]. Il token dietro il pulsante è monouso e legato a chi ha ricevuto la domanda, quindi un pulsante rimasto nella cronologia della chat non può far ripartire niente.

storage

storage5 chiavi

Le tue definizioni NON sono qui dentro. Item, mob, incantesimi, blocchi e ricette sono file YAML e restano file YAML: li leggi, li copi da un server all'altro, li metti in un repository, li apri in un editor di testo.

Il database contiene solo tre cose che il gioco produce mentre gira: dove sono i blocchi piazzati, quali definizioni non esistono più ma sono ancora in circolazione, e qualche contatore.

table-prefix'sc_'

Il prefisso delle tabelle. Cambialo solo se condividi un database con qualcos'altro: due server sullo stesso database con lo stesso prefisso scrivono nelle stesse righe.

storage.mysql7 chiavi
enabledfalse

false usa un file H2 dentro la cartella del plugin: niente da installare, nessun utente, nessuna password. È ciò che fa funzionare il plugin appena lo copi in plugins/.

MySQL è solo per chi ha più di un server che deve vedere gli stessi dati. È una funzione Premium: nella versione free questa riga viene ignorata e si usa il file locale, dicendolo in console.

host127.0.0.1
port3306
databaseshadowcustomizer
usernameroot
password''
parameters'useSSL=false&allowPublicKeyRetrieval=true&serverTimezone=UTC&characterEncoding=utf8'
storage
fallback-to-localtrue

Se MySQL non risponde, ripiega sul file locale invece di rifiutarsi di partire.

true è quasi sempre giusto: un server che non parte è molto peggio di un server che parte scrivendo da un'altra parte. Metti false solo se i dati DEVONO stare sul MySQL condiviso e preferisci accorgertene subito.

storage.h21 chiave
auto-serverfalse

Permette a più di un processo di aprire lo stesso file H2. Serve solo se vuoi guardare il database mentre il server gira; costa un po'.

storage.pool5 chiavi
maximum-pool-size10
minimum-idle2
connection-timeout-ms10000
idle-timeout-ms600000
max-lifetime-ms1800000

license

license3 chiavi

LA CHIAVE VIVE IN license.yml (stessa cartella di questo file), oppure nel file centrale plugins/ShadowControl/licenses.yml per tutta la suite. La 'key' qui sotto è solo un ripiego per i sistemi di deploy che generano config.yml: lasciala vuota.

La chiave NON sta qui: sta in license.yml, in questa cartella, creato al primo avvio (oppure in plugins/ShadowControl/licenses.yml per tutta la suite). La chiave. Meglio NON metterla qui.

Il comando /scus license activate <key> la scrive in license.yml, che è un file separato apposta: una richiesta di supporto che dice "mandami la tua config" non dovrebbe arrivare con dentro la tua licenza.

Questa riga esiste per chi distribuisce configurazioni da un template e preferisce tenere tutto in un file solo.

grace-days7

Quanti giorni di tolleranza prima di tornare alla free.

Due situazioni non spengono niente subito: un abbonamento appena scaduto (il rinnovo è quasi sempre già andato a buon fine) e un indirizzo che non corrisponde (molto più spesso un NAT o un proxy che un ladro).

activation-url'https://shadow-licences.riccardobotins.workers.dev'

L'indirizzo del servizio di attivazione.

È ciò che usa /scus license claim <code>, cioè ciò che trasforma il codice che hai ricevuto all'acquisto in una licenza firmata legata al TUO server, senza che nessuno debba mandarsi indirizzi IP per email.

Vuoto disattiva claim e il ricontrollo periodico: una chiave che hai già continua a funzionare, anche senza rete.

resolve-public-iptrue

Chiedi al servizio licenze qui sopra come si vede questo server da fuori (activation-url + /ip: risponde con l'indirizzo che vede, e del server non viene inviato niente).

Continua a leggere

È l'unico modo affidabile per conoscere il proprio indirizzo pubblico da dietro un NAT, ed è ciò che fa funzionare una licenza venduta per "play.example.com" su una macchina i cui indirizzi sono tutti 10.x. Un fallimento è silenzioso e non cambia niente. Solo con una licenza installata: un server senza chiave non chiede niente a nessuno. false = non chiedere mai.

debug

debug1 chiave
log-sqlfalse

Scrive ogni istruzione SQL in console. Utile a chi sta dando la caccia a un guasto e a nessun altro: su un server in produzione inonda il log.

bStats (statistiche d'uso anonime, https://bStats.org)

Cosa viene inviato, ogni 30 minuti: un id casuale del server (serverUuid, non derivato da niente), la versione del plugin, le versioni di Minecraft/Paper e di Java, il sistema operativo e il numero di core, l'online mode, quanti giocatori sono online (solo un numero) e il livello della licenza (free/premium/creator). NESSUN dato dei giocatori: niente nomi, niente UUID, niente indirizzi. Non viene inviato niente mentre il plugin aspetta una licenza.

Continua a leggere

false spegne solo questo plugin. enabled: false in plugins/bStats/config.yml spegne in una volta ogni plugin bStats del server.

metrics1 chiave
enabledtrue

enchants/enchants.yml

Gli incantesimi personalizzati
152 impostazioni
plugins/ShadowCustomizer/enchants/enchants.yml
Note del file

Questi sono incantesimi VERI: entrano nel registro degli incantesimi del server, lo stesso in cui sta Sharpness. L'incudine li combina, il tavolo li offre, i libri li contengono, /enchant li conosce.

IL PREZZO: il registro viene scritto una volta sola, all'avvio. Aggiungere o cambiare uno di questi richiede un RIAVVIO. /scus reload fa tutto il resto - item, mob, blocchi, ricette - e lo dice quando un incantesimo è in attesa.

NOMI E DESCRIZIONI. Quelli qui sotto non hanno 'name:' né 'description:': vengono da lang/<language>.yml, sezione 'enchantments', così ogni giocatore li legge nella propria lingua nelle finestre e in chat. Il nome scritto sull'item è quello della lingua di default del server (messages.default-locale in config.yml), perché il registro ne contiene uno solo. Scrivi 'name:' o 'description:' qui e vince il tuo, per tutti. I tuoi incantesimi hanno bisogno di un nome: qui, o nei file lang.

SU COSA VA. 'supported-items' è la verità: le finestre, i libri e /scus enchant info lo mostrano a parole ("Spade, Lance, Asce"), ricavato da ciò che il server ha registrato.

Nella versione free vengono registrati i primi tre e il loro peso viene forzato al minimo: esistono e funzionano esattamente allo stesso modo, sono solo rari quanto può esserlo un incantesimo.

LIVELLI. Ogni numero in un effetto può dipendere dal livello del libro: "0.5*<level>", "2+<level>", "60*<level>". Durate e amplificatori delle pozioni scalano allo stesso modo ("SPEED 60 <level>"). Un trigger può anche dire QUANTO SPESSO scatta, e su QUALI BLOCCHI, nella sua forma

lunga:
  break-block:
    chance: '0.1*<level>'      # 0..1, può crescere con il livello; omesso = sempre
    blocks: [ '#minecraft:logs' ]   # tag o blocchi; omesso = ogni blocco
    actions:
      - 'xp: 1*<level>'

"max-level" è il tetto: 1 per un incantesimo tipo Mending che non ha niente da scalare, da 3 a 5 per gli altri. Due libri uguali si combinano sull'incudine nel livello successivo, e la GUI (/scus enchant list) dà un libro a qualsiasi livello fino al tetto.

AZIONI AGGIUNTE PER GLI INCANTESIMI (le altre sono dei comportamenti degli item):

smelt:                       solo break-block: i drop del blocco escono
                             fusi, con l'esperienza della fornace.
                             Fortune è già nei drop.
multiply-drops: 2            solo break-block: i drop per 2.
                             Mai con Silk Touch, mai su un blocco
                             che droppa se stesso. Dagli SEMPRE un
                             filtro 'blocks:' (minerali): su qualsiasi
                             blocco è una macchina per duplicare.
pull: 0.4 on=target          tira il bersaglio verso di te
push: 0.6 on=target          spinge il bersaglio lontano da te
damage: 4 on=target below=0.34   solo se il bersaglio ha il 34% di vita o meno
damage-nearby: 2 radius=3 skip-target=true   non di nuovo il bersaglio
potion: GLOWING 60 1 radius=8    su chi sta intorno, non su di te

AGGIORNAMENTI: quando una nuova versione cambia questo file, viene portato alla nuova versione all'avvio, prima che gli incantesimi vengano registrati. Tutto ciò che hai cambiato o aggiunto (un peso, un effetto, un incantesimo tuo) viene mantenuto; ciò che non hai mai toccato prende le correzioni della nuova versione. Il tuo file precedente viene conservato in backup/<date>/, e se qualcosa non si è potuto portare lo trovi in PORTING-<version>.txt, con cosa fare.

config-version3

Spade

Rubavita / Life Steal - ogni colpo ti restituisce un po' di vita

bloodthirst10 chiavi
max-level5
weight4
anvil-cost4
minimum-cost'10 11'
maximum-cost'60 11'
supported-items["#minecraft:swords"]
primary-items["#minecraft:swords"]
slot[mainhand]
exclusive-with["minecraft:fire_aspect"]
bloodthirst.effects1 chiave
hit-entity
["heal: 0.5*<level>", "particle: DAMAGE_INDICATOR 6 0.3"]+1

Punti vita, non cuori: 0.5 è un quarto di cuore per livello, un cuore e un quarto al quinto.

Colpo di grazia / Finishing Blow - finisce chi è quasi a terra

execution8 chiavi
max-level3
weight2
anvil-cost6
minimum-cost'20 14'
maximum-cost'70 14'
supported-items["#minecraft:swords"]
slot[mainhand]
execution.effects1 chiave
hit-entity
["damage: 2*<level> on=target below=0.34", "sound: entity.player.attack_crit 1 0.7"]+1

below=0.34: solo quando il bersaglio è sceso a un terzo della sua vita. Senza, questo era solo Sharpness con un altro nome.

Fulmine / Lightning Strike - un fulmine ogni tanto

chain_lightning8 chiavi
max-level3
weight2
anvil-cost6
minimum-cost'22 15'
maximum-cost'75 15'
supported-items["#minecraft:enchantable/sharp_weapon"]

Spade, lance e asce: il tag del gioco stesso per loro. La lista scritta a mano che questo sostituisce aveva dimenticato la spada e l'ascia di rame e tutte le lance.

slot[mainhand]
chain_lightning.effects1 chiave
chain_lightning.effects.hit-entity2 chiavi
chance'0.15*<level>'

"Ogni tanto": la probabilità cresce con il livello, 15% al primo e 45% al terzo. Senza "chance" un effetto scatta a ogni colpo.

actions["lightning:", "damage: 1.5*<level> on=target"]

Il fulmine è solo un effetto: non fa danni di suo. Il danno lo decide la riga qui sotto. Aggiungerlo due volte è l'errore che trasforma un incantesimo da spettacolare a insopportabile.

Ancora 6 voci con la stessa forma di config-version: wildfire, tempest, undertow, swiftstep, midas_touch, soulreaper

Asce

Colpo ampio / Cleave - colpisce anche chi sta intorno

cleave9 chiavi
max-level4
weight3
anvil-cost5
minimum-cost'15 13'
maximum-cost'65 13'
supported-items["#minecraft:axes"]
primary-items["#minecraft:axes"]
slot[mainhand]
cleave.effects1 chiave
hit-entity
["damage-nearby: 1.5*<level> radius=3 skip-target=true", "sound: entity.player.attack_sweep 1 0.8"]+1

skip-target: quello che hai colpito ha già preso il colpo.

lumberjack8 chiavi

Esperienza del boscaiolo / Lumberjack's Experience - ogni tronco vale un po' di esperienza

max-level3
weight5
anvil-cost3
minimum-cost'8 9'
maximum-cost'58 9'
supported-items["#minecraft:axes"]
slot[mainhand]
lumberjack.effects1 chiave
lumberjack.effects.break-block2 chiavi
blocks["#minecraft:logs"]

Solo tronchi. Su ogni blocco, piazzare e rompere lo stesso blocco di terra era una farm di esperienza.

actions["xp: 1*<level>"]

Picconi

Minerale doppio / Double Ore - ogni tanto un minerale droppa doppio

vein_miner9 chiavi
max-level3
weight3
anvil-cost4
minimum-cost'15 10'
maximum-cost'65 10'
supported-items["#minecraft:pickaxes"]
primary-items["#minecraft:pickaxes"]
slot[mainhand]
vein_miner.effects1 chiave
vein_miner.effects.break-block3 chiavi
chance'0.1*<level>'

10% per livello. Solo minerali, come Fortune: su qualsiasi blocco, un blocco di diamante piazzato e rotto sarebbe una duplicazione.

blocks
["#minecraft:coal_ores", "#minecraft:iron_ores", "#minecraft:copper_ores", "#minecraft:gold_ores", "#minecraft:redstone_ores", "#minecraft:lapis_ores", "#minecraft:diamond_ores", "#minecraft:emerald_ores", nether_quartz …+7
actions
["multiply-drops: 2", "particle: HAPPY_VILLAGER 5 0.3"]+1

Visione notturna / Night Vision - vedi al buio mentre lo tieni in mano

prospector8 chiavi
max-level1
weight2
anvil-cost4
minimum-cost'20 0'
maximum-cost'60 0'
supported-items["#minecraft:enchantable/mining"]
slot[mainhand]
prospector.effects1 chiave
hold["potion: NIGHT_VISION 300 1"]

A ogni giro del task globale, mezzo secondo. 300 tick e non meno: il gioco fa SFARFALLARE la visione notturna negli ultimi 200 tick, e con 100 lo schermo sfarfallava tutto il tempo.

Fusione automatica / Auto Smelt - ciò che scavi esce già fuso

smelting_touch9 chiavi
max-level1
weight2
anvil-cost8
minimum-cost'25 0'
maximum-cost'75 0'
supported-items["#minecraft:pickaxes"]
slot[mainhand]
exclusive-with["minecraft:silk_touch"]
smelting_touch.effects1 chiave
break-block
["smelt:", "particle: FLAME 6 0.2", "sound: block.furnace.fire_crackle 0.6 1.4"]+1

'smelt:' è ciò che lo fa: i drop (Fortune compreso) escono come li fanno le ricette della fornace del server - ferro grezzo in lingotti, cobblestone in pietra - più l'esperienza della fornace. Prima di questa riga l'incantesimo faceva solo scintille.

Archi e balestre

volley9 chiavi

Esperienza del tiratore / Marksman's Experience - esperienza per ogni bersaglio colpito

max-level3
weight4
anvil-cost4
minimum-cost'12 11'
maximum-cost'62 11'
supported-items["#minecraft:enchantable/bow"]
primary-items["#minecraft:enchantable/bow"]
slot[mainhand]
volley.effects1 chiave
hit-entity["xp: 2*<level>", "particle: CRIT 8 0.3"]

Arpione / Harpoon - la freccia trascina il bersaglio verso di te

homing8 chiavi
max-level3
weight2
anvil-cost6
minimum-cost'22 13'
maximum-cost'72 13'
supported-items["#minecraft:enchantable/bow"]
slot[mainhand]
homing.effects1 chiave
hit-entity
["pull: 0.4*<level> on=target", "sound: entity.arrow.hit_player 1 1.6"]+1

on=target: il bersaglio, verso di te. La vecchia forma 'radius=6' tirava ciò che stava intorno al bersaglio verso il bersaglio - e il bersaglio stesso, a distanza zero, per niente.

Dardo esplosivo / Explosive Bolt - il dardo esplode

siege9 chiavi
max-level3
weight2
anvil-cost7
minimum-cost'25 14'
maximum-cost'75 14'
supported-items["#minecraft:enchantable/crossbow"]
primary-items["#minecraft:enchantable/crossbow"]
slot[mainhand]
siege.effects1 chiave
hit-entity
["explode: 1*<level> blocks=false", "damage-nearby: 2*<level> radius=3"]+1

blocks=false: l'esplosione fa spettacolo e danni, non buchi nel mondo. È la riga che decide se questo incantesimo può restare attivo su un server con delle costruzioni.

Tridenti

Scudi

Repulsione / Repulsion - chi ti colpisce viene respinto

bulwark9 chiavi
max-level3
weight3
anvil-cost5
minimum-cost'15 12'
maximum-cost'65 12'
supported-items[shield]

Non esiste un tag vanilla per gli scudi - accettano solo Unbreaking e Mending - quindi l'item si scrive a mano.

primary-items[shield]
slot[mainhand, offhand]

Uno scudo sta nella mano secondaria: contano entrambe le mani.

bulwark.effects1 chiave
take-damage
["push: 0.6*<level> on=target", "sound: item.shield.block 1 0.8"]+1

on=target: chi ti ha colpito, lontano da te.

Armature

Spine d'ombra / Shadow Thorns - chi ti colpisce se ne pente

shadow_thorns10 chiavi
max-level4
weight3
anvil-cost5
minimum-cost'12 12'
maximum-cost'62 12'
supported-items["#minecraft:enchantable/armor"]
primary-items["#minecraft:enchantable/armor"]
slot[armor]
exclusive-with["minecraft:thorns"]
shadow_thorns.effects1 chiave
take-damage
["damage: 1*<level> on=target", "particle: SOUL 12 0.4"]+1

Una volta per colpo al livello più alto che indossi, non una volta per pezzo. Contro un arciere, il danno va all'arciere.

Secondo fiato / Second Wind - un po' di vita quando vieni colpito

second_wind8 chiavi
max-level3
weight2
anvil-cost6
minimum-cost'20 13'
maximum-cost'70 13'
supported-items["#minecraft:enchantable/chest_armor"]
slot[chest]
second_wind.effects1 chiave
second_wind.effects.take-damage2 chiavi
chance'0.1*<level>'

"Ogni tanto", come dice la descrizione: 10% per livello. A ogni colpo curava un po' ogni volta, il che contro i mob piccoli è quasi l'immortalità.

actions["heal: 2*<level>", "particle: HEART 5 0.3"]

Caduta lenta / Slow Falling - cadi piano

featherfall8 chiavi
max-level2
weight4
anvil-cost3
minimum-cost'10 10'
maximum-cost'60 10'
supported-items["#minecraft:enchantable/foot_armor"]
slot[feet]
featherfall.effects1 chiave
hold["potion: SLOW_FALLING 60*<level> 1"]

Mentre gli stivali sono indossati (non tenuti in mano). Dura di più a ogni livello dopo averli tolti.

Tutto ciò che si consuma

Rivelazione / Reveal - chi ti sta intorno si illumina

beacon8 chiavi
max-level1
weight2
anvil-cost4
minimum-cost'18 0'
maximum-cost'68 0'
supported-items["#minecraft:enchantable/equippable"]
slot[any]
beacon.effects1 chiave
hold["potion: GLOWING 60 1 radius=8"]

radius=8: su chi ti sta intorno. Senza, l'effetto finiva su chi lo indossa, l'opposto di ciò che dice l'incantesimo.

Sazietà / Satiety - non ti viene fame

temper8 chiavi

Il peso va da 1 a 1024 e dice quanto è probabile che esca un incantesimo rispetto agli altri: i valori vanilla vanno da 1 (Luck of the Sea) a 10 (Protection). UNO è il minimo che il gioco accetta - zero non è un valore valido e fa fallire la registrazione.

Con uno, questo è il più raro di tutti: un incantesimo premio, di solito applicato a mano con /scus enchant o con un libro.

max-level1

Un livello: l'effetto saturazione riempie la barra della fame a qualsiasi potenza, quindi i livelli da due a cinque non facevano niente di più.

weight1
anvil-cost10
minimum-cost'30 15'
maximum-cost'80 15'
supported-items["#minecraft:enchantable/durability"]
slot[any]
temper.effects1 chiave
hold["potion: SATURATION 40 1"]

mobs/mobs.yml

I mob personalizzati
114 impostazioni
plugins/ShadowCustomizer/mobs/mobs.yml
Note del file

Un mob custom è un mob vanilla travestito: statistiche, equipaggiamento, nome, comportamento e drop. Non puoi aggiungere tipi di entità a Minecraft da un plugin - nessuno può - e non ti serve: un Pumpkin King con seicento di vita, una testa intagliata, tre abilità e una barra è un boss, e a nessuno importa che sotto sia un wither skeleton.

QUELLO CHE LI FA SEMBRARE CUSTOM è quello che indossano. Lo slot della testa cambia la sagoma, e le teste sono item con un modello 3D - vedi items/heads.yml. Senza resource pack i mob funzionano lo stesso, sembrano solo quello di cui sono fatti.

BOSS: la barra della vita, le fasi e le abilità a tempo sono Premium. Su un server free un boss spawna comunque con le sue statistiche, il suo equipaggiamento e i suoi drop.

Spawnane uno con: /scus mob spawn <id>

IN ITALIANO: la versione italiana di questo file è in esempi/it_IT/mobs/mobs.yml, nella cartella del plugin. Non viene caricata: per usarla, copiala al posto di questo file, o copia le voci che vuoi.

config-version1

Mob normali

Lost Miner - scava dove non dovrebbe, e ti trova

lost_miner9 chiavi
typeZOMBIE
name'<gray>Lost Miner'
health40
damage6
armor6
lost_miner.equipment3 chiavi
headIRON_HELMET
chestIRON_CHESTPLATE
handIRON_PICKAXE
lost_miner
drops
["antracite_raw 1 3 0.7", "arcadium_raw 1 1 0.10", "IRON_INGOT 1 2 0.4"]+2

Ogni riga è: id, minimo, massimo, probabilità, poi i dettagli. L'id può essere uno dei nostri item o un materiale vanilla.

experience25
lost_miner.on1 chiave
death["particle: LARGE_SMOKE 12 0.4"]

Arciere di cenere - non brucia all'alba, e si muove veloce

ash_archer8 chiavi
typeSKELETON
name'<dark_gray>Ash Archer'
ash_archer.stats3 chiavi
health30
speed0.32
follow-range40
ash_archer
burns-in-daylightfalse

Senza questa riga lo scheletro brucia all'alba, e un mob da evento che si incenerisce da solo è l'errore che scopri il giorno dopo averlo messo.

ash_archer.equipment2 chiavi
handBOW
ash_archer.equipment.head2 chiavi
materialdarkflame_helmet
drop-chance0.05
ash_archer
potions["SPEED 1"]
drops
["ARROW 4 12 1.0", "antracite_dust 1 2 0.5", "BONE 1 3 0.8"]+1
experience35

Boss

Pumpkin King - il boss con la testa 3D

pumpkin_king14 chiavi
typeWITHER_SKELETON
name'<gold>Pumpkin King'
name-visibletrue
bosstrue
pumpkin_king.stats7 chiavi
health600
damage14
speed0.28
armor14
knockback-resistance0.8
follow-range44
scale1.5

Uno è normale. Uno e mezzo è grande e visibile da lontano.

pumpkin_king
burns-in-daylightfalse
persistenttrue

Un boss che non è persistente sparisce quando l'ultimo giocatore si allontana un po', cioè proprio quando qualcuno scappa a curarsi. Per i boss è true di default, ma è scritto qui perché si veda.

pumpkin_king.equipment3 chiavi
pumpkin_king.equipment.head2 chiavi
materialpumpkin_king_head
drop-chance0.20
pumpkin_king.equipment
chestNETHERITE_CHESTPLATE
pumpkin_king.equipment.hand2 chiavi
materialdarkflame_axe
drop-chance0.10
pumpkin_king.boss-bar4 chiavi
title'<gold>Pumpkin King'
colorYELLOW
styleNOTCHED_10
range48
pumpkin_king.on2 chiavi
spawn
["broadcast: <gray>The <gold>Pumpkin King <gray>has woken up.", "sound: entity.wither.spawn 1 0.6"]+1
death
["broadcast: <gray>The <gold>Pumpkin King <gray>has fallen.", "sound: ui.toast.challenge_complete 1 1"]+1
pumpkin_king.abilities2 chiavi

Le abilità della fase iniziale.

pumpkin_king.abilities.fangs4 chiavi
every8s
chance0.7
radius12
actions
["damage: 6 on=target", "particle: FLAME 25 0.5", "sound: entity.evoker.fangs_attack 1 0.8"]+2
pumpkin_king.abilities.call3 chiavi
every22s
needs-targetfalse
actions
["spawn: ash_archer 2", "sound: entity.wither.ambient 1 0.7"]+1
pumpkin_king.phases2 chiavi

Le fasi. L'ordine in cui le scrivi non conta: vengono ordinate per soglia decrescente. Si attraversano una volta sola e verso il basso - curare il boss non lo riporta indietro.

Continua a leggere

Due placeholder in più rispetto a <player>, <target>, <x> <y> <z> e <world>:

<phase>    in on-enter, il nome della fase in cui si è appena entrati
<ability>  nelle azioni di un'abilità, il suo id (fangs, call...)

Funzionano anche i nomi italiani <fase> e <abilita>. Per esempio:

- 'broadcast: <gray>The <gold>Pumpkin King <gray>enters <red><phase><gray>.'
pumpkin_king.phases.burning5 chiavi
below0.5
name'Burning'
bar-colorRED
on-enter
["broadcast: <gray>The <gold>Pumpkin King <red>catches fire<gray>.", "potion: SPEED 999999 2", "sound: entity.ender_dragon.growl 1 0.8"]+2
pumpkin_king.phases.burning.abilities2 chiavi
pumpkin_king.phases.burning.abilities.fangs4 chiavi
every4s
chance1.0
radius14
actions
["damage: 8 on=target", "fire: 80 on=target", "particle: FLAME 40 0.6"]+1
pumpkin_king.phases.burning.abilities.shockwave3 chiavi
every12s
needs-targetfalse
actions
["push: 1.4 radius=6", "damage-nearby: 5 radius=6", "explode: 2 blocks=false"]+2
pumpkin_king.phases.last_stand5 chiavi
below0.2
name'Last Flame'
bar-colorWHITE
on-enter
["broadcast: <gray>The <gold>Pumpkin King <gray>has nothing left to lose.", "lightning:"]+1
pumpkin_king.phases.last_stand.abilities1 chiave
pumpkin_king.phases.last_stand.abilities.volley3 chiavi
every3s
radius16
actions["damage: 7 on=target", "pull: 1.0 radius=10"]
pumpkin_king
drops
["pumpkin_king_head 1 1 1.0 player-only=true", "darkflame_sword 1 1 0.35 player-only=true", "oricalco_rod 2 5 1.0", "NETHER_STAR 1 1 0.30 player-only=true"]+3
experience800

Steel Warden - il boss lento che colpisce forte

steel_warden13 chiavi
typeIRON_GOLEM
name'<gray>Steel Warden'
name-visibletrue
bosstrue
steel_warden.model4 chiavi

Un vero corpo 3D: un item model di ShadowCustomizerModels indossato da un display che cavalca il golem (invisibile). Statico, non animato. "scale" dimensiona il modello, "y-offset" lo solleva dai piedi, "hide-base" nasconde il golem.

item'shadow:steel_warden_model'
scale2.0

2.0 e non 1.3: il corpo è disegnato a 0.65 della sua dimensione, perché a dimensione piena usciva dal riquadro di 32 pixel che Minecraft accetta e il client rifiutava l'intero modello. 0.65 x 2.0 = 1.3, la dimensione che aveva prima.

y-offset0.5
hide-basetrue
steel_warden.stats7 chiavi
health500
damage18
speed0.22
armor18
knockback-resistance1.0
follow-range36
scale1.3
steel_warden
persistenttrue
steel_warden.boss-bar4 chiavi
title'<gray>Steel Warden'
colorWHITE
styleNOTCHED_6
range44
steel_warden.on2 chiavi
spawn
["broadcast: <gray>The <white>Steel Warden <gray>has risen.", "sound: entity.iron_golem.repair 1 0.6"]+1
death
["broadcast: <gray>The <white>Steel Warden <gray>has stopped.", "sound: block.anvil_land 1 0.6"]+1
steel_warden.abilities1 chiave
steel_warden.abilities.slam4 chiavi
every7s
chance0.8
radius10
actions
["damage: 8 on=target", "push: 1.2 radius=4", "sound: entity.iron_golem.attack 1 0.7"]+1
steel_warden.phases1 chiave
steel_warden.phases.overheated5 chiavi
below0.4
name'Overheated'
bar-colorRED
on-enter
["broadcast: <gray>The <white>Warden <red>overheats<gray>.", "potion: SPEED 999999 1"]+1
steel_warden.phases.overheated.abilities2 chiavi
steel_warden.phases.overheated.abilities.slam4 chiavi
every4s
chance1.0
radius12
actions
["damage: 11 on=target", "push: 1.6 radius=5", "particle: ELECTRIC_SPARK 30 0.6"]+1
steel_warden.phases.overheated.abilities.magnet3 chiavi
every14s
needs-targetfalse
actions
["pull: 1.2 radius=10", "sound: block.beacon.activate 1 0.7"]+1
steel_warden
drops
["shadowsteel_shield 1 1 0.40 player-only=true", "elektron_ingot 2 4 1.0", "arcadium_ingot 2 4 1.0", "IRON_BLOCK 2 5 1.0"]+3
experience700

recipes/recipes.yml

Le ricette
63 impostazioni
plugins/ShadowCustomizer/recipes/recipes.yml
Note del file

Ogni ingrediente e risultato può essere uno dei nostri id o un materiale vanilla. I nostri vengono cercati per primi.

config.yml ha recipes.protect-from-vanilla attivo di default: impedisce che un item custom venga usato in una delle ricette del gioco. È il buco che i plugin di item custom storicamente hanno lasciato aperto - una spada leggendaria costruita su una spada di netherite è, per un banco da lavoro, un lingotto di netherite e un bastone.

config-version1

La fornace: da grezzo a raffinato

antracite_smelt6 chiavi
typefurnace
inputantracite_raw
resultantracite_dust
amount1
cook-time200

In tick. Duecento sono dieci secondi, come una fornace normale.

experience0.7
arcadium_smelt5 chiavi
typefurnace
inputarcadium_raw
resultarcadium_ingot
cook-time220
experience1.0
elektron_smelt5 chiavi
typefurnace
inputelektron_raw
resultelektron_ingot
cook-time220
experience1.0
oricalco_smelt5 chiavi
typeblasting
inputoricalco_raw
resultoricalco_rod
cook-time160
experience1.5

Shadowsteel - il banco da lavoro

shadowsteel_sword_craft5 chiavi
typeshaped
shape[" A ", " A ", " O "]
shadowsteel_sword_craft.ingredients2 chiavi
Aarcadium_ingot
Ooricalco_rod
shadowsteel_sword_craft
resultshadowsteel_sword
group'shadowsteel'

Il gruppo raccoglie insieme le varianti nel ricettario.

shadowsteel_axe_craft5 chiavi
typeshaped
shape["AA ", "AO ", " O "]
shadowsteel_axe_craft.ingredients2 chiavi
Aarcadium_ingot
Ooricalco_rod
shadowsteel_axe_craft
resultshadowsteel_axe
group'shadowsteel'
shadowsteel_pickaxe_craft5 chiavi
typeshaped
shape[AAA, " O ", " O "]
shadowsteel_pickaxe_craft.ingredients2 chiavi
Aarcadium_ingot
Ooricalco_rod
shadowsteel_pickaxe_craft
resultshadowsteel_pickaxe
group'shadowsteel'
shadowsteel_shield_craft5 chiavi
typeshaped
shape[AEA, AAA, " A "]
shadowsteel_shield_craft.ingredients2 chiavi
Aarcadium_ingot
Eelektron_ingot
shadowsteel_shield_craft
resultshadowsteel_shield
group'shadowsteel'

Darkflame - il tavolo da forgiatura

darkflame_sword_forge3 chiavi

Il primo ingrediente è la base, il secondo l'aggiunta, il terzo (facoltativo) il modello di forgiatura. Senza il terzo si applica quello di netherite.

typesmithing
inputs
[shadowsteel_sword, oricalco_rod, NETHERITE_UPGRADE_SMITHING_TEMPLATE]+1
resultdarkflame_sword
darkflame_axe_forge3 chiavi
typesmithing
inputs
[shadowsteel_axe, oricalco_rod, NETHERITE_UPGRADE_SMITHING_TEMPLATE]+1
resultdarkflame_axe
darkflame_pickaxe_forge3 chiavi
typesmithing
inputs
[shadowsteel_pickaxe, oricalco_rod, NETHERITE_UPGRADE_SMITHING_TEMPLATE]+1
resultdarkflame_pickaxe

L'incudine

elektron_crossbow_anvil4 chiavi

L'incudine non è una ricetta di Minecraft: sa combinare, riparare e rinominare, e basta. Una "ricetta dell'incudine" è quindi il plugin che guarda i due slot e decide cosa mettere nel terzo. Per te che scrivi il file è la stessa cosa; per il server no, ed è per questo che non compare nel ricettario.

typeanvil
inputs[CROSSBOW, elektron_ingot]
resultshadowsteel_crossbow
level-cost12
oricalco_bow_anvil4 chiavi
typeanvil
inputs[BOW, oricalco_rod]
resultdarkflame_bow
level-cost14

Lingue

I testi che il plugin mostra ai giocatori, un file per lingua.

lang/

Testi e messaggi
2 file
plugins/ShadowCustomizer/lang/
Note del file

ShadowCustomizer - inglese

Tutti i messaggi che il plugin mostra ai giocatori, un file per lingua. Le chiavi non sono elencate una per una: qui ci sono i file, quanti testi contengono e i segnaposto che usano.

FileLinguaTesti
lang/en_US.yml riferimento English 366
lang/it_IT.yml Italiano 366

Segnaposto più usati

Il plugin li sostituisce con il valore giusto: vanno lasciati scritti così.

  • <prefix>
  • <id>
  • <label>
  • <count>
  • <value>
  • <name>
  • <list>
  • <n>
  • <level>
  • <targets>
  • <max>
  • <state>
  • <mobs>
  • <amount>

Gruppi di messaggi

  • prefix 1
  • common 6
  • command 6
  • confirm 6
  • help 11
  • item 34
  • mob 22
  • enchant 22
  • block 8
  • recipe 17
  • diag 7
  • status 8
  • reload 3
  • license 39
  • prompt 2
  • menu 100
  • enchantments 46
  • enchant-target 28

Altro

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

blocks/

I blocchi personalizzati
2 file
plugins/ShadowCustomizer/blocks/

2 file con la stessa forma. Qui sotto 2 esempi per intero, uno per ogni forma diversa; gli altri sono elencati per nome.

  • furniture.yml
  • ores.yml

Esempio blocks/furniture.yml

Mobili - blocchi decorativi con una forma tutta loro

Note del file

Questi usano lo stesso meccanismo dei minerali qui accanto - un note block sotto, uno stato ciascuno - con una differenza che cambia cosa puoi costruire: il loro modello è un file Blockbench, non un cubo.

QUINDI UN BLOCCO CUSTOM NON È COSTRETTO A ESSERE UN CUBO. Una cassa, una lapide, una lampada, una sedia: tutto ciò che puoi disegnare sta in un modello di blocco, e il pack lo disegna nel mondo esattamente com'è disegnato. Ecco cosa sono i mobili qui, e non serve niente oltre a quello che c'è già nella scatola.

L'UNICO LIMITE ONESTO: il blocco contro cui cammini resta un note block intero. Una lapide larga mezzo blocco sembra larga mezzo blocco e ha la collisione di uno intero, e non si può ruotare piazzandola da un altro lato - un note block non ha orientamento. I mobili che hanno bisogno di una hitbox vera o di rotazione libera sono un altro meccanismo (display entity), e oggi questo plugin non lo fa.

Metti 'placeable: false' su un item e non potrà mai essere piazzato; questi sono l'opposto - esistono per essere piazzati.

IN ITALIANO: la versione italiana di questo file è in esempi/it_IT/blocks/furniture.yml, nella cartella del plugin. Non viene caricata: per usarla, copiala al posto di questo file, o copia le voci che ti servono.

config-version1
runic_chest9 chiavi
name'<light_purple>Runic Chest'
lore
["<gray>Decorative. Nothing fits inside.", <dark_gray>Furniture]+1
item-materialCHEST

Il materiale dell'item in mano quando non c'è il pack.

model'shadow:runic_chest'
required-toolaxe

Una chest si rompe con un'ascia, non con un piccone.

drops["runic_chest 1 1 1.0"]
break-sound'block.wood.break'
place-sound'block.wood.place'
runic_chest.on1 chiave
interact
["sound: block.chest.locked 1 1.4", "particle: ENCHANT 8 0.4"]+1
crypt_tombstone9 chiavi
name'<gray>Crypt Tombstone'
lore
["<gray>Someone wrote something on it, once.", <dark_gray>Furniture]+1
item-materialSTONE_BRICKS
model'shadow:crypt_tombstone'
required-toolpickaxe
drops["crypt_tombstone 1 1 1.0"]
break-sound'block.deepslate_bricks.break'
place-sound'block.deepslate_bricks.place'
crypt_tombstone.on1 chiave
interact
["sound: particle.soul_escape 0.7 0.6", "particle: SOUL 10 0.3"]+1

Esempio blocks/ores.yml

I quattro blocchi di minerale

Come funziona, in breve. Un plugin non può aggiungere blocchi a Minecraft

Ciò che può fare - e ciò che fa ogni plugin con blocchi custom - è prendere un blocco vanilla con molti stati visivamente identici e usarne uno per ogni blocco custom. Qui è il note block: 27 strumenti per 25 note, di cui 648 vengono assegnati.

Continua a leggere

QUALE STATO APPARTIENE A QUALE BLOCCO è registrato in blocks-state.yml. Non modificarlo e non cancellarlo: cambiarlo trasforma in silenzio i blocchi già piazzati nei tuoi mondi in blocchi diversi.

I NOTE BLOCK DEI TUOI GIOCATORI CONTINUANO A FUNZIONARE. Un blocco è nostro perché l'abbiamo piazzato noi, non perché ha la nota giusta - blocks.track-placed in config.yml. È il motivo per cui su questo server i note block della redstone non smettono misteriosamente di suonare.

Ogni minerale richiede un piccone: il vero blocco sotto è un note block, e un note block si rompe con qualsiasi cosa.

IN ITALIANO: la versione italiana di questo file è in esempi/it_IT/blocks/ores.yml, nella cartella del plugin. Non viene caricata: per usarla, copiala al posto di questo file, o copia le voci che vuoi.

config-version1
antracite_ore8 chiavi
name'<gray>Anthracite Ore'
lore["<gray>Black, and heavier than it looks."]
item-materialCOAL_ORE

Il materiale dell'item in mano. Il blocco nel mondo è comunque un note block: questo è solo l'aspetto dell'item quando non c'è un resource pack.

model'shadow:antracite_ore'
required-toolpickaxe
drops
["antracite_raw 1 3 1.0", "antracite_raw 1 1 0.15"]+1
break-sound'block.deepslate.break'
place-sound'block.deepslate.place'
Ancora 3 voci con la stessa forma di config-version: arcadium_ore, elektron_ore, oricalco_ore

items/

Gli oggetti personalizzati
4 file
plugins/ShadowCustomizer/items/

4 file con la stessa forma. Qui sotto 4 esempi per intero, uno per ogni forma diversa; gli altri sono elencati per nome.

  • armor.yml
  • heads.yml
  • ores.yml
  • weapons.yml

Esempio items/armor.yml

Shadowsteel - il set di armatura

Quattro pezzi

Elmo e corazza hanno un modello 3D; gambali e stivali sono immagini piatte, perché il set da cui vengono non ha un modello per quei due.

Continua a leggere

QUELLO CHE VEDI E QUELLO CHE INDOSSI SONO DUE COSE DIVERSE, e qui ci sono tutte e due. 'model' è il modello dell'item: quello che vedi nell'inventario e in mano. 'equipment' è l'aspetto indossato: il gioco smette di disegnare il modello quando l'armatura è INDOSSATA e stende invece strati di texture sul corpo, e quella riga dice quali. Toglila e il pezzo torna ad avere, addosso a te, l'aspetto del netherite.

L'elmo è l'eccezione: nello slot della testa il gioco disegna il MODELLO DELL'ITEM, quindi l'elmo 3D si indossa esattamente come appare in mano. È così che funzionano i cappelli nei resource pack.

Ogni pezzo richiede un permesso: sono pensati come ricompensa, non come qualcosa che chiunque può craftare. Togli la riga e tutti possono usarli.

IN ITALIANO: la versione italiana di questo file è in esempi/it_IT/items/armor.yml, nella cartella del plugin. Non viene caricata: per usarla, copiala al posto di questo file, oppure copia le voci che vuoi.

config-version1
shadowsteel_helmet11 chiavi
materialNETHERITE_HELMET
name'<gray>Shadowsteel Helmet'
lore
["<dark_gray>Legendary armour", "<gray>Whoever hits you regrets it."]+1
model'shadow:shadowsteel_helmet'
equipment'shadow:shadowsteel'

L'aspetto indossato. Vedi equipment.yml nell'estensione dei modelli.

tags[armor, shadowsteel]
unbreakabletrue
flags[UNBREAKABLE, ATTRIBUTES]
permissionshadowcustomizer.kit.shadowsteel
shadowsteel_helmet.attributes2 chiavi
armor4
shadowsteel_helmet.attributes.armor_toughness2 chiavi
value3
slothead
shadowsteel_helmet.enchantments5 chiavi
protection6
respiration4
unbreaking5
shadow_thorns3
beacon1
shadowsteel_chestplate12 chiavi
materialNETHERITE_CHESTPLATE
name'<gray>Shadowsteel Chestplate'
lore
["<dark_gray>Legendary armour", "<gray>It puts you back on your feet when you are hit."]+1
model'shadow:shadowsteel_chestplate'
equipment'shadow:shadowsteel'

L'aspetto indossato. Vedi equipment.yml nell'estensione dei modelli.

tags[armor, shadowsteel]
unbreakabletrue
flags[UNBREAKABLE, ATTRIBUTES]
permissionshadowcustomizer.kit.shadowsteel
shadowsteel_chestplate.attributes2 chiavi
armor9
shadowsteel_chestplate.attributes.armor_toughness2 chiavi
value4
slotchest
shadowsteel_chestplate.enchantments4 chiavi
protection6
unbreaking5
shadow_thorns4
second_wind2
shadowsteel_chestplate.behaviours1 chiave
shadowsteel_chestplate.behaviours.take-damage4 chiavi
chance0.2
cooldown4s
cancelfalse
actions
["damage: 3 on=target", "particle: SOUL 16 0.4", "sound: particle.soul_escape 0.8 0.8"]+1
shadowsteel_leggings11 chiavi
materialNETHERITE_LEGGINGS
name'<gray>Shadowsteel Leggings'
lore
["<dark_gray>Legendary armour", "<gray>You always move a little faster."]+1
model'shadow:shadowsteel_leggings'
equipment'shadow:shadowsteel'

L'aspetto indossato. Vedi equipment.yml nell'estensione dei modelli.

tags[armor, shadowsteel]
unbreakabletrue
flags[UNBREAKABLE, ATTRIBUTES]
permissionshadowcustomizer.kit.shadowsteel
shadowsteel_leggings.attributes2 chiavi
armor7
shadowsteel_leggings.attributes.armor_toughness2 chiavi
value3
slotlegs
shadowsteel_leggings.enchantments3 chiavi
protection6
unbreaking5
swiftstep2
shadowsteel_boots11 chiavi
materialNETHERITE_BOOTS
name'<gray>Shadowsteel Boots'
lore
["<dark_gray>Legendary armour", "<gray>You fall slower than you should."]+1
model'shadow:shadowsteel_boots'
equipment'shadow:shadowsteel'

L'aspetto indossato. Vedi equipment.yml nell'estensione dei modelli.

tags[armor, shadowsteel]
unbreakabletrue
flags[UNBREAKABLE, ATTRIBUTES]
permissionshadowcustomizer.kit.shadowsteel
shadowsteel_boots.attributes2 chiavi
armor4
shadowsteel_boots.attributes.armor_toughness2 chiavi
value3
slotfeet
shadowsteel_boots.enchantments5 chiavi
protection6
feather_falling4
depth_strider3
unbreaking5
featherfall2
L'elytra
shadowsteel_elytra10 chiavi

Un'elytra si indossa sul petto come una corazza, quindi prende le stesse due righe - e significano comunque due cose diverse.

Continua a leggere

'model' è l'item: ciò che vedi in mano e nell'inventario, qui un vero modello 3D.

'equipment' sono le ali sulla schiena una volta indossata. Sono uno strato a sé - 'wings' - perché la geometria delle ali non è quella del corpo, ed è il motivo per cui un'elytra con solo un modello sembra custom nell'inventario e vanilla in volo. Vedi equipment.yml nell'estensione models.

materialELYTRA
name'<light_purple>Shadowsteel Wings'
lore
["<dark_gray>Legendary armour", "<gray>The void under your feet stops being a problem."]+1
model'shadow:shadowsteel_elytra'
equipment'shadow:shadowsteel_wings'

L'aspetto in volo: lo strato 'wings', vedi equipment.yml.

tags[armor, shadowsteel]
unbreakabletrue
flags[UNBREAKABLE, ATTRIBUTES]
permissionshadowcustomizer.kit.shadowsteel
shadowsteel_elytra.enchantments3 chiavi
unbreaking5
mending1
featherfall3

Esempio items/weapons.yml

Due set di armi, pronti all'uso

Note del file

SHADOWSTEEL è il set bilanciato: forte, sobrio, nessun trucco oltre a un buon numero. DARKFLAME è quello rumoroso: brucia, esplode, e costa durabilità ogni volta che lo fa.

Ogni pezzo qui ha un modello 3D. Senza l'estensione dei modelli - o su un server senza resource pack - funzionano comunque esattamente allo stesso modo e hanno l'aspetto del materiale di cui sono fatti.

UNA COSA CHE VALE LA PENA LEGGERE, perché è l'errore più comune con gli item custom: nel momento in cui un item dichiara un attributo, i modificatori del materiale stesso SPARISCONO. Una spada di netherite che dice solo "+2 velocità d'attacco" fa un danno. keep-default-attributes: true - il default - rimette quelli del materiale prima dei tuoi, ed è quello che vuoi qui.

Ogni chiave è in inglese, e lo sono anche i nomi e la lore.

IN ITALIANO: la versione italiana di questo file è in esempi/it_IT/items/weapons.yml, nella cartella del plugin. Non viene caricata: per usarla, copiala al posto di questo file, o copia le voci che ti servono.

config-version1
Shadowsteel
shadowsteel_sword10 chiavi
materialNETHERITE_SWORD
name'<gray>Shadowsteel Sword'
lore
["<dark_gray>Legendary weapon", "", "<gray>Right click: <white>a leap forward"]+1
model'shadow:shadowsteel_sword'
tags[weapon, shadowsteel]
keep-default-attributestrue
shadowsteel_sword.attributes2 chiavi
attack_damage4
shadowsteel_sword.attributes.attack_speed3 chiavi
value-0.2
operationadd_number
slotmainhand
shadowsteel_sword.enchantments5 chiavi

Incantesimi oltre il massimo vanilla: Affilatezza 10, dove il gioco si ferma a 5. Basta scriverli, e l'incudine li rispetta.

sharpness10
looting4
unbreaking5
bloodthirst3
execution2
shadowsteel_sword
flags[ATTRIBUTES]
shadowsteel_sword.behaviours1 chiave
shadowsteel_sword.behaviours.right-click3 chiavi
cooldown6s
durability-cost2
actions
["velocity: 1.5 0.5", "sound: entity.ender_dragon.flap 0.7 1.4", "particle: CLOUD 24 0.4"]+2
Ancora 11 voci con la stessa forma di config-version: shadowsteel_axe, shadowsteel_pickaxe, shadowsteel_bow, shadowsteel_crossbow, shadowsteel_trident, shadowsteel_shield, darkflame_axe, darkflame_pickaxe, darkflame_bow, ranger_crossbow, darkflame_spear
Darkflame
darkflame_sword9 chiavi
materialNETHERITE_SWORD
name'<dark_red>Darkflame Sword'
lore
["<dark_gray>Legendary weapon", "", "<gray>Every hit: <white>flames", "<gray>Right click: <white>a wave of fire"]+2
model'shadow:darkflame_sword'
tags[weapon, darkflame]
darkflame_sword.attributes1 chiave
attack_damage5
darkflame_sword.enchantments5 chiavi
sharpness10
fire_aspect3
unbreaking5
wildfire3
soulreaper2
darkflame_sword
flags[ATTRIBUTES]
darkflame_sword.behaviours2 chiavi
darkflame_sword.behaviours.hit-entity2 chiavi
chance0.4
actions["fire: 80 on=target", "particle: FLAME 12 0.3"]
darkflame_sword.behaviours.right-click3 chiavi
cooldown12s
durability-cost15

L'usura è quello che rende giusta un'abilità forte: puoi usarla, ma costa. Senza, un clic destro gratuito diventa l'unica cosa che fa chiunque impugni quest'arma.

actions
["damage-nearby: 6 radius=5", "particle: FLAME 60 1.0", "sound: entity.blaze.shoot 1 0.7"]+2
darkflame_shield7 chiavi
materialSHIELD
name'<dark_red>Darkflame Shield'
lore
["<dark_gray>Legendary defence", "<gray>Whoever hits you gets burnt."]+1
model'shadow:darkflame_shield'
tags[shield, darkflame]
darkflame_shield.enchantments3 chiavi
unbreaking6
mending1
bulwark2
darkflame_shield.behaviours1 chiave
darkflame_shield.behaviours.take-damage4 chiavi
chance0.3
cooldown2s
cancelfalse

Su questo trigger non c'è niente da annullare - il gioco decide il danno e noi rispondiamo - e false è già il default.

actions["fire: 60 on=target", "particle: FLAME 14 0.4"]

Esempio items/ores.yml

I quattro minerali - grezzi e raffinati

Note del file

Quattro minerali, ognuno con tre forme: il blocco di minerale (in blocks/), il drop grezzo, e ciò che esce dalla fornace. Le ricette che trasformano l'uno nell'altro sono in recipes/.

Nomi e lore sono scritti qui e ogni giocatore li legge così come sono scritti. Ogni chiave di questa pagina è in inglese.

Nessuno di questi si può piazzare: sono fatti di REDSTONE, QUARTZ e altri materiali piazzabili, e un click destro sul terreno li trasformerebbe in quel materiale e toglierebbe l'item. Vedi 'placeable'.

IN ITALIANO: la versione italiana di questo file è in esempi/it_IT/items/ores.yml, nella cartella del plugin. Non viene caricata: per usarla, copiala al posto di questo file, o copia le voci che ti servono.

config-version1
Ancora 8 voci con la stessa forma di config-version: antracite_raw, antracite_dust, arcadium_raw, arcadium_ingot, elektron_raw, elektron_ingot, oricalco_raw, oricalco_rod

Esempio items/heads.yml

Le teste che indossano i boss

Note del file

Un mob in questo plugin è un mob vanilla travestito: non puoi aggiungere tipi di entità a Minecraft, e nessuno può. Quello che fa sembrare un boss un boss invece di un wither skeleton con più vita è quello che INDOSSA - e lo slot della testa è il pezzo che cambia la sagoma.

Quindi questi sono item, con un modello 3D, che mobs/mobs.yml mette sulla testa di un mob. Puoi anche darne uno a un giocatore: sono item normali e funzionano come tutti gli altri.

Senza resource pack sembrano il materiale di cui sono fatti, e il mob si comporta comunque esattamente allo stesso modo.

IN ITALIANO: la versione italiana di questo file è in esempi/it_IT/items/heads.yml, nella cartella del plugin. Non viene caricata: per usarla, copiala al posto di questo file, o copia le voci che vuoi.

config-version1
pumpkin_king_head7 chiavi
materialCARVED_PUMPKIN
name'<gold>Pumpkin King''s Head'
lore
[<dark_gray>Trophy, "<gray>It still watches, and it does not", "<gray>like what it sees."]+2
model'shadow:pumpkin_king_head'
tags[head, trophy]
placeablefalse

Una zucca intagliata si può piazzare, e piazzarla farebbe sparire l'item con tutto quello che è. Vedi 'placeable' in ores.yml.

max-stack1
darkflame_helmet9 chiavi
materialNETHERITE_HELMET
name'<dark_red>Darkflame Helmet'
lore[<dark_gray>Trophy, "<gray>Still warm."]
model'shadow:darkflame_helmet'
tags[head, trophy, darkflame]
unbreakabletrue
flags[UNBREAKABLE, ATTRIBUTES]
darkflame_helmet.attributes1 chiave
armor3
darkflame_helmet.enchantments3 chiavi
protection4
fire_protection4
unbreaking5

Tutta la documentazione