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.