Configuration library for bukkit plugins based on Configurate
At the moment, there is 4 modules
- core - contains the main logic of the library
- lang-yml - contains the implementation for YML format
- platform-spigot - contains additional serializers for the Spigot platform
- platform-paper - contains additional serializers for Paper. Includes Platform-Spigot
Add the following repository and dependency to your pom.xml:
<repositories>
<repository>
<id>my-maven-repo</id>
<url>https://mymavenrepo.com/repo/AzWPavD3lYKKBaGswiVO/</url>
</repository>
</repositories>
<dependencies>
<dependency>
<groupId>me.thedivazo.libs.DVZConfig</groupId>
<artifactId>[module-name]</artifactId>
<version>1.2.1</version>
</dependency>
</dependencies>Add the following to your build.gradle.kts:
repositories {
maven("https://mymavenrepo.com/repo/AzWPavD3lYKKBaGswiVO/")
}
dependencies {
implementation("me.thedivazo.libs.DVZConfig:[module-name]:1.2.1")
}Add the following to your build.gradle:
repositories {
maven {
url = uri("https://mymavenrepo.com/repo/AzWPavD3lYKKBaGswiVO/")
}
}
dependencies {
implementation 'me.thedivazo.libs.DVZConfig:[module-name]:1.2.1'
}First, you should know what ConfigManager is
ConfigManager - the point for working with the configuration.
You can define your own Config manager extended ConfigManager interface or use the ConfigManagerImpl
Full example for uses a paper platform and lang-yml modules:
import org.bukkit.Color;
import org.bukkit.Location;
import org.bukkit.potion.PotionEffectType;
import org.spongepowered.configurate.objectmapping.ConfigSerializable;
@ConfigSerializable
class MainConfig {
String param1 = "defaultValue"; // default value required!!
String param2 = "defaultValue";
}
public class YouPlugin extends JavaPlugin {
private final ConfigManager configManager;
@Override
public void onEnable() {
loadConfigManager();
MainConfig mainConfig = configManager.getConfig(MainConfig.class);
getLogger().info(mainConfig.param1);
}
public void reload() {
configManager.load();
}
public void loadConfigManager() {
TypeSerializerCollection typeSerializerCollection = TypeSerializerCollection.builder()
.reguster(Location.class, LocationScalarSerializer.DEFAULT) // from platform-paper or platform-spigot module
.register(Color.class, BukkitColorSerializer.DEFAULT) // from platform-paper or platform-spigot module
.register(PotionEffectType.class, PotionEffectTypeSerializer.DEFAULT) // from platform-paper module
.build();
ConfigLoader configLoader = YamlConfigLoader.getConfigLoader(typeSerializerCollection); // from lang-eml module
ConfigContainer configContainer = ConfigContainer.builder()
.loader(configLoader)
.addConfig(getDataFolder().toPath().resolve("config.yml"), MainConfig.class)
.build();
ConfigManager configManager = new ConfigManagerImpl(configContainer);
this.configManager = configManager;
}
}This lib provides several of its classes for serialization. One of them is HierarchyClassSerializer. To understand it, it's better to read its javadoc
For more information see javadoc and https://github.com/SpongePowered/Configurate and more examples in test module
Compilation requires JDK 21 and up.
To compile the plugin, run ./gradlew build from the terminal.
Once the plugin compiles, grab the jar from /target folder.
The universal jar contains all modules for all supported platforms.