Jump to content

[1.13.2] Is there any way to give a player a status effect when holding an item?


Recommended Posts

Posted

I have an item that I would like to give the player poison when it is in their main or offhand, and nothing if it is not. Is there any way to achieve this effect?

Posted
21 minutes ago, diesieben07 said:

Override Item#inventoryTick.

Cool, but where would I override this? And how? I set up a class called PoisonIvyLeaf to check if this item is in the hand, but I'm not sure where to implement inventoryTick to check for that. Should I set up a SubscribeEvent?

Posted (edited)
10 hours ago, diesieben07 said:

You override this method in the item class for the item you want to have this effect.

here's what I have so far

package item;

import mmyron.mmyronsqol.lists.ItemList;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraft.potion.Potion;
import net.minecraft.potion.PotionEffect;

public class ItemPoisonIvyLeaf extends Item{

	public ItemPoisonIvyLeaf(Properties properties) {
		super(properties);
	}
	
	private void onPlayerTick(EntityPlayer player) {
		ItemStack itemInSlot = player.inventory.getStackInSlot(0);
		if(itemInSlot.getItem() == ItemList.poison_ivy_leaf) {
			player.addPotionEffect(new PotionEffect(Potion.getPotionById(19), 5, 0));
		}
	}

}

I feel like this would work, but now I'm clueless as to how to register the item in the registry lol :/

How would I call this item class in the registry in my main class?

Edited by mmyron
Posted
9 hours ago, diesieben07 said:

Override Item#inventoryTick.

8 hours ago, mmyron said:

private void onPlayerTick(EntityPlayer player)

 

One of these things is not like the other.

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.

Posted (edited)
2 hours ago, Draco18s said:

 

One of these things is not like the other.

Right, so I changed that to override inventoryTick (it wasn't showing up correctly for me earlier), and i got this


	@Override
	public void inventoryTick(ItemStack stack, World worldIn, Entity entityIn, int itemSlot, boolean isSelected) {
		
		if(stack.getItem() == ItemList.poison_ivy_leaf && isSelected) {
			
		}
	}

However, I'm unable to use the addPotionEffect, since the entityIn doesn't seem to be a player?

 

EDIT: Figured it out.

Spoiler

@Override
	public void inventoryTick(ItemStack stack, World worldIn, Entity entityIn, int itemSlot, boolean isSelected) {
		
		if(stack.getItem() == ItemList.poison_ivy_leaf && isSelected) {
			if(entityIn instanceof EntityPlayer && !entityIn.has) {
				((EntityPlayer) entityIn).addPotionEffect(new PotionEffect(MobEffects.POISON, 20, 0));
			}
		}
	}

 

 

Edited by mmyron

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.