Скачать MESH Lib — Minecraft Моды — MetaMods

MESH Lib

Активный

Установок

0

Последнее обновление

9 месяцев назад

Версии

1.19 — 1.21.4
Сервер
Fabric
Библиотеки

MESH Lib

Библиотека, упрощающая запуск HTTP-сервера через тот же порт, который используется сервером Майнкрафт. Совместима с фреймворками Fabric и Paper.

Компиляция документации доступна по этой ссылке.

Поддерживаемые версии

Поддержка модификации осуществляется, стартуя с версии 1.19 до последней на текущий момент.

Использование

Игроки

Игрокам, как правило, эта библиотека не понадобится — модуль встроен в окончательный файл разработчиками плагинов и модов.

Разработчикам

Gradle

Чтобы воспользоваться библиотекой, добавьте репозиторий в блок с репозиториями:

repositories {
    // Другие репозитории

    maven {
        name = "OffsetMods538"
        url = "https://maven.offsetmonkey538.top/releases"
        content {
            includeGroup "top.offsetmonkey538.meshlib"
        }
    }
}

Библиотека применяется по принципу Jar-In-Jar, что означает размещение файлов библиотеки внутри модуля и последующую эксплуатацию изнутри:

dependencies {
    // Для Fabric
    include modImplementation("top.offsetmonkey538.meshlib:mesh-lib-fabric:1.0.4+1.21.4")

    // Для Paper
    implementation "top.offsetmonkey538.meshlib:mesh-lib-paper:1.0.4+1.21.4"
}

Обязательно применяйте последнюю версию.

Практическое использование

Представим, что требуется разработка простейшего веб-сервера, функционирующего по пути http://server.com:25565/simple-server, и выполняющего задачу возвращения обычного текста "Привет, мир!".

Первым шагом станет создание обработчика HTTP-запросов, создадим класс MyHttpHandler по примеру:

public class MyHttpHandler implements HttpHandler {

    @Override
    public void handleRequest(@NotNull ChannelHandlerContext ctx, @NotNull FullHttpRequest request) throws Exception {
        // Сюда добавим логику
    }
}

Далее, реализуем код внутри метода, принимающего входящие HTTP-запросы:

public void handleRequest(@NotNull ChannelHandlerContext ctx, @NotNull FullHttpRequest request) throws Exception {
    // Запишем «Привет, мир!» в буфер, применяя кодировку UTF-8
    final ByteBuf content = Unpooled.copiedBuffer("Привет, мир!", StandardCharsets.UTF_8);
    // Создаём ответ, передавая в него ранее определённый буфер
    final FullHttpResponse response = new DefaultFullHttpResponse(HTTP_1_1, OK, content);

    // Установка заголовка «CONTENT_TYPE» оповещает браузер, что тип информации — обычный текст в UTF-8
    response.headers().set(CONTENT_TYPE, "text/plain; charset=UTF-8");

    // Отсылаем получившийся ответ и закрываем соединение
    ctx.writeAndFlush(response).addListener(ChannelFutureListener.CLOSE);
}

Заключительным этапом станет регистрация созданного обработчика. Добавьте следующий элемент в ваш деблок инициализации технологического кода или плагина:

@Override
public void onInitializeServer() {
    // Прочий функционал внутри проекта

    HttpHandlerRegistry.INSTANCE.register("simple-server", new MyHttpHandler());
}

В общих настройках совместимости библиотеки в качестве ID регистрируется путь передачи. Недопустимо захватывать корневой путь — для обработки более одного подпути, вам следует пользоваться параметром request.uri(), а не пытаться прописать для ID добавленный путь с помощью слешей, что исключительно не сработает.

Участники проекта
OffsetMonkey538

OffsetMonkey538

Разработчик

Создан: 14 окт 2024

ID: 62167