I am still trying to figure out HarvestComponents, myself. If you use the reference viewer, you can see that each one is tied to a number of in-game objects (and all the submap files, but that is less… editable). My assumption is that you’d have to manually replace all of those references if you wanted things to work your way. That or by editing the HarvestComponents, but even then it won’t be built outside a TC, if I’m not mistaken.
Setting which resources can or cannot be harvested is relatively simple.
You have the “Harvest Damage Type Entries” field which defines all damage types that affect this harvestable. Leaving this empty, and not properly setting “usable harvesting” and “use harvest damage type” will result in this component being impossible to harvest (or at least it should).
Then you have “Harvest Resource Entries” where you can define which resources can be gathered from this component, period. Under each of these elements is “Damage Type Entry Value Overrides”, where you can specify damage types that will use non-default settings. Specifically, the chance it will harvest this particular resource (weight overrides) and min/max quantity overrides. The line number in each array should correspond for things to work correctly.
These should only work as overrides if you have defined the same (or parent) damage type in the “Damage Type Entries” below it, but it is possible they will work regardless.
As for BasePick, it’s the parent class for MetalPick and StonePick damage types. In other words, it governs the settings for both. In some cases, the only difference is their speed (because of their different damage), and in some, overrides for either (or both) subclasses are used.
The sickle can only harvest fibers because the weight for fibers is set to a very high number for the SickleHarvest damage type (1000 specifically). Compared to 0.15 and lower weight for the other resources (an override is not set), gathering anything except fiber is not impossible, but very much improbable.
Hope this helps.