Posted May 3, 20178 yr Hello, how to remove drop from the leaves? @SubscribeEvent public void onDrop(LivingDropsEvent e) { if(e.getEntity().worldObj.isRemote) return; for(EntityItem entityItem : e.getDrops()) { if(entityItem.getEntityItem().getItem() instanceof ItemFood) { if(entityItem.getEntityItem().getItem() == Items.APPLE) { } } } } Edited May 8, 20178 yr by WildHeart
May 3, 20178 yr LivingDropsEvent is for living entities that die and drop items (e.g. animals and monsters). For blocks, you can use HarvestDropsEvent. Check for your chosen block, then edit the list of drops however you want.
May 3, 20178 yr Author Hmm, now how to remove specifically apples? @SubscribeEvent public void onDrop(BlockEvent.HarvestDropsEvent e) { if(e.getWorld().isRemote) return; if(e.getWorld().getBlockState(e.getPos()).getBlock() instanceof BlockLeaves) { e.getDrops() } }
May 3, 20178 yr Try iterating. 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.
May 3, 20178 yr Author 13 minutes ago, Draco18s said: Try iterating. Maybe?: if(e.getWorld().getBlockState(e.getPos()).getBlock() instanceof BlockLeaves) { Iterator apples = e.getDrops().iterator(); while (apples.hasNext()) { if(e.getDrops() instanceof ItemFood) { e.setCanceled(true); break; } } }
May 3, 20178 yr No. Try again. Look at the documentation. 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.
May 3, 20178 yr Author while (apples.hasNext()) { if(apples.next() instanceof ItemFood) { apples.remove(); } } ?
May 8, 20178 yr Author Solved! @SubscribeEvent public void onDrop(BlockEvent.HarvestDropsEvent e) { if(!e.getWorld().isRemote) { if(e.getWorld().getBlockState(e.getPos()).getBlock() instanceof BlockLeaves) { e.getDrops().removeIf(itemStack -> itemStack == null || itemStack.getItem() == Items.APPLE); } } }
May 8, 20178 yr There also shouldn't be empty stacks in the drops array. 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.