▶️ ЗАБЕРИ СВОИ 8 ПОДАРКОВ 🎁 ПРИ СОЗДАНИИ СВОЕГО МАЙНКРАФТ СЕРВЕРА
Плагины/HamsterAPI
HamsterAPI

HamsterAPI

Lightweight-библиотека для Spigot/Bukkit плагинов, которая дает разработчикам удобные утилиты, производительные абстракции и общие системы для ускорения создания плагинов.

Оцените первым
8.7K
17

HamsterAPI: Инструментарий для работы с пакетами в Майнкрафт

Перехватывай, изменяй и отправляй пакеты без NMS и Reflection.

Что такое HamsterAPI?

HamsterAPI - это производительная библиотека, которая даёт разработчикам полный контроль над сетевым протоколом Майнкрафт. Вместо того чтобы копаться в NMS-коде, ты получаешь чистую событийную абстракцию - работаешь с пакетами стабильно на разных версиях сервера.

Короче, забываешь про головную боль с поддержкой версионного кода. HamsterAPI даёт простое и гибкое решение: от создания кастомных косметик до фикса эксплойтов на уровне пакетов. Если ты собираешь сервер - это must-have для ускорения разработки.

Основные фишки

  • Перехват пакетов - слушай, изменяй и отменяй любые пакеты через гибкую систему событий с приоритетами.
  • Отправка пакетов без NMS - шли Title, ActionBar и другие пакеты игрокам без Reflection и версионной магии.
  • Контроль над игроками - безопасно отключай игроков с кастомным сообщением или мгновенно закрывай их соединение.
  • Интеграция с BungeeCord - переключай игроков между серверами, используй плагин-каналы и управляй сетью.
  • Оптимизированные утилиты - упрощённая работа с Reflection и буферами для создания фич, независимых от версий.

Начало работы

Шаг 1: Добавь HamsterAPI как зависимость

Сначала пропиши HamsterAPI в plugin.yml своего плагина. Это нужно, чтобы плагин загрузился корректно.

name: YourPlugin
version: 1.0
main: com.yourdomain.yourplugin.Main
depend: [HamsterAPI]
Шаг 2: Получи доступ к API

Входная точка - синглтон. Достаёшь его статическим вызовом:

HamsterAPI api = HamsterAPI.getInstance();

Отсюда доступны все менеджеры и утилиты:

  • getHamsterPlayerManager() - управление действиями игроков (отправка пакетов, отключение).
  • getBungeeMessenger() - связь с BungeeCord прокси.
  • getPacketInjector() - ручное внедрение или удаление API из пайплайна игрока.
  • getBufferIO() - утилита для декодирования сырых байтов в читаемые пакеты.

Основы и примеры

Как слушать пакеты

HamsterAPI использует событийную систему для перехвата пакетов на разных этапах:

Поток: Клиент -> [Разделение и декомпрессия] -> PacketDecodeEvent -> [Декодер] -> PacketReceiveEvent -> Сервер

  • PacketDecodeEvent

  • Когда: После декомпрессии байтов, но до того как они превратятся в объект пакета.

  • Что получаешь: Сырой ByteBuf.

  • Для чего: Низкоуровневая безопасность, фикс эксплойтов, анализ сети.

  • PacketReceiveEvent / PacketSendEvent

  • Когда: После того как пакет полностью декодирован в PacketWrapper.

  • Что получаешь: Удобный PacketWrapper.

  • Для чего: Классические задачи - косметика, отмена игровых событий, изменение поведения.

Регистрируешь слушателя как обычное Bukkit-событие.

Пример: Слушаем пакет

public class MyPacketListener implements Listener {

    @EventHandler
    public void onPacketSend(PacketSendEvent event) {
        String packetName = event.getPacket().getName();

        if (packetName.equals("PacketPlayOutChat")) {
            Player player = event.getPlayer();
            player.sendMessage("Сервер пытался отправить тебе сообщение!");
            
            // Можешь отменить пакет
            // event.setCancelled(true);
        }
    }
}
Отправка Title и Subtitle
HamsterPlayer hamsterPlayer = HamsterAPI.getInstance().getHamsterPlayerManager().get(player);

// Отправляем заголовок: появляется за 1с, висит 3с, исчезает за 1с
// Время в тиках (20 тиков = 1 секунда)
hamsterPlayer.sendTitle("§aДобро пожаловать!", "§7Приятной игры.", 20, 60, 20);
Отправка ActionBar
HamsterPlayer hamsterPlayer = HamsterAPI.getInstance().getHamsterPlayerManager().get(player);

hamsterPlayer.sendActionbar("§eУ вас §c5§e новых сообщений.");
Безопасное отключение игрока (Packet Kick)

Отправляет формальный пакет отключения - клиент обработает его плавно и покажет кастомную причину.

HamsterPlayer hamsterPlayer = HamsterAPI.getInstance().getHamsterPlayerManager().get(player);

hamsterPlayer.disconnect("§cТебя кикнули за крутость.");
Мгновенное закрытие соединения

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

HamsterPlayer hamsterPlayer = HamsterAPI.getInstance().getHamsterPlayerManager().get(player);

hamsterPlayer.closeChannel();
Отправка игрока на другой сервер BungeeCord
HamsterPlayer hamsterPlayer = HamsterAPI.getInstance().getHamsterPlayerManager().get(player);

// Имя сервера должно совпадать с config.yml BungeeCord
hamsterPlayer.sendServer("lobby-1");

Планы на будущее

HamsterAPI постоянно расширяется. В планах:

  • BossBar API - простой способ создавать и управлять кастомными BossBar'ами без привязки к версиям.
  • Кастомные плагин-каналы - прямая связь между серверным плагином и клиентскими модами.
  • BungeeCord Listener - отдельный слушатель для приёма сообщений от BungeeCord прокси.

Начинай работать с HamsterAPI уже сегодня и бери под контроль сетевое взаимодействие своего сервера Майнкрафт.

Часто задаваемые вопросы

Совместимость

Minecraft: Java Edition

1.21.x1.20.x1.19.x1.18.x1.17.x1.16.x1.15.x1.14.x1.13.x1.12.x1.11.x1.10.x1.9.x1.8.x

Поддерживаемые окружения

Сервер

Ссылки


Создатели

Детали

Лицензия:
Опубликован:9 месяцев назад
Обновлён:3 месяца назад
Главная