HaydenAPI
Простая, но мощная библиотека API для собственных нужд при разработке модов для Minecraft.
Текущие возможности
- API конфигурации. Кроссплатформенная система конфигурации, совместимая с экосистемами Spigot/Paper, Fabric и NeoForge.
Планируемые возможности
- API компонентов данных. Кроссплатформенный API для атрибутов и компонентов, предназначенный для управления модификациями свойств предметов, позволяющий реализовывать изменения на основе данных как для ванильных, так и для предметов, обрабатываемых плагинами и модами.
Для пользователей
Данный API необходим для некоторых моих будущих модов, что позволит упростить их обновление при смене версии игры. Поместите файл .jar в папку mods или plugins, и всё будет готово к работе!
Для разработчиков
Данный API предоставляет доступ к различным инструментам для создания кроссплатформенных решений, помогая решать сложные аспекты разработки плагинов или модов, такие как работа с пакетами, конфигурациями, прикрепляемыми данными и компонентами.
API конфигурации
HaydenAPI предлагает систему конфигурации, управляемую аннотациями, с удобными для использования аннотациями.
Для определения класса конфигурации необходимо указать аннотацию @Config перед объявлением класса. Когда класс помечен этой аннотацией, он будет распознан автоматически.
Определите необходимые переменные в классе с соответствующими типами. Чтобы превратить переменную в запись конфигурации, следует использовать аннотацию @Entry.
Переменную также можно пометить аннотацией @Comment(String comment) для добавления комментария. Если требуется переменная, значение которой необходимо перезагружать каждый раз при изменении пользователем без перезапуска игры или сервера, пометьте переменную аннотацией @Reloadable.
Пример:
@Config
public class Configuration {
@Entry
@Comment("Какое сообщение следует показывать при каждом входе игрока?")
public static String welcomeMessage = "Welcome to the server!";
@Entry
@Reloadable
@Comment("Какое сообщение дня следует показывать при каждом входе игрока?")
public static String messageOfTheDay = "Today is a cool day! :)";
}Чтобы использовать значение записи из конфигурации, обращайтесь с ней как с обычной переменной; API обработает изменения.
Пример: (Fabric)
public static void onPlayerJoin() {
ServerPlayConnectionEvents.JOIN.register((ServerPlayNetworkHandler player, PacketSender packetSender, MinecraftServer server) -> {
if (player.player != null) {
player.player.sendMessage(Text.of(Configuration.welcomeMessage), false);
}
});
}Важно отметить, что необходимо инициализировать файл конфигурации и перезагружать его значения, если пользователь изменил их с помощью текстового редактора.
ConfigurationAPI#createConfig(String path, Class<T> configClass) - создаёт (если не существует) файл конфигурации по указанному пути (включая имя файла), структура которого определяется классом с аннотацией @Config.
ConfigurationAPI#saveConfig(String path, Class<T> configClass) - сохраняет и перезагружает значения записей, если они были изменены в вашем коде, а также проверяет данные на соответствие структуре файла конфигурации, предоставляемой классом.
ConfigurationAPI#reloadConfig(String path, Class<T> configClass) - перезагружает конфигурацию из файловой системы и проверяет данные на соответствие структуре файла конфигурации, предоставляемой классом.
Пример:
public static void init() {
try {
ConfigurationAPI.createConfig(".\config\welcomeMessage.json5", Configuration.class);
ConfigurationAPI.reloadConfig(".\config\welcomeMessage.json5", Configuration.class);
} catch (ConfigurationException e) {
// Здесь можно обработать ошибки валидации или другие проблемы с файлом конфигурации и использовать значения по умолчанию при необходимости.
e.printStackTrace();
}
}Настройка зависимости
В вашем build.gradle необходимо объявить Maven-репозиторий HaydenAPI (или CurseMaven, если предпочитаете) и использовать обработчик зависимостей modImplementation для загрузки библиотеки в среду разработки.
repositories {
maven {
name = 'BehindTheScenery Team Maven'
url = 'https://maven.behindthescenery.online/repository/maven-public/'
}
}
dependencies {
modImplementation "dev.denismasterherobrine:haydenapi-${rootProject.modloader}:${rootProject.haydenapi_version}@jar"
}И в gradle.properties:
modloader = fabric
haydenapi_version = 1.0.2Примечание: значение fabric (среда разработки Fabric/Quilt) можно изменить на neoforge (среда разработки NeoForge) или common (среда разработки Paper/Spigot)) для указания требуемой версии HaydenAPI.
