Jump to content

How do I add nbt data to an item when outputted from a custom smithing table recipe? 1.16.5


Recommended Posts

Posted

How would I add nbt data do a custom smithing table recipe? for example an enchantment or the name.
I've scoured the internet and found many things about this but nothing is helpful enough.

Hoping someone could help!

Posted

I achieved a similiar result overriding the Item#onCraftedBy method inside my Item class.
Essentially I have a sword that should always be enchanted with FireAspect X. I made a recipe that if you upgrade a Netherite Sword with a mod material you get this sword, regardless of the existing sword enchantments.
By using the onCraftedBy method, as soon as the Player gets the Item, this is enchanted with FireAspect X.

Is not ideal, since you won't actually see the applied enchantment until you get out of the smithing table, but is way easier than implementing a custom recipe serializer (which is not hard, but sure is way more work than this)

Don't blame me if i always ask for your help. I just want to learn to be better :)

Posted

I was also thinking: if you are NOT using a custom block, but rather you want to change the output from the vanilla smithing table, you could use a mixin. The smithing recipe JSON file actually can read NBT tags from the output, however they are straight up ignored in the UpgradeRecipe class, specifically the assemble method

public ItemStack assemble(Container pInv) {
  ItemStack itemstack = this.result.copy();
  CompoundTag compoundtag = pInv.getItem(0).getTag();
  if (compoundtag != null) {
    itemstack.setTag(compoundtag.copy());
  }

  return itemstack;
}

The Vanilla class essentially takes whatever tags the first Item has (the "base" ingredient), if any, and copy them to the output Item, ignoring whatever tags that Item could have.
By using a mixin for this method you can change how it work and make so the result Item tags are not ignored, but rather merged with the base ingredient tags. You can see how to configure the project for using mixins here: https://github.com/SpongePowered/Mixin/wiki/Mixins-on-Minecraft-Forge. You can also check this repository that contains an example of how to actually use it

Don't blame me if i always ask for your help. I just want to learn to be better :)

Posted (edited)
  On 6/24/2022 at 7:36 AM, diesieben07 said:

There is zero reason to use a mixin. A custom recipe suffices.

Expand  

If he's using a custom block, yes, absolutely no need for mixins. But since he didn't mention it I assume he's just using the Vanilla Smithing Table, in which specify the NBT Tags in the recipe JSON is not sufficient (unless there's a way to bind custom recipe serializer to Vanilla Blocks, which I'm not aware of)

Edited by JimiIT92

Don't blame me if i always ask for your help. I just want to learn to be better :)

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



  • Recently Browsing

    • No registered users viewing this page.
  • Posts

    • Title: Why Is It So Hard to Rename and Restructure Mods Like Xray or AntiXray? 🤔 Post text: Hey everyone! I’ve been digging into Minecraft modding for a while and have one big question that I can’t figure out on my own. Maybe someone with more experience could help or give me some advice. Here’s the issue: When I take a “normal” Minecraft mod — for example, one that just adds some blocks or new items — I can easily change its structure, package names, or even rebrand it entirely. It’s straightforward. But as soon as I try this with cheat-type mods like XrayMod or AntiXray, everything falls apart. Even if I just rename the classes, refactor the packages, or hide its identity somehow, the mod either breaks or stops working properly. XrayMod in particular is proving to be a nightmare to modify without losing its core function. So my question is — why is this so much harder with cheat mods like Xray? Is there something fundamentally different about how they’re coded, loaded, or protected that prevents simple renaming or restructuring? And if so, how can I actually learn to understand someone else’s cheat mod enough to safely refactor it without breaking the core features? I’ve already been spending over two months trying to figure this out and haven’t gotten anywhere. It feels like there must be some trick or knowledge I’m missing. Would really appreciate any thoughts, tips, or references — maybe there are guides or techniques for understanding cheat-mod internals? Or if you’ve successfully “disguised” a cheat mod like Xray before, I’d love to hear how you did it. Thanks in advance for any help or discussion. ✌️
    • just started making cinamatic contect check it out on my channel or check out my facebook page    Humbug City Minecraft Youtube https://www.youtube.com/watch?v=v2N6OveKwno https://www.facebook.com/profile.php?id=61575866982337  
    • Where did you get the schematic? Source/Link? And do use an own modpack or a pre-configured from curseforge? If yes, which one On a later time, I can make some tests on my own - but I need the schematic and the modpack name
  • Topics

×
×
  • Create New...

Important Information

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