public EnumActionResult onItemUse(EntityPlayer player, World worldIn, BlockPos pos, EnumHand hand, EnumFacing facing, float hitX, float hitY, float hitZ)
{
if(worldIn.getBlockState(pos).getBlock() instanceof BlockIronDirt) {
ItemStack item = player.getHeldItem(hand);
item.damageItem(1, player);
NBTTagCompound nbt = item.getTagCompound();
String res = nbt.getString("clicks");
Integer resint = Integer.valueOf(res);
if(resint < 15) {
String ress = res + 1;
nbt.setString("clicks", ress);
player.addItemStackToInventory(new ItemStack(Blocks.DIRT));
} else if(resint == 15) {
player.addItemStackToInventory(new ItemStack(Items.IRON_NUGGET));
}
}
return EnumActionResult.SUCCESS;
}
Мне не обязательно, чтобы клики были только по блоку на определённых коордах. Если позиция сменилать по сравнению с предыдущей, то тебе уже надо сбросить счетчик и начать считать с нуля
Как это сделать?тебе надо чекать, есть ли он там, если нету, значит добавить
if(!item.hasTagCompound()){
NBTTagCompound nbt = new NBTTagCompound();
nbt.setInteger("clicks", 1);
//позиция блока еще, уже сам
item.setTagCompound(nbt);
}else{
//пок классике
}
Тогда я кликну 5 раз по одному блоку, 10 раз по другому и мне выпадет предмет, что есть не совсем логичноМне не обязательно, чтобы клики были только по блоку на определённых коордах
@SideOnly(Side.CLIENT)
public void addInformation(ItemStack stack, @Nullable World worldIn, List<String> tooltip, ITooltipFlag flagIn)
{
NBTTagCompound nbt = stack.getTagCompound();
Integer lore = nbt.getInteger("clicks");
tooltip.add(String.valueOf(lore));
}
И пиши просто int, без всяких Integer и прочегоПотому что в итемстаке NBTTagCompound по дефолту null, тебе надо чекать, есть ли он там, если нету, значит добавить, иначе взять тот, что есть.