(Java Minecraft 1.14) How to set the probability of nested entries in a loot table?My arrows aren't being executed at by a looping function/command blockPrevent functions from showing in autofill command windowWhere do I place block loot table in 1.14 data pack?How do I add a loot table to an item in a loot table in minecraft?How to run a command (using /execute) based on a player having 7 or more xp points in Minecraft?(Java Minecraft 1.14) How to /give a written book?(Java Minecraft 1.14) Was the Levels:n beacon tag removed/altered?(Minecraft Java 1.14) CanPlaceOn tag not working(Java Minecraft 1.14) how to access a written book's contents?(Java Minecraft 1.14) Datapack scoreboard timer optimization?
Can I shorten this filter, that finds disk sizes over 100G?
Does the use of a new concept require a prior definition?
How do I safety check that there is no light in Darkroom / Darkbag?
Export economy of Mars
Deflecting lasers with lightsabers
Pre-Greek θάλασσα "thalassa" and Turkish talaz
How long should I wait to plug in my refrigerator after unplugging it?
A wiild aanimal, a cardinal direction, or a place by the water
Partial Fractions: Why does this shortcut method work?
How to get maximum number that newcount can hold?
Protect a 6 inch air hose from physical damage
Why do player start with fighting for the corners in go?
Word to describe someone doing something even though told not to
Move label of an angle in Tikz
When did J.K. Rowling decide to make Ron and Hermione a couple?
Can't understand an ACT practice problem: Triangle appears to be isosceles, why isn't the answer 7.3~ here?
How is Sword Coast North governed?
Is this popular optical illusion made of a grey-scale image with coloured lines?
Does the problem of P vs NP come under the category of Operational Research?
Can the globes from multiple castings of the Otiluke's Freezing Sphere spell be stockpiled?
How were x-ray diffraction patterns deciphered before computers?
Why interlaced CRT scanning wasn't done back and forth?
linearization of objective function
Gold Battle KoTH
(Java Minecraft 1.14) How to set the probability of nested entries in a loot table?
My arrows aren't being executed at by a looping function/command blockPrevent functions from showing in autofill command windowWhere do I place block loot table in 1.14 data pack?How do I add a loot table to an item in a loot table in minecraft?How to run a command (using /execute) based on a player having 7 or more xp points in Minecraft?(Java Minecraft 1.14) How to /give a written book?(Java Minecraft 1.14) Was the Levels:n beacon tag removed/altered?(Minecraft Java 1.14) CanPlaceOn tag not working(Java Minecraft 1.14) how to access a written book's contents?(Java Minecraft 1.14) Datapack scoreboard timer optimization?
.everyoneloves__top-leaderboard:empty,.everyoneloves__mid-leaderboard:empty,.everyoneloves__bot-mid-leaderboard:empty margin-bottom:0;
I'm trying to add a new drop, 'Dark Quartz', as a rare drop for the nether quartz ore, using a datapack. I want to replace the old loot table and add a new one, so I've copied the vanilla one out of the vanilla datapack and put it in the minecraft namespace in my datapack:
"type": "minecraft:block",
"pools": [
"rolls": 1,
"entries": [
"type": "minecraft:alternatives",
"children": [
"type": "minecraft:item",
"conditions": [
"condition": "minecraft:match_tool",
"predicate":
"enchantments": [
"enchantment": "minecraft:silk_touch",
"levels":
"min": 1
]
],
"name": "minecraft:nether_quartz_ore"
,
"type": "minecraft:item",
"functions": [
"function": "minecraft:apply_bonus",
"enchantment": "minecraft:fortune",
"formula": "minecraft:ore_drops"
,
"function": "minecraft:explosion_decay"
],
"name": "minecraft:quartz"
]
]
]
As you can see, there is one entry of the type minecraft:alternatives
. This will select one entry from a list of "children":
sub-entries. There are two sub-entries: one for if the player uses a silk touch pick, and one for if they use a pickaxe with fortune (including Fortune 0). I want to make the second entry, with the Fortune, have a 1/20 chance of additionally dropping a Dark Quartz item.
I know that to do this I can't add a third entry, because it would drop the Dark Quartz instead of the normal quartz, so therefore I need to nest two sub-sub-entries in the second sub-entry, and have the normal quartz sub-sub-entry get picked always and the other sub-sub-entry get picked 1/20 times.
This is where I'm stuck, because I don't know if nesting in this way is possible, or how to make one entry always be selected and the other be selected a certain portion of the time. Additionally, I would ideally have it where if there was no fortune on the pick, the only drop would be either quartz (19/20) or dark quartz (1/20). If there was a fortune great enough to have multiple drops, only one of the normal quartzes would have a 1/20 percent chance of being a Dark Quartz, while the rest would stay the same. However, I would be content with just getting the dark quartz to additionally be selected 5% of the time, as I originally detailed. If you need it for reference, the entry for my Dark Quartz should look something like this:
"type": "minecraft:item",
"functions": [
"function": "set_name",
"name": "text":"Dark Quartz","color":"dark_gray","italic":"false"
,
"function": "set_nbt",
"tag": "DarkQuartz:1b,CustomModelData:1"
,
"function": "minecraft:explosion_decay"
],
"name": "minecraft:quartz"
Any help is appreciated.
minecraft minecraft-datapack
add a comment |
I'm trying to add a new drop, 'Dark Quartz', as a rare drop for the nether quartz ore, using a datapack. I want to replace the old loot table and add a new one, so I've copied the vanilla one out of the vanilla datapack and put it in the minecraft namespace in my datapack:
"type": "minecraft:block",
"pools": [
"rolls": 1,
"entries": [
"type": "minecraft:alternatives",
"children": [
"type": "minecraft:item",
"conditions": [
"condition": "minecraft:match_tool",
"predicate":
"enchantments": [
"enchantment": "minecraft:silk_touch",
"levels":
"min": 1
]
],
"name": "minecraft:nether_quartz_ore"
,
"type": "minecraft:item",
"functions": [
"function": "minecraft:apply_bonus",
"enchantment": "minecraft:fortune",
"formula": "minecraft:ore_drops"
,
"function": "minecraft:explosion_decay"
],
"name": "minecraft:quartz"
]
]
]
As you can see, there is one entry of the type minecraft:alternatives
. This will select one entry from a list of "children":
sub-entries. There are two sub-entries: one for if the player uses a silk touch pick, and one for if they use a pickaxe with fortune (including Fortune 0). I want to make the second entry, with the Fortune, have a 1/20 chance of additionally dropping a Dark Quartz item.
I know that to do this I can't add a third entry, because it would drop the Dark Quartz instead of the normal quartz, so therefore I need to nest two sub-sub-entries in the second sub-entry, and have the normal quartz sub-sub-entry get picked always and the other sub-sub-entry get picked 1/20 times.
This is where I'm stuck, because I don't know if nesting in this way is possible, or how to make one entry always be selected and the other be selected a certain portion of the time. Additionally, I would ideally have it where if there was no fortune on the pick, the only drop would be either quartz (19/20) or dark quartz (1/20). If there was a fortune great enough to have multiple drops, only one of the normal quartzes would have a 1/20 percent chance of being a Dark Quartz, while the rest would stay the same. However, I would be content with just getting the dark quartz to additionally be selected 5% of the time, as I originally detailed. If you need it for reference, the entry for my Dark Quartz should look something like this:
"type": "minecraft:item",
"functions": [
"function": "set_name",
"name": "text":"Dark Quartz","color":"dark_gray","italic":"false"
,
"function": "set_nbt",
"tag": "DarkQuartz:1b,CustomModelData:1"
,
"function": "minecraft:explosion_decay"
],
"name": "minecraft:quartz"
Any help is appreciated.
minecraft minecraft-datapack
I don't know much about loot tables, but can't you do it like this?quartz OR (quartz AND dark_quartz)
You would need to either specify the regular quartz twice or include a sub-loot-table.
– Fabian Röling
6 hours ago
Oh, good tag! I should go through all old questions one day and add it when necessary.
– Fabian Röling
6 hours ago
@FabianRöling I think, in terms of the use of this tag, it should be applied to all datapack things except functions, so tags, loot_tables, advancements, structures, and recipes. minecraft-commands should be used for functions that don't use any special function behavior, but minecraft-datapack should apply when raycasting or recursion (or/schedule
) is involved. Finally, I think if anyone has a question about CustomModelData it should have minecraft-resourcepack and minecraft-datapack.
– Nik3141
5 hours ago
@FabianRöling So I don't know why I didn't think of this before, but your mention of AND reminded me of the"sequence"
type of entry, which is basically AND. Just gotta get the probability to work and I'll post the solution as an answer.
– Nik3141
4 hours ago
add a comment |
I'm trying to add a new drop, 'Dark Quartz', as a rare drop for the nether quartz ore, using a datapack. I want to replace the old loot table and add a new one, so I've copied the vanilla one out of the vanilla datapack and put it in the minecraft namespace in my datapack:
"type": "minecraft:block",
"pools": [
"rolls": 1,
"entries": [
"type": "minecraft:alternatives",
"children": [
"type": "minecraft:item",
"conditions": [
"condition": "minecraft:match_tool",
"predicate":
"enchantments": [
"enchantment": "minecraft:silk_touch",
"levels":
"min": 1
]
],
"name": "minecraft:nether_quartz_ore"
,
"type": "minecraft:item",
"functions": [
"function": "minecraft:apply_bonus",
"enchantment": "minecraft:fortune",
"formula": "minecraft:ore_drops"
,
"function": "minecraft:explosion_decay"
],
"name": "minecraft:quartz"
]
]
]
As you can see, there is one entry of the type minecraft:alternatives
. This will select one entry from a list of "children":
sub-entries. There are two sub-entries: one for if the player uses a silk touch pick, and one for if they use a pickaxe with fortune (including Fortune 0). I want to make the second entry, with the Fortune, have a 1/20 chance of additionally dropping a Dark Quartz item.
I know that to do this I can't add a third entry, because it would drop the Dark Quartz instead of the normal quartz, so therefore I need to nest two sub-sub-entries in the second sub-entry, and have the normal quartz sub-sub-entry get picked always and the other sub-sub-entry get picked 1/20 times.
This is where I'm stuck, because I don't know if nesting in this way is possible, or how to make one entry always be selected and the other be selected a certain portion of the time. Additionally, I would ideally have it where if there was no fortune on the pick, the only drop would be either quartz (19/20) or dark quartz (1/20). If there was a fortune great enough to have multiple drops, only one of the normal quartzes would have a 1/20 percent chance of being a Dark Quartz, while the rest would stay the same. However, I would be content with just getting the dark quartz to additionally be selected 5% of the time, as I originally detailed. If you need it for reference, the entry for my Dark Quartz should look something like this:
"type": "minecraft:item",
"functions": [
"function": "set_name",
"name": "text":"Dark Quartz","color":"dark_gray","italic":"false"
,
"function": "set_nbt",
"tag": "DarkQuartz:1b,CustomModelData:1"
,
"function": "minecraft:explosion_decay"
],
"name": "minecraft:quartz"
Any help is appreciated.
minecraft minecraft-datapack
I'm trying to add a new drop, 'Dark Quartz', as a rare drop for the nether quartz ore, using a datapack. I want to replace the old loot table and add a new one, so I've copied the vanilla one out of the vanilla datapack and put it in the minecraft namespace in my datapack:
"type": "minecraft:block",
"pools": [
"rolls": 1,
"entries": [
"type": "minecraft:alternatives",
"children": [
"type": "minecraft:item",
"conditions": [
"condition": "minecraft:match_tool",
"predicate":
"enchantments": [
"enchantment": "minecraft:silk_touch",
"levels":
"min": 1
]
],
"name": "minecraft:nether_quartz_ore"
,
"type": "minecraft:item",
"functions": [
"function": "minecraft:apply_bonus",
"enchantment": "minecraft:fortune",
"formula": "minecraft:ore_drops"
,
"function": "minecraft:explosion_decay"
],
"name": "minecraft:quartz"
]
]
]
As you can see, there is one entry of the type minecraft:alternatives
. This will select one entry from a list of "children":
sub-entries. There are two sub-entries: one for if the player uses a silk touch pick, and one for if they use a pickaxe with fortune (including Fortune 0). I want to make the second entry, with the Fortune, have a 1/20 chance of additionally dropping a Dark Quartz item.
I know that to do this I can't add a third entry, because it would drop the Dark Quartz instead of the normal quartz, so therefore I need to nest two sub-sub-entries in the second sub-entry, and have the normal quartz sub-sub-entry get picked always and the other sub-sub-entry get picked 1/20 times.
This is where I'm stuck, because I don't know if nesting in this way is possible, or how to make one entry always be selected and the other be selected a certain portion of the time. Additionally, I would ideally have it where if there was no fortune on the pick, the only drop would be either quartz (19/20) or dark quartz (1/20). If there was a fortune great enough to have multiple drops, only one of the normal quartzes would have a 1/20 percent chance of being a Dark Quartz, while the rest would stay the same. However, I would be content with just getting the dark quartz to additionally be selected 5% of the time, as I originally detailed. If you need it for reference, the entry for my Dark Quartz should look something like this:
"type": "minecraft:item",
"functions": [
"function": "set_name",
"name": "text":"Dark Quartz","color":"dark_gray","italic":"false"
,
"function": "set_nbt",
"tag": "DarkQuartz:1b,CustomModelData:1"
,
"function": "minecraft:explosion_decay"
],
"name": "minecraft:quartz"
Any help is appreciated.
minecraft minecraft-datapack
minecraft minecraft-datapack
edited 25 mins ago
Nik3141
asked 6 hours ago
Nik3141Nik3141
1,6824 silver badges27 bronze badges
1,6824 silver badges27 bronze badges
I don't know much about loot tables, but can't you do it like this?quartz OR (quartz AND dark_quartz)
You would need to either specify the regular quartz twice or include a sub-loot-table.
– Fabian Röling
6 hours ago
Oh, good tag! I should go through all old questions one day and add it when necessary.
– Fabian Röling
6 hours ago
@FabianRöling I think, in terms of the use of this tag, it should be applied to all datapack things except functions, so tags, loot_tables, advancements, structures, and recipes. minecraft-commands should be used for functions that don't use any special function behavior, but minecraft-datapack should apply when raycasting or recursion (or/schedule
) is involved. Finally, I think if anyone has a question about CustomModelData it should have minecraft-resourcepack and minecraft-datapack.
– Nik3141
5 hours ago
@FabianRöling So I don't know why I didn't think of this before, but your mention of AND reminded me of the"sequence"
type of entry, which is basically AND. Just gotta get the probability to work and I'll post the solution as an answer.
– Nik3141
4 hours ago
add a comment |
I don't know much about loot tables, but can't you do it like this?quartz OR (quartz AND dark_quartz)
You would need to either specify the regular quartz twice or include a sub-loot-table.
– Fabian Röling
6 hours ago
Oh, good tag! I should go through all old questions one day and add it when necessary.
– Fabian Röling
6 hours ago
@FabianRöling I think, in terms of the use of this tag, it should be applied to all datapack things except functions, so tags, loot_tables, advancements, structures, and recipes. minecraft-commands should be used for functions that don't use any special function behavior, but minecraft-datapack should apply when raycasting or recursion (or/schedule
) is involved. Finally, I think if anyone has a question about CustomModelData it should have minecraft-resourcepack and minecraft-datapack.
– Nik3141
5 hours ago
@FabianRöling So I don't know why I didn't think of this before, but your mention of AND reminded me of the"sequence"
type of entry, which is basically AND. Just gotta get the probability to work and I'll post the solution as an answer.
– Nik3141
4 hours ago
I don't know much about loot tables, but can't you do it like this?
quartz OR (quartz AND dark_quartz)
You would need to either specify the regular quartz twice or include a sub-loot-table.– Fabian Röling
6 hours ago
I don't know much about loot tables, but can't you do it like this?
quartz OR (quartz AND dark_quartz)
You would need to either specify the regular quartz twice or include a sub-loot-table.– Fabian Röling
6 hours ago
Oh, good tag! I should go through all old questions one day and add it when necessary.
– Fabian Röling
6 hours ago
Oh, good tag! I should go through all old questions one day and add it when necessary.
– Fabian Röling
6 hours ago
@FabianRöling I think, in terms of the use of this tag, it should be applied to all datapack things except functions, so tags, loot_tables, advancements, structures, and recipes. minecraft-commands should be used for functions that don't use any special function behavior, but minecraft-datapack should apply when raycasting or recursion (or
/schedule
) is involved. Finally, I think if anyone has a question about CustomModelData it should have minecraft-resourcepack and minecraft-datapack.– Nik3141
5 hours ago
@FabianRöling I think, in terms of the use of this tag, it should be applied to all datapack things except functions, so tags, loot_tables, advancements, structures, and recipes. minecraft-commands should be used for functions that don't use any special function behavior, but minecraft-datapack should apply when raycasting or recursion (or
/schedule
) is involved. Finally, I think if anyone has a question about CustomModelData it should have minecraft-resourcepack and minecraft-datapack.– Nik3141
5 hours ago
@FabianRöling So I don't know why I didn't think of this before, but your mention of AND reminded me of the
"sequence"
type of entry, which is basically AND. Just gotta get the probability to work and I'll post the solution as an answer.– Nik3141
4 hours ago
@FabianRöling So I don't know why I didn't think of this before, but your mention of AND reminded me of the
"sequence"
type of entry, which is basically AND. Just gotta get the probability to work and I'll post the solution as an answer.– Nik3141
4 hours ago
add a comment |
1 Answer
1
active
oldest
votes
Ok, so after a bit of thinking time I got it. Here is the file:
"type": "minecraft:block",
"pools": [
"rolls": 1,
"entries": [
"type": "minecraft:alternatives",
"children": [
"type": "minecraft:item",
"conditions": [
"condition": "minecraft:match_tool",
"predicate":
"enchantments": [
"enchantment": "minecraft:silk_touch",
"levels":
"min": 1
]
],
"name": "minecraft:nether_quartz_ore"
,
"type": "minecraft:sequence",
"children": [
"type": "minecraft:item",
"functions": [
"function": "minecraft:apply_bonus",
"enchantment": "minecraft:fortune",
"formula": "minecraft:ore_drops"
,
"function": "minecraft:explosion_decay"
],
"name": "minecraft:quartz"
,
"type": "minecraft:item",
"conditions": [
"condition": "random_chance",
"chance": 0.05
],
"functions": [
"function": "set_name",
"name": "text":"Dark Quartz","color":"dark_gray","italic":"false"
,
"function": "set_nbt",
"tag": "DarkQuartz:1b,CustomModelData:1"
,
"function": "minecraft:explosion_decay"
],
"name": "minecraft:quartz"
]
]
]
]
And now for an explanation:
The loot table has one pool, with one roll, meaning that only one entry will be selected. That one entry is of the type "minecraft:alternatives"
, which means that the first entry with successful conditions out of several children sub-entries will be the one choosen. There are two children pools: one for silk touch picks and one for non silk touch picks. The first is of type "minecraft:item"
, meaning it just has an item, while the second is of the type "minecraft:sequence"
, meaning it has a few sub-entries of its own. If the first is chosen, one nether quartz ore is dropped and that's the end of things. If the first is NOT chosen, we go into the second entry, which as we said earlier is a "minecraft:sequence"
type. This means that out of several children entries, items will be chosen from all entries in a row until an entry fails the conditions, at which point everything stops. We have two entries: the first with no conditions (meaning it will always give an item, provided we have not used a silk touch pick and are therefore in the "minecraft:sequence"
entry) and the second with a "random_chance"
condition (meaning it only gives an item when a randomly generated number between 0 and 1 is below the "chance"
value,in this case 0.05
). Testing shows it works: mining 20 nether quartz ores with a normal pick, I get 20 nether quartz and 1 dark quartz. With a silk touch pick I get 20 nether quartz ore, and with a fortune III pick I get 39 nether quartz and 1 dark quartz.
add a comment |
Your Answer
StackExchange.ready(function()
var channelOptions =
tags: "".split(" "),
id: "41"
;
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function()
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled)
StackExchange.using("snippets", function()
createEditor();
);
else
createEditor();
);
function createEditor()
StackExchange.prepareEditor(
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: false,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: null,
bindNavPrevention: true,
postfix: "",
imageUploader:
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
,
noCode: true, onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
);
);
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fgaming.stackexchange.com%2fquestions%2f355599%2fjava-minecraft-1-14-how-to-set-the-probability-of-nested-entries-in-a-loot-tab%23new-answer', 'question_page');
);
Post as a guest
Required, but never shown
1 Answer
1
active
oldest
votes
1 Answer
1
active
oldest
votes
active
oldest
votes
active
oldest
votes
Ok, so after a bit of thinking time I got it. Here is the file:
"type": "minecraft:block",
"pools": [
"rolls": 1,
"entries": [
"type": "minecraft:alternatives",
"children": [
"type": "minecraft:item",
"conditions": [
"condition": "minecraft:match_tool",
"predicate":
"enchantments": [
"enchantment": "minecraft:silk_touch",
"levels":
"min": 1
]
],
"name": "minecraft:nether_quartz_ore"
,
"type": "minecraft:sequence",
"children": [
"type": "minecraft:item",
"functions": [
"function": "minecraft:apply_bonus",
"enchantment": "minecraft:fortune",
"formula": "minecraft:ore_drops"
,
"function": "minecraft:explosion_decay"
],
"name": "minecraft:quartz"
,
"type": "minecraft:item",
"conditions": [
"condition": "random_chance",
"chance": 0.05
],
"functions": [
"function": "set_name",
"name": "text":"Dark Quartz","color":"dark_gray","italic":"false"
,
"function": "set_nbt",
"tag": "DarkQuartz:1b,CustomModelData:1"
,
"function": "minecraft:explosion_decay"
],
"name": "minecraft:quartz"
]
]
]
]
And now for an explanation:
The loot table has one pool, with one roll, meaning that only one entry will be selected. That one entry is of the type "minecraft:alternatives"
, which means that the first entry with successful conditions out of several children sub-entries will be the one choosen. There are two children pools: one for silk touch picks and one for non silk touch picks. The first is of type "minecraft:item"
, meaning it just has an item, while the second is of the type "minecraft:sequence"
, meaning it has a few sub-entries of its own. If the first is chosen, one nether quartz ore is dropped and that's the end of things. If the first is NOT chosen, we go into the second entry, which as we said earlier is a "minecraft:sequence"
type. This means that out of several children entries, items will be chosen from all entries in a row until an entry fails the conditions, at which point everything stops. We have two entries: the first with no conditions (meaning it will always give an item, provided we have not used a silk touch pick and are therefore in the "minecraft:sequence"
entry) and the second with a "random_chance"
condition (meaning it only gives an item when a randomly generated number between 0 and 1 is below the "chance"
value,in this case 0.05
). Testing shows it works: mining 20 nether quartz ores with a normal pick, I get 20 nether quartz and 1 dark quartz. With a silk touch pick I get 20 nether quartz ore, and with a fortune III pick I get 39 nether quartz and 1 dark quartz.
add a comment |
Ok, so after a bit of thinking time I got it. Here is the file:
"type": "minecraft:block",
"pools": [
"rolls": 1,
"entries": [
"type": "minecraft:alternatives",
"children": [
"type": "minecraft:item",
"conditions": [
"condition": "minecraft:match_tool",
"predicate":
"enchantments": [
"enchantment": "minecraft:silk_touch",
"levels":
"min": 1
]
],
"name": "minecraft:nether_quartz_ore"
,
"type": "minecraft:sequence",
"children": [
"type": "minecraft:item",
"functions": [
"function": "minecraft:apply_bonus",
"enchantment": "minecraft:fortune",
"formula": "minecraft:ore_drops"
,
"function": "minecraft:explosion_decay"
],
"name": "minecraft:quartz"
,
"type": "minecraft:item",
"conditions": [
"condition": "random_chance",
"chance": 0.05
],
"functions": [
"function": "set_name",
"name": "text":"Dark Quartz","color":"dark_gray","italic":"false"
,
"function": "set_nbt",
"tag": "DarkQuartz:1b,CustomModelData:1"
,
"function": "minecraft:explosion_decay"
],
"name": "minecraft:quartz"
]
]
]
]
And now for an explanation:
The loot table has one pool, with one roll, meaning that only one entry will be selected. That one entry is of the type "minecraft:alternatives"
, which means that the first entry with successful conditions out of several children sub-entries will be the one choosen. There are two children pools: one for silk touch picks and one for non silk touch picks. The first is of type "minecraft:item"
, meaning it just has an item, while the second is of the type "minecraft:sequence"
, meaning it has a few sub-entries of its own. If the first is chosen, one nether quartz ore is dropped and that's the end of things. If the first is NOT chosen, we go into the second entry, which as we said earlier is a "minecraft:sequence"
type. This means that out of several children entries, items will be chosen from all entries in a row until an entry fails the conditions, at which point everything stops. We have two entries: the first with no conditions (meaning it will always give an item, provided we have not used a silk touch pick and are therefore in the "minecraft:sequence"
entry) and the second with a "random_chance"
condition (meaning it only gives an item when a randomly generated number between 0 and 1 is below the "chance"
value,in this case 0.05
). Testing shows it works: mining 20 nether quartz ores with a normal pick, I get 20 nether quartz and 1 dark quartz. With a silk touch pick I get 20 nether quartz ore, and with a fortune III pick I get 39 nether quartz and 1 dark quartz.
add a comment |
Ok, so after a bit of thinking time I got it. Here is the file:
"type": "minecraft:block",
"pools": [
"rolls": 1,
"entries": [
"type": "minecraft:alternatives",
"children": [
"type": "minecraft:item",
"conditions": [
"condition": "minecraft:match_tool",
"predicate":
"enchantments": [
"enchantment": "minecraft:silk_touch",
"levels":
"min": 1
]
],
"name": "minecraft:nether_quartz_ore"
,
"type": "minecraft:sequence",
"children": [
"type": "minecraft:item",
"functions": [
"function": "minecraft:apply_bonus",
"enchantment": "minecraft:fortune",
"formula": "minecraft:ore_drops"
,
"function": "minecraft:explosion_decay"
],
"name": "minecraft:quartz"
,
"type": "minecraft:item",
"conditions": [
"condition": "random_chance",
"chance": 0.05
],
"functions": [
"function": "set_name",
"name": "text":"Dark Quartz","color":"dark_gray","italic":"false"
,
"function": "set_nbt",
"tag": "DarkQuartz:1b,CustomModelData:1"
,
"function": "minecraft:explosion_decay"
],
"name": "minecraft:quartz"
]
]
]
]
And now for an explanation:
The loot table has one pool, with one roll, meaning that only one entry will be selected. That one entry is of the type "minecraft:alternatives"
, which means that the first entry with successful conditions out of several children sub-entries will be the one choosen. There are two children pools: one for silk touch picks and one for non silk touch picks. The first is of type "minecraft:item"
, meaning it just has an item, while the second is of the type "minecraft:sequence"
, meaning it has a few sub-entries of its own. If the first is chosen, one nether quartz ore is dropped and that's the end of things. If the first is NOT chosen, we go into the second entry, which as we said earlier is a "minecraft:sequence"
type. This means that out of several children entries, items will be chosen from all entries in a row until an entry fails the conditions, at which point everything stops. We have two entries: the first with no conditions (meaning it will always give an item, provided we have not used a silk touch pick and are therefore in the "minecraft:sequence"
entry) and the second with a "random_chance"
condition (meaning it only gives an item when a randomly generated number between 0 and 1 is below the "chance"
value,in this case 0.05
). Testing shows it works: mining 20 nether quartz ores with a normal pick, I get 20 nether quartz and 1 dark quartz. With a silk touch pick I get 20 nether quartz ore, and with a fortune III pick I get 39 nether quartz and 1 dark quartz.
Ok, so after a bit of thinking time I got it. Here is the file:
"type": "minecraft:block",
"pools": [
"rolls": 1,
"entries": [
"type": "minecraft:alternatives",
"children": [
"type": "minecraft:item",
"conditions": [
"condition": "minecraft:match_tool",
"predicate":
"enchantments": [
"enchantment": "minecraft:silk_touch",
"levels":
"min": 1
]
],
"name": "minecraft:nether_quartz_ore"
,
"type": "minecraft:sequence",
"children": [
"type": "minecraft:item",
"functions": [
"function": "minecraft:apply_bonus",
"enchantment": "minecraft:fortune",
"formula": "minecraft:ore_drops"
,
"function": "minecraft:explosion_decay"
],
"name": "minecraft:quartz"
,
"type": "minecraft:item",
"conditions": [
"condition": "random_chance",
"chance": 0.05
],
"functions": [
"function": "set_name",
"name": "text":"Dark Quartz","color":"dark_gray","italic":"false"
,
"function": "set_nbt",
"tag": "DarkQuartz:1b,CustomModelData:1"
,
"function": "minecraft:explosion_decay"
],
"name": "minecraft:quartz"
]
]
]
]
And now for an explanation:
The loot table has one pool, with one roll, meaning that only one entry will be selected. That one entry is of the type "minecraft:alternatives"
, which means that the first entry with successful conditions out of several children sub-entries will be the one choosen. There are two children pools: one for silk touch picks and one for non silk touch picks. The first is of type "minecraft:item"
, meaning it just has an item, while the second is of the type "minecraft:sequence"
, meaning it has a few sub-entries of its own. If the first is chosen, one nether quartz ore is dropped and that's the end of things. If the first is NOT chosen, we go into the second entry, which as we said earlier is a "minecraft:sequence"
type. This means that out of several children entries, items will be chosen from all entries in a row until an entry fails the conditions, at which point everything stops. We have two entries: the first with no conditions (meaning it will always give an item, provided we have not used a silk touch pick and are therefore in the "minecraft:sequence"
entry) and the second with a "random_chance"
condition (meaning it only gives an item when a randomly generated number between 0 and 1 is below the "chance"
value,in this case 0.05
). Testing shows it works: mining 20 nether quartz ores with a normal pick, I get 20 nether quartz and 1 dark quartz. With a silk touch pick I get 20 nether quartz ore, and with a fortune III pick I get 39 nether quartz and 1 dark quartz.
answered 4 hours ago
Nik3141Nik3141
1,6824 silver badges27 bronze badges
1,6824 silver badges27 bronze badges
add a comment |
add a comment |
Thanks for contributing an answer to Arqade!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fgaming.stackexchange.com%2fquestions%2f355599%2fjava-minecraft-1-14-how-to-set-the-probability-of-nested-entries-in-a-loot-tab%23new-answer', 'question_page');
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
I don't know much about loot tables, but can't you do it like this?
quartz OR (quartz AND dark_quartz)
You would need to either specify the regular quartz twice or include a sub-loot-table.– Fabian Röling
6 hours ago
Oh, good tag! I should go through all old questions one day and add it when necessary.
– Fabian Röling
6 hours ago
@FabianRöling I think, in terms of the use of this tag, it should be applied to all datapack things except functions, so tags, loot_tables, advancements, structures, and recipes. minecraft-commands should be used for functions that don't use any special function behavior, but minecraft-datapack should apply when raycasting or recursion (or
/schedule
) is involved. Finally, I think if anyone has a question about CustomModelData it should have minecraft-resourcepack and minecraft-datapack.– Nik3141
5 hours ago
@FabianRöling So I don't know why I didn't think of this before, but your mention of AND reminded me of the
"sequence"
type of entry, which is basically AND. Just gotta get the probability to work and I'll post the solution as an answer.– Nik3141
4 hours ago