Great thank you very much, I did find that I was able to use the CollectibleBehaviorHandbookTextAndExtraInfo.cs class/OnHandbookPageComposed to add that custom behavior! Looks great!
public void OnHandbookPageComposed(
List<RichTextComponentBase> components,
ItemSlot inSlot,
ICoreClientAPI capi,
ItemStack[] allStacks,
ActionConsumable<string> openDetailPageFor
)
{
// Drops when harvested (icon row)
if (codes != null && codes.Length > 0)
{
List<ItemStack> dropStacks = ResolveStacks(capi, codes);
AddIconRow(
components,
capi,
heading ?? "Drops when harvested",
dropStacks,
openDetailPageFor,
40f
);
}
// Can be placed into (icon row)
if (canPlaceCodes != null && canPlaceCodes.Length > 0)
{
List<ItemStack> placeStacks = ResolveStacks(capi, canPlaceCodes);
AddIconRow(
components,
capi,
canPlaceHeading ?? "Can be placed into",
placeStacks,
openDetailPageFor,
40f
);
}
// Used for / description section
if (!string.IsNullOrWhiteSpace(description))
{
if (components.Count > 0)
{
components.Add(new ClearFloatTextComponent(capi, 14f));
}
components.AddRange(VtmlUtil.Richtextify(
capi,
"<font weight=\"bold\">" + Lang.Get("Used for") + "</font>\n",
CairoFont.WhiteSmallText()
));
components.Add(new ClearFloatTextComponent(capi, 2f));
components.AddRange(VtmlUtil.Richtextify(
capi,
Lang.Get(description) + "\n",
CairoFont.WhiteSmallText()
));
components.Add(new ClearFloatTextComponent(capi, 6f));
}
}
}
Here's part of the relevant code, I did end up making it all custom (maybe I shouldn't have but it works).