Jump to content

Lore without tons of class files ?


freshhh

Recommended Posts

Hi, so I'm looking to add lore (.addInformation) to some of my items, but my problem is, I got 3 class files that serve for over 10 items each, how to I add lore to my items without editting these 3 class files ( if that's possible ), I want it so that I can just add lore to this piece of line

UA3 = (ItemFood)new Sub3( UAID3, 10, 5.0F, false).setAlwaysEdible().setPotionEffect(13, 1800, 1, 1.0F).setCreativeTab(CreativeTabs.tabFood).setUnlocalizedName("UA3");

By the way, lore is when you hover your mouse over an item you get like a second name under the actualy name, some sort of description, if anyone can help me with this I'd thank you in advanced, please note I'm a beginner modder so no expert nano talk please ! Also if you want to help me, please post an example of how you did it, as I said I'm no nano rocket science computer engineer !

Link to comment
Share on other sites

Actually, there is a way to do this xD.

 

here is an example of an Item file that I can use for multiple items with lore:

package rpg.items;

import java.util.List;

import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;

public class ItemMultipleItemWithLore extends Item {

    // this string holds the lore
    String lore;
    
    // this constructor would be for an item with lore
    public ItemMultipleItemWithLore(int par1, String lore) {
        super(par1);
        this.lore = lore;
    }
    
    @Override
    @SuppressWarnings({ "rawtypes", "unchecked" })
    public void addInformation(ItemStack par1ItemStack, EntityPlayer player,
            List par3List, boolean par4) {
        par3List.add(lore);
    }
}

 

I hope this helps. whatever you write into the string as lore will apear ONLY for that item, so it can have different lore for each item

I am Mew. The Legendary Psychic. I behave oddly and am always playing practical jokes.

 

I have also found that I really love making extremely long and extremely but sometimes not so descriptive variables. Sort of like what I just did there xD

Link to comment
Share on other sites

Actually, there is a way to do this xD.

 

here is an example of an Item file that I can use for multiple items with lore:

package rpg.items;

import java.util.List;

import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;

public class ItemMultipleItemWithLore extends Item {

    // this string holds the lore
    String lore;
    
    // this constructor would be for an item with lore
    public ItemMultipleItemWithLore(int par1, String lore) {
        super(par1);
        this.lore = lore;
    }
    
    @Override
    @SuppressWarnings({ "rawtypes", "unchecked" })
    public void addInformation(ItemStack par1ItemStack, EntityPlayer player,
            List par3List, boolean par4) {
        par3List.add(lore);
    }
}

 

I hope this helps. whatever you write into the string as lore will apear ONLY for that item, so it can have different lore for each item

Could you give me an example ? I'm sorry if I'm a pain in the ass but I'm kinda new and the only way I learn is examples lol.

Link to comment
Share on other sites

  • 8 months later...

I just added lore to my SubType by damage item class.. I have 3 subitems on that ID atm.

I chose to use a single LoreLib static library to keep all the lore centralized and easy for config file to deal with later.

 

in the subtyped item I added the method for addInformation(,,,) but then immediately just passed it along to my library to actually process

public void addInformation(ItemStack pStack, EntityPlayer pPlayer, List pList, boolean pBool) {
LoreLib.getLore( pStack, pList);
}

and the LoreLib class with teh actual strings

public class LoreLib {
public static void getLore( ItemStack pStack, List pList){
int thing = pStack.itemID;
int subtype	= pStack.getItemDamage();
String stx	= "";
	if ( thing == Itemz.bimBows.itemID){
	switch (subtype){
	case 0:
		stx = "Lore for BimBows-0: First of the metabows";
		break;
	case 1:
		stx = "Lore for BimBows-1: Second of the metabows";
		break;
	case 2:
		stx = "Lore for BimBows-2: Third of the metabows";
		break;
	default:
	}
}
pList.add(stx);
return;
}

 

I'm not saying this is any better,

but its another way to do it if you're into this kind of thing.

I would have liked to use another SWITCH on the ItemID, but it wasnt cooperating.

I might be consolidating the text to strings so I will be able to  load them from config file.

Also, I havent vandal proofed it yet with null checks and whatnot

Link to comment
Share on other sites

Yet another method is to use a language file to store your descriptions and make sure each item has the same number of lines of lore:

// just to note, this is in one of my classes that has 5+ different items using it, each with different lore
@Override
@SideOnly(Side.CLIENT)
public void addInformation(ItemStack stack, EntityPlayer player, List list, boolean isHeld) {
list.add(EnumChatFormatting.ITALIC + StatCollector.translateToLocal("tooltip.zss." + getUnlocalizedName().substring(9) + ".desc.0"));
}

 

I use substring(9) because I prefix my items with 'zss.' + 'item.'; anyway, so my language file (named 'en_US' and located in 'assets/lang') would look like this:

tooltip.zss.some_item.desc.0=Some item's lore
tooltip.zss.some_other_item.desc.0=Some other item's lore

 

Obviously you can add as many fields as you want, desc.1, desc.2, etc. and just add them all in the tooltip. Mew's suggestion is easier, but if you plan on adding language support, then you'll need to do this anyway. I'm sure someone with better Java than me could figure out a way to support each item containing different numbers of lore lines as well, but I just standardized all my items.

Link to comment
Share on other sites

Hi

 

The ItemTooltipEvent might also be of some use.

 

If you hook into it, you could use the Item as a key to search your "lore" descriptions for that Item.  All your lore descriptions are then kept in a single class, you can add lore for vanilla items, and you can keep your Item classes completely separate if you want.

 

-TGG

Link to comment
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.
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

    • https://pastebin.com/VwpAW6PX My game crashes upon launch when trying to implement the Oculus mod to this mod compilation, above is the crash report, I do not know where to begin to attempt to fix this issue and require assistance.
    • https://youtube.com/shorts/gqLTSMymgUg?si=5QOeSvA4TTs-bL46
    • CubeHaven is a SMP server with unique features that can't be found on the majority of other servers! Java: MC.CUBEHAVEN.NET Bedrock: MC.CUBEHAVEN.NET:19132 3 different stores: - CubeHaven Store: Our store to purchase using real money. - Bitcoin Store: Store for Bitcoin. Bitcoin can be earned from playing the server. Giving options for players if they want to spend real money or grind to obtain exclusive packages. - Black Market: A hidden store for trading that operates outside our traditional stores, like custom enchantments, exclusive items and more. Some of our features include: Rank Up: Progress through different ranks to unlock new privileges and perks. 📈 Skills: RPG-style skill system that enhances your gaming experience! 🎮 Leaderboards: Compete and shine! Top players are rewarded weekly! 🏆 Random Teleporter: Travel instantly across different worlds with a click! 🌐 Custom World Generation: Beautifully generated world. 🌍 Dungeons: Explore challenging and rewarding dungeons filled with treasures and monsters. 🏰 Kits: Unlock ranks and gain access to various kits. 🛠️ Fishing Tournament: Compete in a friendly fishing tournament! 🎣 Chat Games: Enjoy games right within the chat! 🎲 Minions: Get some help from your loyal minions. 👥 Piñata Party: Enjoy a festive party with Piñatas! 🎉 Quests: Over 1000 quests that you can complete! 📜 Bounty Hunter: Set a bounty on a player's head. 💰 Tags: Displayed on nametags, in the tab list, and in chat. 🏷️ Coinflip: Bet with other players on coin toss outcomes, victory, or defeat! 🟢 Invisible & Glowing Frames: Hide your frames for a cleaner look or apply a glow to it for a beautiful look. 🔲✨[ Player Warp: Set your own warp points for other players to teleport to. 🌟 Display Shop: Create your own shop and sell to other players! 🛒 Item Skins: Customize your items with unique skins. 🎨 Pets: Your cute loyal companion to follow you wherever you go! 🐾 Cosmetics: Enhance the look of your character with beautiful cosmetics! 💄 XP-Bottle: Store your exp safely in a bottle for later use! 🍶 Chest & Inventory Sorting: Keep your items neatly sorted in your inventory or chest! 📦 Glowing: Stand out from other players with a colorful glow! ✨ Player Particles: Over 100 unique particle effects to show off. 🎇 Portable Inventories: Over virtual inventories with ease. 🧳 And a lot more! Become part of our growing community today! Discord: https://cubehaven.net/discord Java: MC.CUBEHAVEN.NET Bedrock: MC.CUBEHAVEN.NET:19132
    • # Problematic frame: # C [libopenal.so+0x9fb4d] It is always the same issue - this refers to the Linux OS - so your system may prevent Java from working   I am not familiar with Linux - check for similar/related issues  
  • Topics

×
×
  • Create New...

Important Information

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