Skip to content

Commit

Permalink
- Block culling rules
Browse files Browse the repository at this point in the history
  • Loading branch information
Xterionix committed Mar 25, 2024
1 parent 8ac57fe commit 170ffc1
Show file tree
Hide file tree
Showing 2 changed files with 110 additions and 0 deletions.
9 changes: 9 additions & 0 deletions source/general/block_culling/identifier.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
{
"$id": "blockception.minecraft.block_culling.identifier",
"description": "The minecraft block culling rule identifier.",
"examples": ["namespace:rule"],
"pattern": "^[0-9a-zA-Z:_\\.\\-]+$",
"title": "Block Culling Rule Identifier",
"type": "string",
"defaultSnippets": [{ "label": "New Identifier", "body": "$1:$2" }]
}
101 changes: 101 additions & 0 deletions source/resource/block_culling/block_culling.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,101 @@
{
"$schema": "http://json-schema.org/draft-07/schema",
"$id": "blockception.minecraft.resource.block_culling",
"title": "Block Culling",
"description": "A resource pack file that helps the system determine how to change the appearance of this block.",
"type": "object",
"additionalProperties": false,
"properties": {
"format_version": { "$ref": "../../general/format_version.json" },
"minecraft:block_culling_rules": {
"title": "Block Culling Rules",
"description": "JSON container used for descriptions, especially the identifier for the name of the culled version of the block.",
"type": "object",
"additionalProperties": false,
"properties": {
"description": {
"title": "Description",
"description": "Contains the identifier used by minecraft:geometry block components to refer to this culling data",
"type": "object",
"additionalProperties": false,
"properties": {
"identifier": {
"$ref": "../../general/block_culling/identifier.json",
"description": "Sets the identifier for this rule's description.",
"title": "Identifier"
}
}
},
"rules": {
"title": "Rules",
"description": "List of all components used to identify geometry parts used in culling.",
"type": "array",
"minItems": 1,
"items": {
"$ref": "#/definitions/rule"
}
}
}
}
},
"definitions": {
"rule": {
"title": "Rule",
"description": "The rules that specifies a \"geometry_part\" and \"direction\"",
"type": "object",
"additionalProperties": false,
"properties": {
"geometry_part": {
"title": "Geometry Part",
"description": "Specifies the bone, cube, and face that the block will be culled. The cube and face fields are optional to allow culling a specific face. Omitting these fields will cull the whole bone.",
"type": "object",
"additionalProperties": false,
"properties": {
"bone": {
"title": "Bone",
"description": "The bone within the geometry part",
"type": "string"
},
"cube": {
"title": "Cube",
"description": "The cube within the geometry part",
"type": "integer",
"minimum": 0
},
"face": {
"title": "Face",
"description": "The face within the geometry part",
"type": "string",
"enum": ["up", "down", "north", "south", "east", "west"]
}
}
},
"direction": {
"title": "Direction",
"description": "Specifies the direction of the neighbor block to check for culling. This direction rotates with a block's Transform component.",
"type": "string",
"enum": ["up", "down", "north", "south", "east", "west"] //TODO: Check if "side" and "all" work here too
}
}
}
},
"examples": [
{
"format_version": "1.20.60",
"minecraft:block_culling_rules": {
"description": {
"identifier": ":"
},
"rules": [
{
"part": {
"bone": "",
"cube": 0,
"face": ""
}
}
]
}
}
]
}

0 comments on commit 170ffc1

Please sign in to comment.