Pular para o conteúdo

Definições de Blocos

Visão Geral

Definições de blocos descrevem as propriedades visuais e físicas dos blocos colocados no mundo. A maioria dos dados de blocos fica dentro do objeto BlockType de um arquivo de definição de item, mas arquivos de bloco independentes existem para fluidos, efeitos de fluido e decalques de quebra. Texturas podem ser especificadas por face ou como um atalho único All, com valores opcionais de Weight para variantes aleatórias.

Localização dos Arquivos

Dados de blocos são armazenados em dois lugares:

  • Blocos embutidos em itens (rochas, madeira, solo, etc.): objeto BlockType dentro de Assets/Server/Item/Items/<Category>/<ItemId>.json
  • Arquivos de bloco independentes (fluidos, decalques, efeitos de fluido): Assets/Server/Item/Block/<Subcategory>/<BlockId>.json

Subcategorias em Assets/Server/Item/Block/:

Block/Fluids/ — Blocos de fluido (Lava, Água, Slime, Veneno, Fogo)
Block/BreakingDecals/ — Sobreposições de rachaduras na animação de quebra
Block/FluidFX/ — Configs de efeitos visuais de fluidos
Block/Hitboxes/ — Definições de formas de hitbox personalizadas
Block/Blocks/_Debug/ — Blocos de teste apenas para debug

Schema

Campos do Objeto de Textura

Cada entrada no array Textures define uma variante de textura. Múltiplas entradas com valores de Weight habilitam seleção aleatória de texturas.

CampoTipoObrigatórioPadrãoDescrição
AllstringNãoCaminho de textura aplicado a todas as seis faces do bloco.
SidesstringNãoTextura aplicada às quatro faces laterais (Norte, Sul, Leste, Oeste).
UpDownstringNãoTextura aplicada às faces superior e inferior.
TopstringNãoTextura aplicada apenas à face superior.
BottomstringNãoTextura aplicada apenas à face inferior.
NorthstringNãoTextura aplicada apenas à face norte.
SouthstringNãoTextura aplicada apenas à face sul.
EaststringNãoTextura aplicada apenas à face leste.
WeststringNãoTextura aplicada apenas à face oeste.
WeightnumberNão1Peso de probabilidade relativa para esta variante quando múltiplas entradas de textura estão presentes.

Campos de BlockType / Nível de Bloco

CampoTipoObrigatórioPadrãoDescrição
Texturesobject[]NãoArray de objetos de variante de textura (veja acima).
MaterialstringNãoCategoria de material físico. Valores: Solid, Fluid, Empty, Plant. Controla colisão e comportamento de interação.
DrawTypestringNãoModo de renderização. Valores comuns: Model (mesh personalizado), Block (cubo padrão), Plant (folhagem billboard).
OpacitystringNãoNível de transparência. Valores: Opaque, Semitransparent, Transparent.
LightobjectNãoConfig de emissão de luz. Contém Color (string hex, ex.: "#e90") e opcionalmente Level (número).
ParticleColorstringNãoCor hex para efeitos de partículas de quebra de bloco (ex.: "#58ad9b").
CustomModelstringNãoCaminho para um arquivo .blockymodel usado em vez de um mesh de cubo padrão.
CustomModelTextureobject[]NãoArray de { "Texture": "<caminho>", "Weight": <número> } para variantes de textura de modelo personalizado.
CustomModelScalenumberNão1.0Multiplicador de escala para o modelo personalizado.
HitboxTypestringNãoID de uma definição de hitbox de Block/Hitboxes/.
RandomRotationstringNãoRotação aleatória ao colocar. Exemplo: "YawStep1".
BlockParticleSetIdstringNãoConjunto de partículas usado para partículas ambientes do bloco (ex.: "Lava", "Dust").
BlockSoundSetIdstringNãoID do conjunto de sons para sons de interação com o bloco.
GatheringobjectNãoConfiguração de colheita. Objetos filhos Harvest, Soft e Breaking aceitam cada um uma string GatherType.
Aliasesstring[]NãoIDs de string alternativos para este bloco, usados por comandos e geração de mundo.

Campos Específicos de Fluidos

Estes campos aparecem em arquivos de bloco de fluido independentes em Block/Fluids/.

CampoTipoObrigatórioPadrãoDescrição
MaxFluidLevelnumberNãoNível máximo inteiro do fluido. Blocos fonte tipicamente usam 1; fluidos em movimento usam 8.
Effectstring[]NãoLista de IDs de efeito aplicados quando uma entidade entra neste fluido (ex.: ["Lava"]).
FluidFXIdstringNãoReferencia uma config de efeito visual de fluido de Block/FluidFX/.
TickerobjectNãoComportamento de fluxo do fluido. Contém CanDemote (boolean), SpreadFluid (string), FlowRate (número), SupportedBy (string) e Collisions (objeto mapeando IDs de bloco para resultados de colocação).
InteractionsobjectNãoCadeias de interação no nível do bloco (ex.: efeitos de colisão). Usa o mesmo formato de cadeia das interações de item.
ParentstringNãoID de um bloco pai para herdar campos.

Exemplo

Assets/Server/Item/Items/Rock/Rock_Aqua.json (seção BlockType):

{
"TranslationProperties": {
"Name": "server.items.Rock_Aqua.name"
},
"Icon": "Icons/ItemsGenerated/Rock_Aqua.png",
"Parent": "Rock_Stone",
"BlockType": {
"Textures": [
{
"All": "BlockTextures/Rock_Aqua.png",
"Weight": 1
}
],
"ParticleColor": "#58ad9b",
"Gathering": {
"Breaking": {
"GatherType": "Rocks"
}
},
"Aliases": [
"aqua",
"aqua00"
]
}
}

Assets/Server/Item/Block/Blocks/_Debug/Debug_Test_Block.json (bloco independente com luz):

{
"Textures": [
{
"All": "Blocks/_Debug/Texture.png"
}
],
"Material": "Solid",
"Light": {
"Color": "#f0f"
}
}

Assets/Server/Item/Block/Fluids/Lava_Source.json (bloco de fluido):

{
"MaxFluidLevel": 1,
"Effect": ["Lava"],
"Opacity": "Transparent",
"Textures": [
{
"Weight": 1,
"All": "BlockTextures/Fluid_Lava.png"
}
],
"Light": {
"Color": "#e90"
},
"Ticker": {
"CanDemote": false,
"SpreadFluid": "Lava",
"FlowRate": 2.0,
"Collisions": {
"Water": {
"BlockToPlace": "Rock_Stone_Cobble",
"SoundEvent": "SFX_Flame_Break"
}
}
}
}

Páginas Relacionadas