Viewportl is a Minecraft Inventory GUI framework, designed to easily create reactive GUIs.
Based on the well-known Signal reactive system, popularized by web-frameworks like SolidJS, leptos-rs, etc.
It aims to provide a multi-platform GUI framework to quickly and easily integrate GUIs into any plugin/mod.
This project is very much still in early alpha!
The API may receive breaking changes at anytime without notice!
These are few of the things planned for the near future.
The list is not complete, and things may be added/removed along the way.
- Move utils and platform compatibility to a separate project
- Move everything not UI related to scafall
- Provide API Entrypoint to load the viewportl instance on top of scafall
-
Check if Java interop can be keptJava interop won't be a priority! Kotlin first - Create sample projects for a tutorial and testing
- Spigot single-platform example
- Sponge single-platform example
- API Features
- Routing
- Default route (initial route to select, useful for nested routing)
- Basic elements
- Buttons
- Group (group elements together)
- Show (render components based on conditions)
- Slot Input (not fully implemented on all platforms)
- Persistent State (Currently signals are non-persistent, meaning state is lost when closing the inv or the component is removed from the graph)
- Data fetching (async/sync data fetching utils into signals)
- Multi-player GUIs (multiple viewers, synchronisation)
- Routing
- Platform
- Multi Platform Support
- Spigot (High priority)
- platform integration
- Scheduler
- InvUI Renderer
- InvUI Interaction Handler
- Use native event system
- Components
- Sponge
- platform integration
- InvUI Renderer
- Fix inventory title update
- InvUI Interaction Handler
- Components
- Spigot (High priority)
- Multi Platform Support
Examples can be found in the examples
directory.
-Example Directory-
Both Kotlin and Java examples can be found there.
Note that Kotlin is recommended for the best Development Experience.