Grabbing stuff from your garden ultimately calls CampgroundRequest.clearCrop() I think, which has
Code:
CampgroundRequest.setCampgroundItem( ItemPool.PUMPKIN, 0 );
CampgroundRequest.setCampgroundItem( ItemPool.PEPPERMINT_SPROUT, 0 );
In CampgroundRequest.setCampgroundItem(), one of the counts has changed from 1/3/whatever to 0 (actually, it's removed from the list first, then re-added as 0), and the other one wasn't in KoLConstants.campground, so now both of them are in there with a value of 0. CampgroundRequest.CROPS just happens to check for pumpkins first, so that's what it always thinks you have. Without causing another server hit, it looks like the current campground item should be checked (getCrop() or getCropIndex()) and then setCampgroundItem() should be called with the updated quantity of 0. I can't figure out how to convert the AdventureResult to an item name or ID to change the quantity and convert back, and it looks like that's what needs to be done.
Using a seed packet leads to the image for the new one being seen without the old one being removed.
Alternatively, a new String currentCrop could be added and set in parseCampground() just for use with the ascension reminder. It would be useful in clearCrop() also, I guess, to set one of the items to 0 without adding the other one to KoLConstants.campground. It just seems weird to have something that seems redundant with what should be stored in campground.