NextLib

Build Minecraft Plugins The Easy Way

17

Quick challenge

How far can you run before the mobs catch you?

NextLib

NextLib

WIKI

CodeFactor

License: MIT

Java

Gradle

JitPack Downloads

GitHub last commit

GitHub issues

GitHub pull requests

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 &#3498dbNextLib")); ```

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

---

ADS