Jump to content

[1.12.2] Player death not cancelled


X_Khan_X

Recommended Posts

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);
				}
			}
		}
	}
}
Link to comment
Share on other sites

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.

Link to comment
Share on other sites

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.

 

Link to comment
Share on other sites

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.

Link to comment
Share on other sites

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.

Link to comment
Share on other sites

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.

Link to comment
Share on other sites

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.

Link to comment
Share on other sites

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.

Link to comment
Share on other sites

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.

Guest
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Announcements



×
×
  • Create New...

Important Information

By using this site, you agree to our Terms of Use.