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.
Package Location
Section titled “Package Location”com.hypixel.hytale.builtin.blockphysics.*
Support Configuration
Section titled “Support Configuration”The support system uses two JSON keys: Support (what this block requires from neighbors) and Supporting (what this block provides to neighbors).
{ "Id": "MyPlugin_HangingLantern", "Support": { "Up": [{ "FaceType": "Full" }] }, "SupportDropType": "Break"}This lantern requires Full support from above and breaks if that support is removed.
Support (Required Support)
Section titled “Support (Required Support)”Defines what support this block needs from neighbors. Each face maps to an array of RequiredBlockFaceSupport objects:
{ "Support": { "Down": [{ "FaceType": "Full" }], "Up": [{ "FaceType": "Full" }] }}Individual faces use BlockFace enum names. You can also use merged face shortcuts.
| Face | Description |
|---|---|
Up | Block above |
Down | Block below |
North | Block to the north |
East | Block to the east |
South | Block to the south |
West | Block to the west |
Diagonal faces like UpNorth, DownEast, NorthWest, etc. are also available.
| Shortcut | Expands To |
|---|---|
All | All 26 neighbor faces |
BlockSides | Up, Down, North, East, South, West |
CardinalDirections | North, East, South, West |
Horizontal | All 8 horizontal neighbors |
UpCardinalDirections | UpNorth, UpEast, UpSouth, UpWest |
DownCardinalDirections | DownNorth, DownEast, DownSouth, DownWest |
RequiredBlockFaceSupport Properties
Section titled “RequiredBlockFaceSupport Properties”Each entry in the support array can have these fields:
| Property | Type | Default | Description |
|---|---|---|---|
FaceType | string | — | Face type to match against neighbor’s Supporting (commonly "Full") |
SelfFaceType | string | — | Match against this block’s own supporting face type |
BlockSetId | string | — | Only satisfied by blocks in this block set |
BlockTypeId | string | — | Only satisfied by this specific block type |
FluidId | string | — | Only satisfied by this fluid |
TagId | string | — | Only satisfied by blocks with this tag |
MatchSelf | enum | Ignored | Whether neighbor must be same block type (Ignored, Required, Disallowed) |
Support | enum | Required | How this requirement is evaluated (Ignored, Required, Disallowed) |
AllowSupportPropagation | boolean | true | Allow support distance propagation through this face |
Rotate | boolean | true | Whether this requirement rotates with the block |
Filler | Vector3i[] | — | Specific filler positions this applies to |
Supporting (Provided Support)
Section titled “Supporting (Provided Support)”Defines what support this block provides to neighbors. Each face maps to an array of BlockFaceSupport objects:
{ "Supporting": { "Up": [{ "FaceType": "Full" }], "North": [{ "FaceType": "Full" }], "South": [{ "FaceType": "Full" }], "East": [{ "FaceType": "Full" }], "West": [{ "FaceType": "Full" }] }}BlockFaceSupport Properties
Section titled “BlockFaceSupport Properties”| Property | Type | Default | Description |
|---|---|---|---|
FaceType | string | "Full" | The support type this face provides (matched against FaceType in Support) |
Filler | Vector3i[] | — | Specific filler positions that provide this support |
SupportDropType
Section titled “SupportDropType”Determines what happens when a block loses required support:
| Value | Description |
|---|---|
Break | Block is removed and drops as an item |
Destroy | Block is destroyed (removed with no item drop) |
{ "Id": "Torch", "Support": { "Down": [{ "FaceType": "Full" }] }, "SupportDropType": "Break"}{ "Id": "IceDecoration", "Support": { "Down": [{ "FaceType": "Full" }] }, "SupportDropType": "Destroy"}Advanced Support Properties
Section titled “Advanced Support Properties”MaxSupportDistance
Section titled “MaxSupportDistance”Maximum distance support can propagate (for chains, vines, etc.):
{ "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.
SupportsRequiredFor
Section titled “SupportsRequiredFor”Controls whether any or all support face requirements must be satisfied:
{ "SupportsRequiredFor": "Any"}| Value | Description |
|---|---|
Any | At least one support requirement must be met |
All | Every support requirement must be met |
Defaults to All.
IgnoreSupportWhenPlaced
Section titled “IgnoreSupportWhenPlaced”Skip support validation when the block is first placed:
{ "IgnoreSupportWhenPlaced": true}Useful for decorative blocks placed by world generation that might not have proper support at placement time.
Complete Example
Section titled “Complete Example”{ "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
Fullsupport from at least one horizontal neighbor (using theCardinalDirectionsshortcut andSupportsRequiredFor: Any) - Provides
Fullsupport to blocks placed on top - Drops as an item if all surrounding walls are removed
Related
Section titled “Related”- Block Types — BlockType properties
- Block Events — React to physics changes