promotional bannermobile promotional banner
premium banner
lets you write Minecraft GUI screens using HTML, CSS, and a lightweight JavaScript bridge that calls back into your Java mod code.

Description

WebLib — HTML/CSS/JS GUIs for Minecraft NeoForge 1.21

 

WebLib (web_lib) is a lightweight library mod that lets mod developers build fully-featured Minecraft GUI screens using standard HTML and CSS, with a simple JavaScript-to-Java callback bridge — all rendered natively via Minecraft's own GuiGraphics, with zero external browser dependencies.

Stop wrestling with Minecraft's widget system. Write your mod's menus the way web developers write interfaces.


Features

  • HTML rendering — Supports a rich set of elements: div, p, h1h6, span, button, input, select, img, ul/ol/li, pre, hr, code, and more.
  • Full CSS engine — Cascade, inheritance, specificity, and a broad property set including:
    • Box model (margin, padding, border, width, height)
    • Flexbox (flex-direction, justify-content, align-items, flex-wrap, gap)
    • Colors (#RGB, #RRGGBB, #RRGGBBAA, rgb(), rgba(), named colors)
    • Text styling, overflow, z-index, relative positioning, and more
    • Selectors: type, class, ID, attribute, pseudo-classes (:hover, :active, :focus, :nth-child, :not, etc.), and all combinators
  • JavaScript bridge — Fire Java callbacks directly from HTML onclick/onchange events. Pass arguments, access and mutate the DOM from Java.
  • Built-in JS functionsalert(), navigate(), reload(), setStyle(), setInnerText(), toggleClass(), setVar(), console.log() — no registration needed.
  • Multi-page navigation — Build multi-screen UIs with back ◀ / forward ▶ / reload ↺ browser chrome, or go headless.
  • External CSS & JS files — Reference stylesheet and script files from your mod's assets using the standard namespace:path ResourceLocation convention.
  • Resource-based pages — Load HTML pages directly from your mod's resource pack with WebLibApi.openPageFromResource(...).
  • Advanced WebPage API — Build, inject CSS, mutate, and layout pages programmatically before opening them.

For Mod Developers

Adding WebLib to your mod is a single dependency declaration:

[[dependencies.yourmod]]
    modId = "web_lib"
    type = "required"
    versionRange = "[1.0,)"
    ordering = "AFTER"
    side = "CLIENT"

Then open any screen with a single call:

WebLibApi.openPage("<html><body><h1>Hello, Minecraft!</h1></body></html>");

Register Java functions that HTML can call:

WebLibApi.registerFunction("myMod.openShop", (args, ctx) -> {
    Minecraft.getInstance().tell(() -> Minecraft.getInstance().setScreen(new MyShopScreen()));
    return null;
});

Requirements

  • Minecraft: 1.21
  • Mod Loader: NeoForge
  • Side: Client-only
  • License: Apache 2.0

License NeoForge Minecraft Modrinth Downloads CurseForge Downloads


Source Code

Available on GitHub under the Apache 2.0 License. Contributions welcome!


alt text