EDIT: I thought for sure I saw a [HAS_EDGE] token before, but I can only find [NO_EDGE_ALLOWED].
FORCE_EDGE is a reaction token. Don't know if that is the source of your confusion.
My reaction only makes generic blocks made of an unknown material that is counted as a masonry.
I have used the get material from reagent, but mabey it was in the wrong "NONE" slot.
Those slots confuse me as it seems they change order from buildings to items and all.
It is probably just me though.
There are four constant "slots" when defining an item for reagents/products/buildings.
{ITEM_TYPE}:{ITEM_SUBTYPE}:{MATERIAL_TYPE}:{MATERIAL_SUBTYPE}
The first three are always,
always 1 string long. It gets confusing when you use a multi-string material_subtype.
[PRODUCT:100:4:{BLOCKS}:{NONE}:{GET_MATERIAL_FROM_REAGENT}:{A:NONE}]
The above is an example (notice far right brackets). What you put in the MATERIAL_TYPE slot determines what format your material_subtype will take.
INORGANIC makes the material_subtype 1 string, PLANT/CREATURE_MAT requires a format of PLANT/CREATURE:MATERIAL, and GET_MATERIAL_FROM_REAGENT requires REAGENT:MATERIAL_REACTION_PRODUCT.
You should only use NONE in one of the slots if that slot isn't applicable or required.
CABINET:NONE:INORGANIC:NONE as a product literally makes a "rock cabinet" which is the INORGANIC's default material_subtype
While as a reagent/build_item it takes any cabinet made of an inorganic material
This is why many custom buildings' build_items (and reaction reagents) are full of NONE slots.