Hello, welcome to the forum.
Such a plugin would be already half-possible with the current API. The render distance (called View Distance in our code) is settable on a per-client basis through cClientHandle:SetViewDistance(); it is clamped to the world's max view distance (cWorld:SetMaxViewDistance()). However, just setting the view distance will NOT unload the chunks that were already loaded for the client and it will not load new chunks; it will only affect loading and unloading while the player moves around. This may be insufficient for your use case. There are internal methods that load and unload chunks (cClientHandle::StreamNextChunk(), cClientHandle::UnloadOutOfRangeChunks()), we might export them to the API for plugins to use.
Such a plugin would be already half-possible with the current API. The render distance (called View Distance in our code) is settable on a per-client basis through cClientHandle:SetViewDistance(); it is clamped to the world's max view distance (cWorld:SetMaxViewDistance()). However, just setting the view distance will NOT unload the chunks that were already loaded for the client and it will not load new chunks; it will only affect loading and unloading while the player moves around. This may be insufficient for your use case. There are internal methods that load and unload chunks (cClientHandle::StreamNextChunk(), cClientHandle::UnloadOutOfRangeChunks()), we might export them to the API for plugins to use.