Definitely looks great for a first script, the only thing I noticed is this:
 
@Override
	public boolean canProcess() {
		//If player inventory *IS NOT* full and player *IS NOT* at the cabbage patch, this evaluates to true
		if(!api.getInventory().isFull() && !Cabbage_Area.contains(api.myPlayer())) {
			return true;
		} else {
			return false;
		}
	}
	 
 
	You can write this way easier:
 
@Override
	public boolean canProcess() {
		//If player inventory *IS NOT* full and player *IS NOT* at the cabbage patch, this evaluates to true
		return !api.getInventory().isFull() && !Cabbage_Area.contains(api.myPlayer()));
	}
	 
	 
 
	If you have any questions feel free to ask