Jump to content

[1.11+] [SOLVED] How to refer to mod enchantments in loot tables?


Recommended Posts

Posted (edited)

Hello all--

I'd like to refer to some custom enchantments in a loot table file. I believe the enchantment ids are (or can be) regenerated between world saves and modders aren't supposed to use them but instead use the Enchantment object or a ResourceLocation for lookup.  But, I haven't found a way refer to the enchantment using a resource location and the standard 'set_nbt' function and the 'ench{}' nbt compound tag. (A dump of an itemstack's enchantment list shows ids although w/ 's' appended... like [0:{lvl:3s,id:17s},1:{lvl:2s,id:19s}])

 

Is this something I'll have to write a custom loot function for, or is there some mechanism already in place to refer to say "mymod:super_freeze_enchant" or some such thing in a loot table entry from the json? (A similar question comes to mind for potions.)

 

Note these are my custom loot tables that I've registered with LootTableList.register(new ResourceLocation(...)); not vanilla ones.

 

Thanks for any info,

The_Wabbit

Edited by The_Wabbit
Posted

I do believe you can already specify mod enchantments by adding the modid in front of the enchantment.

Don't PM me with questions. They will be ignored! Make a thread on the appropriate board for support.

 

1.12 -> 1.13 primer by williewillus.

 

1.7.10 and older versions of Minecraft are no longer supported due to it's age! Update to the latest version for support.

 

http://www.howoldisminecraft1710.today/

Posted

You can use the enchant_randomly loot function to apply a random level of an Enchantment randomly selected from the provided list of Enchantment registry names (which can be a list of a single name). If you want an exact level, you'll need to create your own LootFunction and LootFunction.Serializer implementations and use LootFunctionManager#registerFunction to register them.

 

Potion items already store their PotionType using its registry name, but custom PotionEffects are still stored using Potion IDs. There's no vanilla loot function to create potion items, you'd have to write your own if you wanted to use Potion registry names when specifying custom PotionEffects.

Please don't PM me to ask for help. Asking your question in a public thread preserves it for people who are having the same problem in the future.

Posted
Quote
18 hours ago, Choonster said:

You can use the enchant_randomly loot function to apply a random level of an Enchantment randomly selected from the provided list of Enchantment registry names (which can be a list of a single name). If you want an exact level, you'll need to create your own LootFunction and LootFunction.Serializer implementations and use LootFunctionManager#registerFunction to register them.

This is just what I need as the Enchantment reference was the important bit; the level can be randomly selected. Thank you! For others looking at this thread, this minecraftforum thread describe the function: Custom Loot Tables - Enchant Randomly

18 hours ago, Choonster said:

Potion items already store their PotionType using its registry name, but custom PotionEffects are still stored using Potion IDs. There's no vanilla loot function to create potion items, you'd have to write your own if you wanted to use Potion registry names when specifying custom PotionEffects.

Thanks.

 

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Announcements



×
×
  • Create New...

Important Information

By using this site, you agree to our Terms of Use.