Block Json Object
id
: The id of the block, should be identical.
states
: The property containing BlockStates of the block.
properties
: The properties of the block.
capabilites
: An optional property, see Capabilities
BlockStates
This object will define the various states of block.
You have to have a state named default. Or, you write the block state property to the root level.
Common case:
{
"id": "eg_block",
"states": {
"default": {
"lightOpacity": 1,
"lightLevel": 0.5,
// other default properties all here
},
"someOtherState": {
// some other property
}
},
}
All property goes root level:
{
"id": "eg_block",
"states": {
"someOtherState": {
// some other property
}
},
"lightOpacity": 1,
"lightLevel": 0.5,
// other default properties all here
}
Then you could have some other custom states.
The state itself contains several property:
Property | Default Value | Range | Description | Example |
---|---|---|---|---|
material | No default, required field | Material | The various material related behavior of block | “grass” |
stepSound | “stone” | SoundType | Sets the step sound of a block . | “wood” |
harvest | {} | Harvest | Provide the harvest behavior of block. | {“level”: “stone”, “tool”: “pickaxe”} |
bounding | [0, 0, 0, 1, 1, 1] | 6 doubles | The outline box of the block | [0, 0, 0, 1, 0.5625, 1] |
collision | [[0, 0, 0, 1, 1, 1]] | Array of 6 doubles array | The collision box of the block | [[0, 0, 0, 0.5, 0.5625, 0.5], [0.6,0.6,0.6,1,1,1]] |
opacity | 16 | 0-16 | Sets how much light is subtracted when going through this block This is only used if isOpaqueCube() returns false | 14 |
brightness | 0.0 | 0.0-1.0 | Sets how much light is emitted from the block. 0 means no light. | 0.5 |
hardness | depends on material (stone:1.5; obsidian:50.0) | All Float | Sets how long it takes to break the block. Stone:1.5. Obsidian:50.0. Bedrock: -1 | 4.0 |
resistance | depends on material (stone:10.0; obsidian:2000.0) | All Float | Sets the block’s resistance against explosions | 300 |
Harvest
The json object represents the harvest information of block.
Property | Default Value | Range | Description | Example |
---|---|---|---|---|
level | “wood” | “wood”, “stone”, “iron”, “diamond” | What level of tool could harvest this | “iron” |
tool | ”” | The id of the tools, for default minecraft: “pickaxe”, “axe”, “shovel” | What kind of tool could harvest this | “axe” |
largely ref from: https://bedrockminer.jimdo.com/modding-tutorials/basic-modding-1-8/first-block/
Material
this section is WIP, I’m filling the table
The string or object represent the material of block.
Object format:
Property | Default Value | Range | Description |
---|---|---|---|
isLiquid | false | true, false | If this material is type of liquid |
flammbale | false | true, false | If this block can catch on fire |
replacable | false | true, false | If this block is like tall grass or air can be replaced |
mobility | ”” | “destroy”, “block”, “ignore”, “push_only” | The behavior of the block pushed by piston |
isSolid | true | true, false | If this is a solid block. This is arguably… |
Minecraft commonly used (in my opinion) built-in material:
Material | BlockLight(√) | Flammbale(x) | Replacable(x) | Solid(√) | Mobility(normal) | translucent | tool |
---|---|---|---|---|---|---|---|
air | x | √ | x | √ | |||
grass | x | ||||||
ground | x | ||||||
wood | √ | ||||||
rock | √ | ||||||
iron | √ | ||||||
water | x | √ | x | destroy | √ | ||
plants | x | √ | x | destroy | |||
cloth | √ | ||||||
leaves | √ | destroy | |||||
sand | |||||||
fire | x | √ | x | destroy | |||
ice | |||||||
snow | x | √ | x | destroy | √ | ||
glass | |||||||
clay | |||||||
cake | destroy | ||||||
gourd | destroy |
Minecraft special usage (in my opinion) built-in material:
Material | BlockLight(√) | Flammbale(x) | Replacable(x) | Solid(√) | Mobility(normal) | tool |
---|---|---|---|---|---|---|
lava | x | √ | x | destroy | ||
anvil | block | √ | ||||
vine | x | √ | √ | x | destroy | |
sponge | ||||||
circuits | x | x | destroy | |||
carpet | x | √ | x | |||
redstone light | ||||||
tnt | √ | |||||
coral | destroy | |||||
packed ice | ||||||
crafted snow | √ | |||||
cactus | ||||||
dragon egg | destroy | |||||
web | destroy | √ | ||||
piston | ||||||
barrier | block | √ | ||||
structure void | x | |||||
portal | x | x | block |
largely ref from: https://bedrockminer.jimdo.com/modding-tutorials/advanced-modding/block-materials/
SoundType
Minecraft have these built-in sound type: (too lazy to fill all the sound event)
name | volume | pitch | break | step | place | hit | fall |
---|---|---|---|---|---|---|---|
wood | 1 | 1 | |||||
ground | 1 | 1 | |||||
plant | 1 | 1 | |||||
stone | 1 | 1 | |||||
glass | 1 | 1 | |||||
cloth | 1 | 1 | |||||
sand | 1 | 1 | |||||
snow | 1 | 1 | |||||
ladder | 1 | 1 | |||||
anvil | 0.3 | 1 | |||||
slime | 1 | 1 |
To register own sound type, create file under the folder def/blocks/sound-types/ with file [soundTyle].json
Then the file format is
{
"volume": 1.0,
"pitch": 1.0,
"break": "soundName",
"step": "soundName",
"place": "soundName",
"hit": "soundName",
"fall": "soundName"
}
To view current built-in sound: Sounds (NOT DONE YET)