Jump to content

Recommended Posts

Posted (edited)

This is the first time I have done meta items. Everything works, except the first subitem appears in in the creative inventory 'Delete Item' slot, and at the end of every creative tab.
For testing purposes, I stripped the class down to the essentials, but the error persists.

 

	public static ItemStack item1;
    public static ItemStack item2;

    public DTTest(String name)
    {
		this.setUnlocalizedName(Reference.MOD_ID + ":" + name);
		this.setCreativeTab(DTCreativeTab.DT_TAB);
		this.setMaxDamage(0);
		setContainerItem(this);
		setHasSubtypes(true);
	    
		item1 = new ItemStack(this);
		item1.setItemDamage(0);
        
		item2 = new ItemStack(this);
		item2.setItemDamage(1);
    }

    @SideOnly(Side.CLIENT)
    @Override
    public void getSubItems(CreativeTabs tab, NonNullList<ItemStack> items)
    {
        items.add(item1);
        items.add(item2);
    }

 

The item is registered thusly, and called during preInit (haven't switched to events yet):

public static Item test = new DTTest(Names.Items.TEST);

ForgeRegistries.ITEMS.register(test.setRegistryName(Names.Items.TEST));

 

Edited by PegBeard
Posted

Item#getSubItems is now called for every Item on every creative tab, you need to call Item#isInCreativeTab and only add the items to the list if it returns true.

 

It's also no longer a client-only method, you should remove the @SideOnly annotation from it.

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.

  • 5 months later...
Posted

Okay, so I would really like to know why people use # in front of function calls when describing them, instead of the period you ACTUALLY use. But regardless, Item.isInCreativeTab does not appear to exist in forge-1.12-14.21.1.2443. How does one go about resolving this problem? - As I'm having it too.

Posted
24 minutes ago, Sataniq said:

Okay, so I would really like to know why people use # in front of function calls when describing them, instead of the period you ACTUALLY use.

Because the method is not a static method:

Item.isInCreativeTab() can't be invoked directly.

You need an instance:

Item i = ...;

i.isInCreativeTab();

Apparently I'm a complete and utter jerk and come to this forum just like to make fun of people, be confrontational, and make your personal life miserable.  If you think this is the case, JUST REPORT ME.  Otherwise you're just going to get reported when you reply to my posts and point it out, because odds are, I was trying to be nice.

 

Exception: If you do not understand Java, I WILL NOT HELP YOU and your thread will get locked.

 

DO NOT PM ME WITH PROBLEMS. No help will be given.

Posted (edited)

Ah, I see. I have a reference to an item but the function still doesn't show in the IDE's suggestions list. I've found it in the Item class, but it's protected. My item does extend a class that extends net.minecraft.item.Item, so surely this should be visible to me? I'm not sure if IDEA is being strange, or I'm just being stupid. Also, how do we actually get the single ItemStack in the getSubItems() function? It's passing a NonNullList<ItemStack>

 

EDIT: I figured I had to cast the item to the class type to get access to the function. This is why you don't program at 8am :D

Edited by Sataniq
I derped
Posted

I resolved this, like so:

 

@Override
public void getSubItems (CreativeTabs tab, NonNullList<ItemStack> items)
  {
    if (getCreativeTab() != tab) return;
    super.getSubItems(tab, items);
    items.add(new ItemStack(this, 1, 1));
  }

 

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



×
×
  • Create New...

Important Information

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