package tc.oc.commons.bukkit.chat;
import net.md_5.bungee.api.chat.BaseComponent;
import org.bukkit.command.CommandSender;
/**
* Performs server-side transformations on components to prepare them for sending to the client
*/
public interface ComponentRenderer<T extends BaseComponent> {
/**
* Transform the given component tree into one that can be sent to the given viewer's client,
* i.e. is made entirely of components that the client knows how to render. If no transformations
* are required, the original component tree should be returned.
* @param context rendering context that can be used to render child components
* @param original original component tree
* @param viewer viewer of the rendered component
* @return rendered component
*/
BaseComponent render(ComponentRenderContext context, T original, CommandSender viewer);
}