package WayofTime.bloodmagic.item.sigil; import java.util.ArrayList; import java.util.List; import net.minecraft.entity.Entity; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.EntityPlayerMP; import net.minecraft.item.ItemStack; import net.minecraft.util.ActionResult; import net.minecraft.util.EnumActionResult; import net.minecraft.util.EnumFacing; import net.minecraft.util.EnumHand; import net.minecraft.util.math.BlockPos; import net.minecraft.world.World; import net.minecraftforge.fml.relauncher.Side; import net.minecraftforge.fml.relauncher.SideOnly; import org.apache.commons.lang3.tuple.ImmutablePair; import org.apache.commons.lang3.tuple.Pair; import WayofTime.bloodmagic.item.ItemBindable; import WayofTime.bloodmagic.util.helper.TextHelper; public class ItemSigilToggleable extends ItemSigilBase { public ItemSigilToggleable(String name, int lpUsed) { super(name, lpUsed); setToggleable(); } @Override @SideOnly(Side.CLIENT) public void addInformation(ItemStack stack, EntityPlayer player, List tooltip, boolean advanced) { super.addInformation(stack, player, tooltip, advanced); if (getActivated(stack)) tooltip.add(TextHelper.localize("tooltip.BloodMagic.activated")); else tooltip.add(TextHelper.localize("tooltip.BloodMagic.deactivated")); } @Override public ActionResult onItemRightClick(ItemStack stack, World world, EntityPlayer player, EnumHand hand) { if (!world.isRemote && !isUnusable(stack)) { if (player.isSneaking()) setActivated(stack, !getActivated(stack)); if (getActivated(stack) && ItemBindable.syphonNetwork(stack, player, getLPUsed())) return super.onItemRightClick(stack, world, player, hand); } return super.onItemRightClick(stack, world, player, hand); } @Override public EnumActionResult onItemUse(ItemStack stack, EntityPlayer player, World world, BlockPos pos, EnumHand hand, EnumFacing side, float hitX, float hitY, float hitZ) { return (ItemBindable.syphonNetwork(stack, player, getLPUsed()) && onSigilUse(stack, player, world, pos, side, hitX, hitY, hitZ)) ? EnumActionResult.SUCCESS : EnumActionResult.FAIL; } public boolean onSigilUse(ItemStack itemStack, EntityPlayer player, World world, BlockPos blockPos, EnumFacing side, float hitX, float hitY, float hitZ) { return false; } @Override public void onUpdate(ItemStack stack, World worldIn, Entity entityIn, int itemSlot, boolean isSelected) { if (!worldIn.isRemote && entityIn instanceof EntityPlayerMP && getActivated(stack)) { if (worldIn.getWorldTime() % 100 == 0) { if (!ItemBindable.syphonNetwork(stack, (EntityPlayer) entityIn, getLPUsed())) { setActivated(stack, false); } } onSigilUpdate(stack, worldIn, (EntityPlayer) entityIn, itemSlot, isSelected); } } public void onSigilUpdate(ItemStack stack, World world, EntityPlayer player, int itemSlot, boolean isSelected) { } @Override public List> getVariants() { List> ret = new ArrayList>(); ret.add(new ImmutablePair(0, "active=false")); ret.add(new ImmutablePair(1, "active=true")); return ret; } }