Jump to content
View in the app

A better way to browse. Learn more.

Forge Forums

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Featured Replies

Posted

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);
				}
			}
		}
	}
}
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.

  • 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.

 

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.

  • Author
 
 
 
 
1 minute ago, Animefan8888 said:

This ItemStack does not equal the ItemStack in the inventory. SO 

How to check it correctly then?

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.

  • 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?

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.

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.

  • 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.

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...

Important Information

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

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.