1. Вы находитесь в сообществе Rubukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на различные языки плагины наших коллег из других стран.
    Скрыть объявление
Скрыть объявление
В преддверии глобального обновления, мы проводим исследования, которые помогут нам сделать опыт пользования форумом ещё удобнее. Помогите нам, примите участие!

Стартап [Туториал] Удобная работа с NMS на Paper/Purpur/Folia 1.17+ (paperweight)

Тема в разделе "Разработка плагинов для новичков", создана пользователем Dymeth, 14 ноя 2021.

  1. Автор темы
    Dymeth

    Dymeth Активный участник Пользователь

    Баллы:
    98
    Имя в Minecraft:
    Dymeth
    Проблема в том, что плагины без обфускации просто-напросто не запустятся на стандартных ядрах. Поэтому смысла практически не вижу - разве что отладка проекта на ремапнутом ядре, но без возможности использования на проде.

    А по поводу переносимости совсем не понял. Ничего не мешает склонировать проект с paperweight - он заработает сразу из коробки, хотя и времени на процесс сборки, очевидно, уйдёт больше.

    Создать новый проект и подключить paperweight, конечно, сложнее, чем просто подключить зависимость.
    Но рабочая альтернатива тут только одна - использовать NMS без маппингов.

    Короче говоря, я прям совсем не вижу смысла в ремапнутом NMS, если он не мапится обратно в обфу
     
  2. LOVEC3327

    LOVEC3327 Активный участник Пользователь

    Баллы:
    76
    Имя в Minecraft:
    LOVEC3327
    Всё там мапится. Достаточно плагин нужный добавить в сборку и всё.
    Код:
          
                <plugin>
                    <groupId>net.md-5</groupId>
                    <artifactId>specialsource-maven-plugin</artifactId>
                    <version>1.2.2</version>
                    <executions>
                        <execution>
                            <phase>package</phase>
                            <goals>
                                <goal>remap</goal>
                            </goals>
                            <id>remap-obf</id>
                            <configuration>
                                <srgIn>org.spigotmc:minecraft-server:1.19.2-R0.1-SNAPSHOT:txt:maps-mojang</srgIn>
                                <reverse>true</reverse>
                                <remappedDependencies>org.spigotmc:spigot:1.19.2-R0.1-SNAPSHOT:jar:remapped-mojang</remappedDependencies>
                                <remappedArtifactAttached>true</remappedArtifactAttached>
                                <remappedClassifierName>remapped-obf</remappedClassifierName>
                            </configuration>
                        </execution>
                        <execution>
                            <phase>package</phase>
                            <goals>
                                <goal>remap</goal>
                            </goals>
                            <id>remap-spigot</id>
                            <configuration>
                                <inputFile>${project.build.directory}/${project.artifactId}-${project.version}-remapped-obf.jar</inputFile>
                                <srgIn>org.spigotmc:minecraft-server:1.19.2-R0.1-SNAPSHOT:csrg:maps-spigot</srgIn>
                                <remappedDependencies>org.spigotmc:spigot:1.19.2-R0.1-SNAPSHOT:jar:remapped-obf</remappedDependencies>
                            </configuration>
                        </execution>
                    </executions>
                </plugin>
    
    [​IMG] [​IMG]
     
  3. imDaniX

    imDaniX Активный участник Пользователь

    Баллы:
    96
    Имя в Minecraft:
    imDaniX
    Так к тому речь про specialsource и завел - он позволяет обфусцировать обратно. Ну, и выше уже скинули, как оно выглядит.
    Про то и говорю - с сетапом обычной зависимости+плагина ты просто потратишь куда меньше времени, чем если бы заводил эту махину со сборки ядра. Как бонус - не придется пояснять другим, как собирать плагин, посылать читать документацию.
     
  4. Автор темы
    Dymeth

    Dymeth Активный участник Пользователь

    Баллы:
    98
    Имя в Minecraft:
    Dymeth
    Обновил пост:
    - Добавил спойлер для пользователей мавен со всеми предложенными ссылками и примерами
    - Добавил ссылку на тестовый плагин на Groovy DSL
    - Добавил информацию о настройке paperweight на Groovy DSL
    - Обновил версии зависимостей

    Спасибо всем за информацию
     
  5. imDaniX

    imDaniX Активный участник Пользователь

    Баллы:
    96
    Имя в Minecraft:
    imDaniX
    Пока лениво разбираться в теме глубже, но в одном из последних PR наткнулся на упоминание проекта ignite. Он позволяет создавать миксины на сервер.
    Кто не в курсе - миксины это по своей сути патчи, которые применяются перед запуском сервера, только в форме jar'ника. Миксины являются одним из основных средств моддинга на Fabric (нынче кажется и в Forge имеются, но там Lex - главный разработчик Кузнецы - долго плевался на них).
    В общем, если вам нужны мелкие правки ядра, возможно вам будет проще сделать мод на ignite, нежели собирать свой форк и пытаться поспевать за обновлениям Бумаги. К тому же, этими модами можно делиться, не рекомпилируя сервер вновь и вновь.
     
  6. CraftCoder

    CraftCoder Старожил Пользователь

    Баллы:
    108
    Имя в Minecraft:
    CraftCoderr
    Давно об этом думал. Круто, что сделал кто-то.
    Жаль, что изначально spigot и bukkit не пошли по пути патчинга. Некоторые вот свои велосипеды с патчерами изобретают
    https://github.com/xenondevs/Nova/b.../nova/transformer/patch/item/WearablePatch.kt
     
  7. Goose_Goose_Duck

    Goose_Goose_Duck Ньюби Пользователь

    Баллы:
    1
    Имя в Minecraft:
    Rais_pro
    У меня возникла проблема, я не понимаю куда надо устанавливать папку с самим paperweight?
     
  8. Автор темы
    Dymeth

    Dymeth Активный участник Пользователь

    Баллы:
    98
    Имя в Minecraft:
    Dymeth
    Какую папку? Вручную ничего не нужно делать с файлами. Всё, что требуется сделать, указано в статье
     
  9. Goose_Goose_Duck

    Goose_Goose_Duck Ньюби Пользователь

    Баллы:
    1
    Имя в Minecraft:
    Rais_pro
    Просто при попытке билдинга вылезает ошибка
    Build file 'C:\Users\makar\IdeaProjects\TESTNMS\build.gradle' line: 3
    Plugin [id: 'io.papermc.paperweight.userdev', version: '1.3.11'] was not found in any of the following sources:
    * Try:
    > Run with --info or --debug option to get more log output.
    > Run with --scan to get full insights.
    Если потребуется могу скинуть полную ошибку, потому что там очень большое кол-во текста
     
  10. Автор темы
    Dymeth

    Dymeth Активный участник Пользователь

    Баллы:
    98
    Имя в Minecraft:
    Dymeth
    Обновил первый пост:
    - указал актуальные версии плагинов и зависимостей
    - удалил необходимость указывать репозиторий плагина paperweight
    - удалил рекомендацию использовать Kotlin DSL вместо Groovy DSL
    - добавил упоминание Purpur и Folia

    Помимо этого, актуализировал paperweight-test-plugin-groovy:
    - Обновлены версии gradle-плагинов и dev-bundle зависимостей (до 1.20)
    - Обновлён Gradle до 8+ (gradle-wrapper 8.1.1)
    - Добавлен плагин foojay-resolver-convention, который занимается решением зависимостей JDK (для Gradle 8+)
    - Удалено указание репозитория paperweight в pluginManagement, т.к. релизы перенесены в Gradle plugin portal (начиная с paperweight v1.5.1)
    - Удален плагин net.minecrell.plugin-yml.bukki, добавлен классический plugin.yml, а нужные параметры устанавливаются средствами самого сборщика
    - Несколько других небольших изменений

    После обновления на новые версии рекомендую очистить все кэши и убедиться, что все зависимости подгружаются корректно:
    gradle clean cleanCache cleanAllRunTaskCaches cleanCustomServiceCaches cleanPaperclipCache cleanAllPaperweightUserdevCaches

    Информацию по Миксинам пока не стал добавлять в первый пост - корректней будет написать отдельную тему. В любом случае, спасибо ребятам за информацию.
     
    Последнее редактирование: 20 июн 2023
  11. Автор темы
    Dymeth

    Dymeth Активный участник Пользователь

    Баллы:
    98
    Имя в Minecraft:
    Dymeth
    Ну, потому что нужно использовать актуальные версии зависимостей. Я не просто так дал ссылки на релизы paperweight.
    Обновил сейчас статью, с последними версиями всё должно быть норм. Также обрати внимание на репы с примерами простейших плагинов
     
  12. Goose_Goose_Duck

    Goose_Goose_Duck Ньюби Пользователь

    Баллы:
    1
    Имя в Minecraft:
    Rais_pro
    Большое спасибо, всё работает.
     
  13. Автор темы
    Dymeth

    Dymeth Активный участник Пользователь

    Баллы:
    98
    Имя в Minecraft:
    Dymeth
    Добавил упоминание про настройку зависимости таски reobfJar от assemble. Странно, что никто раньше не упомянул об этой недоработке.

    Всем новичкам, которые наткнулись на статью, напоминаю про необходимость использования актуальной версии paperweight и по возможности Gradle
     
  14. Кaктуc

    Кaктуc Участник Пользователь

    Баллы:
    36
    Имя в Minecraft:
    SniperAndTrapper
    а то что пейпер в открытый доступ выложил исходники майнкрафт сервера с понятными названиями классов и методов это ничего не нарушает? странные законы в этих ваших штатах
     
  15. imDaniX

    imDaniX Активный участник Пользователь

    Баллы:
    96
    Имя в Minecraft:
    imDaniX
    Так они вроде и не делали этого? Собстна, вся эта наркомания с PaperWeight и нужна, чтобы избежать выпуска исходников на показ. Тоже самое касается и PaperClip, только там вопрос выпуска бинарников.
     
  16. Автор темы
    Dymeth

    Dymeth Активный участник Пользователь

    Баллы:
    98
    Имя в Minecraft:
    Dymeth
    Пейпер нигде не выкладывает исходники ванильного майнкрафт-сервера.

    Выкладывает лишь патчи со собственным кодом. Пример: https://github.com/PaperMC/Paper/bl...er/0087-Add-PlayerUseUnknownEntityEvent.patch
    Тут из исходного кода ванили лишь по несколько строк перед и после вставки, которые нужны для корректного выполнения этой самой вставки.

    Названия классов и пакетов действительно корректные, но взяты они из маппингов, которые официально публикуются самой компанией Mojang
     
    Последнее редактирование: 30 апр 2024
  17. Автор темы
    Dymeth

    Dymeth Активный участник Пользователь

    Баллы:
    98
    Имя в Minecraft:
    Dymeth
    Начиная с версии Paper 1.20.5 больше нет необходимости использовать задачу reobfJar upload_2024-5-1_1-18-13.png
     
  18. alexandrage

    alexandrage Старожил Пользователь

    Баллы:
    173
    Лень переводить, типо автоматом?
     
  19. imDaniX

    imDaniX Активный участник Пользователь

    Баллы:
    96
    Имя в Minecraft:
    imDaniX
    С 1.20.5 Paper юзает mojmap, а плагины с маппингами Spigot автоматом конвертируются.
     

Поделиться этой страницей