Jump to content
View in the app

A better way to browse. Learn more.

Forge Forums

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Featured Replies

Posted

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

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/

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.

@larsgerrits

Unfortunately the ench tag only takes shorts. You can't put a ResourceLocation in.

 

@The_Wabbit

You will have to create your own LootFunction. The closest thing to what you want is EnchantRandomly, which picks a random enchantment from a list and applies it to the ItemStack.

  • Author
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...

Important Information

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

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.