When Minecraft compiles the resource pack all textures will be merged with the vanilla textures. However unlike textures, Minecraft will merge all objects that are the first children of the namespace.
terms:
renderer: a hardcoded renderer
label: text to be displayed
image: an image to be displayed
button: a button
panel: an object containing renders, labels, or images
stack_panel: it's a panel that stacks its children objects (horizontal or vertical based on orientation property)
reference: copies the properties of an object (object@namespace.object to be referenced) or (object@object to be referenced)
controls: the children of an object
property: a property that the given object has ( "property_name": "some data" )
variable: a variable, can store any type of data ($var_name)
bindings: a way to override properties of an object
property bag:
namespace: the name for a file to be referenced as
the vanilla UI is usually layed out something like this (however will probably cross namespaces):
{
"namespace": "example_namespace",
"button_def": {
"type": "button",
...
},
"image_def":{
"type": "image",
"size": [ "100%", "100%" ],
"texture": "textures/ui/image"
},
"button_panel@example_namespace.button_def": {
...
},
"stack_panel_example": {
"type": "stack_panel",
"controls": [
{
"button_panel@example_namespace.button_panel": {},
},
{
"image_def@example_namespace.image_def": {}
}
},
...
},
"base_screen": {
"$screen_content": "namespace.stack_panel_example"
}
}