Skip to content

Releases: mc-webgui/webgui

v1.4.1

11 Jun 10:33

Choose a tag to compare

[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 with Channel [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
  • WebviewApi and the window.webgui browser surface are unchanged — no migration needed for existing web UIs

v1.3.0

07 Jun 09:18
01644a2

Choose a tag to compare

[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.json and survive server restarts
  • /webgui reload now also reloads entity bindings
  • Optional cancel_interaction flag 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

07 Jun 08:19

Choose a tag to compare

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

10 May 10:17

Choose a tag to compare

Mod version: 1.0.0
Minecraft: 1.21.11
Branch: 1.21.11
Commit: f80aaa4