package choonster.testmod3.item;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.ItemStack;
import net.minecraft.util.ActionResult;
import net.minecraft.util.EnumActionResult;
import net.minecraft.util.EnumHand;
import net.minecraft.util.text.TextComponentTranslation;
import net.minecraft.world.World;
import java.util.function.IntFunction;
/**
* An item that displays a number stored in NBT in its display name.
*
* @author Choonster
*/
public abstract class ItemWithScripts extends ItemTestMod3 {
private final IntFunction<String> scriptFunction;
public ItemWithScripts(IntFunction<String> scriptFunction, String itemName) {
super(itemName);
this.scriptFunction = scriptFunction;
setHasSubtypes(true);
}
private int getNumber(ItemStack stack) {
if (stack.hasTagCompound()) {
return stack.getTagCompound().getInteger("Number");
} else {
return -1337;
}
}
@Override
public String getItemStackDisplayName(ItemStack stack) {
return super.getItemStackDisplayName(stack) + scriptFunction.apply(stack.getItemDamage());
}
@Override
public ActionResult<ItemStack> onItemRightClick(World worldIn, EntityPlayer playerIn, EnumHand hand) {
final ItemStack heldItem = playerIn.getHeldItem(hand);
if (!worldIn.isRemote) {
playerIn.sendMessage(new TextComponentTranslation("message." + getRegistryName() + ".right_click", scriptFunction.apply(getNumber(heldItem))));
}
return new ActionResult<>(EnumActionResult.SUCCESS, heldItem);
}
}