From 35d991b6f2f59ffc8a5b0a4388af0efba3543ff8 Mon Sep 17 00:00:00 2001 From: "max." Date: Sat, 8 Nov 2025 14:29:43 +0100 Subject: [PATCH 1/9] a tiny bit of components --- wiki/concepts/data-components/melon.png | Bin 0 -> 41584 bytes wiki/concepts/data-components/page.kubedoc | 20 ++++++++++++++++++++ wiki/concepts/nbt-data/page.kubedoc | 1 + 3 files changed, 21 insertions(+) create mode 100644 wiki/concepts/data-components/melon.png diff --git a/wiki/concepts/data-components/melon.png b/wiki/concepts/data-components/melon.png new file mode 100644 index 0000000000000000000000000000000000000000..0cc7741ae312316b76fd9ff7143ff3295a91b24c GIT binary patch literal 41584 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 Y1N}3B-KQ%DBLDyZ07*qoM6N<$f}mzd8~^|S literal 0 HcmV?d00001 diff --git a/wiki/concepts/data-components/page.kubedoc b/wiki/concepts/data-components/page.kubedoc index a6548659..dd0db5f1 100644 --- a/wiki/concepts/data-components/page.kubedoc +++ b/wiki/concepts/data-components/page.kubedoc @@ -1,5 +1,25 @@ +Data components are a way to attach additional data to certain kinds of content like [[/concepts/item-stack|Items]] and [[/concepts/fluid-stack|Fluids]]. They were introduced in Minecraft 1.20.5 and replace the previously used concept of [NBT Tags for data](/concepts/nbt-data), and are well supported by KubeJS as well. + +Components are used for both dynamic data like enchantments, display names, and tool damage, as well as some data that previously used to be baked into the item definition itself, such as max stack size, tool durability, and even food data, which means you can now for example make *any* item edible using components. + +# Component Format + WIP! +## Getting data components + +The easiest way to find out how a component is encoded (other than looking at its codec in the source code) is by using the [[/tutorials/hand|`/kubejs hand`]] command, which will show you the components the item has attached to it after the item ID. For example, this melon slice with custom lore and food components: + +![[melon.png]] + +would give you the string representation `minecraft:melon_slice[food={can_always_eat:1b,nutrition:3,saturation:1.0f},lore=['"hey lois look at me i have custom lore text nyehehehehe"']]`, where the components are represented by the values inside the outermost square brackets. (Also note that for a single item, this is the exact same syntax used by the `/give` command!) + +## Setting data components + +### Component Functions + +### Setting arbitrary components + # Further Reading - [Minecraft Wiki: Data Component format](https://minecraft.wiki/w/Data_component_format) - [Data Components | NeoForged docs](https://docs.neoforged.net/docs/1.21.1/items/datacomponents) diff --git a/wiki/concepts/nbt-data/page.kubedoc b/wiki/concepts/nbt-data/page.kubedoc index 20705b35..df2708f7 100644 --- a/wiki/concepts/nbt-data/page.kubedoc +++ b/wiki/concepts/nbt-data/page.kubedoc @@ -2,4 +2,5 @@ WIP! # Further Reading - [Minecraft Wiki: Item format (before 1.20.5)](https://minecraft.wiki/w/Item_format/Before_1.20.5) +- [Minecraft Wiki: NBT format](https://minecraft.wiki/w/NBT_format) - [Data Components](/concepts/data-components), which are instead used in most places in 1.21 and above \ No newline at end of file From 3f72f5f4ddab01014fc2cfe5cc6a0c72cf1bcad7 Mon Sep 17 00:00:00 2001 From: "max." Date: Sun, 9 Nov 2025 02:03:23 +0100 Subject: [PATCH 2/9] a slightly bigger bit of components --- wiki/concepts/data-components/page.kubedoc | 21 ++++++++++++++++++--- 1 file changed, 18 insertions(+), 3 deletions(-) diff --git a/wiki/concepts/data-components/page.kubedoc b/wiki/concepts/data-components/page.kubedoc index dd0db5f1..c3e991ba 100644 --- a/wiki/concepts/data-components/page.kubedoc +++ b/wiki/concepts/data-components/page.kubedoc @@ -4,7 +4,14 @@ Components are used for both dynamic data like enchantments, display names, and # Component Format -WIP! +There are three types of data structures built around components that are each used in different parts of Minecraft: + +- **Data Component Maps** represent *all* the data attached to an element, containing both the "prototype" (i.e., its default components) and any custom components added on top of that. +- **Data Component Patches** are a set of *changes* applied on top of an existing map of components, such as an element's prototype; they can be used to either set (i.e., add or override existing) values or **remove** existing values from a component map. +- Finally, **Data Component Predicates** are filters over the component map of an item that may ask for a certain set of components with specific values to be present. (They may also be represented by the map of components that they need to contain) + +## WIP: Parsing Components +(TL;DR - can be parsed from map, from string, or (recommended) using a builder) ## Getting data components @@ -14,11 +21,19 @@ The easiest way to find out how a component is encoded (other than looking at it would give you the string representation `minecraft:melon_slice[food={can_always_eat:1b,nutrition:3,saturation:1.0f},lore=['"hey lois look at me i have custom lore text nyehehehehe"']]`, where the components are represented by the values inside the outermost square brackets. (Also note that for a single item, this is the exact same syntax used by the `/give` command!) +Additionally, if you have access to an object within that is a component holder, you can use `obj.componentMap` to retrieve its component map, as well as `obj.get(type)` to get the component value for a specific data component type (or `null` if undefined). + ## Setting data components -### Component Functions +In KubeJS, updating the data components of a supported object can be done in two ways, the first of which is taking an entire component map or patch and applying it to the object using `obj.set(componentsMap)` and `obj.patch(componentsPatch)` respectively. This will override all specified components with the supplied values. Additionally, `obj.resetComponents()` will restore an object's components to its original prototype, removing any patches added. + +Alternatively, you may also choose to only override single components, which can be done using the methods `obj.set(type, value)`, `obj.remove(type)` and `obj.override(type, value?)` (which sets if value is defined, and removes otherwise). Note that "removing" a component in this case means **overriding** its value with null, **not** resetting it to its prototype value! + +### Common Component Functions +WIP! (TODO: paste common functions here and briefly explain) -### Setting arbitrary components +### Item Component Functions +WIP! (see above) # Further Reading - [Minecraft Wiki: Data Component format](https://minecraft.wiki/w/Data_component_format) From 392faa6da1ae903cbf2e28827e56d6e1615d28fd Mon Sep 17 00:00:00 2001 From: "max." Date: Sun, 9 Nov 2025 20:16:32 +0100 Subject: [PATCH 3/9] now THAT's what you call working around a bug with STYLE --- wiki/concepts/data-components/page.kubedoc | 25 +++++++++++++++++++++- 1 file changed, 24 insertions(+), 1 deletion(-) diff --git a/wiki/concepts/data-components/page.kubedoc b/wiki/concepts/data-components/page.kubedoc index c3e991ba..c6455923 100644 --- a/wiki/concepts/data-components/page.kubedoc +++ b/wiki/concepts/data-components/page.kubedoc @@ -19,10 +19,33 @@ The easiest way to find out how a component is encoded (other than looking at it ![[melon.png]] -would give you the string representation `minecraft:melon_slice[food={can_always_eat:1b,nutrition:3,saturation:1.0f},lore=['"hey lois look at me i have custom lore text nyehehehehe"']]`, where the components are represented by the values inside the outermost square brackets. (Also note that for a single item, this is the exact same syntax used by the `/give` command!) +would give you the string representation (note: spacing and new lines added for readability): +``` +minecraft:melon_slice[ + unbreakable, + max_stack_size = 32, + lore = [ + '"hey lois look at me i have custom lore text nyehehehehe"' + ], + food = { + can_always_eat: true, + nutrition: 3, + saturation: 1.0f + } +] +``` Additionally, if you have access to an object within that is a component holder, you can use `obj.componentMap` to retrieve its component map, as well as `obj.get(type)` to get the component value for a specific data component type (or `null` if undefined). +Note that in the above representation, components are represented by the values inside the outermost square brackets, and values inside take the shape of one of four different types: + +- _Unit types_ such as `minecraft:unbreakable`, which can only be set or unset +- _Primitive types_ like booleans (`true`/`false`, also as bytes `0b` and `1b`), numbers (supported as both normal integer / decimal format and explicitly using suffixes like `f` or float), and strings (single or double-quoted) +- _Arrays_ of values (such as the `minecraft:lore` array above, which takes in a list of strings which each represent stringified component JSON) +- and finally _Maps_ (or _Records_) which in themselves can once again contain a mapping of string keys to any of these value types + +(Also note that for a single item, this is the exact same syntax used by the `/give` command!) + ## Setting data components In KubeJS, updating the data components of a supported object can be done in two ways, the first of which is taking an entire component map or patch and applying it to the object using `obj.set(componentsMap)` and `obj.patch(componentsPatch)` respectively. This will override all specified components with the supplied values. Additionally, `obj.resetComponents()` will restore an object's components to its original prototype, removing any patches added. From f5087a468dfa73d543ac8b8d996888f7219705fe Mon Sep 17 00:00:00 2001 From: "max." Date: Sun, 9 Nov 2025 20:26:39 +0100 Subject: [PATCH 4/9] oops --- wiki/concepts/data-components/page.kubedoc | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/wiki/concepts/data-components/page.kubedoc b/wiki/concepts/data-components/page.kubedoc index c6455923..fa957598 100644 --- a/wiki/concepts/data-components/page.kubedoc +++ b/wiki/concepts/data-components/page.kubedoc @@ -22,7 +22,7 @@ The easiest way to find out how a component is encoded (other than looking at it would give you the string representation (note: spacing and new lines added for readability): ``` minecraft:melon_slice[ - unbreakable, + unbreakable = {}, max_stack_size = 32, lore = [ '"hey lois look at me i have custom lore text nyehehehehe"' @@ -39,7 +39,7 @@ Additionally, if you have access to an object within that is a component holder, Note that in the above representation, components are represented by the values inside the outermost square brackets, and values inside take the shape of one of four different types: -- _Unit types_ such as `minecraft:unbreakable`, which can only be set or unset +- _Unit types_ such as `minecraft:unbreakable`, which can only be set (represented by the empty map `{}`) or unset - _Primitive types_ like booleans (`true`/`false`, also as bytes `0b` and `1b`), numbers (supported as both normal integer / decimal format and explicitly using suffixes like `f` or float), and strings (single or double-quoted) - _Arrays_ of values (such as the `minecraft:lore` array above, which takes in a list of strings which each represent stringified component JSON) - and finally _Maps_ (or _Records_) which in themselves can once again contain a mapping of string keys to any of these value types From 3fbdeeeff87fad326afd3c289006f9e71f7e4214 Mon Sep 17 00:00:00 2001 From: "max." Date: Sun, 9 Nov 2025 20:29:06 +0100 Subject: [PATCH 5/9] maybe this'll work? --- wiki/concepts/data-components/page.kubedoc | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/wiki/concepts/data-components/page.kubedoc b/wiki/concepts/data-components/page.kubedoc index fa957598..3f7d97d2 100644 --- a/wiki/concepts/data-components/page.kubedoc +++ b/wiki/concepts/data-components/page.kubedoc @@ -20,7 +20,7 @@ The easiest way to find out how a component is encoded (other than looking at it ![[melon.png]] would give you the string representation (note: spacing and new lines added for readability): -``` +```nbtt minecraft:melon_slice[ unbreakable = {}, max_stack_size = 32, @@ -39,10 +39,10 @@ Additionally, if you have access to an object within that is a component holder, Note that in the above representation, components are represented by the values inside the outermost square brackets, and values inside take the shape of one of four different types: -- _Unit types_ such as `minecraft:unbreakable`, which can only be set (represented by the empty map `{}`) or unset -- _Primitive types_ like booleans (`true`/`false`, also as bytes `0b` and `1b`), numbers (supported as both normal integer / decimal format and explicitly using suffixes like `f` or float), and strings (single or double-quoted) -- _Arrays_ of values (such as the `minecraft:lore` array above, which takes in a list of strings which each represent stringified component JSON) -- and finally _Maps_ (or _Records_) which in themselves can once again contain a mapping of string keys to any of these value types +- *Unit types* such as `minecraft:unbreakable`, which can only be set (represented by the empty map `{}`) or unset +- *Primitive types* like booleans (`true`/`false`, also as bytes `0b` and `1b`), numbers (supported as both normal integer / decimal format and explicitly using suffixes like `f` or float), and strings (single or double-quoted) +- *Arrays* of values (such as the `minecraft:lore` array above, which takes in a list of strings which each represent stringified component JSON) +- and finally *Maps* (or *Records*) which in themselves can once again contain a mapping of string keys to any of these value types (Also note that for a single item, this is the exact same syntax used by the `/give` command!) From 20eb9ec6598fe66395f56bf9a39670acb408b45d Mon Sep 17 00:00:00 2001 From: "max." Date: Sun, 9 Nov 2025 20:30:10 +0100 Subject: [PATCH 6/9] syntax highlighting question mark --- wiki/concepts/data-components/page.kubedoc | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/wiki/concepts/data-components/page.kubedoc b/wiki/concepts/data-components/page.kubedoc index 3f7d97d2..4ce0d2e7 100644 --- a/wiki/concepts/data-components/page.kubedoc +++ b/wiki/concepts/data-components/page.kubedoc @@ -20,7 +20,7 @@ The easiest way to find out how a component is encoded (other than looking at it ![[melon.png]] would give you the string representation (note: spacing and new lines added for readability): -```nbtt +```snbt minecraft:melon_slice[ unbreakable = {}, max_stack_size = 32, @@ -35,7 +35,7 @@ minecraft:melon_slice[ ] ``` -Additionally, if you have access to an object within that is a component holder, you can use `obj.componentMap` to retrieve its component map, as well as `obj.get(type)` to get the component value for a specific data component type (or `null` if undefined). +Additionally, if you have access to an object within that is a component holder, you can use `[js]obj.componentMap` to retrieve its component map, as well as `[js]obj.get(type)` to get the component value for a specific data component type (or `[js]null` if undefined). Note that in the above representation, components are represented by the values inside the outermost square brackets, and values inside take the shape of one of four different types: @@ -48,9 +48,9 @@ Note that in the above representation, components are represented by the values ## Setting data components -In KubeJS, updating the data components of a supported object can be done in two ways, the first of which is taking an entire component map or patch and applying it to the object using `obj.set(componentsMap)` and `obj.patch(componentsPatch)` respectively. This will override all specified components with the supplied values. Additionally, `obj.resetComponents()` will restore an object's components to its original prototype, removing any patches added. +In KubeJS, updating the data components of a supported object can be done in two ways, the first of which is taking an entire component map or patch and applying it to the object using `[js]obj.set(componentsMap)` and `[js]obj.patch(componentsPatch)` respectively. This will override all specified components with the supplied values. Additionally, `[js]obj.resetComponents()` will restore an object's components to its original prototype, removing any patches added. -Alternatively, you may also choose to only override single components, which can be done using the methods `obj.set(type, value)`, `obj.remove(type)` and `obj.override(type, value?)` (which sets if value is defined, and removes otherwise). Note that "removing" a component in this case means **overriding** its value with null, **not** resetting it to its prototype value! +Alternatively, you may also choose to only override single components, which can be done using the methods `[js]obj.set(type, value)`, `[js]obj.remove(type)` and `[js]obj.override(type, value?)` (which sets if value is defined, and removes otherwise). Note that "removing" a component in this case means **overriding** its value with null, **not** resetting it to its prototype value! ### Common Component Functions WIP! (TODO: paste common functions here and briefly explain) From 4e42d5444d6f533a74ed7b562e715159f4296d86 Mon Sep 17 00:00:00 2001 From: "max." Date: Fri, 14 Nov 2025 12:57:36 +0100 Subject: [PATCH 7/9] yet more components: parsing --- wiki/concepts/data-components/apple.png | Bin 0 -> 31505 bytes wiki/concepts/data-components/page.kubedoc | 37 ++++++++++++++++++--- 2 files changed, 32 insertions(+), 5 deletions(-) create mode 100644 wiki/concepts/data-components/apple.png diff --git a/wiki/concepts/data-components/apple.png b/wiki/concepts/data-components/apple.png new file mode 100644 index 0000000000000000000000000000000000000000..85a07b30b843e3ab610ec237a805561dadb72a3e GIT binary patch literal 31505 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 Z_>> success +We recommend using the builder function or JS object over the string format where possible since it is more flexible for components; for example, it allows for the lore component to be specified using the `Text` wrapper rather than as a stringified JSON: + +```js +{ + "minecraft:lore": Text.lore([ + Text.gray("I'm ").append(Text.blue("blue")), + Text.gray("da-ba-dee da-ba-die"), + Text.gray("If I was ").append(Text.green("green")).append(", I would-- HELP.") + ]) +} +``` + +which in turn would give us + +![apple.png](apple.png) +<<< + ## Setting data components In KubeJS, updating the data components of a supported object can be done in two ways, the first of which is taking an entire component map or patch and applying it to the object using `[js]obj.set(componentsMap)` and `[js]obj.patch(componentsPatch)` respectively. This will override all specified components with the supplied values. Additionally, `[js]obj.resetComponents()` will restore an object's components to its original prototype, removing any patches added. @@ -58,6 +82,9 @@ WIP! (TODO: paste common functions here and briefly explain) ### Item Component Functions WIP! (see above) +# Notes for Addon Devs +WIP! + # Further Reading - [Minecraft Wiki: Data Component format](https://minecraft.wiki/w/Data_component_format) - [Data Components | NeoForged docs](https://docs.neoforged.net/docs/1.21.1/items/datacomponents) From 067a917467042ee78b80eff1944d9c5c1ff16240 Mon Sep 17 00:00:00 2001 From: "max." Date: Fri, 14 Nov 2025 14:23:46 +0100 Subject: [PATCH 8/9] fix(?) image --- wiki/concepts/data-components/page.kubedoc | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/wiki/concepts/data-components/page.kubedoc b/wiki/concepts/data-components/page.kubedoc index d5285993..141a1d1c 100644 --- a/wiki/concepts/data-components/page.kubedoc +++ b/wiki/concepts/data-components/page.kubedoc @@ -64,10 +64,7 @@ We recommend using the builder function or JS object over the string format wher ]) } ``` - -which in turn would give us - -![apple.png](apple.png) +![[apple.png]] <<< ## Setting data components From 8226c4bb483f874fd56ac54ac7a7587578d274e8 Mon Sep 17 00:00:00 2001 From: "max." Date: Fri, 14 Nov 2025 14:25:37 +0100 Subject: [PATCH 9/9] improve phrasing and formatting --- wiki/concepts/data-components/page.kubedoc | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/wiki/concepts/data-components/page.kubedoc b/wiki/concepts/data-components/page.kubedoc index 141a1d1c..c702e6ae 100644 --- a/wiki/concepts/data-components/page.kubedoc +++ b/wiki/concepts/data-components/page.kubedoc @@ -53,14 +53,14 @@ To create component maps or patches from JavaScript, you may use one of the foll - A **function** that uses in a builder (specifically, `DataComponentMap.Builder` and `DataComponentPatch.Builder`, respectively) as its only argument, where individual components can be set using the `builder.set(type, value)` method, and in the case of component patches, marked as removed using the `builder.remove(type)` method. As above, components will be wrapped to the relevant type automatically. >>> success -We recommend using the builder function or JS object over the string format where possible since it is more flexible for components; for example, it allows for the lore component to be specified using the `Text` wrapper rather than as a stringified JSON: +We recommend using the builder function or JS object over the string format when writing component maps yourself since it offers a lot more flexibility; for example, it allows for the lore component to be specified using the `Text` wrapper rather than as a stringified JSON: ```js { "minecraft:lore": Text.lore([ Text.gray("I'm ").append(Text.blue("blue")), Text.gray("da-ba-dee da-ba-die"), - Text.gray("If I was ").append(Text.green("green")).append(", I would-- HELP.") + Text.gray("If I was ").append("§agreen").append(", I would-- oh no.") ]) } ```