August 7, 201312 yr Author Well then I need to find a guide for GUIs, because I feel like my way would be so much easier lol Well hydroflame here seems to be a semi master of GUI's, he helped me with a draggable GUI Well then no wonder he said the GUI method would be easier Follow me on twitter! @keepablock Read up on whats new! www.catacombs.co http://electronic-chronic.com/assets/keep-a-block/wikilink/wikilink_logo.png[/img]
August 7, 201312 yr my job is to make those kind of things ..... how to debug 101:http://www.minecraftforge.net/wiki/Debug_101 -hydroflame, author of the forge revolution-
August 7, 201312 yr Well then I need to find a guide for GUIs, because I feel like my way would be so much easier lol Well hydroflame here seems to be a semi master of GUI's, he helped me with a draggable GUI Well then no wonder he said the GUI method would be easier Haha, that is true.. But I myself am getting better at GUI's. They are really quite easy. 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
August 7, 201312 yr Author Well then I will consult you both when I am ready to make my GUI. I want to try and make it on my own first, just so I can learn. Follow me on twitter! @keepablock Read up on whats new! www.catacombs.co http://electronic-chronic.com/assets/keep-a-block/wikilink/wikilink_logo.png[/img]
August 8, 201312 yr Have fun! 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
August 9, 201312 yr Author Okay, so I was thinking, I don't need to have mod authors add the names of their items to their plugin as long as I can get the modId and name of the specific item a user wants to search. GameData.ItemStack findItemStack(String modId, String name) This code seems to be what I could use to get that information, but the method is not public, so I don't know how to get it from the GameData file. (I'm still a novice programmer and I haven't learned these things) Here is the full method. static ItemStack findItemStack(String modId, String name) { ItemStack is = customItemStacks.get(modId, name); if (is == null) { Item i = findItem(modId, name); if (i != null) { is = new ItemStack(i, 0 ,0); } } if (is == null) { Block b = findBlock(modId, name); if (b != null) { is = new ItemStack(b, 0, Short.MAX_VALUE); } } return is; } Is there any way I could implement this method and combine it with player.getHeldItem(); So when a user uses my keybinding it will get the item in their hand and return the name and the modId? Follow me on twitter! @keepablock Read up on whats new! www.catacombs.co http://electronic-chronic.com/assets/keep-a-block/wikilink/wikilink_logo.png[/img]
August 9, 201312 yr Why not call, player.getHeldItem().getLocalizedName(); for the name of it? 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
August 9, 201312 yr GameData.ItemStack findItemStack(String modId, String name) This code seems to be what I could use to get that information, but the method is not public, so I don't know how to get it from the GameData file. (I'm still a novice programmer and I haven't learned these things) Is there any way I could implement this method and combine it with player.getHeldItem(); So when a user uses my keybinding it will get the item in their hand and return the name and the modId? Ho, you can find a public call in GameRegistry class, sorry about that. About this method, the name it compares with is the name given by the modder at the registration of the item/block: registerBlock(block,name) or registerItem(item,name), which is not necessarily equal to the name given in the item own class. It may be more simple to use the itemsList in Item class, along with player.getHeldItem().itemID; but then it wouldn't use the mod id.
August 9, 201312 yr Author These are all good, but is there any way I can correlate the item name or id with the modId? It's the one thing I need and it's the hardest to get. Follow me on twitter! @keepablock Read up on whats new! www.catacombs.co http://electronic-chronic.com/assets/keep-a-block/wikilink/wikilink_logo.png[/img]
August 9, 201312 yr Hum, after thinking a bit, the more suited data is the idMap in GameData. It is a private Map, which contains ItemData for each item id. The ItemData contains modid, and item registration name. NBTTagList itemList = new NBTTagList(); GameData.writeItemData(itemList); List<ItemData> data=new ArrayList(); NBTBase base; for(int i =0; i< itemList.tagCount; i++) { base = itemList.tagAt(i); if(base instanceof NBTTagCompound) data.add(new ItemData((NBTTagCompound)base)); }
August 10, 201312 yr Author I don't quite understand what your code does. In the final if statement if(base instanceof NBTTagCompound) data.add(ItemData(base)); It's throwing me an error on ItemData where "The method ItemData(NBTBase) is undefined for the type <classname>" If I comment the if statement I see that every time the for loop runs it prints something like [itemId:2257,ItemType:net.minecraft.item.ItemRecord,ModId:Minecraft,ordinal:1,] which has the ModId in it, and that's what I need. Can you better explain your logic? Sorry if it's a dumb question, I'm just trying to understand. And also, how do I get the modId value so I can read it and use it? Eg: if((base.ModId).equals(WikiModId) { } ------- Edit: I figured it out!!!!! static void getInfo(int matchedId) { NBTTagList itemList = new NBTTagList(); GameData.writeItemData(itemList); ArrayList<ItemData> data = new ArrayList(); NBTBase base; for(int i = 0; i< itemList.tagCount(); i++) { base = itemList.tagAt(i); if(base instanceof NBTTagCompound) data.add(itemList(base)); //System.out.println(base); //System.out.println(data); if((base).toString().contains("ModId:" + "Minecraft") && (base).toString().contains("ItemId:" + matchedId)) { System.out.println("Success"); } } The program uses the code that GotoLink gave me and checks to see if one of "base"'s strings contain a specific mod id and item id matching int matchedId = (player.getHeldItem().itemID); I don't think I've ever been more happy in my life to solve a problem. Especially without using reflection. Thank you so much everyone. Follow me on twitter! @keepablock Read up on whats new! www.catacombs.co http://electronic-chronic.com/assets/keep-a-block/wikilink/wikilink_logo.png[/img]
August 10, 201312 yr I fixed the issue in my code I hope it will easier for future readers this way. public static List getItemDataList(){ NBTTagList itemList = new NBTTagList(); GameData.writeItemData(itemList);//writes data from idMap in GameData to given Taglist List<ItemData> data=new ArrayList(); NBTBase base; for(int i =0; i< itemList.tagCount; i++) { base = itemList.tagAt(i);//gets back the Tags from itemList if(base instanceof NBTTagCompound)//found a Compound type of Tag data.add(new ItemData((NBTTagCompound)base));//builds an ItemData instance from the Compound Tag, and adds it to data list } return data; } Then you can extract desired info from the data list Iterator itr = getItemDataList().iterator(); while(itr.hasNext()) { ItemData iData = (ItemData) itr.next(); iData.getModId();//mod id iData.getItemType();//item name at registration iData.getItemId();//item id }
August 10, 201312 yr I'm sorry if this problem was resolved, or if what's I'm going to say was already been answered (let's say that I didn't read the full topic ^^), but have you tried LanguageRegistry.instance().addStringLocalization("nei.options.keys.gui.wiki", "My Key Name"); ? Follow me on Twitter @BuildLight_
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.