Posted March 7, 20178 yr 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 March 9, 20178 yr by The_Wabbit
March 7, 20178 yr 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/
March 8, 20178 yr 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.
March 8, 20178 yr @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.
March 8, 20178 yr 11 hours ago, The_Wabbit said: or is there some mechanism already in place to refer to say "mymod:super_freeze_enchant" yes there is http://mcforge.readthedocs.io/en/latest/concepts/registries/#injecting-registry-values-into-fields
March 8, 20178 yr 32 minutes ago, loordgek said: yes there is http://mcforge.readthedocs.io/en/latest/concepts/registries/#injecting-registry-values-into-fields The OP is asking about loot tables, not fields. 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.
March 9, 20178 yr 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.