NextLib
Build Minecraft Plugins The Easy Way
Quick challenge
How far can you run before the mobs catch you?
Minecraft check
Confirm your run
Complete the quick check to get your code.
NextLib
NextLib
NextLib is a modular library for Paper/Spigot plugins that covers basic development tasks: working with configs, GUIs, objects, and databases. All modules are focused on a declarative style and convenient integration into existing projects.
---
Content
1. Features 2. Installation 3. Quick start 4. Main modules 5. GUI API and Conditions 6. Working with configs 7. Roadmap 8. License
---
Features
* Config Manager — describe entities through regular Java classes and annotations, and the library creates tables itself and provides a convenient Fluent API for CRUD operations. * Config Manager is a ready pool of connections with configurable parameters. * Config Manager — loading menus from YAML, conditions for display and built-in actions (`update`, `playsound`, `command`, `opengui`, etc.). * Config Manager — a tree of commands with auto-completion. * Config Manager — concise builders of items with support for PDC, titles, lore and heads. * Config Manager — formatting HEX and `&` codes without extra code. * Config Manager — declarative loading of YAML configs into Java objects.
---
Installation
Add the JitPack repository and dependency `1.0.5` to your build script.
Gradle (Kotlin DSL)
```kotlin repositories { mavenCentral() maven("https://jitpack.io") }
dependencies { implementation("com.github.chi2l3s:next-lib:1.0.5") } ```
Gradle (Groovy DSL)
```gradle repositories { mavenCentral() maven { url 'https://jitpack.io' } }
dependencies { implementation 'com.github.chi2l3s:next-lib:1.0.5' } ```
Maven
```xml <repositories> <repository> <id>jitpack</id> <url>https://jitpack.io/</url> </repository> </repositories>
<dependency> <groupId>com.github.chi2l3s</groupId> <artifactId>next-lib</artifactId> <version>1.0.5</version> <scope>provided</scope> </dependency> ```
---
Quick start
1. Download the library via JitPack and add it as a dependency. 2. Create an instance of `GUIManager` and load the menu from the `menus/` folder. 3. Describe the database entities with Java classes, annotate the primary key `@PrimaryKey` and register them in `DynamicDatabase'. 4. Use the provided APIs for commands, items, and configurations — all functionality is available from the namespace `io.github.chi2l3s.nextlib.api'.
```java public final class NextTrapsPlugin extends JavaPlugin { private DynamicDatabase database; private GuiManager guiManager;
@Override public void onEnable() { database = DatabaseManager.createDynamicDatabase(this, "jdbc:mysql://localhost:3306/nexttraps", config -> { config.setUsername("root"); config.setPassword("password"); config.setMaximumPoolSize(10); });
database.register(PlayerEntity.class);
guiManager = new GuiManager(this); guiManager.loadFromFolder(new File(getDataFolder(), "menus")); } } ```
---
Main modules
Command API
* Structure commands through subcommands and permissions. * Support for auto-completion and aliases. * Is connected in one line in `OnEnable()'.
```java getCommand("nextlib").setExecutor(new RootCommand()); ```
Item API
* Fluent builders for 'ItemStack' with customizing the name, description, flags and `PersistentDataContainer'. * Support for head owner installation and massive meta changes.
```java ItemStack reward = new ItemBuilder(Material.DIAMOND) .setName("&B Reward of the day") .setLore(List.of("&7 Press to get")) .addPersistentTag("reward", PersistentDataType.STRING, "daily") .glow() .build(); ```
Color API
* A single formatting method that translates `&` and HEX (`&#RRGGBB`) into color messages.
```java player.SendMessage(color.format("Welcome to ඪdbNextLib")); ```
Config Manager
* The BaseConfig base class automatically creates and updates YAML files. * Data is loaded into Java fields or DTOs.
---
Dynamic database
* Define the entity using a familiar Java class. * The `@PrimaryKey` annotation marks the primary key field. * `DynamicTable` provides the methods `findFirst`, `findMany', `create`, `update` and `delete'.
```java @AllArgsConstructor @Getter public class PlayerEntity { @PrimaryKey private final UUID playerId; private final String nickname; private final String trapSkinId; }
DynamicTable<PlayerEntity> players = database.table(PlayerEntity.class);
String trapSkinId = players.findFirst() .where("playerId", playerId) .execute() .map(PlayerEntity::getTrapSkinId) .orElse("fallback"); ```
For more information, see the separate manual `docs/dynamic—database.md`.
---
GUI API and terms
* The menus are described by YAML files in `plugins/<Your login >/menus`. * The `slot` field takes a single value, and `slots` is a list of arbitrary slots or ranges `A-B'. * You can register your own conditions (`Conditions#register`) and use them to highlight objects or restrict interaction. * Built`in actions: `close`, `command', `console', `message', `opengui`, `update', `playsound'.
```yaml id: traps title: "&8 Trap Selection" size: 54 items: back: material: ARROW slot: 53 name: "&7node" onLeftClick: - "opengui main" trap: material: TRIPWIRE_HOOK slots: - 0-8 - 18 name: "&b%trap_name%" lore: - "&7 Cost: &e%price%" enchanted_when: - "selected" onLeftClick: - "update" - "playsound ENTITY_ENDER_DRAGON_AMBIENT 0.7 1.2" ```
For a detailed guide and examples, see `docs/gui—conditions.md`.
---
Working with configs
* Inherit from BaseConfig to get automatic file creation and updating. * Use 'loadValues()` to read data and associate it with objects in your domain.
```java public class TrapSkinsConfig extends BaseConfig { @Override protected void loadValues() { ConfigurationSection skins = config.getConfigurationSection("skins"); // Convert YAML to your TrapSkin objects } } ```
---
Useful links
* NextLib v1.0.5 Release Notes * Dynamic Database Guide * GUI Conditions and Actions Guide
---
Roadmap
- [x] Command API - [x] Item API - [x] Color API - [x] Config Manager - [x] GUI API with conditions and slot ranges - [x] Dynamic database with HikariCP - [ ] Expandable GUI action registry - [ ] Redis/Message Queue integration - [ ] Utilities for working with events
---
License
MIT License © 2025 NextGenTech
---
