heroslender / Ethos

A ORM for configuration files with support for Bukkit's YAML

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Elytra

[WIP] Ethos

GitHub stars GitHub issues GitHub last commit MIT License Open Source Love

Ethos is an ORM targeted for configuration files. It features annotations for data validation and more!

This project came with the need to remove boilerplate code for Bukkit plugins when dealing with configuration files, dealing with data serialization/deserialization, data validation, etc.

Example

public class Main extends JavaPlugin {
    private BukkitConfigurationLoader configurationLoader;
    public TestConfig config;

    @Override
    public void onEnable() {
        // Create a new configuration loader for bukkit's yaml config system
        configurationLoader = new BukkitConfigurationLoader<>(
            // The configuration section
            getConfig(),
            // A runnable to save the configuration
            this::saveConfig,
            // The configuration class
            TestConfig.class
        );

        // Load a new config instance
        config = configurationLoader.load();
        
        getLogger().info("Hello " + config.name + " " + config.lastName);
    }
}

public class TestConfig {
    @SerializedName("firstName")
    String name = "Your name";

    @Optional
    String lastName = "Your surname";

    int age = 0;
}

Usage

Maven

<repositories>
    <repository>
        <id>heroslender-repo</id>
        <url>https://nexus.heroslender.com/repository/maven-public/</url>
    </repository>
</repositories>

<dependencies>
    <dependency>
        <groupId>com.heroslender.ethos</groupId>
        <artifactId>ethos-bukkit</artifactId>
        <version>1.0.0-SNAPSHOT</version>
        <scope>compile</scope>
    </dependency>
</dependencies>

Gradle

repositories {
    maven {
        url "https://nexus.heroslender.com/repository/maven-public/"
    }
}

dependencies {
    compile "com.heroslender.ethos:ethos-bukkit:1.0.0-SNAPSHOT"
}

Gradle Kts

repositories {
    maven("https://nexus.heroslender.com/repository/maven-public/")
}

dependencies {
    implementation("com.heroslender.ethos:ethos-bukkit:1.0.0-SNAPSHOT")
}

About

A ORM for configuration files with support for Bukkit's YAML

License:MIT License


Languages

Language:Java 100.0%