
MESH Lib
Активный0.0
Установок
Последнее обновление
Версии
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 добавленный путь с помощью слешей, что исключительно не сработает.