Vai al contenuto
ShadowMC

Configurazione

ShadowEdit

L'editor di mondi e il generatore in un jar solo: si scolpisce e si genera.

Gratuito con Premium

Dove sono i file

plugins/ShadowEdit/

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

Applicare le modifiche

/shadowedit reload

Rilegge i file senza riavviare il server.

Cosa c’è dentro

88 file · 336 impostazioni

Da dove partire: config.yml

Impostazioni

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

config.yml

Impostazioni generali
83 impostazioni
plugins/ShadowEdit/config.yml
Note del file

Qui stanno solo le impostazioni valide per tutto il server. Tutto il resto ha il suo

file:
  lang/<locale>.yml      le traduzioni
  palettes/*.yml         le palette di materiali
  brushes/*.yml          i preset dei pennelli salvati
  schematics/            le tue costruzioni
  worlds/<pack>/         i pack di mondi

AGGIORNAMENTI: quando una nuova versione cambia questo file, un file di lingua o una delle palette e dei pennelli inclusi, viene portato alla nuova versione per te. Tutto quello che hai cambiato o aggiunto viene mantenuto; le impostazioni che non hai mai toccato prendono i nuovi default. Il tuo file precedente resta in backup/<date>/, e se qualcosa non è stato possibile portarlo (un'opzione che non esiste più, un valore di tipo diverso) lo trovi in PORTING-<version>.txt, con cosa fare. I pack di mondi non vengono aggiornati: /sedit pack reset <name> riporta quello incluso.

L'UNICO NUMERO CHE CONTA

performance.tps-floor. È la promessa che questo plugin fa al server: sotto questa soglia, tutto si ferma e aspetta. Alzala a 19 e il plugin è più lento e più educato; abbassala a 15 ed è più veloce e più aggressivo. Non c'è nessun altro posto in cui si regola il carico.

COLORI - scritti alla maniera di Minecraft, con &

&0-&9 &a-&f  colori       &l grassetto  &o corsivo  &n sottolineato
&#ff8800     un colore esatto           &r  torna normale

I tag più ricchi ci sono ancora, per quello che & non sa fare:

<gradient:#7a5cff:#39d0ff>ShadowEdit</gradient>

Documentazione completa: docs/

config-version1
core3 chiavi
server-id"creator-1"

Un nome per questo server. Riservato a più server che condividono un database: questa versione non lo usa ancora (vedi STORAGE più sotto).

language"en_US"

La lingua usata quando non se ne conosce una migliore.

follow-client-localetrue

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

Prestazioni - il governor

Ogni lavoro pesante che fa questo plugin - un //set di venti milioni di blocchi, un mondo in pregenerazione, una schematic da incollare - chiede a UN SOLO oggetto quanto tempo può prendersi in questo tick. Quell'oggetto è il governor, e questi sono i suoi numeri.

Continua a leggere
tpsFactor   = (tps - tps-floor) / (tps-target - tps-floor)
playerScale = 1 - min(online / players-full-load, 1) * player-weight
idle        = online == 0 ? idle-boost : 1
budget      = tick-budget-ms * tpsFactor * playerScale * idle
              (mai più di 45 ms, qualunque siano i moltiplicatori)

A tps-floor il fattore è zero, e zero vuol dire che il plugin non fa NIENTE finché il server non si riprende: nessun blocco scritto, nessun chunk richiesto. È questo, e non le buone intenzioni, che rende la promessa sui TPS una promessa. Con ShadowOptimizer installato, anche il suo freno di emergenza (o un verdetto di salute POOR/CRITICAL) ci ferma per un momento.

Le modifiche grandi non leggono mai il mondo sul main thread: i chunk che servono vengono caricati in modo asincrono, copiati, e la modifica viene calcolata sui worker thread. Solo ciò che è piccolo e già caricato (fino a 65,536 blocchi: un clic di brush, una stanza) viene fatto sul momento.

performance8 chiavi
tick-budget-ms8.0

Quanto tempo per tick, al massimo, per TUTTO quello che fa questo plugin.

tps-floor18.0

Sotto questo valore il plugin si ferma del tutto. La promessa.

tps-target19.5

Sopra questo valore usa tutto il budget.

players-full-load40

Con questo numero di giocatori online il peso dei giocatori è al massimo.

player-weight0.6

Quanto contano i giocatori. 0 = per niente, 1 = moltissimo.

idle-boost4.0

Moltiplicatore quando il server è vuoto: la pregenerazione usa la macchina.

worker-threads-1

Il pool di calcolo. -1 = (core di questa macchina) - 1.

max-blocks-per-tick120000

Un tetto rigido, anche quando il budget ne permetterebbe di più.

Editor

editor22 chiavi
wand"GOLDEN_AXE"

La bacchetta di selezione. Click sinistro = primo punto, click destro = secondo.

navigation-wand"COMPASS"

Clic destro con questo ti teletrasporta dove stai guardando.

brush-tool"BLAZE_ROD"

L'item a cui rispondono i brush quando il brush non ne indica uno.

sculpt-tool"DIAMOND_HOE"

L'item a cui risponde la modalità sculpt.

max-selection-blocks-1

Il limite di blocchi predefinito per operazione, per i giocatori che non hanno il permesso shadowedit.limit.blocks.<n>. -1 = nessun limite. Il permesso vince quando un giocatore ne ha uno; //limit può solo abbassarlo.

confirm-over-blocks1000000

Sopra questo valore un'operazione chiede prima una conferma.

brush-max-blocks200000

Un singolo clic del pennello non può superare questo valore.

brush-max-radius64

E non può essere più grande di questo. C'è anche un permesso: shadowedit.limit.radius.<n>

max-history-entries25

Quanti passi di annullamento vengono tenuti per giocatore. L'edizione free ne tiene al massimo 25 qualunque cosa dica qui; con una chiave, fino a 200.

history-to-disk-over250000

Sopra questo numero di blocchi una modifica va subito in un file compresso in data/history/. Quelle più piccole seguono quando il server si ferma (e dieci minuti dopo che il giocatore è uscito), così //undo funziona anche dopo un riavvio. Vengono conservati anche il contenuto delle chest, i cartelli e gli spawner.

history-retention-days14

Le scritture sono sempre ordinate per chunk: vale un fattore tre su un //set grande, ed è ciò che permette al plugin di caricare un chunk alla volta, in modo asincrono, invece di tutti insieme sul thread principale.

relight"DEFERRED"

NONE | DEFERRED | IMMEDIATE Il server ricalcola da solo la luce di ogni blocco che scrive. Questo si limita a rimandare i chunk toccati ai giocatori che li vedono, una volta finita l'operazione, per i client che mostrano ancora le vecchie ombre: DEFERRED manda otto chunk ogni due tick, IMMEDIATE tutti insieme, NONE niente (la banda minima).

physics-at-endtrue

Alla fine di una modifica, dà ad acqua e lava il loro aggiornamento di flusso e fa cadere sabbia, ghiaia e cemento in polvere, un po' per tick (al massimo 20,000 blocchi per modifica). false = tutto resta esattamente come piazzato, come lo lascia WorldEdit.

snapshot-max-blocks40000000

Il numero massimo di blocchi che un'operazione può leggere in una volta (la selezione più il margine che serve ai blocchi vicini). Oltre questo il comando rifiuta e lo dice: dividi il lavoro, o alza questo valore se il server ha la memoria (circa 4 byte per blocco, più 48 per ogni blocco modificato).

progress-after"400ms"

Quanto deve durare un'operazione prima che compaia la boss bar.

selection-particlestrue

Il contorno della selezione, disegnato con le particelle e mai con i blocchi: un plugin che disegna con i blocchi è quello che lascia barriere invisibili sul server di qualcuno per sempre.

selection-color"#39d0ff"
selection-refresh-ticks15

Ogni quanto viene ridisegnato il contorno. Una particella di polvere vive poco più di un secondo, quindi ridisegnarlo due volte al secondo disegna solo lo stesso contorno sopra se stesso - e ogni punto è un pacchetto.

selection-max-points240

Il tetto di punti per tutto il box, distribuiti sui dodici spigoli in proporzione alla lunghezza di ciascuno.

Ogni punto è un pacchetto a un giocatore. Prima era 600 ogni 10 tick, cioè 1200 pacchetti al secondo per ogni builder con una selezione in mano - su un server di build con venti builder, 24000 al secondo di solo contorno. Alzalo se le tue selezioni sono enormi e hai la banda; il contorno non diventa più leggibile, solo più fitto.

selection-view-range40

Fino a che distanza vale ancora la pena mandare un punto, in blocchi.

Il client non disegna le particelle dust oltre circa 32 blocchi, quindi tutto ciò che è oltre è un pacchetto mandato per qualcosa che nessuno può vedere. 40 lascia un margine, perché il taglio si misura dai piedi del giocatore.

horizon-range300

Fin dove arriva una bacchetta o un pennello.

fuzzy-max-blocks2000000

Il tetto per la selezione magica (blocchi collegati).

Comandi

commands1 chiave
worldedit-aliases"auto"

Gli alias brevi in stile WorldEdit: //set, //pos1, //brush.

auto  - li registra, a meno che non sia installato WorldEdit o FAWE
force - li registra comunque
false - mai

"auto" è la risposta giusta: a un server che ha già WorldEdit non vanno tolti i suoi comandi.

Schematic

schematics3 chiavi
cache-size64

Quante schematic analizzate restano in memoria. Sfogliare una cartella di mille file non la riempie: questo è un conteggio, non una dimensione.

max-volume64000000

Un file più grande di così non è una struttura, è una mappa.

allowed-entities
[item_frame, glow_item_frame, painting, armor_stand, item_display, block_display, text_display, boat, chest_boat, minecart, chest_minecart]+8

Quali entità può ricreare un paste. Un .schem arriva da internet passando per un admin che non l'ha scritto: senza questa lista, qualcuno potrebbe far comparire cento creeper innescati.

Mondi

Edizione gratuita: fino a due mondi gestiti, vuoti (void) o vanilla. Con una chiave: quanti ne vuoi, e mondi generati da un pack. Un mondo da pack non viene mai aperto senza chiave: resta su disco, intatto, e si riapre appena una chiave è attiva.

worlds8 chiavi
auto-loadtrue

Riapre i mondi gestiti all'avvio, prima che qualcun altro li apra senza un generatore.

unload-empty-after"10m"

Scarica un mondo gestito in cui non c'è nessuno. 0 per mai.

default-border0

Un bordo per i mondi nuovi. 0 = nessuno.

read-only[ ]

Mondi in cui non si può modificare niente, qualunque cosa dicano i permessi.

delete-retention-days7

Un mondo cancellato viene rinominato, non rimosso: hai questo numero di giorni per cambiare idea prima che la cartella sparisca davvero.

void-platformtrue

Il mondo vuoto: una piattaforma di vetro allo spawn, così nessuno cade appena arriva.

void-platform-block"GLASS"
void-biome"the_void"

PregenerazionePremium

pregen10 chiavi
enabledtrue
resume-on-starttrue

Riprende da dove un riavvio l'aveva interrotto. Un lavoro in pausa resta in pausa.

chunks-per-tick4

Chunk richiesti per tick con il budget pieno. Li genera Paper in modo asincrono, come fa Chunky: il main thread si sente solo dire che sono pronti. Il governor riduce questo valore quando i TPS calano o entrano giocatori, fino a 16x su un server vuoto, e non chiede proprio niente sotto performance.tps-floor. Al massimo 4x questo numero di chunk aspettano nello stesso momento.

pause-with-playersfalse

true = si ferma del tutto quando c'è qualcuno online. La risposta giusta per un server già aperto al pubblico.

save-every"30s"
unload-after-writetrue

Non ha più effetto: un chunk viene rilasciato appena è generato, quindi la memoria resta piatta comunque, anche su un milione di chunk.

bossbartrue
log-every"2m"
ready-radius96

Quanti blocchi devono essere pronti intorno allo spawn prima che /sedit world tp ti faccia entrare. Una manciata di secondi, non il mondo intero.

set-borderfalse

Imposta il world border sul raggio pregenerato quando finisce.

Pack

Guardare i pack (/sedit pack list, info, problems) è gratis. Creare mondi da questi, copiarli e resettarli richiede una chiave.

packs1 chiave
allow-commandsfalse

Se una struttura può eseguire comandi quando viene generata. FALSE di default: un pack scaricato da internet non deve poter eseguire niente.

Spawn (Premium: appartengono ai mondi dei pack)

Le regole di spawn di un pack possono nominare mob vanilla, mob di ShadowCustomizer (scus:<id>) o MythicMobs (mythic:<id>). Un mob che non è installato viene segnalato quando il pack si carica, con il file e la riga.

spawns3 chiavi
tick-interval40

Il ciclo per le regole che AGGIUNGONO spawn. Le regole che sostituiscono uno spawn vanilla non costano niente e non lo usano.

attempts-per-player3
radius48

Effetti di zona (Premium: appartengono ai mondi dei pack)

effects1 chiave
tick-interval20

Salvataggio dati

Niente da fare: al primo avvio compare un database H2 locale in data/creator.mv.db. Nessun utente, nessuna password, niente da installare.

Continua a leggere

Se hai un MySQL e lo preferisci, imposta enabled: true e compila i campi. Le tabelle si creano da sole alla prima connessione. (Un MySQL esterno è una funzione Premium; senza chiave il plugin resta sul file locale e lo dice in console, che per un solo server è comunque la scelta giusta.)

Più server su un solo database: non ancora supportato. Ogni server aprirebbe i mondi gestiti dall'altro e ne riprenderebbe le pregenerazioni. Dai a ogni server il suo database (o table-prefix).

Il database si chiama ancora "shadowcreator", come le tabelle (scr_) e il file locale: è il nome dei dati, che non è cambiato quando il plugin è stato rinominato.

storage5 chiavi
table-prefix"scr_"
fallback-to-localtrue
storage.mysql7 chiavi
enabledfalse
host"127.0.0.1"
port3306
database"shadowcreator"
username"root"
password""
parameters"useSSL=false&allowPublicKeyRetrieval=true&serverTimezone=UTC&characterEncoding=utf8"
storage.pool5 chiavi
maximum-pool-size10
minimum-idle2
connection-timeout-ms10000
idle-timeout-ms600000
max-lifetime-ms1800000
storage.h21 chiave
auto-serverfalse

Licenza

La chiave va in license.yml, non qui: una richiesta di supporto che dice "mandami la tua config" non deve portarsi dietro la licenza di qualcuno.

license2 chiavi
grace-days7

Giorni di tolleranza prima di scendere all'edizione free quando un abbonamento è appena scaduto, o quando il legame con l'host non corrisponde a niente di ciò che vediamo (molto più spesso un NAT che un ladro).

resolve-public-iptrue

Chiede al servizio licenze ShadowMC (/ip) quale indirizzo pubblico ha questo server: dietro NAT è l'unico modo per riconoscerlo. Risponde con l'indirizzo che vede, e del server non viene inviato niente. Solo con una licenza installata: un server senza chiave non chiede niente a nessuno. false = non chiedere mai.

UI

ui2 chiavi
confirm-timeout"30s"

Per quanto tempo resta valido il pulsante [ Conferma ] di una modifica enorme.

chat-timeout"30s"

Quanto aspetta un menu che tu scriva una risposta in chat.

Debug

debug2 chiavi
log-sqlfalse
profilertrue

Cronometra ogni comando e modifica per /sedit diag. Non costa quasi niente.

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

Cosa viene inviato, ogni 30 minuti: un id casuale del server (serverUuid, non derivato da nulla), la versione del plugin, le versioni di Minecraft/Paper e di Java, il sistema operativo e il numero di core, la modalità online, quanti giocatori sono online (solo un numero) e il tipo di licenza (free/premium/creator). NESSUN dato dei giocatori: niente nomi, niente UUID, niente indirizzi, niente mondi.

Continua a leggere

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

metrics1 chiave
enabledtrue

Lingue

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

lang/

Testi e messaggi
2 file
plugins/ShadowEdit/lang/

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 918
lang/it_IT.yml Italiano 918

Segnaposto più usati

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

  • <prefix>
  • <label>
  • <world>
  • <name>
  • <count>
  • <value>
  • <blocks>
  • <pattern>
  • <pack>
  • <radius>
  • <id>
  • <size>
  • <amount>
  • <biome>

Gruppi di messaggi

  • prefix 1
  • command 14
  • edit 40
  • selection 46
  • pattern 17
  • mask 10
  • clipboard 7
  • schem 17
  • history 12
  • brush 83
  • palette 13
  • navigation 8
  • flora 2
  • world 49
  • pack 17
  • pregen 15
  • genesis 25
  • general 6
  • status 24
  • help 228
  • license 46
  • confirm 6
  • prompt 2
  • menu 218
  • effect 4
  • structure 8

Altro

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

brushes/

Brushes
5 file
plugins/ShadowEdit/brushes/

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

  • cliff.yml
  • hill.yml
  • mixed-forest.yml
  • mountain.yml
  • path.yml

Esempio brushes/mountain.yml

Note del file

Il pennello che alza una montagna in meno di un minuto. Raggio grande, falloff netto: è il falloff che fa la differenza tra una montagna e una cupola.

typestamp
radius48.0
strength0.8
falloffSHARP
pattern"stone"
range300
options5 chiavi
stamp"mountain"
height"40"
palette"alpine"
erosion"5"
talus"44"

Esempio brushes/mixed-forest.yml

Note del file

Foresta mista. La distanza minima e il limite di pendenza sono ciò che fa la differenza tra un bosco e una spruzzata di alberi.

typeforest
radius16.0
strength0.5
falloffSMOOTH
pattern"oak_log"
range250
options4 chiavi
tree"oak"
density"0.14"
spacing"4"
max-slope"28"

palettes/

Palettes
6 file
plugins/ShadowEdit/palettes/

6 file con la stessa forma. Qui sotto quello più commentato, per intero, come modello; gli altri sono elencati per nome.

  • alpine.yml
  • beach.yml
  • desert.yml
  • meadow.yml
  • nether.yml
  • rock.yml

Esempio palettes/alpine.yml

Palette alpina

Note del file

Questa è la palette che spiega tutte le altre, quindi è commentata riga per riga.

Gli strati si applicano DALL'ALTO, partendo dal primo blocco non d'aria e scendendo. Ognuno occupa la sua profondità; uno strato che non si applica - perché l'altezza o la pendenza sono sbagliate - occupa comunque la sua profondità, e il successivo va sotto. Senza questa regola, la neve che non si applica spingerebbe l'erba su di un blocco proprio dove doveva esserci la roccia nuda.

min-slope / max-slope sono in GRADI e sono le righe che contano: decidono dove si vede la roccia nuda invece dell'erba, ed è la differenza tra una montagna e una collina dipinta di bianco in cima.

name"Alpine"
layers
[{ blocks: snow_block, depth: 2, above-y: 165, max-slope: 38 }, { blocks: "4:stone,2:andesite,1:cobblestone,1:gravel", depth: 4, min-slope: 38 }, { blocks: grass_block, depth: 1, max-slope: 32 }, { blocks: "6:dirt,1:coa …+4
blocks

Neve, solo in alto e solo dove non è troppo ripido: la neve non si posa su una parete verticale, e metterla lì comunque fa sembrare di gesso l'intera catena.

blocks

Roccia nuda sulle rupi. Quattro blocchi, perché uno solo lascia vedere la terra appena qualcuno scava.

blocks

Erba nelle conche, e da nessun'altra parte.

blocks

La terra sotto l'erba.

blocks

E poi pietra, fino in fondo. -1 vuol dire "fino al fondo".

worlds/

Worlds
74 file
plugins/ShadowEdit/worlds/

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

  • end/biomes/azure-fields.yml
  • end/biomes/chorus-forest.yml
  • end/biomes/crystal-shores.yml
  • end/biomes/deep-void.yml
  • end/biomes/end-barrens.yml
  • end/biomes/obsidian-spires.yml
  • end/biomes/shattered-isles.yml
  • end/biomes/void-gardens.yml
  • end/caves/default.yml
  • end/effects/default.yml
  • end/noise/caves.yml
  • end/noise/detail.yml
  • end/noise/terrain.yml
  • end/ores/default.yml
  • end/ores/extra.yml
  • end/pack.yml
  • end/regions/default.yml
  • end/spawns/default.yml
  • end/structures/default.yml
  • nether/biomes/ash-plains.yml
  • nether/biomes/basalt-spires.yml
  • nether/biomes/blackstone-ridges.yml
  • nether/biomes/crimson-groves.yml
  • nether/biomes/crystal-hollow.yml
  • nether/biomes/glowstone-caverns.yml
  • nether/biomes/magma-sea.yml
  • nether/biomes/soul-marsh.yml
  • nether/biomes/warped-groves.yml
  • nether/caves/default.yml
  • nether/effects/default.yml
  • nether/noise/caves.yml
  • nether/noise/detail.yml
  • nether/noise/terrain.yml
  • nether/ores/default.yml
  • nether/ores/extra.yml
  • nether/pack.yml
  • nether/regions/default.yml
  • nether/spawns/default.yml
  • nether/structures/default.yml
  • overworld/biomes/alpine-peaks.yml
  • overworld/biomes/alpine-slopes.yml
  • overworld/biomes/badlands.yml
  • overworld/biomes/birch-forest.yml
  • overworld/biomes/crystal-hollows.yml
  • overworld/biomes/dark-woods.yml
  • overworld/biomes/deep-dark-halls.yml
  • overworld/biomes/deep-ocean.yml
  • overworld/biomes/desert.yml
  • overworld/biomes/dripstone-caverns.yml
  • overworld/biomes/forest.yml
  • overworld/biomes/frozen-ocean.yml
  • overworld/biomes/fungal-depths.yml
  • overworld/biomes/lush-caverns.yml
  • overworld/biomes/magma-caves.yml
  • overworld/biomes/meadow.yml
  • overworld/biomes/ocean.yml
  • overworld/biomes/plains.yml
  • overworld/biomes/river.yml
  • overworld/biomes/snowy-taiga.yml
  • overworld/biomes/sunflower-plains.yml
  • overworld/biomes/swamp.yml
  • overworld/biomes/taiga.yml
  • overworld/caves/default.yml
  • overworld/effects/default.yml
  • overworld/noise/caves.yml
  • overworld/noise/detail.yml
  • overworld/noise/terrain.yml
  • overworld/ores/default.yml
  • overworld/ores/extra.yml
  • overworld/pack.yml
  • overworld/regions/default.yml
  • overworld/spawns/default.yml
  • overworld/structures/surface.yml
  • overworld/structures/underground.yml

Esempio worlds/overworld/noise/terrain.yml

Il terreno dell'overworld

Note del file

Questo file fa due cose: dice QUALE noise alimenta ciascuno dei sei parametri, e dice come quei parametri diventano un'altezza.

I sei parametri stanno in detail.yml e in questo file. Tre fanno la FORMA (continentalness, erosion, peaks-and-valleys), tre fanno il BIOMA (temperature, humidity, weirdness). È grazie a questa separazione che puoi cambiare la mappa dei biomi senza toccare il rilievo, e viceversa.

quale noise per quale parametro
continentalness"continentalness"
erosion"erosion"
peaks-valleys"peaks-valleys"
temperature"temperature"
humidity"humidity"
weirdness"weirdness"
density-3d"density"

Il noise 3D, che è ciò che permette sporgenze, archi naturali e grotte che si aprono sul fianco di una collina. Senza, il terreno è una mappa di altezze e sopra la tua testa non c'è mai niente.

density-scale11.0

Quanto è "ripido" il passaggio da pieno a vuoto. Più basso = pareti più verticali.

density-weight0.85

Quanto il noise 3D può piegare la superficie. Sopra 1.2 il mondo comincia a sembrare formaggio.

Le spline

Una spline è una frase scritta come una lista di punti. Passa ATTRAVERSO i punti (Catmull-Rom), quindi "a -0.15 voglio altezza 66" dà davvero altezza 66.

height-spline
[[-1, -58], [-0.7, -42], [-0.45, -24], [-0.19, 58], [-0.15, 66], [0.05, 72], [0.3, 80], [0.55, 96], [0.8, 128], [1, 168]]+7

La continentalness fissa l'altezza di base.

I due punti vicino a -0.19 e -0.15 non sono un errore: sono la PIATTAFORMA CONTINENTALE. Due punti quasi alla stessa x con altezze diverse fanno un gradino, ed è quel gradino che rende una costa una costa invece di una rampa che scende per duecento blocchi.

erosion-spline
[[-1, 82], [-0.75, 62], [-0.5, 44], [-0.2, 26], [0.1, 14], [0.45, 7], [1, 2]]+4

L'erosione stabilisce QUANTO RILIEVO è permesso in quel punto.

È il parametro che produce le pianure in mezzo a un continente: dove l'erosione è alta il terreno è piatto anche se la continentalità direbbe montagna. Alzare l'ultimo punto (a -1) alza le montagne senza toccare nient'altro.

peaks-spline
[[-1, -0.75], [-0.55, -0.35], [-0.15, -0.05], [0.15, 0.15], [0.5, 0.55], [0.8, 0.88], [1, 1]]+4

Peaks and valleys distribuisce quel rilievo. Sotto lo zero ci sono le valli, sopra le creste; la curva è ripida in cima perché le vette devono essere poche e aguzze.

I fiumi

Un fiume qui non è un bioma: è una FORMA, e deve scorrere in discesa.

max-terrain-height è la riga che conta: sopra quell'altezza l'effetto si spegne. Senza, trovi canali d'acqua ad altezza duecento, ed è l'errore che la gente nota prima di ogni altro.

rivers7 chiavi
enabledtrue
noise"river"
threshold0.855

Quanto devi essere vicino alla linea del fiume. Più alto = fiumi più stretti e più rari.

width7.0
depth5
bank-smooth9

Le sponde: senza questa sfumatura il fiume è un canyon d'acqua con pareti alte tre blocchi.

max-terrain-height105

Esempio worlds/overworld/structures/surface.yml

Le strutture di superficie

Note del file

COME UNA STRUTTURA TROVA IL SUO POSTO

Non "a caso per chunk": su una griglia con uno scarto casuale, esattamente come fa Minecraft. Tre cose che il puro caso non ti dà: la distanza minima viene rispettata senza doverla cercare, la distribuzione è davvero uniforme, senza grumi e senza deserti, ed è deterministica - lo stesso seed mette il borgo nello stesso posto, ed è questo che permette di pregenerarlo e ritrovarlo.

rarity: "1 / 1600" si legge come una distanza in BLOCCHI: circa una ogni 1600 blocchi. È l'unico numero che quasi tutti cambiano.

COME SI APPOGGIA AL TERRENO

Non scrivi mai un'altezza. Decide terrain.fit:

AUTO        guarda il terreno e sceglie una delle opzioni qui sotto.
            Lascialo su AUTO se non hai un motivo.
PLATFORM    livella l'impronta all'altezza mediana. Per un
            edificio con il pavimento piatto.
FOUNDATION  lascia stare il terreno e prolunga l'edificio
            verso il basso finché non lo incontra. Per torri e pilastri.
CARVE       scava nel pendio. Per tutto ciò che è incassato in una collina.
BLEND       alza e abbassa il terreno lungo il bordo in modo che si
            raccordi alla struttura. Il più lento, e il più bello da vedere.
NONE        la scrive esattamente dove gli viene detto e nient'altro.

margin è quanti blocchi attorno all'impronta vengono raccordati. Margini piccoli lasciano uno scalino; sopra 8 circa inizi a notare che il terreno viene appiattito.

LOOT è il nome di una tabella, e l'estrazione dalla tabella avviene quando la chest viene APERTA, non quando viene generata: così una chest che nessuno trova mai non costa niente, e il contenuto segue le tabelle del server stesso.

hermit-tower8 chiavi
name"Hermit's Tower"
object"watchtower"
biomes
[meadow, alpine-slopes, alpine-peaks, taiga, snowy-taiga]+2
hermit-tower.placement3 chiavi
rarity"1 / 1400"
jitter0.65
min-distance-any220
hermit-tower.position3 chiavi
modeSURFACE
anchorBOTTOM_CENTER
rotationRANDOM_90
hermit-tower.terrain7 chiavi
fitFOUNDATION

FOUNDATION e non PLATFORM: una torre su un pendio deve farsi crescere una base più alta sul lato a valle, non appiattire il pendio.

max-slope34
max-height-difference14
clear-above6
margin3
palette"rock"
remove-floatingtrue
hermit-tower.contents2 chiavi
loot
[{ at: "marker:top", table: "minecraft:chests/stronghold_corridor", chance: 1 }, { at: CHEST, table: "minecraft:chests/simple_dungeon", chance: 0.8 }]+1
spawners[{ at: SPAWNER, mob: skeleton, delay: […], cou…]
hermit-tower.gameplay1 chiave
discovery-message"structure.found.hermit-tower"
Ancora 3 voci con la stessa forma di hermit-tower: ruined-tower, forest-shrine, bandit-camp
forest-ruins7 chiavi
name"Forest Ruins"
object"ruin-pillars"
biomes
[forest, birch-forest, dark-woods, plains, taiga, meadow]+3
forest-ruins.placement3 chiavi
rarity"1 / 700"
jitter0.8
max-per-chunk1
forest-ruins.position5 chiavi
modeSURFACE
y-offset-1

-1: le rovine sprofondano di un blocco nel terreno. Una rovina appoggiata esattamente sulla superficie sembra un modellino posato su un tavolo.

anchorBOTTOM_CENTER
rotationRANDOM
mirrorRANDOM
forest-ruins.terrain5 chiavi
fitBLEND
max-slope24
max-height-difference9
clear-above3
margin5
forest-ruins.contents1 chiave
loot[{ at: CHEST, table: "minecraft:chests/simple_…]
desert-ruins8 chiavi
name"Buried Ruins"
object"desert-ruin"
biomes[desert, badlands]
desert-ruins.placement3 chiavi
rarity"1 / 1500"
jitter0.6
min-distance-any260
desert-ruins.position4 chiavi
modeSURFACE

La parte visibile sono quattro blocchi di macerie; tutto il resto sta appeso sotto. L'ancora quindi è in cima, non in fondo.

anchorTOP_CENTER
y-offset-1
rotationRANDOM_90
desert-ruins.terrain6 chiavi
fitCARVE
max-slope20
max-height-difference10
clear-above2
margin3
palette"desert"
desert-ruins.contents2 chiavi
loot[{ at: CHEST, table: "minecraft:chests/desert_…]
spawners[{ at: SPAWNER, mob: husk, delay: […], count:…]
desert-ruins.gameplay1 chiave
discovery-message"structure.found.desert-ruins"
mountain-hamlet8 chiavi
name"Hamlet"
object"hamlet"
biomes
[plains, sunflower-plains, meadow, forest, alpine-slopes]+2
mountain-hamlet.placement3 chiavi
rarity"1 / 3200"

Raro apposta: un borgo ogni ottocento blocchi smette di essere una scoperta e diventa scenografia.

jitter0.5
min-distance-any700
mountain-hamlet.position2 chiavi
modeSURFACE
rotationRANDOM_90
mountain-hamlet.terrain7 chiavi
fitPLATFORM

Un villaggio intero deve stare su un terreno piano: PLATFORM, un ampio margine, e un limite di pendenza abbastanza basso da non finire mai su una collina.

max-slope12
max-height-difference12
clear-above8
margin8
palette"meadow"
remove-floatingtrue
mountain-hamlet.contents2 chiavi
loot[{ at: CHEST, table: "minecraft:chests/village…]
mobs
[{ mob: "minecraft:villager", at: "marker:spawn", count: […] }, { mob: "minecraft:iron_golem", at: "marker:spawn", count: […] }, { mob: "minecraft:cat", at: "marker:spawn", count: […] }]+2
mountain-hamlet.gameplay1 chiave
discovery-message"structure.found.hamlet"
mine-entrance7 chiavi
name"Mine Entrance"
object"mine-entrance"
biomes
[meadow, alpine-slopes, taiga, snowy-taiga, badlands, plains, forest]+4
mine-entrance.placement3 chiavi
rarity"1 / 1200"
jitter0.7
min-distance-any200
mine-entrance.position4 chiavi
modeSURFACE

L'ancoraggio è la cima: il pozzo sotto è quello che deve raggiungere le grotte, e il castelletto è quello che deve poggiare sul terreno.

anchorTOP_CENTER
y-offset-3
rotationRANDOM_90
mine-entrance.terrain5 chiavi
fitFOUNDATION
max-slope28
max-height-difference14
clear-above6
margin3
mine-entrance.contents2 chiavi
loot[{ at: CHEST, table: "minecraft:chests/abandon…]
spawners[{ at: SPAWNER, mob: cave_spider, delay: […],…]
shipwreck7 chiavi
name"Shipwreck"
object"shipwreck"
biomes[ocean, deep-ocean, frozen-ocean]
shipwreck.placement3 chiavi
rarity"1 / 1000"
jitter0.8
min-distance-any150
shipwreck.position3 chiavi
modeOCEAN_FLOOR
rotationRANDOM
mirrorRANDOM
shipwreck.terrain6 chiavi
fitFOUNDATION

Su un fondale l'adattamento deve essere delicato: una piattaforma sotto un relitto si vede da molto lontano attraverso l'acqua.

max-slope30
max-height-difference8
clear-above0
margin2
remove-floatingfalse
shipwreck.contents1 chiave
loot
[{ at: "marker:loot", table: "minecraft:chests/shipwreck_treasure", chance: 1 }, { at: CHEST, table: "minecraft:chests/shipwreck_supply", chance: 0.9 }]+1
floating-island8 chiavi
name"Floating Island"
object"floating-island"
biomes[meadow, alpine-peaks, alpine-slopes, plains]
floating-island.placement3 chiavi
rarity"1 / 6000"

La cosa più rara del pack. Vederne una deve significare qualcosa.

jitter0.4
min-distance-any1200
floating-island.position3 chiavi
modeFLOATING
y-offset46

Sopra il terreno, non sopra il livello del mare: su una montagna resta sopra la montagna.

rotationRANDOM_90
floating-island.terrain4 chiavi
fitNONE
clear-above0
margin0
remove-floatingfalse
floating-island.contents1 chiave
loot[{ at: CHEST, table: "minecraft:chests/end_cit…]
floating-island.gameplay1 chiave
discovery-message"structure.found.floating-island"

Esempio worlds/overworld/noise/detail.yml

I noise dell'overworld

Note del file

Ogni noise ha un nome, e il resto del pack lo richiama per nome.

Le due manopole che contano:

scale    più PICCOLO = forme più GRANDI. 0.0008 sono i continenti, 0.05 i
         sassolini.
warp     sposta il punto di campionamento con un altro noise. Da solo
         vale metà del realismo: senza, le creste corrono parallele
         e si vede che sono generate; con il warp serpeggiano e
         si biforcano.
i tre parametri di forma
continentalness7 chiavi

I continenti. Scala minuscola: una massa di terra deve durare per migliaia di blocchi.

typesimplex
scale0.00075
octaves4
persistence0.5
lacunarity2.13

Non esattamente 2.0: con una lacunarità intera i massimi delle ottave cadono sempre negli stessi punti, e su una mappa grande si vede come una griglia.

salt11
continentalness.warp2 chiavi
noise"warp-large"
strength340.0
erosion7 chiavi

Quanto rilievo è ammesso. Più grande della continentalness: una regione erosa è più piccola di un continente.

typesimplex
scale0.0014
octaves3
persistence0.45
lacunarity2.07
salt23
erosion.warp2 chiavi
noise"warp-medium"
strength160.0
peaks-valleys7 chiavi

Le creste. Ridged, perché è quello che produce spigoli invece di gobbe: è la differenza tra montagne e grandi colline.

typeridged
scale0.0034
octaves4
persistence0.52
lacunarity2.11
salt37
peaks-valleys.warp2 chiavi
noise"warp-medium"
strength90.0
i tre parametri climatici

Scale diverse l'una dall'altra, e volutamente non multiple: temperatura e umidità sulla stessa scala produrrebbero una scacchiera di biomi.

Ancora 3 voci con la stessa forma di continentalness: temperature, humidity, warp-medium
weirdness4 chiavi

La weirdness divide le varianti: è lei che decide tra betulle e querce a parità di clima.

typesimplex
scale0.0021
octaves2
salt89
i noise di servizio
warp-large4 chiavi

I due warp. Scale molto diverse: uno sposta i continenti, l'altro increspa i bordi.

typesimplex
scale0.00042
octaves2
salt101
river5 chiavi

I fiumi. Il valore che usa il terreno è 1 - |questo|, cioè una linea sottile dove il noise attraversa lo zero.

typesimplex
scale0.0016
octaves2
salt107
river.warp2 chiavi
noise"warp-medium"
strength120.0
density6 chiavi

La densità 3D: sporgenze e archi.

typesimplex
scale0.0095
octaves3
persistence0.42
lacunarity2.09
salt109
alpine-detail5 chiavi

Dettaglio delle montagne: canaloni e ghiaioni.

typeridged
scale0.021
octaves3
persistence0.5
salt113
dune-detail4 chiavi

Dettaglio delle dune.

typebillow
scale0.016
octaves2
salt127
mesa-detail4 chiavi

Le terrazze delle badlands.

typesimplex
scale0.011
octaves2
salt131
clumping4 chiavi

Raggruppamento degli alberi: senza, cadono come sale su un tavolo.

typesimplex
scale0.013
octaves2
salt137
surface-wobble4 chiavi

Il bordo frastagliato tra gli strati di superficie.

typesimplex
scale0.08
octaves1
salt139
region4 chiavi

Quale regione climatica. Qui ce n'è una sola, ma il noise è già al suo posto per chi ne vuole due.

typesimplex
scale0.00031
octaves1
salt149

Esempio worlds/overworld/pack.yml

Shadow Overworld

Note del file

Un overworld realistico: come sarebbe un mondo vanilla se qualcuno avesse passato una settimana a sistemarne il rilievo.

Ogni file di questo pack è commentato. Se stai leggendo perché vuoi cambiare qualcosa, le tre modifiche che danno più risultato per il tempo speso sono, in ordine:

1. biomes/*.yml -> surface:     le palette di superficie cambiano l'aspetto del
   mondo più di qualsiasi altra cosa.
2. structures/*.yml -> rarity:  mettere le TUE schematic in
   objects/ e dichiararle qui è il passo che rende il
   mondo tuo.
3. noise/terrain.yml -> erosion-spline: alzare il suo ultimo punto
   alza le montagne senza rompere nient'altro.

Dopo ogni modifica: /sedit pack reload overworld

pack-version1
id"overworld"
name"Shadow Overworld"
author"ShadowMC"
description"Real mountains, rivers that run downhill, an underground with a plan."
dimensionOVERWORLD
min-y-64

I limiti di altezza. -64/320 sono quelli di Minecraft dalla 1.18: cambiarli vuol dire un mondo che non si può più aprire con un pack diverso.

max-y320
sea-level63
sea-block"water"
seed2 chiavi
modeRANDOM
RANDOM: ogni mondo creato da questo pack ha il suo seed.
FIXED:  ogni mondo di questo pack è lo STESSO mondo.
value0
spawn3 chiavi
modeSEARCH

SEARCH cerca a spirale partendo dall'origine una colonna solida, fuori dall'acqua, in uno dei biomi elencati. Senza la lista si accontenta della prima colonna solida, e spesso è una scogliera.

search-radius3000
require-biome[plains, meadow, forest, sunflower-plains]
vanilla4 chiavi

Cosa lasciar fare a Minecraft.

Le strutture vanilla sono spente perché un villaggio vanilla dentro un mondo custom si nota subito: è l'unica cosa che sembra venire da un altro gioco. Le nostre stanno in structures/.

structuresfalse
decorationsfalse
mobstrue

Lo spawn naturale dei mob resta attivo: le NOSTRE regole si aggiungono, non lo sostituiscono.

bedrocktrue
performance2 chiavi
cache-columns4096
structure-search-chunks2

Tutta la documentazione