Skip to content

Block Physics

The block physics system handles support requirements and physical behavior of blocks in the world. Blocks can require support from neighboring blocks and provide support to others — when those requirements aren’t met, the block either breaks or gets destroyed.

com.hypixel.hytale.builtin.blockphysics.*

The support system uses two JSON keys: Support (what this block requires from neighbors) and Supporting (what this block provides to neighbors).

Block with support requirements
{
"Id": "MyPlugin_HangingLantern",
"Support": {
"Up": [{ "FaceType": "Full" }]
},
"SupportDropType": "Break"
}

This lantern requires Full support from above and breaks if that support is removed.

Defines what support this block needs from neighbors. Each face maps to an array of RequiredBlockFaceSupport objects:

Support requirements
{
"Support": {
"Down": [{ "FaceType": "Full" }],
"Up": [{ "FaceType": "Full" }]
}
}

Individual faces use BlockFace enum names. You can also use merged face shortcuts.

FaceDescription
UpBlock above
DownBlock below
NorthBlock to the north
EastBlock to the east
SouthBlock to the south
WestBlock to the west

Diagonal faces like UpNorth, DownEast, NorthWest, etc. are also available.

ShortcutExpands To
AllAll 26 neighbor faces
BlockSidesUp, Down, North, East, South, West
CardinalDirectionsNorth, East, South, West
HorizontalAll 8 horizontal neighbors
UpCardinalDirectionsUpNorth, UpEast, UpSouth, UpWest
DownCardinalDirectionsDownNorth, DownEast, DownSouth, DownWest

Each entry in the support array can have these fields:

PropertyTypeDefaultDescription
FaceTypestringFace type to match against neighbor’s Supporting (commonly "Full")
SelfFaceTypestringMatch against this block’s own supporting face type
BlockSetIdstringOnly satisfied by blocks in this block set
BlockTypeIdstringOnly satisfied by this specific block type
FluidIdstringOnly satisfied by this fluid
TagIdstringOnly satisfied by blocks with this tag
MatchSelfenumIgnoredWhether neighbor must be same block type (Ignored, Required, Disallowed)
SupportenumRequiredHow this requirement is evaluated (Ignored, Required, Disallowed)
AllowSupportPropagationbooleantrueAllow support distance propagation through this face
RotatebooleantrueWhether this requirement rotates with the block
FillerVector3i[]Specific filler positions this applies to

Defines what support this block provides to neighbors. Each face maps to an array of BlockFaceSupport objects:

Support provided to neighbors
{
"Supporting": {
"Up": [{ "FaceType": "Full" }],
"North": [{ "FaceType": "Full" }],
"South": [{ "FaceType": "Full" }],
"East": [{ "FaceType": "Full" }],
"West": [{ "FaceType": "Full" }]
}
}
PropertyTypeDefaultDescription
FaceTypestring"Full"The support type this face provides (matched against FaceType in Support)
FillerVector3i[]Specific filler positions that provide this support

Determines what happens when a block loses required support:

ValueDescription
BreakBlock is removed and drops as an item
DestroyBlock is destroyed (removed with no item drop)
Drops as item when unsupported
{
"Id": "Torch",
"Support": {
"Down": [{ "FaceType": "Full" }]
},
"SupportDropType": "Break"
}

Maximum distance support can propagate (for chains, vines, etc.):

Support distance
{
"MaxSupportDistance": 5
}

Range: 0-14 blocks. When set, support propagates through connected blocks up to this distance. A block at the end of the chain that exceeds this distance loses support.

Controls whether any or all support face requirements must be satisfied:

Support requirement mode
{
"SupportsRequiredFor": "Any"
}
ValueDescription
AnyAt least one support requirement must be met
AllEvery support requirement must be met

Defaults to All.

Skip support validation when the block is first placed:

Ignore support on placement
{
"IgnoreSupportWhenPlaced": true
}

Useful for decorative blocks placed by world generation that might not have proper support at placement time.

Wall-mounted shelf block
{
"Id": "MyPlugin_WallShelf",
"DrawType": "Model",
"CustomModel": "models/shelf.blockymodel",
"Material": "Solid",
"Support": {
"CardinalDirections": [{ "FaceType": "Full" }]
},
"Supporting": {
"Up": [{ "FaceType": "Full" }]
},
"SupportDropType": "Break",
"SupportsRequiredFor": "Any"
}

This shelf:

  • Needs Full support from at least one horizontal neighbor (using the CardinalDirections shortcut and SupportsRequiredFor: Any)
  • Provides Full support to blocks placed on top
  • Drops as an item if all surrounding walls are removed