Posted February 16, 20187 yr Hello, I need to get maximum meta value of block. I created a creative tab and returning random block as icon, but I have colored blocks. And I want to return random meta. But I don't know how to get maximum meta value of block. Now my creative tab code looks like this: public static CreativeTabs decoration = new CreativeTabs("mtest_decoration") { @Override public ItemStack getTabIconItem() { int index = (int) Math.round(Math.random() * (MBlocks.BLOCKS.size() - 1)); Block block = MBlocks.BLOCKS.get(index); int meta = 0; ItemStack is = new ItemStack(block, 1, meta); return is; } }; Edited February 18, 20187 yr by MineDen
February 16, 20187 yr meta data is limited to 16, ranging from 0 to 15. Always looking for new challenges, and happy to help the people where ever I can
February 16, 20187 yr Author 1 minute ago, sir_titi said: meta data is limited to 16, ranging from 0 to 15. But what if i have other block with only one variant?
February 16, 20187 yr Author 9 minutes ago, diesieben07 said: Call getSubItems to get all variants of an item. This method requires NonNullList of ItemStacks. But why? I trying to call this method from an instance of Item.
February 16, 20187 yr 18 minutes ago, MineDen said: This method requires NonNullList of ItemStacks. But why? I trying to call this method from an instance of Item. It's just a coding style thing. That was probably convenient to the person who needed that method in the first place since they were using it for making creative tabs. Like you could pass in an existing list for the creative tab and this method would add to it then you could get the list containing the subitems of multiple item types and if they are itemstacks that makes it super easy to put into the gui container inventory. Check out my tutorials here: http://jabelarminecraft.blogspot.com/
February 16, 20187 yr Author 7 minutes ago, jabelar said: It's just a coding style thing. That was probably convenient to the person who needed that method in the first place since they were using it for making creative tabs. Like you could pass in an existing list for the creative tab and this method would add to it then you could get the list containing the subitems of multiple item types and if they are itemstacks that makes it super easy to put into the gui container inventory. Okay, I'll try this now.
February 16, 20187 yr Author Sorry, but I can't understand this chain getSubItems>NonNullList>List>ItemStack, CreativeTabs... It is better to make own game on LWJGL 3 with bulit-in modloader always return random block with metadata 0.
February 16, 20187 yr Watch out for SideOnly(CLIENT), I believe getSubItems is client side only (as it is only used for the creative inventory). Instead use: BlockStateContainer bsc = block.getBlockState(); ImmutableList<IBlockState> values = bsc.getValidStates(); That will result in a list of IBlockStates that you can then ask for a pickBlock item. 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.
February 16, 20187 yr 1 hour ago, diesieben07 said: Not anymore. Oh? Since what version? 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.
February 16, 20187 yr 1 hour ago, Draco18s said: Oh? Since what version? Since this commit for 1.12. It was then done by Vanilla in 1.12.1. 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.
February 16, 20187 yr 51 minutes ago, Choonster said: Since this commit for 1.12. It was then done by Vanilla in 1.12.1. Ok cool. My code is likely holdover from when I did things in 1.11 (that is: I made it work without getSubItems and when I updated to 1.12, it still worked) 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.
February 18, 20187 yr Author On 16.02.2018 at 8:42 PM, diesieben07 said: You create an empty NonNullList using NonNullList.create. Then you call getSubItems with that list and CreativeTabs.SEARCH. Afterwards you will have all sub items of that item in the list. Seriously, this is not hard. This method returns void, what I can do?
February 18, 20187 yr 16 minutes ago, MineDen said: This method returns void, what I can do? It adds the items to the list that you pass as an argument. 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.
February 18, 20187 yr Author Just now, Choonster said: It adds the items to the list that you pass as an argument. OK, I'll try that.
February 18, 20187 yr Author 10 minutes ago, Choonster said: It adds the items to the list that you pass as an argument. Is this code right? It works. public static CreativeTabs decoration = new CreativeTabs("mtest_decoration") { @Override public ItemStack getTabIconItem() { int index = (int) Math.round(Math.random() * (MBlocks.BLOCKS.size() - 1)); Block block = MBlocks.BLOCKS.get(index); NonNullList<ItemStack> subBlocks = NonNullList.create(); block.getSubBlocks(CreativeTabs.SEARCH, subBlocks); System.out.println(subBlocks); int meta = (int) Math.round(Math.random() * (subBlocks.size() - 1)); ItemStack is = new ItemStack(block, 1, meta); return is; } };
February 18, 20187 yr Use Random#nextInt(int) to generate a random integer between 0 (inclusive) and the argument (exclusive) instead of the multiplication, subtraction and rounding you're doing now. 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.
February 18, 20187 yr Author Just now, Choonster said: Use Random#nextInt(int) to generate a random integer between 0 (inclusive) and the argument (exclusive) instead of the multiplication, subtraction and rounding you're doing now. Math.round(Math.random() * <count> - 1) is the JavaScript arrays way, and it's my favourite way, so shut up i will use this way.
February 18, 20187 yr 2 hours ago, MineDen said: Is this code right? It works. public static CreativeTabs decoration = new CreativeTabs("mtest_decoration") { @Override public ItemStack getTabIconItem() { int index = (int) Math.round(Math.random() * (MBlocks.BLOCKS.size() - 1)); Block block = MBlocks.BLOCKS.get(index); NonNullList<ItemStack> subBlocks = NonNullList.create(); block.getSubBlocks(CreativeTabs.SEARCH, subBlocks); System.out.println(subBlocks); int meta = (int) Math.round(Math.random() * (subBlocks.size() - 1)); ItemStack is = new ItemStack(block, 1, meta); return is; } }; Why are you creating a random metadata? What if the only valid values are 0, 1, 3, 7, and 12? 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.
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.