Releases: mc-webgui/webgui
Releases · mc-webgui/webgui
v1.4.1
[1.4.1] — 2026-06-11
Fixed
- NeoForge: clients could not join a dedicated server (#4). The server-to-client payload channels (
open_web,main_menu,emit,entity_context) were registered only on the physical client, so a dedicated NeoForge server never declared them. Joining clients were rejected during channel negotiation withChannel [webgui:open_web] failed to connect: Client wants payload to be sent in: CLIENTBOUND, but server doesn't support it!. The S2C payloads are now registered in common init on both sides; the receive handlers still run client-side only.
[1.4.0] — 2026-06-11
Added
NeoForge support
The mod is now multi-loader. The codebase is split across loaders with Stonecutter, so the same source builds for both Fabric and NeoForge.
| Minecraft | Fabric | NeoForge |
|---|---|---|
| 1.20.1 | ✅ | — (NeoForge moddev 2.x targets 1.20.4+) |
| 1.21.1 | ✅ | ✅ |
| 1.21.11 | ✅ | ✅ |
- NeoForge builds use Mojang mappings; Fabric builds use Yarn — handled automatically at build time
- All existing features (entity binding, events, signed tokens, HUD overlays, commands) work identically on both loaders
WebviewApiand thewindow.webguibrowser surface are unchanged — no migration needed for existing web UIs
v1.3.0
[1.3.0] — 2026-06-07
Added
Entity binding
Attach a WebGUI interface to any entity. Players open it by right-clicking — no custom mod code required.
/webgui bind entity @e[type=villager,limit=1,sort=nearest] https://example.com/shop
/webgui bind entity @e[type=villager,limit=1,sort=nearest] https://example.com/shop true
/webgui unbind entity @e[type=villager,limit=1,sort=nearest]- Bindings persist in
config/webgui/entity_bindings.jsonand survive server restarts /webgui reloadnow also reloads entity bindings- Optional
cancel_interactionflag suppresses vanilla behaviour (trade screen, horse inventory, etc.)
URL placeholders
Substituted at interaction time:
| Placeholder | Value |
|---|---|
{entity_id} / {entity_uuid} |
Entity UUID |
{entity_type} |
Namespaced type, e.g. minecraft:villager |
{player_name} / {player_uuid} |
The interacting player |
Entity context in the browser
When a GUI is opened via entity interaction, window.webgui.entity is populated automatically — null when opened via command. A webgui:entity CustomEvent fires on every change.
interface WebGUIEntity {
uuid: string
type: string // e.g. "minecraft:villager"
name: string // custom name if set, otherwise type display name
pos: { x: number; y: number; z: number }
}Mod API
New methods in WebviewApi for use from other mods:
WebviewApi.bindEntity(uuid, "https://example.com/shop?npc={entity_id}", true);
WebviewApi.unbindEntity(uuid);
WebviewApi.getEntityBinding(uuid); // Optional<EntityBinding>v1.2.0
Refactor release workflow to streamline version handling: - Update trigger to only run on the main branch. - Implement check to skip release if the tag already exists. - Simplify build steps and enhance artifact handling. - Adjust GitHub Release action to use versioning from gradle.properties.
v1.0.0 for MC 1.21.11
Mod version: 1.0.0
Minecraft: 1.21.11
Branch: 1.21.11
Commit: f80aaa4