public static void InjectClientThread(this IClientWorldAccessor world, string name, params ClientSystem[] systems) { var instance = CreateClientThread(world, name, systems); var clientThreads = world.GetClientThreads(); var vanillaSystems = world.GetVanillaSystems(); foreach (var system in systems) { vanillaSystems.Push(system); } (world as ClientMain).SetField("clientSystems", vanillaSystems.ToArray()); var thread = new Thread(() => instance.CallMethod("Process")) { IsBackground = true }; thread.Start(); thread.Name = name; clientThreads.Add(thread); }