Posted September 28, 20196 yr Hello, I'm trying to cancel a death event if player has the item in his inventory however the event is not cancelled even if using System.out.println(e.isCancelable() + " < cancellabe | cancelled > " + e.isCanceled()); After "e.setCancelled(true);" gives me true for both I keep dying without have the item removed from the inventory. Here's my DeathEvent: @EventBusSubscriber public class EntityDeath { @SubscribeEvent(priority = EventPriority.HIGHEST) @Mod.EventHandler public void onEntityDeath(LivingDeathEvent e) { World world = e.getEntity().getEntityWorld(); if (world.isRemote) { return; } if (!world.isRemote) { if (e.getEntityLiving() instanceof EntityPlayer) { EntityPlayerMP mp = (EntityPlayerMP) e.getEntity(); ItemStack pixie = new ItemStack(InitItems.PIXIE); FoodStats food = mp.getFoodStats(); if (mp.inventory.hasItemStack(pixie)) { System.out.println(e.isCancelable() + " < cancellabe | cancelled > " + e.isCanceled()); e.setCanceled(true); System.out.println(e.isCancelable() + " < cancellabe | cancelled > " + e.isCanceled()); mp.heal(20F); food.setFoodLevel(20); food.setFoodSaturationLevel(20); world.playSound(mp, mp.getPosition(), SoundEvents.BLOCK_ANVIL_BREAK, SoundCategory.BLOCKS, 1, 1); pixie.setCount(pixie.getCount() - 1); } } } } }
September 28, 20196 yr 7 minutes ago, X_Khan_X said: After "e.setCancelled(true);" gives me true for both I keep dying without have the item removed from the inventory. Here's my DeathEvent: If I understand correctly your problem is that the Item isn't removed from your inventory. 7 minutes ago, X_Khan_X said: ItemStack pixie = new ItemStack(InitItems.PIXIE); This ItemStack does not equal the ItemStack in the inventory. SO 10 minutes ago, X_Khan_X said: pixie.setCount(pixie.getCount() - 1); This does nothing. You should use one of the removal methods. VANILLA MINECRAFT CLASSES ARE THE BEST RESOURCES WHEN MODDING I will be posting 1.15.2 modding tutorials on this channel. If you want to be notified of it do the normal YouTube stuff like subscribing, ect. Forge and vanilla BlockState generator.
September 28, 20196 yr Author Just now, Animefan8888 said: If I understand correctly your problem is that the Item isn't removed from your inventory. This ItemStack does not equal the ItemStack in the inventory. SO This does nothing. You should use one of the removal methods. The code above pass the "if player has the item in the inventory" check, I mean after if (mp.inventory.hasItemStack(pixie)) { I added a System.out.println with random text and it is printed.
September 28, 20196 yr Just now, X_Khan_X said: The code above pass the "if player has the item in the inventory" check, I mean after if (mp.inventory.hasItemStack(pixie)) { I added a System.out.println with random text and it is printed. Yes I understand that. The problem is that it isn't removed from the player's inventory right? The problem is 16 minutes ago, X_Khan_X said: ItemStack pixie = new ItemStack(InitItems.PIXIE); This ItemStack does not equal the ItemStack in the inventory. SO 16 minutes ago, X_Khan_X said: pixie.setCount(pixie.getCount() - 1); This does nothing. You should use one of the removal methods in the players inventory. VANILLA MINECRAFT CLASSES ARE THE BEST RESOURCES WHEN MODDING I will be posting 1.15.2 modding tutorials on this channel. If you want to be notified of it do the normal YouTube stuff like subscribing, ect. Forge and vanilla BlockState generator.
September 28, 20196 yr Author 1 minute ago, Animefan8888 said: This ItemStack does not equal the ItemStack in the inventory. SO How to check it correctly then?
September 28, 20196 yr 1 minute ago, X_Khan_X said: How to check it correctly then? You need to remove the Item from the player's inventory. VANILLA MINECRAFT CLASSES ARE THE BEST RESOURCES WHEN MODDING I will be posting 1.15.2 modding tutorials on this channel. If you want to be notified of it do the normal YouTube stuff like subscribing, ect. Forge and vanilla BlockState generator.
September 28, 20196 yr Author Just now, Animefan8888 said: You need to remove the Item from the player's inventory. But I have to check if the player has this item no?
September 28, 20196 yr 23 minutes ago, X_Khan_X said: if (mp.inventory.hasItemStack(pixie)) { This part is fine. VANILLA MINECRAFT CLASSES ARE THE BEST RESOURCES WHEN MODDING I will be posting 1.15.2 modding tutorials on this channel. If you want to be notified of it do the normal YouTube stuff like subscribing, ect. Forge and vanilla BlockState generator.
September 28, 20196 yr Author Then I don't understand the problem... I don't understand what I have to change
September 28, 20196 yr Just now, X_Khan_X said: I don't understand what I have to change 56 minutes ago, X_Khan_X said: pixie.setCount(pixie.getCount() - 1); That part. VANILLA MINECRAFT CLASSES ARE THE BEST RESOURCES WHEN MODDING I will be posting 1.15.2 modding tutorials on this channel. If you want to be notified of it do the normal YouTube stuff like subscribing, ect. Forge and vanilla BlockState generator.
September 28, 20196 yr 1 hour ago, X_Khan_X said: mp.heal(20F); This only heals the Entity if the entities health is greater than 0. Use setHealth VANILLA MINECRAFT CLASSES ARE THE BEST RESOURCES WHEN MODDING I will be posting 1.15.2 modding tutorials on this channel. If you want to be notified of it do the normal YouTube stuff like subscribing, ect. Forge and vanilla BlockState generator.
September 28, 20196 yr Author 13 minutes ago, Animefan8888 said: This only heals the Entity if the entities health is greater than 0. Use setHealth Thanks
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.