Posted March 4, 20169 yr You can use the OnUpdate method in Item to tell if the item is in the players inventory but how do you tell when an item is removed from the players inventory? BioWarfare Mod: http://goo.gl/BYWQty
March 4, 20169 yr You can't. No. No, not even then. No, you can't. Its impossible. There are so many ways an item can leave the player's inventory that you cannot know that it even has as some of them don't fire any sort of event or notification to any other system that it has removed the 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.
March 4, 20169 yr Author Ok. Can I tell if the item is removed by dropping it or if it is removed by picking up out the inventory? BioWarfare Mod: http://goo.gl/BYWQty
March 4, 20169 yr ItemDropEvent and no. 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.
March 4, 20169 yr Author Hmm I'm not sure if you understand what I meant because I just used ItemTossEvent and that: * Event that is fired whenever a player tosses (Q) an item or drag-n-drops a * stack of items outside the inventory GUI screens. Canceling the event will * stop the items from entering the world, but will not prevent them being * removed from the inventory - and thus removed from the system. However the throwing outside the player gui works but the dropping on the ground only works on one side and i need it on both client and server. BioWarfare Mod: http://goo.gl/BYWQty
March 5, 20169 yr Author I have a custom inventory item that when particular items are in it it does something to the player but i need to stop that thing from happening when the item is removed from the player inventory. BioWarfare Mod: http://goo.gl/BYWQty
March 5, 20169 yr Author If you are familiar with the mod baubles it is an api that allows you to add "rings" and "amulets". I am calling the methods that these items use when they need to be activated if they are in my custom inventory. But i need to turn these attributes off if the item inventory is removed from the players inventory. TickHandler public class TatEventHandler { @SubscribeEvent public void PlayerEvent(PlayerEvent event) { EntityPlayer player = event.entityPlayer; if (player instanceof EntityPlayer) { if (player.isDead) { for (int a = 0; a < player.inventory.mainInventory.length; a++) { if (player.inventory.getStackInSlot(a) == new ItemStack(TatItems.itemBaublesBag)) { ItemStack baublesbag = player.inventory.getStackInSlot(a); InventoryBaublesBag inventorybaublesbag = (InventoryBaublesBag) BaublesBag.getInventory(baublesbag, player); for (int b = 0; b < inventorybaublesbag.inventory.length; b++) { if (inventorybaublesbag.getStackInSlot(b) != null && inventorybaublesbag.getStackInSlot(b).getItem() instanceof IBauble) { ((IBauble) inventorybaublesbag.getStackInSlot(b).getItem()).onUnequipped(inventorybaublesbag.getStackInSlot(b), player); } } } } } } } @SubscribeEvent public void ItemTossEvent(ItemTossEvent event) { EntityPlayer player = event.player; if (event.entityItem.getEntityItem().getItem() == TatItems.itemBaublesBag) { ItemStack baublesbag = event.entityItem.getEntityItem(); InventoryBaublesBag inventorybaublesbag = (InventoryBaublesBag) BaublesBag.getInventory(baublesbag, player); for (int a = 0; a < inventorybaublesbag.inventory.length; a++) { if (inventorybaublesbag.getStackInSlot(a) != null && inventorybaublesbag.getStackInSlot(a).getItem() instanceof IBauble) { ((IBauble) inventorybaublesbag.getStackInSlot(a).getItem()).onUnequipped(inventorybaublesbag.getStackInSlot(a), player); } } } } } BioWarfare Mod: http://goo.gl/BYWQty
March 5, 20169 yr Author Changed to PlayerTickEvent. Changed to .equals . onUnequiped is the method that is called when the bauble item is removed from the baubles inventory. I need to call is because I am basically making my own version of their inventory. If you haven't already: https://github.com/Azanor/Baubles BioWarfare Mod: http://goo.gl/BYWQty
March 5, 20169 yr Author Yes I do that but their inventory is not an item inventory and so I need to make sure when the player dies (which ive done) or when the player tosses the item that the unequipped method is called.Becasue decrStackSize does not get called when this happens. BioWarfare Mod: http://goo.gl/BYWQty
March 5, 20169 yr Author Cant I tell when the player presses the "toss key"? BioWarfare Mod: http://goo.gl/BYWQty
March 5, 20169 yr Author So why doesn't it work?(it works for the throwing out of inventory but not for pressing Q) BioWarfare Mod: http://goo.gl/BYWQty
March 6, 20169 yr When you're done, try shoving your item into an Item Frame. Good luck solving that. 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.
March 6, 20169 yr Author When you're done, try shoving your item into an Item Frame. Good luck solving that. Very good point. Not to mention every other mod that takes the item out of the players inventory. Is there anyway to tell when the items stacksize has been decreased?Otherwise I may have to use a different approach with this whole thing but for now il continue on. Use a debugger to find out what is happening. From what I can see the code paths for "press q" and "drop item outside inventory" are the same thing. Well I thought it was a server client issue because throwing the item didn't stop my flight but i still took damage and so with this: @SubscribeEvent public void ItemTossEvent(ItemTossEvent event) { EntityPlayer player = event.player; if (event.entityItem.getEntityItem().getItem() == TatItems.itemBaublesBag) { ItemStack baublesbag = event.entityItem.getEntityItem(); InventoryBaublesBag inventorybaublesbag = (InventoryBaublesBag) BaublesBag.getInventory(baublesbag, player); for (int a = 0; a < inventorybaublesbag.inventory.length; a++) { if (inventorybaublesbag.getStackInSlot(a) != null && inventorybaublesbag.getStackInSlot(a).getItem() instanceof IBauble) { if(player.worldObj.isRemote){ System.out.println("client"); } if(!player.worldObj.isRemote){ System.out.println("server"); } ((IBauble) inventorybaublesbag.getStackInSlot(a).getItem()).onUnequipped(inventorybaublesbag.getStackInSlot(a), player); } } } } Putting the item outside the inventory prints both client and server whereas pressing "q" only prints server. So I think I am right in saying I need to send a packet from the server to the client then? Not an expert. BioWarfare Mod: http://goo.gl/BYWQty
March 6, 20169 yr When you're done, try shoving your item into an Item Frame. Good luck solving that. Very good point. Not to mention every other mod that takes the item out of the players inventory. Is there anyway to tell when the items stacksize has been decreased?Otherwise I may have to use a different approach with this whole thing but for now il continue on. As I said, there is NO event, NO notification, NO function that is called when this occurs. The item stack's direct property object stacksize is decremented. You can't even ASM that. 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.
March 6, 20169 yr I am here just to reassure (second others) you that tracking items (itemstacks) in: inventories (mobs, players, blocks) and world itself - while possible for some of those parties - will NEVER be fully safe/working. It is simply impossible to do that using any standard approach. As to non-standard apporach - it won't end well (been there, done that), and again will never be "exact" and safe. You can only track few things about items, but not all. 1.7.10 is no longer supported by forge, you are on your own.
March 6, 20169 yr I'm confused as to why you are going about things the way your are ... It sounds like you have a bauble that gives the user some buff as long as they have some other "fuel" item in their inventory. Can't you achieve what you want by using the baubles ontick event. Every x ticks look at the players inventory and if they have the item, give the buff for x ticks. If they don't have the item then the buff won't get refreshed. Current Project: Armerger Planned mods: Light Drafter | Ore Swords Looking for help getting a mod off the ground? Coding | Textures
March 6, 20169 yr Author Ok looks like I will have to take a different approach to this. Sorry I should have listened to you in the first place but I'm stubborn. BioWarfare Mod: http://goo.gl/BYWQty
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.