Posted February 12, 20178 yr I want my item to stay in crafting and decrease its durability when used in recipe - not just be consumed how can i do it?
February 12, 20178 yr Override hasContainerItem and getContainerItem 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 12, 20178 yr Should be obvious. The first one you want to return true and in the second one you want to take the item stack passed in, damage it, and return it. 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, 20178 yr Author WAT? still doesn't work: public class QuartzKnife extends Item { public QuartzKnife(String unlocalizedName){ this.setUnlocalizedName(unlocalizedName); this.setRegistryName(new ResourceLocation(Reference.MODID, unlocalizedName)); this.setMaxStackSize(1); this.setMaxDamage(256); } @Override public boolean hasContainerItem(ItemStack stack) { return true; } @Override public ItemStack getContainerItem(ItemStack itemStack) { itemStack.setItemDamage(itemStack.getItemDamage() + 1); return super.getContainerItem(itemStack); } }
February 16, 20178 yr That's not what Draco told you to do. You damage the ItemStack, but then you return the result of the super method (a completely separate ItemStack). The original ItemStack that you damaged is ignored. You need to return the ItemStack that you damaged. 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, 20178 yr 5 minutes ago, Villfuk02 said: WAT? still doesn't work: public class QuartzKnife extends Item { public QuartzKnife(String unlocalizedName){ this.setUnlocalizedName(unlocalizedName); this.setRegistryName(new ResourceLocation(Reference.MODID, unlocalizedName)); this.setMaxStackSize(1); this.setMaxDamage(256); } @Override public boolean hasContainerItem(ItemStack stack) { return true; } @Override public ItemStack getContainerItem(ItemStack itemStack) { itemStack.setItemDamage(itemStack.getItemDamage() + 1); return super.getContainerItem(itemStack); } } You are returning super.getContainerItem, which is null.
February 16, 20178 yr Author Well, i'm stupid how could i overlook that!? Edited February 16, 20178 yr by Villfuk02
February 16, 20178 yr I was just about to ask the same question, but then I saw this thread. This all works for me, but after i've used the item once in crafting (meaning its damaged), I can no longer use it. Note that I am using a shapeless OreDict recipe.
February 16, 20178 yr 6 minutes ago, Tschipp said: I was just about to ask the same question, but then I saw this thread. This all works for me, but after i've used the item once in crafting (meaning its damaged), I can no longer use it. Note that I am using a shapeless OreDict recipe. You're probably using 0 as the ingredient's metadata when adding the recipe, so only metadata 0 is accepted. Use OreDictionary.WILDCARD_VALUE to accept any metadata value. 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, 20178 yr 1 minute ago, Choonster said: You're probably using 0 as the ingredient's metadata when adding the recipe, so only metadata 0 is accepted. Use OreDictionary.WILDCARD_VALUE to accept any metadata value. Nope, as I mentioned, I'm using a oreDictionary entry, in this case "listAllwater"
February 16, 20178 yr Just now, Tschipp said: Nope, as I mentioned, I'm using a oreDictionary entry, in this case "listAllwater" You mentioned an ore recipe, but you didn't mention that the ingredient was an ore dictionary entry. In that case, you need to use OreDictionary.WILDCARD_VALUE when adding your item to the ore dictionary. 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, 20178 yr 1 minute ago, Choonster said: You mentioned an ore recipe, but you didn't mention that the ingredient was an ore dictionary entry. In that case, you need to use OreDictionary.WILDCARD_VALUE when adding your item to the ore dictionary. Ah I see, sorry I wasn't clear enough.
February 16, 20178 yr I have one more unrelated question that is not worth opening an entire new thread: How do you damage/repair an item if the player is in creative mode?
February 16, 20178 yr 2 minutes ago, Tschipp said: I have one more unrelated question that is not worth opening an entire new thread: How do you damage/repair an item if the player is in creative mode? Create your own copy of the ItemStack#damageItem method without the creative mode check. 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, 20178 yr 4 minutes ago, Choonster said: Create your own copy of the ItemStack#damageItem method without the creative mode check. I am currently using the ItemStack#setItemDamage method, but there still seems to be some sort of creative mode check somewhere, as the item isn't damageable while in creative mode. Where is this check even happening?
February 16, 20178 yr 22 minutes ago, Tschipp said: I am currently using the ItemStack#setItemDamage method, but there still seems to be some sort of creative mode check somewhere, as the item isn't damageable while in creative mode. Where is this check even happening? Inside the ItemStack class. IIRC, If the entity passed in is null, that check can't be made (because there is no entity, and the damage just happens). 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, 20178 yr 2 hours ago, Draco18s said: Inside the ItemStack class. IIRC, If the entity passed in is null, that check can't be made (because there is no entity, and the damage just happens). No, it crashes with a null pointer. I guess I'll try making it any arbitrary entity, like an EntityPig Edited February 16, 20178 yr by Tschipp
February 16, 20178 yr It somehow still does a creative mode check, even when using a entityPig as the argument... There must be a simpler way to damage an item in creative mode... You know what, I'll just open a new thread for it. Edited February 16, 20178 yr by Tschipp
January 18, 20196 yr I have 2 little question; I created Item which contains subItems (4 different type) and this subItems has colorMultiplier. Firstly i want to get different ItemDurability per subItem, how can i do? Secondly i want to subItems stay in crafting table but descrease durability is it possible with subItems? if is what should i do? Edit: I Also try to use hasContainerItem and getContainerItem methods but when i used this methods returns my subItems rather than changing durability. Edited January 18, 20196 yr by Zamion101 Developing Kodev Minecraft Hardcore Mod! If You're Wondering, My Mod Page. http://minecraft.curseforge.com/projects/minecraft-hardcore-mod
January 18, 20196 yr EDIT: I was blind. Nevermind. Edited January 18, 20196 yr by Legenes procedure WakeMeUp(Integer plusTime); var I: Integer; begin for I := 0 to plusTime do begin println('One more minute!'); Sleep(1000); end; println('Okay, nothing to worry, I''m alive!'); println('So... somebody can give me a coffee?'); println('I know it''s Pascal, and not Java, but I love it :D.'); end;
January 18, 20196 yr 20 minutes ago, Zamion101 said: I have 2 little question; I created Item which contains subItems (4 different type) and this subItems has colorMultiplier. Firstly i want to get different ItemDurability per subItem, how can i do? Secondly i want to subItems stay in crafting table but descrease durability is it possible with subItems? if is what should i do? Edit: I Also try to use hasContainerItem and getContainerItem methods but when i used this methods returns my subItems rather than changing durability. Please don't change a post's topic. If you have a problem like that, than just make another post. procedure WakeMeUp(Integer plusTime); var I: Integer; begin for I := 0 to plusTime do begin println('One more minute!'); Sleep(1000); end; println('Okay, nothing to worry, I''m alive!'); println('So... somebody can give me a coffee?'); println('I know it''s Pascal, and not Java, but I love it :D.'); end;
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.