Перейти к содержимому

Plugin ASM

Плагин ASM — это лёгкий фреймворк для инъекции байт-кода в стиле Mixin для серверов Paper/Bukkit, позволяющий декларативно изменять методы через ASM без ручного написания байт-кода.

Java Agent
Загрузчики
Java Agent
Скачиваний на Modrinth
262
Подписчиков на Modrinth
2
версии
3
Обновлён
18 февраля 202618 февр.
Опубликован
в 2026
Это библиотека — она нужна другим модам и сама ничего не добавляет в игру

Коротко о моде

Библиотека — нужна другим модам
Работает на Java Agent
Для Minecraft 1.0–1.21.11
Ставится только на сервер; игрокам ставить не нужно
Последняя версия — 0.1.0-alpha3 от 18 февраля 2026
Лицензия LGPL-2.1-or-later — бесплатно
Где нужен
В игрене нуженНа сервереобязателен

Ставится только на сервер; игрокам ставить не нужно

Версии игры1.0–1.21.11
Описание переведено автоматическиПоказать оригинал (EN)

Plugin ASM


|---------------|------------------------------------------------------------------------| | 🩸 Все типы инъекций | BEFORE / AFTER / REPLACE / HEAD / TAIL (AROUND понижается до REPLACE) |

🧩 Хуки ASM-процессоровОбъявите массив asms в pasm.json, реализуйте интерфейс PasmAsmProcessor — можно выполнять собственные операции с байт-кодом до и после premain
  • Java 8 - 21
  • Minecraft 1.0+
  • Maven или Gradle (нужны только при компиляции плагина)

  1. Скачайте последнюю версию Plugin ASM с GitHub или Modrinth
server
| -> paper-1.xx.x-xx.jar
| -> pasm-x.x.x.jar
| -> plugins
java -javaagent:pasm-x.x.x.jar -jar paper-1.xx.x-xx.jar

Использование Plugin ASM для инъекции байт-кода

Смотрите Wiki

  • ✅ Полное покрытие типов BEFORE, AFTER, REPLACE, HEAD, TAIL
  • ✅ Сложные методы с try-catch-finally
  • ✅ Конфигурация только с asms без pasms
  • ✅ Paper 1.21.11 / Java 21

git clone https://github.com/laolizhennui/Plugin-ASM.git
cd Plugin-ASM
mvn clean package

Артефакт сборки: target/pasm-x.x.x.jar (это и есть Java Agent)

  • Pull Request: исправления кода, улучшение документации Ждём ваших Star ⭐ и Fork 🍴!

LGPL License Copyright © 2026 laolizhennui

Happy Coding! 🎮🔧

Plugin ASM

PASM — это лёгкий фреймворк для инъекции байт-кода в стиле Mixin, созданный специально для серверных сред Paper / Folia. Он позволяет изменять байт-код произвольных классов во время выполнения с помощью простых аннотаций — без рефлексии, без наследования, без потери производительности. 🎯 Цель: дать разработчикам плагинов Bukkit/Paper возможность делать хот-патчи, расширять API, перехватывать события и многое другое — просто написав обычный Java-код, не касаясь сложных внутренностей ASM.

✨ Ключевые возможности

ВозможностьОписание
🚀 Инъекция в стиле Mixin@Pasm + @Inject задают целевой класс и метод; фреймворк сам объединяет байт-код.
🩸 Все типы инъекцийBEFORE / AFTER / REPLACE / HEAD / TAIL (AROUND понижается до REPLACE с предупреждением).
🏗️ Инъекция в конструкторПоддерживает ; вставка автоматически после вызова super().
🔥 Совместимость с обработчиками исключенийПолное воспроизведение блоков try‑catch‑finally; корректная привязка меток.
📏 Автоматический сдвиг для wide-типовПараметры long / double обрабатываются как занимающие два слота; вручную считать этот сдвиг не нужно.
⚔️ Эксклюзивный REPLACEЕсли у метода несколько REPLACE-инъекций, применяется только одна с наивысшим приоритетом.
🧩 Хуки ASM-процессоровОбъявите массив asms в pasm.json; реализуйте интерфейс PasmAsmProcessor, чтобы выполнять собственные операции с байт-кодом до/после premain.
📦 Сканирование в стиле плагиновПоместите pasm.json в корень вашего плагина; PASM автоматически найдёт все точки инъекций.

📋 Требования к окружению

  • Java 8–21
  • Minecraft 1.0+
  • Maven или Gradle (нужны только при компиляции вашего плагина)

📥 Установка и настройка

  1. Скачайте последнюю версию Plugin ASM с GitHub или Modrinth
  2. Поместите его в корневую папку сервера. Структура должна выглядеть так:
server
| -> paper-1.xx.x-xx.jar
| -> pasm-x.x.x.jar
| -> plugins
    | -> some-plugin.jar
  1. Соответственно измените команду запуска:
java -javaagent:pasm-x.x.x.jar -jar paper-1.xx.x-xx.jar

🛠️ Использование Plugin ASM для инъекции байт-кода

Подробное описание и примеры смотрите в Wiki.

🧪 Тестирование и совместимость

PASM полностью протестирован в следующих сценариях:

  • ✅ BEFORE, AFTER, REPLACE, HEAD, TAIL — покрыты все типы
  • ✅ Инъекция в конструктор (``)
  • ✅ Методы, содержащие блоки try‑catch‑finally
  • ✅ Методы с параметрами long / double (static → non‑static, static → static)
  • ✅ Обнаружение конфликтов нескольких REPLACE-инъекторов на одном методе (выполняется только с наивысшим приоритетом)
  • ✅ Конфигурация только с asms (без pasms)
  • ✅ Paper 1.21.11 / Java 21 Известные ограничения (будут улучшены в будущих версиях):
  • Инъекция AROUND пока не реализована; при её использовании происходит откат к REPLACE с предупреждением.
  • Хот-релоад экспериментальный и не рекомендуется для продакшена.
  • Нативные и абстрактные методы изменять нельзя.

📦 Как собрать сам PASM (только для мейнтейнеров фреймворка)

git clone https://github.com/laolizhennui/Plugin-ASM.git
cd Plugin-ASM
mvn clean package

Артефакт сборки: target/pasm-x.x.x.jar — это и есть Java Agent.

🤝 Участие в разработке

PASM — ещё молодой проект, и мы рады любой помощи! Вы можете:

  • Создать issue: сообщить о баге или предложить новую функцию
  • Pull Request: исправить код, улучшить документацию
  • Поделиться своими случаями использования Ждём ваших Star ⭐ и Fork 🍴!

📄 Лицензия

LGPL License Copyright © 2026 laolizhennui

Напоследок — PASM не призван заменить Mixin, а дать разработчикам под Paper более простой и интуитивный выбор для инъекции байт-кода. Если он вам понравился — расскажите друзьям; если возникли проблемы — расскажите нам. Happy Coding! 🎮🔧

Частые вопросы

Как установить Plugin ASM?

Установите Java Agent под свою версию Minecraft, скачайте Plugin ASM под ту же версию и загрузчик, положите файл в папку mods и запустите игру с профилем загрузчика.

Для каких версий Minecraft есть Plugin ASM?

У Plugin ASM есть сборки для Minecraft 1.0–1.21.11.

Нужен ли Plugin ASM на сервере?

Ставится только на сервер; игрокам ставить не нужно

Лицензия и источник
GNU Lesser General Public License v2.1 or laterможно использовать и распространять; изменённые версии — под той же лицензией и с исходным кодом
Оригинал — Modrinth↗Файлы — без изменений, проверены по SHA-512Это ваш мод? Правообладателям

Сайт использует cookie: необходимые — для входа и темы, а также счётчики посещений Яндекс Метрика и LiveInternet — по ним мы видим, как пользуются сайтом. Рекламных cookie у нас нет. Подробнее