{"id":93521,"date":"2026-06-05T11:22:00","date_gmt":"2026-06-05T08:22:00","guid":{"rendered":"https:\/\/vpesports.com\/minecraft\/mods\/libb\/"},"modified":"2026-06-05T11:22:00","modified_gmt":"2026-06-05T08:22:00","slug":"libb","status":"publish","type":"mod","link":"https:\/\/vpesports.com\/minecraft\/mods\/libb\/","title":{"rendered":"Libb"},"content":{"rendered":"<p># Libb<br \/>\nA library for convenient and easy creation of Minecraft plugins.<\/p>\n<p>&#8212;<\/p>\n<div align=\"center\">\n<img decoding=\"async\" src=\"https:\/\/cdn.modrinth.com\/data\/cached_images\/31b63c1cc08964f616ae35ec874741870f4c8bb4.png\" \/><img decoding=\"async\" src=\"https:\/\/cdn.modrinth.com\/data\/cached_images\/60fcf5a0b12f3cff46b065aea871b3f08629f94e.png\" \/><img decoding=\"async\" src=\"https:\/\/cdn.modrinth.com\/data\/cached_images\/4a1b54c640e2f990880107e8bf3cd6c573a9201a.png\" \/>\n<\/div>\n<p>&#8212;<\/p>\n<p>| **Dependencies**|<br \/>\n|:-|<br \/>\n| PlaceholderAPI<br \/>\n| Java 17 or higher<br \/>\n| Paper or forks<br \/>\n| Minecraft Version 1.20 or higher <\/p>\n<p>&#8212;<\/p>\n<details>\n<summary>GUI<\/summary>\n<p>### Example<\/p>\n<p>&#8220;`java<br \/>\npublic class GuiTest extends AdvancedGui {<br \/>\n    public GuiTest() {<br \/>\n        super(&#8220;Gui title&#8221;);<br \/>\n        setItem(&#8220;example&#8221;, ItemWrapper.builder(Material.STONE)<br \/>\n                .slots(1, 5, 7)<br \/>\n                .displayName(Component.text(&#8220;This is the name dude&#8221;))<br \/>\n                .onClick(event -> {<br \/>\n                    event.setCancelled(true);<br \/>\n                    player.sendMessage(&#8220;Clicked on slot: &#8221; + event.getSlot());<br \/>\n                })<br \/>\n                .build());<br \/>\n    }<br \/>\n}<br \/>\n&#8220;`<\/p>\n<p>To open a GUI for a player, call `open()`:<\/p>\n<p>&#8220;`java<br \/>\nnew GuiTest().open(player);<br \/>\n&#8220;`<\/p>\n<\/details>\n<p>&#8212;<\/p>\n<details>\n<summary>ParsedGui \u2014 Config-driven GUIs<\/summary>\n<p>`ParsedGui` lets you define an entire inventory GUI in a YAML config file \u2014 items, slots, click actions, open\/close hooks, and placeholders \u2014 with no boilerplate code.<\/p>\n<p>&#8212;<\/p>\n<p>### YAML structure<\/p>\n<p>&#8220;`yaml<br \/>\nid: my_gui<br \/>\ntitle: &#8220;<gold>My Shop&#8221;<br \/>\nsize: 54          # must be a multiple of 9<\/p>\n<p>on_open:          # optional \u2014 action list to run when GUI opens<br \/>\n  &#8211; &#8220;[sound] UI_BUTTON_CLICK;1;1&#8221;<\/p>\n<p>on_close:         # optional \u2014 action list to run when GUI closes<br \/>\n  &#8211; &#8220;[message] <gray>Closed the shop.&#8221;<\/p>\n<p>Items:<br \/>\n  my_item:<br \/>\n    material: DIAMOND<br \/>\n    slot: 13                    # single slot<br \/>\n    display_name: &#8220;<aqua>Buy Diamond&#8221;<br \/>\n    lore:<br \/>\n      &#8211; &#8220;&#8221;<br \/>\n      &#8211; &#8221; <gray>Click to purchase&#8221;<br \/>\n      &#8211; &#8220;&#8221;<br \/>\n    on_click:<br \/>\n      any:                      # fires on every click type<br \/>\n        &#8211; &#8220;[sound] UI_BUTTON_CLICK;1;1&#8221;<br \/>\n        &#8211; &#8220;[player] buy diamond&#8221;<br \/>\n      left:                     # fires only on left click<br \/>\n        &#8211; &#8220;[message] <green>Left clicked!&#8221;<br \/>\n      shift_left:<br \/>\n        &#8211; &#8220;[message] <yellow>Shift+Left!&#8221;<br \/>\n&#8220;`<\/p>\n<p>**Supported click types:** `any`, `left`, `shift_left`, `right`, `shift_right`, `middle`, `drop`, `control_drop`, `double`<\/p>\n<p>**Slot formats:**<\/p>\n<p>&#8220;`yaml<br \/>\nslot: 13              # single slot<br \/>\nslots:<br \/>\n  &#8211; &#8216;0-8&#8242;             # range<br \/>\n  &#8211; &#8217;45-53&#8242;           # another range<br \/>\n  &#8211; &#8217;27&#8217;              # single inside a list<br \/>\n&#8220;`<\/p>\n<p>&#8212;<\/p>\n<p>### Opening from code<\/p>\n<p>&#8220;`java<br \/>\n\/\/ From a FileConfiguration:<br \/>\nFileConfiguration config = YamlConfiguration.loadConfiguration(file);<br \/>\nnew ParsedGui(player, config, myPlugin).open(player);<\/p>\n<p>\/\/ From a pre-parsed Gui record (more efficient for many players):<br \/>\nGui gui = &#8230;; \/\/ parsed once at startup<br \/>\nnew ParsedGui(player, gui, myPlugin).open(player);<br \/>\n&#8220;`<\/p>\n<p>&#8212;<\/p>\n<p>### Runtime placeholders<\/p>\n<p>Use `setReplace()` to inject values into display names, lore, and action lines at runtime.<br \/>\nCall it **before** `open()` \u2014 items are built on open.<\/p>\n<p>&#8220;`java<br \/>\nParsedGui gui = new ParsedGui(player, config, myPlugin);<br \/>\ngui.setReplace(&#8220;%price%&#8221;, &#8220;500&#8221;)<br \/>\n   .setReplace(&#8220;%item_name%&#8221;, &#8220;Diamond Sword&#8221;);<br \/>\ngui.open(player);<br \/>\n&#8220;`<\/p>\n<p>In YAML:<br \/>\n&#8220;`yaml<br \/>\ndisplay_name: &#8220;<white>Price: <green>$%price%&#8221;<br \/>\nlore:<br \/>\n  &#8211; &#8221; <gray>Item: <white>%item_name%&#8221;<br \/>\n&#8220;`<\/p>\n<p>PlaceholderAPI placeholders (`%papi_placeholder%`) are applied automatically \u2014 no extra setup needed.<\/p>\n<p>&#8212;<\/p>\n<p>### Click handlers from code<\/p>\n<p>Register Java-side click logic for items by their YAML section key.<br \/>\nRuns **in addition** to whatever `on_click` is defined in YAML.<\/p>\n<p>&#8220;`java<br \/>\nParsedGui gui = new ParsedGui(player, config, myPlugin);<\/p>\n<p>gui.addClickHandler(&#8220;my_item&#8221;, event -> {<br \/>\n    Player clicker = (Player) event.getWhoClicked();<br \/>\n    clicker.sendMessage(&#8220;You clicked my_item!&#8221;);<br \/>\n    gui.refresh();<br \/>\n});<\/p>\n<p>gui.open(player);<br \/>\n&#8220;`<\/p>\n<p>&#8212;<\/p>\n<p>### Passing the GUI into actions via ActionContext<\/p>\n<p>When a player clicks an item, `ParsedGui` puts itself into the `ActionContext` automatically.<br \/>\nInside a custom action you can retrieve it:<\/p>\n<p>&#8220;`java<br \/>\nActionRegistry.register(&#8220;myplugin&#8221;, &#8220;my_action&#8221;, (ctx, text) -> {<br \/>\n    ParsedGui gui = ctx.get(ParsedGui.class);<br \/>\n    if (gui == null) return;<\/p>\n<p>    \/\/ do something, then refresh<br \/>\n    gui.refresh();<br \/>\n});<br \/>\n&#8220;`<\/p>\n<p>In config:<br \/>\n&#8220;`yaml<br \/>\non_click:<br \/>\n  any:<br \/>\n    &#8211; &#8220;[myplugin:my_action]&#8221;<br \/>\n&#8220;`<\/p>\n<p>&#8212;<\/p>\n<p>### Slot priority &#038; view_requirements<\/p>\n<p>Multiple items can target the same slot. The one with the lowest `priority` value whose `view_requirements` all pass wins.<br \/>\nThis is useful for conditional items \u2014 e.g. show a locked version until the player has enough money.<\/p>\n<p>&#8220;`yaml<br \/>\nItems:<br \/>\n  buy_locked:<br \/>\n    material: RED_STAINED_GLASS_PANE<br \/>\n    slot: 13<br \/>\n    priority: 1<br \/>\n    display_name: &#8220;<red>Not enough money&#8221;<br \/>\n    view_requirements:<br \/>\n      &#8211; &#8220;%vault_eco_balance% < 100\"   # shown when balance < 100\n\n  buy_unlocked:\n    material: EMERALD\n    slot: 13\n    priority: 2                        # fallback \u2014 shown when locked item's requirement fails\n    display_name: \"<green>Buy&#8221;<br \/>\n&#8220;`<\/p>\n<p>`view_requirements` supports `==`, `!=`, `>=`, `<=`, `>`, `<` with both numbers and strings.\nPlaceholderAPI placeholders are resolved before comparison.\n\n---\n\n### Refreshing the GUI\n\nCall `refresh()` to clear and rebuild all items \u2014 re-evaluates `view_requirements` and re-applies all placeholders.\n\n```java\ngui.refresh();\n```\n\nTypically called inside a click handler after state changes:\n```java\ngui.addClickHandler(\"toggle\", event -> {<br \/>\n    toggleSomething(player);<br \/>\n    gui.refresh();<br \/>\n});<br \/>\n&#8220;`<\/p>\n<p>&#8212;<\/p>\n<p>### Extending ParsedGui<\/p>\n<p>You can subclass `ParsedGui` to add custom inventory slots, override rendering logic, etc.<\/p>\n<p>> \u26a0\ufe0f `super(viewer, config, plugin)` calls `buildItems()` internally during construction \u2014 before your subclass fields are initialized. Override `buildItems()` with a null-check guard:<\/p>\n<p>&#8220;`java<br \/>\npublic class MyGui extends ParsedGui {<\/p>\n<p>    private final MyPlugin plugin;<\/p>\n<p>    public MyGui(Player viewer, FileConfiguration config, MyPlugin plugin) {<br \/>\n        super(viewer, config, plugin);<br \/>\n        this.plugin = plugin;<br \/>\n        \/\/ your init here<br \/>\n    }<\/p>\n<p>    @Override<br \/>\n    public void buildItems(List<Item> items) {<br \/>\n        if (plugin == null) {          \/\/ guard: called from super() before our fields exist<br \/>\n            super.buildItems(items);<br \/>\n            return;<br \/>\n        }<br \/>\n        \/\/ your custom logic, then:<br \/>\n        super.buildItems(items);<br \/>\n    }<\/p>\n<p>    @Override<br \/>\n    public void refresh() {<br \/>\n        \/\/ update your replacements before items are rebuilt<br \/>\n        setReplace(&#8220;%score%&#8221;, String.valueOf(getScore()));<br \/>\n        super.refresh();<br \/>\n    }<br \/>\n}<br \/>\n&#8220;`<\/p>\n<\/details>\n<p>&#8212;<\/p>\n<details>\n<summary>Actions<\/summary>\n<p>Actions are config-driven commands executed on a player. Each action is a string in the format `[key] text`.<\/p>\n<p>### Built-in actions<\/p>\n<p>| Key | Description |<br \/>\n|&#8212;&#8211;|&#8212;&#8212;&#8212;&#8212;-|<br \/>\n| `[message]` | Send a message to the player |<br \/>\n| `[broadcast_message]` | Broadcast a message to all players |<br \/>\n| `[console]` | Run a command from console |<br \/>\n| `[player]` | Run a command as the player |<br \/>\n| `[effect]` | Apply a potion effect |<br \/>\n| `[action_bar]` | Send an action bar message |<br \/>\n| `[broadcast_action_bar]` | Broadcast an action bar to all players |<br \/>\n| `[title]` | Send a title to the player |<br \/>\n| `[broadcast_title]` | Broadcast a title to all players |<br \/>\n| `[sound]` | Play a sound for the player |<br \/>\n| `[broadcast_sound]` | Play a sound for all players |<br \/>\n| `[open]` | Open a GUI |<\/p>\n<p>### Usage<\/p>\n<p>**Simple run:**<br \/>\n&#8220;`java<br \/>\nActionExecute.run(ActionContext.of(player), &#8220;[message] Hello!&#8221;);<br \/>\n&#8220;`<\/p>\n<p>**With extra objects in context:**<br \/>\n&#8220;`java<br \/>\nActionExecute.run(<br \/>\n    ActionContext.of(player).with(entity),<br \/>\n    &#8220;[myplugin:give_diamond] 64&#8221;<br \/>\n);<br \/>\n&#8220;`<\/p>\n<p>> Extra objects added via `.with()` can be retrieved inside the handler using `ctx.get(YourClass.class)`.<\/p>\n<p>&#8212;<\/p>\n<p>### Registering a custom action<\/p>\n<p>Custom actions are registered in `onEnable` and unregistered in `onDisable`.<\/p>\n<p>Actions from different plugins can share the same key without conflict \u2014 the full key is `namespace:command`:<\/p>\n<p>&#8220;`yaml<br \/>\n# config.yml<br \/>\nactions:<br \/>\n  &#8211; &#8220;[plugina:spawn] text&#8221;      # resolves plugina&#8217;s spawn<br \/>\n  &#8211; &#8220;[pluginb:spawn] text&#8221;      # resolves pluginb&#8217;s spawn \u2014 no conflict<br \/>\n  &#8211; &#8220;[spawn] text&#8221;              # resolves whichever was registered first<br \/>\n&#8220;`<\/p>\n<p>#### Lambda (simple cases)<\/p>\n<p>&#8220;`java<br \/>\n@Override<br \/>\npublic void onEnable() {<br \/>\n    ActionRegistry.register(&#8220;myplugin&#8221;, &#8220;give_diamond&#8221;, (ctx, text) -> {<br \/>\n        Player player = ctx.getPlayer();<br \/>\n        if (player == null || text == null) return;<\/p>\n<p>        int amount = Integer.parseInt(text);<br \/>\n        player.getInventory().addItem(new ItemStack(Material.DIAMOND, amount));<br \/>\n        player.sendMessage(&#8220;You got &#8221; + amount + &#8221; diamonds!&#8221;);<br \/>\n    });<br \/>\n}<\/p>\n<p>@Override<br \/>\npublic void onDisable() {<br \/>\n    ActionRegistry.unregisterAll(&#8220;myplugin&#8221;);<br \/>\n}<br \/>\n&#8220;`<\/p>\n<p>#### Class (recommended for complex logic)<\/p>\n<p>Register in `onEnable`:<br \/>\n&#8220;`java<br \/>\n@Override<br \/>\npublic void onEnable() {<br \/>\n    ActionRegistry.register(&#8220;myplugin&#8221;, &#8220;give_diamond&#8221;, new GiveDiamondAction());<br \/>\n}<\/p>\n<p>@Override<br \/>\npublic void onDisable() {<br \/>\n    ActionRegistry.unregisterAll(&#8220;myplugin&#8221;);<br \/>\n}<br \/>\n&#8220;`<\/p>\n<p>Implement `Action`:<br \/>\n&#8220;`java<br \/>\npublic class GiveDiamondAction implements Action {<\/p>\n<p>    @Override<br \/>\n    public void execute(@NotNull ActionContext ctx, @Nullable String text) {<br \/>\n        Player player = ctx.getPlayer();<br \/>\n        if (player == null || text == null) return;<\/p>\n<p>        \/\/ Parse text argument<br \/>\n        int amount = Integer.parseInt(text);<br \/>\n        player.getInventory().addItem(new ItemStack(Material.DIAMOND, amount));<br \/>\n        player.sendMessage(&#8220;You got &#8221; + amount + &#8221; diamonds!&#8221;);<\/p>\n<p>        \/\/ Retrieve a custom object from context \u2014 null if not provided<br \/>\n        Entity entity = ctx.get(Entity.class);<br \/>\n        if (entity == null) return;<\/p>\n<p>        entity.teleport(player.getLocation());<br \/>\n        ActionExecute.run(<br \/>\n            ActionContext.of(player),<br \/>\n            &#8220;[message] <red>Entity has been teleported to you&#8221;<br \/>\n        );<br \/>\n    }<br \/>\n}<br \/>\n&#8220;`<\/p>\n<p>#### ActionContext<\/p>\n<p>`ActionContext` is a type-safe container for objects passed into an action. Objects are stored and retrieved by class \u2014 no string keys needed.<\/p>\n<p>&#8220;`java<br \/>\n\/\/ Put objects in<br \/>\nActionContext ctx = ActionContext.of(player)<br \/>\n        .with(entity)       \/\/ store by entity.getClass()<br \/>\n        .with(myGui);       \/\/ store by myGui.getClass()<\/p>\n<p>\/\/ Get objects out (inside a handler)<br \/>\nEntity entity = ctx.get(Entity.class);      \/\/ null if not provided<br \/>\nEntity entity = ctx.require(Entity.class);  \/\/ throws if not provided<br \/>\n&#8220;`<\/p>\n<p>If you want to store an object under an interface rather than its concrete class:<br \/>\n&#8220;`java<br \/>\nctx.with(MyInterface.class, myObject);<br \/>\n\/\/ retrieve as:<br \/>\nctx.get(MyInterface.class);<br \/>\n&#8220;`<\/p>\n<\/details>\n<p># API<\/p>\n<details>\n<summary>MAVEN<\/summary>\n<p>&#8220;`xml<br \/>\n<repository><br \/>\n  <id>jetby-repo<\/id><br \/>\n  <url>https:\/\/api.jetby.org\/<\/url><br \/>\n<\/repository><br \/>\n&#8220;`<\/p>\n<p>&#8220;`xml<br \/>\n<dependency><br \/>\n  <groupId>me.jetby<\/groupId><br \/>\n  <artifactId>Libb<\/artifactId><br \/>\n  <version>VERSION<\/version><br \/>\n  <scope>provided<\/scope><br \/>\n<\/dependency><br \/>\n&#8220;`<\/p>\n<\/details>\n<details>\n<summary>GRADLE<\/summary>\n<p>&#8220;`gradle<br \/>\nrepositories {<br \/>\n    maven {<br \/>\n        url &#8220;https:\/\/api.jetby.org\/&#8221;<br \/>\n        name &#8220;jetby-repo&#8221;<br \/>\n    }<br \/>\n}<br \/>\n&#8220;`<\/p>\n<p>&#8220;`gradle<br \/>\ndependencies {<br \/>\n    compileOnly &#8220;me.jetby:Libb:VERSION&#8221;<br \/>\n}<br \/>\n&#8220;`<\/p>\n<\/details>\n","protected":false},"excerpt":{"rendered":"<p>Easy util for Minecraft Gui, Command, Action<\/p>\n","protected":false},"featured_media":93522,"template":"","meta":{"_minecraft_slug":"libb","_minecraft_project_id":"ksoKuDWF","_minecraft_author":"MrJetby","_minecraft_license":"MIT","_minecraft_downloads":49,"_minecraft_follows":0,"_minecraft_client_side":"unsupported","_minecraft_server_side":"required","_minecraft_storage_type":"zip","_minecraft_archive_name":"libb.zip","_minecraft_size_bytes":137699,"_minecraft_version_count":1,"_minecraft_updated_at":"2026-05-15T21:08:31.256947Z","_minecraft_date_created":"2026-04-15T23:52:20.688380Z","_minecraft_date_modified":"2026-04-10T16:04:40.505988Z","_minecraft_project_url":"https:\/\/modrinth.com\/mod\/libb","_minecraft_icon_attachment_id":93522,"_minecraft_imported_at":"2026-06-05T08:22:00+00:00","_minecraft_import_hash":"6bef4f0d05d046ef935ae4bd44e9b803","_minecraft_versions":"","_minecraft_links":"","_minecraft_gallery":"","_minecraft_api_metadata":""},"mod_category":[127,92],"mod_loader":[132],"minecraft_version":[59,36,60,93,94,101,102,62,37,40,41,73,74,38,78,79,80,81,82,83,167,163],"class_list":["post-93521","mod","type-mod","status-publish","has-post-thumbnail","hentry","mod_category-paper","mod_category-utility","mod_loader-paper","minecraft_version-1-20","minecraft_version-1-20-1","minecraft_version-1-20-2","minecraft_version-1-20-3","minecraft_version-1-20-4","minecraft_version-1-20-5","minecraft_version-1-20-6","minecraft_version-1-21","minecraft_version-1-21-1","minecraft_version-1-21-10","minecraft_version-1-21-11","minecraft_version-1-21-2","minecraft_version-1-21-3","minecraft_version-1-21-4","minecraft_version-1-21-5","minecraft_version-1-21-6","minecraft_version-1-21-7","minecraft_version-1-21-8","minecraft_version-1-21-9","minecraft_version-26-1","minecraft_version-26-1-1","minecraft_version-26-1-2"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.6 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Libb - Minecraft<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/vpesports.com\/minecraft\/mods\/libb\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Libb - Minecraft\" \/>\n<meta property=\"og:description\" content=\"Easy util for Minecraft Gui, Command, Action\" \/>\n<meta property=\"og:url\" content=\"https:\/\/vpesports.com\/minecraft\/mods\/libb\/\" \/>\n<meta property=\"og:site_name\" content=\"Minecraft\" \/>\n<meta property=\"og:image\" content=\"https:\/\/cdn.modrinth.com\/data\/cached_images\/31b63c1cc08964f616ae35ec874741870f4c8bb4.png\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data1\" content=\"6 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/mods\\\/libb\\\/\",\"url\":\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/mods\\\/libb\\\/\",\"name\":\"Libb - Minecraft\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/mods\\\/libb\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/mods\\\/libb\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/wp-content\\\/uploads\\\/2026\\\/06\\\/libb-icon-97cb9ddb3b0adda124cbac24c3d5b53707b48b82_96.webp\",\"datePublished\":\"2026-06-05T08:22:00+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/mods\\\/libb\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/mods\\\/libb\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/mods\\\/libb\\\/#primaryimage\",\"url\":\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/wp-content\\\/uploads\\\/2026\\\/06\\\/libb-icon-97cb9ddb3b0adda124cbac24c3d5b53707b48b82_96.webp\",\"contentUrl\":\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/wp-content\\\/uploads\\\/2026\\\/06\\\/libb-icon-97cb9ddb3b0adda124cbac24c3d5b53707b48b82_96.webp\",\"width\":96,\"height\":96},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/mods\\\/libb\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Mods\",\"item\":\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/mods\\\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Libb\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/#website\",\"url\":\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/\",\"name\":\"Minecraft\",\"description\":\"\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Libb - Minecraft","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/vpesports.com\/minecraft\/mods\/libb\/","og_locale":"en_US","og_type":"article","og_title":"Libb - Minecraft","og_description":"Easy util for Minecraft Gui, Command, Action","og_url":"https:\/\/vpesports.com\/minecraft\/mods\/libb\/","og_site_name":"Minecraft","og_image":[{"url":"https:\/\/cdn.modrinth.com\/data\/cached_images\/31b63c1cc08964f616ae35ec874741870f4c8bb4.png","type":"","width":"","height":""}],"twitter_card":"summary_large_image","twitter_misc":{"Est. reading time":"6 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/vpesports.com\/minecraft\/mods\/libb\/","url":"https:\/\/vpesports.com\/minecraft\/mods\/libb\/","name":"Libb - Minecraft","isPartOf":{"@id":"https:\/\/vpesports.com\/minecraft\/#website"},"primaryImageOfPage":{"@id":"https:\/\/vpesports.com\/minecraft\/mods\/libb\/#primaryimage"},"image":{"@id":"https:\/\/vpesports.com\/minecraft\/mods\/libb\/#primaryimage"},"thumbnailUrl":"https:\/\/vpesports.com\/minecraft\/wp-content\/uploads\/2026\/06\/libb-icon-97cb9ddb3b0adda124cbac24c3d5b53707b48b82_96.webp","datePublished":"2026-06-05T08:22:00+00:00","breadcrumb":{"@id":"https:\/\/vpesports.com\/minecraft\/mods\/libb\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/vpesports.com\/minecraft\/mods\/libb\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/vpesports.com\/minecraft\/mods\/libb\/#primaryimage","url":"https:\/\/vpesports.com\/minecraft\/wp-content\/uploads\/2026\/06\/libb-icon-97cb9ddb3b0adda124cbac24c3d5b53707b48b82_96.webp","contentUrl":"https:\/\/vpesports.com\/minecraft\/wp-content\/uploads\/2026\/06\/libb-icon-97cb9ddb3b0adda124cbac24c3d5b53707b48b82_96.webp","width":96,"height":96},{"@type":"BreadcrumbList","@id":"https:\/\/vpesports.com\/minecraft\/mods\/libb\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/vpesports.com\/minecraft\/"},{"@type":"ListItem","position":2,"name":"Mods","item":"https:\/\/vpesports.com\/minecraft\/mods\/"},{"@type":"ListItem","position":3,"name":"Libb"}]},{"@type":"WebSite","@id":"https:\/\/vpesports.com\/minecraft\/#website","url":"https:\/\/vpesports.com\/minecraft\/","name":"Minecraft","description":"","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/vpesports.com\/minecraft\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"}]}},"_links":{"self":[{"href":"https:\/\/vpesports.com\/minecraft\/wp-json\/wp\/v2\/mod\/93521","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/vpesports.com\/minecraft\/wp-json\/wp\/v2\/mod"}],"about":[{"href":"https:\/\/vpesports.com\/minecraft\/wp-json\/wp\/v2\/types\/mod"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/vpesports.com\/minecraft\/wp-json\/wp\/v2\/media\/93522"}],"wp:attachment":[{"href":"https:\/\/vpesports.com\/minecraft\/wp-json\/wp\/v2\/media?parent=93521"}],"wp:term":[{"taxonomy":"mod_category","embeddable":true,"href":"https:\/\/vpesports.com\/minecraft\/wp-json\/wp\/v2\/mod_category?post=93521"},{"taxonomy":"mod_loader","embeddable":true,"href":"https:\/\/vpesports.com\/minecraft\/wp-json\/wp\/v2\/mod_loader?post=93521"},{"taxonomy":"minecraft_version","embeddable":true,"href":"https:\/\/vpesports.com\/minecraft\/wp-json\/wp\/v2\/minecraft_version?post=93521"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}