Jump to content
Search In
  • More options...
Find results that contain...
Find results in...

Custom Item descriptions on server side 1.15


Recommended Posts

Hello!

I have been working on a custom item system where a lot of item properties exist, like vitality, dexterity and many others.
This works fine by adding to the NBT of the ItemStack and I can also query the values just fine, however I have a problem displaying these to the user.
My mod runs exclusively on the server side, so I can't use ItemTooltipEvent sadly, but that is exactly what I would have needed.
I assume I could change the lore and do tricks with that to have it show, but I couldn't get the lore to show properly, I was trying to put my data into the NBT tag.
And I also can't remove the default information thing that items display, like armors have "+x Armor" which is awful for my use case as I implement my own armor system.

I also need to be able to generate these descriptions on the fly, real time, because I want to be able to change how attributes work/are displayed.
So as an example if I put +1 Vitality on an item, and want to display it as "+2 To Life" not as vitality, but then I change my mind, and want to update how item information is displayed.
This may sound dumb, but I want to be able to patch items and their properties and if their description is just a static string, even if I change how the underlying data works, I can't change the description.
Take that example, what if I decide to change vitality to give +3 life per point not 2, I wouldn't need to change the item's data at all, just the description.

I hope I was clear, I'll be around if I need to clear anything up,
Thanks

Link to post
Share on other sites

I was hoping there was some method to catch when the client is looking for the description and instead of going through the standard way of getting it from the NBT I could supply it with different data, but then the whole NBT is passed to the client, and it decides on how to display it if I understand correctly so yeah out of luck, I will look into regenerating the item Lore some way when something changes

Link to post
Share on other sites

Yeah well I see, as for using the lore tag...
How do I produce this structure in the NBT?

{display:{Lore:['{"text":"foo"}','{"text":"bar"}']}}

The CompoundNBT interface is quite different from json libraries I am used to, I cant figure out how can I add a json object array to lore

Link to post
Share on other sites

First get the display tag: ItemStack#getOrCreateChildTag("display"). That will give you a CompoundNBT. Then you can use CompoundNBT#getList("Lore", Constants.NBT.TAG_COMPOUND) to get the "Lore" list. then add whatever CompoundNBT entries you want to the list and use CompoundNBT#put("Lore", list) to put the changed list back in the NBT compound. 

  • Thanks 1
Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
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.



  • Recently Browsing

    No registered users viewing this page.

  • Posts

    • Yes! thank you, it works great now. One more thing though, I followed default minecraft code for the armor, but even though I have all my layers in assets/gemstones/textures/models/armor it still shows up on my character as the 'no-texture' texture.
    • Exception message: java.lang.IllegalArgumentException: Duplicate registration jade you're registering "jade" twice, I think that should be the only thing wrong oh also, your enum constants should be all uppercased (it won't cause any errors of course, but it's the standard)  
    • Sure, i played around with the code a bit and added a ".get()" to the end of the material, this removed all errors. Except its wrong because now I launch and the game crashes, yet eclipse gives me no errors. Heres my list: package djofox.gemstones.materials; import java.util.function.Supplier; import djofox.gemstones.init.ItemInit; import net.minecraft.item.IItemTier; import net.minecraft.item.crafting.Ingredient; import net.minecraft.util.LazyValue; public enum ToolMaterialList implements IItemTier { beryl(0, 131, 15.0f, 2.75f, 30, () -> { return Ingredient.of(ItemInit.beryl.get()); }), jade(2, 500, 7.0f, 2.25f, 23, () -> { return Ingredient.of(ItemInit.jade.get()); }), moissanite(2, 500, 7.0f, 2.25f, 23, () -> { return Ingredient.of(ItemInit.moissanite.get()); }), kunzite(0, 315, 12f, 0.5f, 20, () -> { return Ingredient.of(ItemInit.kunzite.get()); }), orpiment(2, 258, 10f, 0.5f, 20, () -> { return Ingredient.of(ItemInit.orpiment.get()); }), mercurySulfide(2, 1012, 5.5f, 2.0f, 14, () -> { return Ingredient.of(ItemInit.mercurySulfide.get()); }), blackDiamond(3, 2757, 8.0f, 3.0f, 2, () -> { return Ingredient.of(ItemInit.blackDiamond.get()); }), treatedCarbide(4, 2560, 10.0f, 5.0f, 2, () -> { return Ingredient.of(ItemInit.siliconCarbide.get()); }); private final int level; private final int uses; private final float speed; private final float damage; private final int enchantmentValue; private final LazyValue<Ingredient> repairIngredient; private ToolMaterialList(int p_i48458_3_, int p_i48458_4_, float p_i48458_5_, float p_i48458_6_, int p_i48458_7_, Supplier<Ingredient> p_i48458_8_) { this.level = p_i48458_3_; this.uses = p_i48458_4_; this.speed = p_i48458_5_; this.damage = p_i48458_6_; this.enchantmentValue = p_i48458_7_; this.repairIngredient = new LazyValue<>(p_i48458_8_); } public int getUses() { return this.uses; } public float getSpeed() { return this.speed; } public float getAttackDamageBonus() { return this.damage; } public int getLevel() { return this.level; } public int getEnchantmentValue() { return this.enchantmentValue; } public Ingredient getRepairIngredient() { return this.repairIngredient.get(); } } Heres my init class which causes the crash (from taking other stuff) And heres the error I get when I crash (I dont know if you need it but better safe than sorry)  
    • can you show your ToolMaterialList?
  • Topics

  • Who's Online (See full list)

×
×
  • Create New...

Important Information

By using this site, you agree to our Privacy Policy.