Posted July 16, 20178 yr 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 July 16, 20178 yr by PegBeard
July 16, 20178 yr 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.
December 17, 20177 yr 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.
December 17, 20177 yr 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.
December 18, 20177 yr 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 Edited December 18, 20177 yr by Sataniq I derped
December 18, 20177 yr 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.