package choonster.testmod3.item;
import choonster.testmod3.capability.CapabilityProviderSerializable;
import choonster.testmod3.capability.hiddenblockrevealer.CapabilityHiddenBlockRevealer;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound;
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 net.minecraftforge.common.capabilities.ICapabilityProvider;
import javax.annotation.Nullable;
import java.util.Optional;
/**
* An item that reveals hidden blocks.
*
* @author Choonster
*/
public class ItemHiddenBlockRevealer extends ItemTestMod3 {
public ItemHiddenBlockRevealer() {
super("hidden_block_revealer");
CapabilityHiddenBlockRevealer.RevealHiddenBlocksGetter.addToItem(this);
}
@Override
public ActionResult<ItemStack> onItemRightClick(World worldIn, EntityPlayer playerIn, EnumHand hand) {
final ItemStack heldItem = playerIn.getHeldItem(hand);
final Optional<Boolean> revealHiddenBlocks = CapabilityHiddenBlockRevealer.toggleRevealHiddenBlocks(heldItem);
if (!worldIn.isRemote) {
revealHiddenBlocks.ifPresent((value) -> {
final String message = value ? "message.testmod3:hidden_block_revealer.reveal" : "message.testmod3:hidden_block_revealer.hide";
playerIn.sendMessage(new TextComponentTranslation(message));
});
}
return new ActionResult<>(EnumActionResult.SUCCESS, heldItem);
}
@Override
public ICapabilityProvider initCapabilities(ItemStack stack, @Nullable NBTTagCompound nbt) {
return new CapabilityProviderSerializable<>(CapabilityHiddenBlockRevealer.HIDDEN_BLOCK_REVEALER_CAPABILITY, CapabilityHiddenBlockRevealer.DEFAULT_FACING);
}
}