CodecLib
A simpler way to use Hytale config codecs
Описание
CodecLib
CodecLib является легким Библиотека конфигураций Hytale Это автоматизирует создание РазработчикCodec Используя рефлексию. Позволяет создавать сложные конфигурационные файлы и структуры данных с помощью простых Простые старые объекты JavaБез ручного определения каждого поля и кодека.
использование
1. Базовая конфигурация
Создайте класс с полями, которые вы хотите сериализовать. Вы можете инициализировать их, чтобы установить значения по умолчанию.
/**
* Правила:
1 Поля не должны быть конечными, статическими или переходными.
* 2. Поля ДОЛЖНЫ начинаться с прописной буквы (конвенция Хитейл Конфиг).
* 3. Убедитесь, что пользовательский класс, который вы используете, также отмечен @Configuration.
*
@Конфигурация
Общественный класс MyConfig {
Private String ExampleField = «DefaultValue»
@FieldName("DifferentName") // Внутри config.json это поле будет называться "DifferentName"
Private String exampleFieldButWithDifferentName = "defaultValue2";
@SkipConfigField // Это позволит пропустить поле для сериализации
private String thisFieldWillNotExist = «defaultValue3»;
Private int ExampleIntField = 42;
?
2 Создание кодека
Используйте CodecFactory генерировать кодек и загружать конфигурацию.
Внутри вашего плагина...
Публичный CodecLibPlugin(@Nonnull JavaPluginInit init)
Super(init);
Пример = это;
//Необязательно, вы можете зарегистрировать свои собственные кодеки для ваших типов
CodecFactory.registerCustomCodec (Path.class, Codec.PATH);
Просто используйте CodecFactory.createClassCodec (YourClass.class)
CONFIG = withConfig("yourcustomconfig", CodecFactory.createClassCodec(ExampleConfig.class));
?
@Override
Защищенная установка void() {
CONFIG.save();// Вы можете сэкономить обычно, как это
Утвердить Objects.equals (CONFIG.get().getExampleField(), "defaultValue");
утверждать Objects.equals (CONFIG.get().getExampleIntField(), 42);
утверждать Objects.equals (CONFIG.get(.getExampleFieldButWithDifferentName(), "defaultValue2");
?
3. Вложенные объекты
Вы можете поместить объекты внутрь других объектов. CodecLib будет рекурсивно генерировать кодеки для них.
@Конфигурация
Публичный класс DatabaseConfig {
Публичный струнный хост = «локальный хост»;
Общественный порт = 3306;
?
@Конфигурация
Общественный класс MainConfig {
Public String PluginName = «MyPlugin»;
// Это будет обработано автоматически!
Публичная база данныхConfig Database = новая база данныхConfig();
?
Установка
Замените фактические инструкции JitPack/Maven, если они размещены, в противном случае затените или скопируйте библиотеку.
Грейдл (Groovy)
репозитории {
{url }https://jitpack.io " ?
?
зависимости {
реализация 'com.github.Emibergo02:CodecLib:main-SNAPSHOT "
?
// Предлагается перенести пакет в ваш проект
тени Джар {
Переместить 'dev.unnm3d.codeclib', 'your.package.name.codeclib' "
?
Поддерживаемые типы
Библиотека автоматически разрешает кодеки следующих типов:
Струна,булевый,целое число,двойной,длинный,плавать,байт,короткийUUID,мгновенныйСтруна[ ],Int[править править код],Двойной[ ],Долго[ ],плавать[ ]- Любой другой Класс (через рекурсию)
- Больше приходит, оставайтесь настроенными
Требования
- Java 25+
- Hytale Server API (для
РазработчикCodec,кодеки т.д.
Показать оригинальное описание (English)
CodecLib
CodecLib is a lightweight Hytale config library that automates the creation of BuilderCodec using reflection. It allows you to create complex configuration files and data structures using simple POJOs (Plain Old Java Objects), without manually defining every field and codec.
🚀 Usage
1. Basic Configuration
Create a class with the fields you want to serialize. You can initialize them to set default values.
/**
* RULES:
* 1. Fields MUST NOT be final, static or transient.
* 2. Fields MUST start with an uppercase letter (Hytale Config convention).
* 3. Be sure that the custom class you use are annotated with @Configuration as well.
*/
@Configuration
public class MyConfig {
private String ExampleField = "defaultValue";
@FieldName("DifferentName") //Inside config.json this field will be named "DifferentName"
private String exampleFieldButWithDifferentName = "defaultValue2";
@SkipConfigField //This will skip the field for serialization
private String thisFieldWillNotExist = "defaultValue3";
private int ExampleIntField = 42;
}
2. Generating the Codec
Use the CodecFactory to generate the codec and load your config.
// ... inside your plugin ...
public CodecLibPlugin(@Nonnull JavaPluginInit init) {
super(init);
instance = this;
//Optionally, you can register your own codecs for your types
CodecFactory.registerCustomCodec(Path.class, Codec.PATH);
//Just use CodecFactory.createClassCodec(YourClass.class) as Codec
CONFIG = withConfig("yourcustomconfig", CodecFactory.createClassCodec(ExampleConfig.class));
}
@Override
protected void setup() {
CONFIG.save();//You can save normally like this
assert Objects.equals(CONFIG.get().getExampleField(), "defaultValue");
assert Objects.equals(CONFIG.get().getExampleIntField(), 42);
assert Objects.equals(CONFIG.get().getExampleFieldButWithDifferentName(), "defaultValue2");
}
3. Nested Objects
You can put objects inside other objects. CodecLib will recursively generate codecs for them.
@Configuration
public class DatabaseConfig {
public String Host = "localhost";
public int Port = 3306;
}
@Configuration
public class MainConfig {
public String PluginName = "MyPlugin";
// This will be automatically handled!
public DatabaseConfig Database = new DatabaseConfig();
}
📦 Installation
Replace with your actual JitPack/Maven instructions if hosted, otherwise shade or copy the library.
Gradle (Groovy)
repositories {
maven { url 'https://jitpack.io' }
}
dependencies {
implementation 'com.github.Emibergo02:CodecLib:main-SNAPSHOT'
}
//It is suggested to relocate the package in your project
shadowJar {
relocate 'dev.unnm3d.codeclib', 'your.package.name.codeclib'
}
✅ Supported Types
The library automatically resolves codecs for the following types:
String,Boolean,Integer,Double,Long,Float,Byte,ShortUUID,InstantString[],int[],double[],long[],float[]- Any other Class (via recursion)
- More are coming, stay tuned
📋 Requirements
- Java 25+
- Hytale Server API (for
BuilderCodec,Codec, etc.)
Последние версии
codeclib-1.1.0.jar
codeclib-1.0.0.jar
Информация
Авторы:
Категории:
Версии игры:
Создан: 27.01.2026