Libb
🟡 Updated this yearPreview

🔍 Analysis
- 👍 0.1% endorsement rate
- 🏆 #521 of 1452 bukkit mods in this game by downloads
📋 About This Mod
# Libb A library for convenient and easy creation of Minecraft plugins. --- <div align="center"> <a href="https://wiki.jetby.org/"><img src="https://cdn.modrinth.com/data/cached_images/31b63c1cc08964f616ae35ec874741870f4c8bb4.png" /></a><a href="https://dsc.gg/jmdev"><img src="https://cdn.modrinth.com/data/cached_images/60fcf5a0b12f3cff46b065aea871b3f08629f94e.png" /></a><a href="https://ko-fi.com/jetby"><img src="https://cdn.modrinth.com/data/cached_images/4a1b54c640e2f990880107e8bf3cd6c573a9201a.png" /></a> </div> --- | **Dependencies**| |:-| | (https://modrinth.com/plugin/placeholderapi) | Java 21 or higher | Paper or forks | Minecraft Version 1.20 or higher --- <details> <summary>GUI</summary> ### Example ```java public class GuiTest extends AdvancedGui { public GuiTest() { super("Gui title"); setItem("example", ItemWrapper.builder(Material.STONE) .slots(1, 5, 7) .displayName(Component.text("This is the name dude")) .onClick(event -> { event.setCancelled(true); player.sendMessage("Clicked on slot: " + event.getSlot()); }) .build()); } } ``` To open a GUI for a player, call `open()`: ```java new GuiTest().open(player); ``` </details> --- <details> <summary>ParsedGui — Config-driven GUIs</summary> `ParsedGui` lets you define an entire inventory GUI in a YAML config file — items, slots, click actions, open/close hooks, and placeholders — with no boilerplate code. --- ### YAML structure ```yaml id: my_gui title: "<gold>My Shop" size: 54 # must be a multiple of 9 on_open: # optional — action list to run when GUI opens - " UI_BUTTON_CLICK;1;1" on_close: # optional — action list to run when GUI closes - " <gray>Closed the shop." Items: my_item: material: DIAMOND slot: 13 # single slot display_name: "<aqua>Buy Diamond" lore: - "" - " <gray>Click to purchase" - "" on_click: any: # fires on every click type - " UI_BUTTON_CLICK;1;1" - " buy diamond" left: # fires only on left click - " <green>Left clicked!" shift_left: - " <yellow>Shift+Left!" ``` **Supported click types:** `any`, `left`, `shift_left`, `right`, `shift_right`, `middle`, `drop`, `control_drop`, `double` **Slot formats:** ```yaml slot: 13 # single slot slots: - '0-8' # range - '45-53' # another range - '27' # single inside a list ``` --- ### Opening from code ```java // From a FileConfiguration: FileConfiguration config = YamlConfiguration.loadConfiguration(file); new ParsedGui(player, config, myPlugin).open(player); // From a pre-parsed Gui record (more efficient for many players): Gui gui = ...; // parsed once at startup new ParsedGui(player, gui, myPlugin).open(player); ``` --- ### Runtime placeholders Use `setReplace()` to inject values into display names, lore, and action lines at runtime. Call it **before** `open()` — items are built on open. ```java ParsedGui gui = new ParsedGui(player, config, myPlugin); gui.setReplace("%price%", "500") .setReplace("%item_name%", "Diamond Sword"); gui.open(player); ``` In YAML: ```yaml display_name: "<white>Price: <green>$%price%" lore: - " <gray>Item: <white>%item_name%" ``` PlaceholderAPI placeholders (`%papi_placeholder%`) are applied automatically — no extra setup needed. --- ### Click handlers from code Register Java-side click logic for items by their YAML section key. Runs **in addition** to whatever `on_click` is defined in YAML. ```java ParsedGui gui = new ParsedGui(player, config, myPlugin); gui.addClickHandler("my_item", event -> { Player clicker = (Player) event.getWhoClicked(); clicker.sendMessage("You clicked my_item!"); gui.refresh(); }); gui.open(player); ``` --- ### Passing the GUI into actions via ActionContext When a player clicks an item, `ParsedGui` puts itself into the `ActionContext` automatically. Inside a custom action you can retrieve it: ```java ActionRegistry.register("myplugin", "my_action", (ctx, text) -> { ParsedGui gui = ctx.get(ParsedGui.class); if (gui == null) return; // do something, then refresh gui.refresh(); }); ``` In config: ```yaml on_click: any: - "" ``` --- ### Slot priority & view_requirements Multiple items can target the same slot. The one with the lowest `priority` value whose `view_requirements` all pass wins. This is useful for conditional items — e.g. show a locked version until the player has enough money. ```yaml Items: buy_locked: material: RED_STAINED_GLASS_PANE slot: 13 priority: 1 display_name: "<red>Not enough money" view_requirements: - "%vault_eco_balance% < 100" # shown when
# Libb A library for convenient and easy creation of Minecraft plugins.
| Dependencies| |:-| | (https://modrinth.com/plugin/placeholderapi) | Java 21 or higher | Paper or forks | Minecraft Version 1. 20 or higher
GUI
### Example
```java public class GuiTest extends AdvancedGui { public GuiTest() { super("Gui title"); setItem("example", ItemWrapper.builder(Material. STONE) .slots(1, 5, 7) .displayName(Component.text("This is the name dude")) .onClick(event -> { event.setCancelled(true); player.sendMessage("Clicked on slot: " + event.getSlot()); }) .build()); } } ```
To open a GUI for a player, call `open()`:
```java new GuiTest().open(player); ```
ParsedGui — Config-driven GUIs
`ParsedGui` lets you define an entire inventory GUI in a YAML config file — items, slots, click actions, open/close hooks, and placeholders — with no boilerplate code.
### YAML structure
```yaml
id: my_gui
title: "
on_open: # optional — action list to run when GUI opens - " UI_BUTTON_CLICK;1;1"
on_close: # optional — action list to run when GUI closes
- "
Items:
my_item:
material: DIAMOND
slot: 13 # single slot
display_name: "
Supported click types: `any`, `left`, `shift_left`, `right`, `shift_right`, `middle`, `drop`, `control_drop`, `double`
Slot formats:
```yaml slot: 13 # single slot slots: - '0-8' # range - '45-53' # another range - '27' # single inside a list ```
### Opening from code
```java // From a FileConfiguration: FileConfiguration config = YamlConfiguration.loadConfiguration(file); new ParsedGui(player, config, myPlugin).open(player);
// From a pre-parsed Gui record (more efficient for many players): Gui gui = ...; // parsed once at startup new ParsedGui(player, gui, myPlugin).open(player); ```
### Runtime placeholders
Use `setReplace()` to inject values into display names, lore, and action lines at runtime. Call it before `open()` — items are built on open.
```java ParsedGui gui = new ParsedGui(player, config, myPlugin); gui.setReplace("%price%", "500") .setReplace("%item_name%", "Diamond Sword"); gui.open(player); ```
In YAML:
```yaml
display_name: "
PlaceholderAPI placeholders (`%papi_placeholder%`) are applied automatically — no extra setup needed.
### Click handlers from code
Register Java-side click logic for items by their YAML section key. Runs in addition to whatever `on_click` is defined in YAML.
```java ParsedGui gui = new ParsedGui(player, config, myPlugin);
gui.addClickHandler("my_item", event -> { Player clicker = (Player) event.getWhoClicked(); clicker.sendMessage("You clicked my_item!"); gui.refresh(); });
gui.open(player); ```
### Passing the GUI into actions via ActionContext
When a player clicks an item, `ParsedGui` puts itself into the `ActionContext` automatically. Inside a custom action you can retrieve it:
```java ActionRegistry.register("myplugin", "my_action", (ctx, text) -> { ParsedGui gui = ctx.get(ParsedGui.class); if (gui == null) return;
// do something, then refresh gui.refresh(); }); ```
In config: ```yaml on_click: any: - "" ```
### Slot priority & view_requirements
Multiple items can target the same slot. The one with the lowest `priority` value whose `view_requirements` all pass wins. This is useful for conditional items — e.g. show a locked version until the player has enough money.
```yaml
Items:
buy_locked:
material: RED_STAINED_GLASS_PANE
slot: 13
priority: 1
display_name: "
📊 Mod Details
- Game
- Minecraft Plugins
- Author
- MrJetby
- Version
- 1.2.3
- Downloads
- 695
- Endorsements
- 1
- Category
- bukkit
- Created
- 4/15/2026
- Updated
- 7/18/2026
- Game Versions
- 1.20, 1.20.1, 1.20.2, 1.20.3, 1.20.4
- Tags
- utility
🔧 How to Install Minecraft Plugins Mods
Download from Modrinth. Use Prism Launcher or drop into your mods folder.
📖 Full step-by-step install guide for Minecraft Plugins →
Visit the official mod page for specific installation instructions for this mod.
🎮 Need cheat codes or console commands? Check ur gaming wiki for Minecraft Plugins commands, item IDs, and more.
❓ Frequently Asked Questions
Which Minecraft Plugins versions does Libb support?
The author lists 1.20, 1.20.1, 1.20.2, 1.20.3, 1.20.4, 1.20.5. Other versions may work but are untested by the author.
What is the latest version of Libb?
Version 1.2.3, published 2026-07-18 with 695 downloads recorded at the source.
Keep browsing — more Minecraft Plugins mods await


