Minecraft:Number provider: Difference between revisions
More actions
Sync: updated from Minecraft |
Sync: updated from Minecraft |
||
| Line 4: | Line 4: | ||
{{Update|[[Minecraft:Java Edition 26.3 Pre-Release 1]]}} | {{Update|[[Minecraft:Java Edition 26.3 Pre-Release 1]]}} | ||
{{wip|Add history, better specify the uses, talk about how it depends on the [[Minecraft:loot context]] and how each use defines the context.}} | {{wip|Add history, better specify the uses, talk about how it depends on the [[Minecraft:loot context]] and how each use defines the context.}} | ||
A '''number provider''' is a data structure used to provide a number, which can be | A '''number provider''' or '''context number provider''' is a data structure used to provide a number, which can be a constant, a random number within a certain distribution, or read from [[Minecraft:scores]] or [[Minecraft:storage]] etc., and mathematical operations or conditional dispatches can be applied. Number providers are used in [[Minecraft:loot table]]s, [[Minecraft:predicate]]s, [[Minecraft:item modifiers]], [[Minecraft:Villager_trade_definition|villager trade]], [[Minecraft:trade sets]], the {{cmd|compute}} command, the {{cd|compute}} operation in the {{cmd|data modify}} command, and by reference in data components ({{DCL|compostable}}, {{DCL|cooking_fuel}}, and {{DCL|brewing_fuel}}). | ||
== JSON definition == | == JSON definition == | ||
| Line 21: | Line 21: | ||
== Use == | == Use == | ||
Number providers | Number providers can be written in-line in [[Minecraft:loot table]]s, [[Minecraft:predicate]]s, [[Minecraft:item modifiers]], [[Minecraft:Villager_trade_definition|villager trade]], and [[Minecraft:trade sets]]. | ||
They can additionally be registered by a data pack from the {{cd|context_float_provider}} or {{cd|context_int_provider}} [[Minecraft:registry]], and referenced using a [[Minecraft:namespaced identifier]]. References to registered number providers can be used in data components, such as {{DCL|compostable}}, {{DCL|brewing_fuel}} and {{DCL|cooking_fuel}}. Only a constant or [[Minecraft:namespaced identifier]] may be used here, not inline definitions, due to the data structure only being understood server-side. | |||
Number providers can additionally be used in-line or by reference in {{cmd|compute}} and {{cmd|data modify}} to perform operations on data in scoreboards and storage. This is the only way to perform floating-point mathematics with commands. | |||
=== Vanilla context_float_provider registries === | === Vanilla context_float_provider registries === | ||
Revision as of 11:11, 10 October 2026
Template:For Template:Exclusive Template:Update Template:Wip A number provider or context number provider is a data structure used to provide a number, which can be a constant, a random number within a certain distribution, or read from Minecraft:scores or Minecraft:storage etc., and mathematical operations or conditional dispatches can be applied. Number providers are used in Minecraft:loot tables, Minecraft:predicates, Minecraft:item modifiers, villager trade, Minecraft:trade sets, the Template:Cmd command, the Template:Cd operation in the Template:Cmd command, and by reference in data components (Template:DCL, Template:DCL, and Template:DCL).
JSON definition
Use
Number providers can be written in-line in Minecraft:loot tables, Minecraft:predicates, Minecraft:item modifiers, villager trade, and Minecraft:trade sets.
They can additionally be registered by a data pack from the Template:Cd or Template:Cd Minecraft:registry, and referenced using a Minecraft:namespaced identifier. References to registered number providers can be used in data components, such as Template:DCL, Template:DCL and Template:DCL. Only a constant or Minecraft:namespaced identifier may be used here, not inline definitions, due to the data structure only being understood server-side.
Number providers can additionally be used in-line or by reference in Template:Cmd and Template:Cmd to perform operations on data in scoreboards and storage. This is the only way to perform floating-point mathematics with commands.
Vanilla context_float_provider registries
These are registry context_float_providers used in the vanilla Minecraft:data pack
Template:File: Number providers used in the default component Template:Data component link:Template:JSON fileTemplate:File: Number providers used in the default component Template:Data component link Template:JSON fileTemplate:JSON fileTemplate:JSON file/cooking
Vanilla context_int_provider registries
These are registry context_int_providers used in the vanilla Minecraft:data pack.
Template:File: Number providers used in the default component Template:Data component link:Template:JSON file
Template:File: Number providers used in the default component Template:DCL: Template:JSON file Template:JSON file Template:JSON file Template:JSON fileTemplate:JSON fileTemplate:File: Number providers used in the default component Template:DCL:Template:JSON fileTemplate:JSON fileTemplate:JSON fileTemplate:JSON fileTemplate:JSON fileTemplate:JSON fileTemplate:JSON fileTemplate:JSON fileTemplate:JSON fileTemplate:JSON fileTemplate:JSON fileTemplate:JSON fileTemplate:JSON fileTemplate:JSON fileTemplate:JSON fileTemplate:JSON fileTemplate:JSON fileTemplate:JSON file Template:JSON file Template:JSON fileSee Template:Slink for a list of items that use such number providers in the component Template:Cd by default.
Format
Template:UpdateTemplate:Incomplete section A a number provider can be an Template:Nbt or Template:Nbt. They can either be defined as a constant value or as an object.
- Template:Nbt: Constant number provider.
Or:
- Template:Nbt: The root tag. Shorthand for a uniform distributionTemplate:Until.
- Template:NbtTemplate:Nbt: Number provider. The minimum value.
- Template:NbtTemplate:Nbt: Number provider. The maximum value.
Or:
- Template:Nbt: Namespaced ID pointing to an element of number provider Minecraft:registry. See Template:Slink.
Or:
- Template:Nbt: The root tag.
- Template:Nbt: The number provider type as a Minecraft:resource location. .
- Extra fields of the number provider, described below.
Number providers types
Template:Past Each type of number provider specifies the rules by which the number will be provided. To do this, they use associated extra contents, which function differently for each type.
The type values can omit or include the namespace Template:Cd, for example using the type Template:Cd or Template:Cd has the same effect.
Number provider types can not be customized via data packs.
Each type has two ways to get a number: an Minecraft:integer or a Minecraft:float.
Integer Providers
These can be used in Template:Cd
Abs
Returns the absolute value of the input.
- Template:Nbt
- Template:Nbt: Template:Cd
- Template:NbtTemplate:Nbt: The number to take the absolute value of
Avg
The mean of all inputs. Note this rounds towards 0.
- Template:Nbt
- Template:Nbt: Template:Cd
- Template:Nbt: The numbers to take the mean of
Binomial
A random number following a binomial distribution. The returned float has the same value as the int.
- Template:Nbt
- Template:Nbt: Template:Cd
- Template:NbtTemplate:NbtTemplate:Nbt: Number provider. The amount of trials.
- Template:NbtTemplate:NbtTemplate:Nbt: Number provider. The probability of success on an individual trial.
Conditional
Returns the value from Template:NbtTemplate:NbtTemplate:Nbt if its Template:NbtTemplate:Nbt is met or Template:NbtTemplate:NbtTemplate:Nbt if not.
- Template:Nbt
- Template:Nbt: Template:Cd
- Template:NbtTemplate:Nbt: A Minecraft:predicate to test which value will be returned.
- Template:NbtTemplate:NbtTemplate:Nbt: A number provider, which runs if the Template:NbtTemplate:Nbt is met.
- Template:NbtTemplate:NbtTemplate:Nbt: (Optional. Default Template:Cd) A number provider, which runs if the Template:NbtTemplate:Nbt is not met.
Constant
A constant value.
- Template:Nbt
- Template:Nbt: Template:Cd
- Template:Nbt: The exact value.
Sub
Subtracts Template:NbtTemplate:NbtTemplate:Nbt from Template:NbtTemplate:NbtTemplate:Nbt and then returns that value
- Template:Nbt
- Template:Nbt: Template:Cd
- Template:NbtTemplate:NbtTemplate:Nbt: The left of the equation
- Template:NbtTemplate:NbtTemplate:Nbt: The right of the equation
Uniform
A random number following a uniform distribution between two values. The values are inclusive, meaning the provided number can be either Template:Cd or Template:Cd, except if the provided number is a float, in which case it must be strictly less than Template:Cd. If Template:Cd ≤ Template:Cd, the provided number is Template:Cd.
- Template:Nbt
- Template:Nbt: Template:Cd
- Template:PastTemplate:Nbt: Number provider. The minimum value (Template:Cd).
- Template:PastTemplate:Nbt: Number provider. The maximum value (Template:Cd).
Score
To query and use a Minecraft:scoreboard value.
- Template:Nbt
- Template:Nbt: Template:Cd
- Template:NbtTemplate:Nbt: To choose which player name or entity UUID to query. (Must be an object unless specifying an entity from loot context using the same options as Template:Nbt)
- Template:Nbt: Set to Template:Cd to manually specify a player name or UUID. Set to Template:Cd to use an entity from loot context.
- Template:Nbt: Included only if Template:Nbt is set to Template:Cd. Specifies the name of the player, or the entity's UUID (in hypenated hexadecimal format) whose score to query.
- Template:Nbt: Included only if Template:Nbt is set to Template:Cd. Specifies an entity from loot context to query the score of. Can be Template:Loot entity target
- Template:Nbt: The scoreboard objective to query on the selected player name or UUID.
- Template:PastTemplate:Nbt: (Optional. Default Template:Code) The value to return if Template:Nbt or Template:Nbt do not exist.
Storage
A value in Minecraft:command storage.
- Template:Nbt
- Template:Nbt: Template:Cd
- Template:Nbt: The Minecraft:resource location of the storage.
- Template:Nbt: The Minecraft:nbt path to the field in storage.
- Template:PastTemplate:Nbt: (Optional. Default Template:Code) The value to return if Template:Nbt or Template:Nbt do not exist.
Enchantment level
A value dependent on the level of the Minecraft:loot context enchantment.
- Template:Nbt
- Template:Nbt: Template:Cd
- Template:Nbt: Minecraft:Level-based value calculating the value based on the enchantment.
Add
The sum of multiple value providers
- Template:Nbt
- Template:Nbt: Template:Cd
- Template:Nbt: List of number providers to sum.
Mul
The product of the multiplication of multiple value providers
- Template:Nbt
- Template:Nbt: Template:Cd
- Template:Nbt: List of number providers to multiply.
Min
The minimum of multiple value providers
- Template:Nbt
- Template:Nbt: Template:Cd
- Template:Nbt: List of number providers to compare.
Max
The maximum of multiple value providers
- Template:Nbt
- Template:Nbt: Template:Cd
- Template:Nbt: List of number providers to compare.
Average
The average of multiple value providers
- Template:Nbt
- Template:Nbt: Template:Cd
- Template:Nbt: List of number providers to average.
Environment attribute
Fetches and provides the value of an Minecraft:environment attribute (that can be represented as a number).
This provider requires a context with an origin position set as long as the environment attribute can vary positionally.
- Template:Nbt
- Template:Nbt: Template:Cd
- Template:Nbt: An environment attribute ID to fetch.
Number dispatcher
Returns the first case which fulfills its condition or the default if none do.
- Template:Nbt
- Template:Nbt: Template:Cd
- Template:Nbt: A list of cases in the order that the dispatcher will try to execute them.
- Template:Nbt: A single case:
- Template:NbtTemplate:Nbt: A Minecraft:predicate to be tested in this case.
- Template:PastTemplate:Nbt: A number provider, which is executed if the Template:NbtTemplate:Nbt is met.
- Template:Nbt: A single case:
- Template:PastTemplate:Nbt: (Optional. Default Template:Cd) A number provider, which runs if none of the conditions in Template:Nbt are met.
Weighted list
Returns a value from a distribution of weighted number providers.
- Template:Nbt
- Template:Nbt: Template:Cd
- Template:Nbt: Returns a value from a distribution of weighted number providers.
- Template:Nbt: A single weighted number provider:
- Template:PastTemplate:Nbt: A number provider, which is executed if the weighted number provider is chosen.
- Template:Nbt: A positive integer. Determines how often this weighted number provider is chosen out of all data in the distribution. Weighted number provider with higher weights are used more often. The chance of an weighted number provider being chosen is [this weighted number provider's weight ÷ total weight of all weighted number provider in the distribution].
- Template:Nbt: A single weighted number provider:
History
Minecraft:de:Zahlenanbieter Minecraft:fr:Fournisseur de nombre Minecraft:ja:ナンバープロバイダー Minecraft:lzh:供值器 Minecraft:zh:数值提供器