Your web app, running inside Minecraft.
WebGUI opens a real web page in the game — as a full-screen interface or as a transparent overlay on top of gameplay. Not a reskinned inventory, not another UI framework to learn: actual HTML, CSS and JavaScript, rendered by actual Chromium.
If you can build a website, you can build a Minecraft interface.
What people build with it
- Server shops that look like an online store, with images, search and a cart
- Quest journals and codexes with real typography and layout
- Live maps — Leaflet or your own canvas, following the player as they walk
- HUD overlays — team scores, timers, health bars, a minimap, drawn over the world
- Admin panels for staff, with the same dashboard you already run in a browser
- Custom death screens that say who killed you and let you respawn
- Launch menus and lobby screens with your server's own branding
- Entire in-game apps — anything you would otherwise build as a web app
Why it feels different
Everything you already use keeps working. React, Vue, Svelte or plain JavaScript. Tailwind. Your component library. Your animations, your API, your WebSocket. You develop in a browser with hot reload, then point the mod at the page — and it looks exactly the same in the game.
The page is not a decoration, either. It knows who is looking at it and what is happening around them — the player's name, health, food, position, where they are looking, which block or mob is under the crosshair — updated as they move. And it can talk back: a click in the page becomes an event on the server, so a shop can actually sell, and a button can actually run a command.
// This is the whole integration
window.webgui.on('client', player => {
document.title = `${player.username} — ${player.health} HP`;
});
window.webgui.postToGame({ channel: 'shop:buy', item: 'diamond' });
For React, Vue and Svelte there is one package with hooks and stores ready to go:
npm i @webgui/client
You don't even need a web host
Put your files in a folder on the server and point the mod at them. They travel down the same connection the player is already on — no domain, no hosting bill, no port to open, works behind NAT. Edit a file, run one command, and the page a player has open refreshes in front of them.
Prefer your own host? Nothing changes: an https:// address works exactly as it always did, and the two mix freely.
For server owners
Opening a page is one command:
/webgui gui @a https://your-site.example/shop
/webgui hud @a webgui:/hud.html
Pages can also be bound to an entity, so right-clicking a villager opens your shop with that villager's context. Every URL the mod opens carries a signed token, so your backend knows which player is asking without a login screen. Players without the mod are told what they are missing instead of quietly seeing nothing.
Compatibility
| Minecraft | Loader |
|---|---|
| 26.2 · 26.1.2 | NeoForge |
| 1.21.5 – 1.21.11 | Fabric · NeoForge |
| 1.21 – 1.21.1 | Fabric · NeoForge |
| 1.20.1 | Fabric |
Minecraft 26 is NeoForge-only for now — Fabric is waiting on Yarn mappings for 26.x.
Installing: on Fabric you need Fabric API, and that is it — the browser ships inside the jar. On NeoForge, add Rinku alongside it; launchers pick it up automatically. Chromium (~150 MB) downloads itself on first launch. Java 21, or Java 25 for Minecraft 26.
Links
- Documentation — https://webgui.space — guides, the full API, and examples you can paste
- GitHub — https://github.com/mc-webgui/webgui — issues and source
- npm — https://www.npmjs.com/package/@webgui/client
How to Install WebGUI (Mod)
WebGUI by KoSHer is verified for Fabric, Neoforge across Minecraft versions 1.20.1, 1.21, 1.21.1, 1.21.10, 1.21.11, 1.21.5, 1.21.6, 1.21.7 (latest release: 2.0.0+mc26.3-neoforge, file size: 509 KB). Follow the steps below to install it safely from ModCraft.tv:
- Click the Download button above and select your Minecraft version (1.20.1, 1.21, 1.21.1, 1.21.10, 1.21.11, 1.21.5, 1.21.6, 1.21.7) and platform (Fabric, Neoforge).
- Make sure you have the compatible loader or environment installed for Fabric, Neoforge.
- Move the downloaded WebGUI file into your Minecraft
.minecraft/modsfolder and launch the game.
All Versions
+ Add Version| Name | Game version | Platforms | Published | Downloads | Actions |
|---|---|---|---|---|---|
| 25d ago | 1 | ||||
| 25d ago | 1 | ||||
| 25d ago | 1 | ||||
| 25d ago | 1 | ||||
| 25d ago | 1 | ||||
| 25d ago | 1 | ||||
| 25d ago | 1 | ||||
| 25d ago | 1 | ||||
| 25d ago | 1 | ||||
| 25d ago | 1 | ||||
| 2mo ago | 1 | ||||
| 2mo ago | 1 | ||||
| 2mo ago | 1 | ||||
| 2mo ago | 1 | ||||
| 2mo ago | 1 | ||||
| 2mo ago | 1 | ||||
| 2mo ago | 1 | ||||
| 2mo ago | 1 | ||||
| 2mo ago | 1 | ||||
| 2mo ago | 1 | ||||
| 2mo ago | 1 | ||||
| 2mo ago | 1 | ||||
| 2mo ago | 1 | ||||
| 2mo ago | 1 | ||||
| 2mo ago | 1 | ||||
| 2mo ago | 1 | ||||
| 2mo ago | 1 | ||||
| 2mo ago | 1 | ||||
| 2mo ago | 1 | ||||
| 2mo ago | 1 | ||||
| 2mo ago | 1 | ||||
| 3mo ago | 1 | ||||
| 3mo ago | 1 | ||||
| 3mo ago | 1 | ||||
| 3mo ago | 1 | ||||
| 3mo ago | 1 | ||||
| 3mo ago | 1 | ||||
| 3mo ago | 1 | ||||
| 3mo ago | 1 | ||||
| 3mo ago | 1 | ||||
| 3mo ago | 1 | ||||
| 3mo ago | 1 | ||||
| 3mo ago | 1 | ||||
| 3mo ago | 1 | ||||
| 3mo ago | 1 | ||||
| 3mo ago | 1 | ||||
| 3mo ago | 1 | ||||
| 3mo ago | 1 | ||||
| 3mo ago | 1 | ||||
| 3mo ago | 1 | ||||
| 3mo ago | 1 | ||||
| 3mo ago | 1 | ||||
| 4mo ago | 1 | ||||
| 4mo ago | 1 | ||||
| 4mo ago | 1 | ||||
| 4mo ago | 1 | ||||
| 4mo ago | 1 | ||||
| 4mo ago | 1 | ||||
| 4mo ago | 1 | ||||
| 5mo ago | 1 | ||||
| 5mo ago | 1 | ||||
| 5mo ago | 1 | ||||
| 5mo ago | 1 | ||||
| 5mo ago | 1 | ||||
| 5mo ago | 1 | ||||
| 5mo ago | 1 | ||||
| 5mo ago | 1 | ||||
| 5mo ago | 1 | ||||
| 5mo ago | 1 | ||||
| 5mo ago | 1 | ||||
| 6mo ago | 1 | ||||
| 6mo ago | 1 | ||||
| 6mo ago | 1 | ||||
| 6mo ago | 1 |
A major version for one reason: WebGUI no longer depends on another mod. Nothing in the page
API changed and the network protocol is the same, so existing pages keep working and a 2.0.0
client still talks to a 1.8.x server.
### Added
- Minecraft 26.2 on Fabric, and 26.3 on both loaders.** 26.3 is published as a beta: the game itself is still in snapshots, and it replaced GLFW with SDL and moved the GPU API out of
blaze3d, so the parts of this mod that touch the window and the screen are new there.
### Changed
- The update check is built in and always runs.** The server asks Modrinth on start whether a newer WebGUI exists for its Minecraft version and loader, and falls back to GitHub releases if Modrinth cannot be reached. It used to do nothing at all unless an operator found
updateCheckUrland filled in an endpoint of their own, which almost nobody did. - Operators are also told in chat when they join, so an update is not something only the start-up log knows. Set
updateNotifyInChattofalseto keep the console notice and drop the chat one. Ordinary players are never told. updateCheckUrlis gone.** The address is fixed in the mod now. A config that still has the key is not an error; it is ignored.- A page URL must now name a scheme the mod will open:**
webgui://,https://,http://,wss://orws://. Anything else is refused with a line in the log instead of being handed to the browser — a URL arrives from a server, andfile://would read the player's disk whilejavascript:would run inside whatever page is open. webgui:name.htmlandwebgui:/name.htmlused to mean the same aswebgui://name.htmland no longer do. One spelling is easier to check than three. Settings that use the old form need the two slashes.- A server now starts with a HUD page as well as a full-screen one.**
config/webgui/web/hud.htmlis created besideindex.htmlon first start: a small corner card naming the keys — <kbd>F6</kbd> for the main menu, <kbd></kbd> to interact with the overlay, <kbd>F12</kbd> for developer tools — and linking to webgui.space. It paints no background of its own, which is what an overlay drawn over the world has to do. - It is shown on join out of the box: autoHudUrl
points at it andautoHudOnJoinis now on unless the config says otherwise. A server that set either of them keeps what it set. - The mod's settings screen now explains itself.** Every option has a tooltip saying what it does and what it costs, in the spirit of the game's own video settings, and two more settings are there instead of only in the config file:
- Ask where to save downloads.** Off, a file goes into webgui-downloads/` and the name is said in chat; on, the system save dialog opens for each one. The engine could always do this and the mod never offered it.
- Let pages play sound on their own.** Off by default, as it already was: video and audio wait for a click, the way a browser treat
A major version for one reason: WebGUI no longer depends on another mod. Nothing in the page
API changed and the network protocol is the same, so existing pages keep working and a 2.0.0
client still talks to a 1.8.x server.
### Added
- Minecraft 26.2 on Fabric, and 26.3 on both loaders.** 26.3 is published as a beta: the game itself is still in snapshots, and it replaced GLFW with SDL and moved the GPU API out of
blaze3d, so the parts of this mod that touch the window and the screen are new there.
### Changed
- The update check is built in and always runs.** The server asks Modrinth on start whether a newer WebGUI exists for its Minecraft version and loader, and falls back to GitHub releases if Modrinth cannot be reached. It used to do nothing at all unless an operator found
updateCheckUrland filled in an endpoint of their own, which almost nobody did. - Operators are also told in chat when they join, so an update is not something only the start-up log knows. Set
updateNotifyInChattofalseto keep the console notice and drop the chat one. Ordinary players are never told. updateCheckUrlis gone.** The address is fixed in the mod now. A config that still has the key is not an error; it is ignored.- A page URL must now name a scheme the mod will open:**
webgui://,https://,http://,wss://orws://. Anything else is refused with a line in the log instead of being handed to the browser — a URL arrives from a server, andfile://would read the player's disk whilejavascript:would run inside whatever page is open. webgui:name.htmlandwebgui:/name.htmlused to mean the same aswebgui://name.htmland no longer do. One spelling is easier to check than three. Settings that use the old form need the two slashes.- A server now starts with a HUD page as well as a full-screen one.**
config/webgui/web/hud.htmlis created besideindex.htmlon first start: a small corner card naming the keys — <kbd>F6</kbd> for the main menu, <kbd></kbd> to interact with the overlay, <kbd>F12</kbd> for developer tools — and linking to webgui.space. It paints no background of its own, which is what an overlay drawn over the world has to do. - It is shown on join out of the box: autoHudUrl
points at it andautoHudOnJoinis now on unless the config says otherwise. A server that set either of them keeps what it set. - The mod's settings screen now explains itself.** Every option has a tooltip saying what it does and what it costs, in the spirit of the game's own video settings, and two more settings are there instead of only in the config file:
- Ask where to save downloads.** Off, a file goes into webgui-downloads/` and the name is said in chat; on, the system save dialog opens for each one. The engine could always do this and the mod never offered it.
- Let pages play sound on their own.** Off by default, as it already was: video and audio wait for a click, the way a browser treat
A major version for one reason: WebGUI no longer depends on another mod. Nothing in the page
API changed and the network protocol is the same, so existing pages keep working and a 2.0.0
client still talks to a 1.8.x server.
### Added
- Minecraft 26.2 on Fabric, and 26.3 on both loaders.** 26.3 is published as a beta: the game itself is still in snapshots, and it replaced GLFW with SDL and moved the GPU API out of
blaze3d, so the parts of this mod that touch the window and the screen are new there.
### Changed
- The update check is built in and always runs.** The server asks Modrinth on start whether a newer WebGUI exists for its Minecraft version and loader, and falls back to GitHub releases if Modrinth cannot be reached. It used to do nothing at all unless an operator found
updateCheckUrland filled in an endpoint of their own, which almost nobody did. - Operators are also told in chat when they join, so an update is not something only the start-up log knows. Set
updateNotifyInChattofalseto keep the console notice and drop the chat one. Ordinary players are never told. updateCheckUrlis gone.** The address is fixed in the mod now. A config that still has the key is not an error; it is ignored.- A page URL must now name a scheme the mod will open:**
webgui://,https://,http://,wss://orws://. Anything else is refused with a line in the log instead of being handed to the browser — a URL arrives from a server, andfile://would read the player's disk whilejavascript:would run inside whatever page is open. webgui:name.htmlandwebgui:/name.htmlused to mean the same aswebgui://name.htmland no longer do. One spelling is easier to check than three. Settings that use the old form need the two slashes.- A server now starts with a HUD page as well as a full-screen one.**
config/webgui/web/hud.htmlis created besideindex.htmlon first start: a small corner card naming the keys — <kbd>F6</kbd> for the main menu, <kbd></kbd> to interact with the overlay, <kbd>F12</kbd> for developer tools — and linking to webgui.space. It paints no background of its own, which is what an overlay drawn over the world has to do. - It is shown on join out of the box: autoHudUrl
points at it andautoHudOnJoinis now on unless the config says otherwise. A server that set either of them keeps what it set. - The mod's settings screen now explains itself.** Every option has a tooltip saying what it does and what it costs, in the spirit of the game's own video settings, and two more settings are there instead of only in the config file:
- Ask where to save downloads.** Off, a file goes into webgui-downloads/` and the name is said in chat; on, the system save dialog opens for each one. The engine could always do this and the mod never offered it.
- Let pages play sound on their own.** Off by default, as it already was: video and audio wait for a click, the way a browser treat
A major version for one reason: WebGUI no longer depends on another mod. Nothing in the page
API changed and the network protocol is the same, so existing pages keep working and a 2.0.0
client still talks to a 1.8.x server.
### Added
- Minecraft 26.2 on Fabric, and 26.3 on both loaders.** 26.3 is published as a beta: the game itself is still in snapshots, and it replaced GLFW with SDL and moved the GPU API out of
blaze3d, so the parts of this mod that touch the window and the screen are new there.
### Changed
- The update check is built in and always runs.** The server asks Modrinth on start whether a newer WebGUI exists for its Minecraft version and loader, and falls back to GitHub releases if Modrinth cannot be reached. It used to do nothing at all unless an operator found
updateCheckUrland filled in an endpoint of their own, which almost nobody did. - Operators are also told in chat when they join, so an update is not something only the start-up log knows. Set
updateNotifyInChattofalseto keep the console notice and drop the chat one. Ordinary players are never told. updateCheckUrlis gone.** The address is fixed in the mod now. A config that still has the key is not an error; it is ignored.- A page URL must now name a scheme the mod will open:**
webgui://,https://,http://,wss://orws://. Anything else is refused with a line in the log instead of being handed to the browser — a URL arrives from a server, andfile://would read the player's disk whilejavascript:would run inside whatever page is open. webgui:name.htmlandwebgui:/name.htmlused to mean the same aswebgui://name.htmland no longer do. One spelling is easier to check than three. Settings that use the old form need the two slashes.- A server now starts with a HUD page as well as a full-screen one.**
config/webgui/web/hud.htmlis created besideindex.htmlon first start: a small corner card naming the keys — <kbd>F6</kbd> for the main menu, <kbd></kbd> to interact with the overlay, <kbd>F12</kbd> for developer tools — and linking to webgui.space. It paints no background of its own, which is what an overlay drawn over the world has to do. - It is shown on join out of the box: autoHudUrl
points at it andautoHudOnJoinis now on unless the config says otherwise. A server that set either of them keeps what it set. - The mod's settings screen now explains itself.** Every option has a tooltip saying what it does and what it costs, in the spirit of the game's own video settings, and two more settings are there instead of only in the config file:
- Ask where to save downloads.** Off, a file goes into webgui-downloads/` and the name is said in chat; on, the system save dialog opens for each one. The engine could always do this and the mod never offered it.
- Let pages play sound on their own.** Off by default, as it already was: video and audio wait for a click, the way a browser treat
A major version for one reason: WebGUI no longer depends on another mod. Nothing in the page
API changed and the network protocol is the same, so existing pages keep working and a 2.0.0
client still talks to a 1.8.x server.
### Added
- Minecraft 26.2 on Fabric, and 26.3 on both loaders.** 26.3 is published as a beta: the game itself is still in snapshots, and it replaced GLFW with SDL and moved the GPU API out of
blaze3d, so the parts of this mod that touch the window and the screen are new there.
### Changed
- The update check is built in and always runs.** The server asks Modrinth on start whether a newer WebGUI exists for its Minecraft version and loader, and falls back to GitHub releases if Modrinth cannot be reached. It used to do nothing at all unless an operator found
updateCheckUrland filled in an endpoint of their own, which almost nobody did. - Operators are also told in chat when they join, so an update is not something only the start-up log knows. Set
updateNotifyInChattofalseto keep the console notice and drop the chat one. Ordinary players are never told. updateCheckUrlis gone.** The address is fixed in the mod now. A config that still has the key is not an error; it is ignored.- A page URL must now name a scheme the mod will open:**
webgui://,https://,http://,wss://orws://. Anything else is refused with a line in the log instead of being handed to the browser — a URL arrives from a server, andfile://would read the player's disk whilejavascript:would run inside whatever page is open. webgui:name.htmlandwebgui:/name.htmlused to mean the same aswebgui://name.htmland no longer do. One spelling is easier to check than three. Settings that use the old form need the two slashes.- A server now starts with a HUD page as well as a full-screen one.**
config/webgui/web/hud.htmlis created besideindex.htmlon first start: a small corner card naming the keys — <kbd>F6</kbd> for the main menu, <kbd></kbd> to interact with the overlay, <kbd>F12</kbd> for developer tools — and linking to webgui.space. It paints no background of its own, which is what an overlay drawn over the world has to do. - It is shown on join out of the box: autoHudUrl
points at it andautoHudOnJoinis now on unless the config says otherwise. A server that set either of them keeps what it set. - The mod's settings screen now explains itself.** Every option has a tooltip saying what it does and what it costs, in the spirit of the game's own video settings, and two more settings are there instead of only in the config file:
- Ask where to save downloads.** Off, a file goes into webgui-downloads/` and the name is said in chat; on, the system save dialog opens for each one. The engine could always do this and the mod never offered it.
- Let pages play sound on their own.** Off by default, as it already was: video and audio wait for a click, the way a browser treat
A major version for one reason: WebGUI no longer depends on another mod. Nothing in the page
API changed and the network protocol is the same, so existing pages keep working and a 2.0.0
client still talks to a 1.8.x server.
### Added
- Minecraft 26.2 on Fabric, and 26.3 on both loaders.** 26.3 is published as a beta: the game itself is still in snapshots, and it replaced GLFW with SDL and moved the GPU API out of
blaze3d, so the parts of this mod that touch the window and the screen are new there.
### Changed
- The update check is built in and always runs.** The server asks Modrinth on start whether a newer WebGUI exists for its Minecraft version and loader, and falls back to GitHub releases if Modrinth cannot be reached. It used to do nothing at all unless an operator found
updateCheckUrland filled in an endpoint of their own, which almost nobody did. - Operators are also told in chat when they join, so an update is not something only the start-up log knows. Set
updateNotifyInChattofalseto keep the console notice and drop the chat one. Ordinary players are never told. updateCheckUrlis gone.** The address is fixed in the mod now. A config that still has the key is not an error; it is ignored.- A page URL must now name a scheme the mod will open:**
webgui://,https://,http://,wss://orws://. Anything else is refused with a line in the log instead of being handed to the browser — a URL arrives from a server, andfile://would read the player's disk whilejavascript:would run inside whatever page is open. webgui:name.htmlandwebgui:/name.htmlused to mean the same aswebgui://name.htmland no longer do. One spelling is easier to check than three. Settings that use the old form need the two slashes.- A server now starts with a HUD page as well as a full-screen one.**
config/webgui/web/hud.htmlis created besideindex.htmlon first start: a small corner card naming the keys — <kbd>F6</kbd> for the main menu, <kbd></kbd> to interact with the overlay, <kbd>F12</kbd> for developer tools — and linking to webgui.space. It paints no background of its own, which is what an overlay drawn over the world has to do. - It is shown on join out of the box: autoHudUrl
points at it andautoHudOnJoinis now on unless the config says otherwise. A server that set either of them keeps what it set. - The mod's settings screen now explains itself.** Every option has a tooltip saying what it does and what it costs, in the spirit of the game's own video settings, and two more settings are there instead of only in the config file:
- Ask where to save downloads.** Off, a file goes into webgui-downloads/` and the name is said in chat; on, the system save dialog opens for each one. The engine could always do this and the mod never offered it.
- Let pages play sound on their own.** Off by default, as it already was: video and audio wait for a click, the way a browser treat
A major version for one reason: WebGUI no longer depends on another mod. Nothing in the page
API changed and the network protocol is the same, so existing pages keep working and a 2.0.0
client still talks to a 1.8.x server.
### Added
- Minecraft 26.2 on Fabric, and 26.3 on both loaders.** 26.3 is published as a beta: the game itself is still in snapshots, and it replaced GLFW with SDL and moved the GPU API out of
blaze3d, so the parts of this mod that touch the window and the screen are new there.
### Changed
- The update check is built in and always runs.** The server asks Modrinth on start whether a newer WebGUI exists for its Minecraft version and loader, and falls back to GitHub releases if Modrinth cannot be reached. It used to do nothing at all unless an operator found
updateCheckUrland filled in an endpoint of their own, which almost nobody did. - Operators are also told in chat when they join, so an update is not something only the start-up log knows. Set
updateNotifyInChattofalseto keep the console notice and drop the chat one. Ordinary players are never told. updateCheckUrlis gone.** The address is fixed in the mod now. A config that still has the key is not an error; it is ignored.- A page URL must now name a scheme the mod will open:**
webgui://,https://,http://,wss://orws://. Anything else is refused with a line in the log instead of being handed to the browser — a URL arrives from a server, andfile://would read the player's disk whilejavascript:would run inside whatever page is open. webgui:name.htmlandwebgui:/name.htmlused to mean the same aswebgui://name.htmland no longer do. One spelling is easier to check than three. Settings that use the old form need the two slashes.- A server now starts with a HUD page as well as a full-screen one.**
config/webgui/web/hud.htmlis created besideindex.htmlon first start: a small corner card naming the keys — <kbd>F6</kbd> for the main menu, <kbd></kbd> to interact with the overlay, <kbd>F12</kbd> for developer tools — and linking to webgui.space. It paints no background of its own, which is what an overlay drawn over the world has to do. - It is shown on join out of the box: autoHudUrl
points at it andautoHudOnJoinis now on unless the config says otherwise. A server that set either of them keeps what it set. - The mod's settings screen now explains itself.** Every option has a tooltip saying what it does and what it costs, in the spirit of the game's own video settings, and two more settings are there instead of only in the config file:
- Ask where to save downloads.** Off, a file goes into webgui-downloads/` and the name is said in chat; on, the system save dialog opens for each one. The engine could always do this and the mod never offered it.
- Let pages play sound on their own.** Off by default, as it already was: video and audio wait for a click, the way a browser treat
A major version for one reason: WebGUI no longer depends on another mod. Nothing in the page
API changed and the network protocol is the same, so existing pages keep working and a 2.0.0
client still talks to a 1.8.x server.
### Added
- Minecraft 26.2 on Fabric, and 26.3 on both loaders.** 26.3 is published as a beta: the game itself is still in snapshots, and it replaced GLFW with SDL and moved the GPU API out of
blaze3d, so the parts of this mod that touch the window and the screen are new there.
### Changed
- The update check is built in and always runs.** The server asks Modrinth on start whether a newer WebGUI exists for its Minecraft version and loader, and falls back to GitHub releases if Modrinth cannot be reached. It used to do nothing at all unless an operator found
updateCheckUrland filled in an endpoint of their own, which almost nobody did. - Operators are also told in chat when they join, so an update is not something only the start-up log knows. Set
updateNotifyInChattofalseto keep the console notice and drop the chat one. Ordinary players are never told. updateCheckUrlis gone.** The address is fixed in the mod now. A config that still has the key is not an error; it is ignored.- A page URL must now name a scheme the mod will open:**
webgui://,https://,http://,wss://orws://. Anything else is refused with a line in the log instead of being handed to the browser — a URL arrives from a server, andfile://would read the player's disk whilejavascript:would run inside whatever page is open. webgui:name.htmlandwebgui:/name.htmlused to mean the same aswebgui://name.htmland no longer do. One spelling is easier to check than three. Settings that use the old form need the two slashes.- A server now starts with a HUD page as well as a full-screen one.**
config/webgui/web/hud.htmlis created besideindex.htmlon first start: a small corner card naming the keys — <kbd>F6</kbd> for the main menu, <kbd></kbd> to interact with the overlay, <kbd>F12</kbd> for developer tools — and linking to webgui.space. It paints no background of its own, which is what an overlay drawn over the world has to do. - It is shown on join out of the box: autoHudUrl
points at it andautoHudOnJoinis now on unless the config says otherwise. A server that set either of them keeps what it set. - The mod's settings screen now explains itself.** Every option has a tooltip saying what it does and what it costs, in the spirit of the game's own video settings, and two more settings are there instead of only in the config file:
- Ask where to save downloads.** Off, a file goes into webgui-downloads/` and the name is said in chat; on, the system save dialog opens for each one. The engine could always do this and the mod never offered it.
- Let pages play sound on their own.** Off by default, as it already was: video and audio wait for a click, the way a browser treat
A major version for one reason: WebGUI no longer depends on another mod. Nothing in the page
API changed and the network protocol is the same, so existing pages keep working and a 2.0.0
client still talks to a 1.8.x server.
### Added
- Minecraft 26.2 on Fabric, and 26.3 on both loaders.** 26.3 is published as a beta: the game itself is still in snapshots, and it replaced GLFW with SDL and moved the GPU API out of
blaze3d, so the parts of this mod that touch the window and the screen are new there.
### Changed
- The update check is built in and always runs.** The server asks Modrinth on start whether a newer WebGUI exists for its Minecraft version and loader, and falls back to GitHub releases if Modrinth cannot be reached. It used to do nothing at all unless an operator found
updateCheckUrland filled in an endpoint of their own, which almost nobody did. - Operators are also told in chat when they join, so an update is not something only the start-up log knows. Set
updateNotifyInChattofalseto keep the console notice and drop the chat one. Ordinary players are never told. updateCheckUrlis gone.** The address is fixed in the mod now. A config that still has the key is not an error; it is ignored.- A page URL must now name a scheme the mod will open:**
webgui://,https://,http://,wss://orws://. Anything else is refused with a line in the log instead of being handed to the browser — a URL arrives from a server, andfile://would read the player's disk whilejavascript:would run inside whatever page is open. webgui:name.htmlandwebgui:/name.htmlused to mean the same aswebgui://name.htmland no longer do. One spelling is easier to check than three. Settings that use the old form need the two slashes.- A server now starts with a HUD page as well as a full-screen one.**
config/webgui/web/hud.htmlis created besideindex.htmlon first start: a small corner card naming the keys — <kbd>F6</kbd> for the main menu, <kbd></kbd> to interact with the overlay, <kbd>F12</kbd> for developer tools — and linking to webgui.space. It paints no background of its own, which is what an overlay drawn over the world has to do. - It is shown on join out of the box: autoHudUrl
points at it andautoHudOnJoinis now on unless the config says otherwise. A server that set either of them keeps what it set. - The mod's settings screen now explains itself.** Every option has a tooltip saying what it does and what it costs, in the spirit of the game's own video settings, and two more settings are there instead of only in the config file:
- Ask where to save downloads.** Off, a file goes into webgui-downloads/` and the name is said in chat; on, the system save dialog opens for each one. The engine could always do this and the mod never offered it.
- Let pages play sound on their own.** Off by default, as it already was: video and audio wait for a click, the way a browser treat
A major version for one reason: WebGUI no longer depends on another mod. Nothing in the page
API changed and the network protocol is the same, so existing pages keep working and a 2.0.0
client still talks to a 1.8.x server.
### Added
- Minecraft 26.2 on Fabric, and 26.3 on both loaders.** 26.3 is published as a beta: the game itself is still in snapshots, and it replaced GLFW with SDL and moved the GPU API out of
blaze3d, so the parts of this mod that touch the window and the screen are new there.
### Changed
- The update check is built in and always runs.** The server asks Modrinth on start whether a newer WebGUI exists for its Minecraft version and loader, and falls back to GitHub releases if Modrinth cannot be reached. It used to do nothing at all unless an operator found
updateCheckUrland filled in an endpoint of their own, which almost nobody did. - Operators are also told in chat when they join, so an update is not something only the start-up log knows. Set
updateNotifyInChattofalseto keep the console notice and drop the chat one. Ordinary players are never told. updateCheckUrlis gone.** The address is fixed in the mod now. A config that still has the key is not an error; it is ignored.- A page URL must now name a scheme the mod will open:**
webgui://,https://,http://,wss://orws://. Anything else is refused with a line in the log instead of being handed to the browser — a URL arrives from a server, andfile://would read the player's disk whilejavascript:would run inside whatever page is open. webgui:name.htmlandwebgui:/name.htmlused to mean the same aswebgui://name.htmland no longer do. One spelling is easier to check than three. Settings that use the old form need the two slashes.- A server now starts with a HUD page as well as a full-screen one.**
config/webgui/web/hud.htmlis created besideindex.htmlon first start: a small corner card naming the keys — <kbd>F6</kbd> for the main menu, <kbd></kbd> to interact with the overlay, <kbd>F12</kbd> for developer tools — and linking to webgui.space. It paints no background of its own, which is what an overlay drawn over the world has to do. - It is shown on join out of the box: autoHudUrl
points at it andautoHudOnJoinis now on unless the config says otherwise. A server that set either of them keeps what it set. - The mod's settings screen now explains itself.** Every option has a tooltip saying what it does and what it costs, in the spirit of the game's own video settings, and two more settings are there instead of only in the config file:
- Ask where to save downloads.** Off, a file goes into webgui-downloads/` and the name is said in chat; on, the system save dialog opens for each one. The engine could always do this and the mod never offered it.
- Let pages play sound on their own.** Off by default, as it already was: video and audio wait for a click, the way a browser treat
### Fixed
- Right clicking an entity with a page bound to it crashed the game on NeoForge.** The interaction event arrives on both the client and the server, and the client's copy was being handed to code that only a server can run: the first click on a bound entity took the whole client down. Fabric was never affected.
- A page opened from an entity was told nothing about the entity.**
window.webgui.entitywasnull, so one page bound to several NPCs had no way to tell which of them had been clicked. The entity was sent a moment before the screen that needed it, and opening that screen threw it away. - The HUD disappeared when one page replaced another.** Dying with a shop open — the death screen replaces the shop — or simply sending a second
/webgui guidestroyed the HUD, and it stayed gone until the server sent it again. - The pages a server hosts kept being served for a moment after the player left that server, on a token that leaving was supposed to revoke.
### Fixed
- Right clicking an entity with a page bound to it crashed the game on NeoForge.** The interaction event arrives on both the client and the server, and the client's copy was being handed to code that only a server can run: the first click on a bound entity took the whole client down. Fabric was never affected.
- A page opened from an entity was told nothing about the entity.**
window.webgui.entitywasnull, so one page bound to several NPCs had no way to tell which of them had been clicked. The entity was sent a moment before the screen that needed it, and opening that screen threw it away. - The HUD disappeared when one page replaced another.** Dying with a shop open — the death screen replaces the shop — or simply sending a second
/webgui guidestroyed the HUD, and it stayed gone until the server sent it again. - The pages a server hosts kept being served for a moment after the player left that server, on a token that leaving was supposed to revoke.
### Fixed
- Right clicking an entity with a page bound to it crashed the game on NeoForge.** The interaction event arrives on both the client and the server, and the client's copy was being handed to code that only a server can run: the first click on a bound entity took the whole client down. Fabric was never affected.
- A page opened from an entity was told nothing about the entity.**
window.webgui.entitywasnull, so one page bound to several NPCs had no way to tell which of them had been clicked. The entity was sent a moment before the screen that needed it, and opening that screen threw it away. - The HUD disappeared when one page replaced another.** Dying with a shop open — the death screen replaces the shop — or simply sending a second
/webgui guidestroyed the HUD, and it stayed gone until the server sent it again. - The pages a server hosts kept being served for a moment after the player left that server, on a token that leaving was supposed to revoke.
### Fixed
- Right clicking an entity with a page bound to it crashed the game on NeoForge.** The interaction event arrives on both the client and the server, and the client's copy was being handed to code that only a server can run: the first click on a bound entity took the whole client down. Fabric was never affected.
- A page opened from an entity was told nothing about the entity.**
window.webgui.entitywasnull, so one page bound to several NPCs had no way to tell which of them had been clicked. The entity was sent a moment before the screen that needed it, and opening that screen threw it away. - The HUD disappeared when one page replaced another.** Dying with a shop open — the death screen replaces the shop — or simply sending a second
/webgui guidestroyed the HUD, and it stayed gone until the server sent it again. - The pages a server hosts kept being served for a moment after the player left that server, on a token that leaving was supposed to revoke.
### Fixed
- Right clicking an entity with a page bound to it crashed the game on NeoForge.** The interaction event arrives on both the client and the server, and the client's copy was being handed to code that only a server can run: the first click on a bound entity took the whole client down. Fabric was never affected.
- A page opened from an entity was told nothing about the entity.**
window.webgui.entitywasnull, so one page bound to several NPCs had no way to tell which of them had been clicked. The entity was sent a moment before the screen that needed it, and opening that screen threw it away. - The HUD disappeared when one page replaced another.** Dying with a shop open — the death screen replaces the shop — or simply sending a second
/webgui guidestroyed the HUD, and it stayed gone until the server sent it again. - The pages a server hosts kept being served for a moment after the player left that server, on a token that leaving was supposed to revoke.