I found the cause ages ago but it seems like noone cares about it. The problem is that badly written add-ons execute servercontrol.cs again without first checking if it was loaded, resetting the counter and basically deleting all previously created prefs. The fix is as simple as placing something like this at the top:
//Check if module has already been loaded
if($RTB::Hooks::ServerControl == 1)
{
error(" Why are you randomly executing this file?");
return;
}
It's also because older add-ons don't use the right hooks path or check for the correct global variable.
I tried using GRTB because someone said that would work, and it doesn't work.
GRTB increases the limit for GUI control objects, in theory it allows you to have more server prefs on the server control list; That is, providing they use the correct hooks variable and path!
------------------------------
How to fix this issue:
For every add-on that's prefs are not showing up, you need to change the hooks global var and path in the main code (or whichever cs file has the server prefs code). Here is an example (fixed duplicator prefs)
if($RTB::Hooks:ServerControl)
exec("Add-Ons/System_ReturnToBlockland/hooks/serverControl.cs");
RTB_registerPref("Admin Only", "Duplorcator", "Pref::Duplorcator::AdminOnly", "bool", "Tool_Duplicator", 0, 0, 0);
Hope this helps. Good luck!