KubeJS UI
You can also always look at existing modpack using KubeJS UI to see how they do it
events.listen(onEvent('ui.main_menu', event => {
event.replace(ui => {
//ui.background('kubejsui:textures/example_background.png')
ui.tilingBackground('kubejsui:textures/example_background.png', 256)
ui.minecraftLogo(30)
ui.button(b => {
b.name = 'Test'
b.x = 10
b.y = 10
b.action = 'minecraft:singleplayer'
})
ui.button(b => {
b.name = 'Test but in bottom right corner'
b.x = ui.width - b.width - 10
b.y = ui.height - b.height - 10
b.action = 'https://feed-the-beast.com/'
})
ui.label(l => {
l.name = text.yellow('FTB Stranded')
l.x = 2
l.y = ui.height - 12
l.action = 'https://feed-the-beast.com/'
})
ui.image(i => {
i.x = (ui.width - 40) / 2
i.y = (ui.height - 30) / 2
i.width = 40
i.height = 30
i.action = 'https://feed-the-beast.com/'
})
ui.label(l => {
l.name = text.aqua('Large label')
l.x = 100
l.y = ui.height - 20
l.height = 15
l.shadow = true
})
})
})