Skip to content

Instantly share code, notes, and snippets.

@LIMPIX31
Last active June 3, 2024 12:49
Show Gist options
  • Save LIMPIX31/2dd7f6bc7cb79fc70f19033e41e07877 to your computer and use it in GitHub Desktop.
Save LIMPIX31/2dd7f6bc7cb79fc70f19033e41e07877 to your computer and use it in GitHub Desktop.
Гайд по сапрессору на Paper

И так, вы все любите сапрессор, поэтому я решил подробно описать как это сделать, я буду дополнять статью со временем, т.к. сейчас пишу с телефона, так же не стесняйтесь задавать вопросы мне в дискорде(LIMPIX31#9144) или Telegram (@LIMPIX31).

Если это гайд вам помог, то пожалуйста оставьте звёздочку и комментарий, чтобы я знал, что улучшить или дополнить.

1.19 (fixed)

Я немного забросил тему с сапрессором и похоже, что сапрессор оффициально исправлен Mojang. 😕

Сборка из патча (1.18.2 или другая версия)

Поехали.

0. Утилиты

Подготовим необходимые утилиты и ПО для работы.

  1. git. Идём на сайт, скачиваем и ставим себе на ПК с дефолтными галочками, если сомневаетесь можете также спросить. (Можно впринципе поставить сразу в WSL, sudo apt install git)
  2. WSL, почему-то Paper можно собрать только из Linux, так что если у вас система Windows, то идём в Microsoft Store и ищем Ubuntu 20.04 или выше, ставим, запускаем. Точную инструкцию по установке не помню. Далее ставим Java 16 - 18 уже в WSL, гуглим "How to install JDK 18 in Ubuntu".

1. Настраиваем локальное окружение

Идём на репозиторий PaperMC, жмём зелёную кнопку изображение и копируем ссылку. Создаём папку в удобном месте и около 2 ГБ свободного места на диске. Затем выполняем команду (рекомендую из под Windows Terminal или PowerShell):

git clone ссылка-которую-скопировали .

2. Ставим патч

  1. Скачиваем или копируем патч отсюда

  2. Засовываем этот патч в папку patches/server и меняем ей номер, чтобы он был последним (патчи пронумерованы), не знаю влияет ли это на что-то, но мне лень проверять, поправьте если что

  3. Из той же папки открываем WSL и пишем туда:

./gradlew applyPatches

Теперь нужно запастись терпением, это займет от 5 до 30 минут.

3. Собираем JAR

Вы же не закрывали WSL? Она вам ещё раз понадобится, чтобы получить jar, который будет стоять у вас на сервере. Теперь нужно выполнить команду сборки, она отличается для разных версий, но конкретно для 1.18.2 это:

./gradlew createReobfBundlerJar

После этого вы сможете найти jar где-то в build/libs.

1.17.1

Все тоже что и для 1.18.2, только патч вот этот и команда сборки будет

./gradlew reobfJar

И даже вроде бы можно будет обойтись без WSL

Другая версия (1.17 - Latest)

Тут все гораздо сложнее. Вам понадобится редактор кода, предпочтительнее Intellij IDEA или просто попросить меня за вас сделать патч на эту версию :) Делаем всё тоже самое, кроме пункта с патчем(2) и клонированием репозитория

  1. После клонирования переключаемся на нужную версию. Для последних патч версий (тоесть 1.16.5 / 1.17.1 / 1.18.2, а не 1.18 или 1.16.2)

изображение

git checkout ver/1.17.1

Для версий типа 1.18.1 или 1.16.2

git log --oneline

Ищем конец требуемой версии и переключаемся на неё

изображение

git checkout ab8a13961

2.Применяем существующие патчи

./gradlew applyPatches

И на всякий случай скопируйте папку с патчами для сервера, чуть позже узнаете зачем.

  1. Открываем патч из 1.18, если это 1.18 и 1.17 патч, если это версия <=1.17

  2. Открываем редактор кода, открываем Paper-Server и вносим изменения из патча вручную, но номера строк будут отличаться, поэтому пользуемся поиском. Подробнее ознакомится с тем как устроен патч можно тут

  3. Открываем cmd или wsl из папки Paper-Server (если вы устанавливали git в wsl. И фиксируем изменения, чтобы создать свой патч.

git add -A # Добавляем все изменения в будущий патч
git commit -m "UpdateSuppression-and-ItemShadowing" # Фиксируем добавленные изменения с именем будущего патча
  1. Открываем WSL уже из корня папки и создаём патч
./gradlew rebuildPatches

Если по какой-то причине патч не создаётся с ошибкой Index x out of bound, и патчи из папки с патчами для сервера пропадут, то верните их обратно(мы их скопировали ранее) и добавьте пустой файл с последним номером и любым именем, типа 0123-Null.patch и повторите попытку, лично мне это помогло.

  1. Снова применяем патчи, на этот раз это будет быстрее

  2. Возвращаемся к первой инструкции, к сборке jar, но команда для сборки будет та, что указана в README.md в нужной ветке, откройте репозиторий PaperMC на github, выберите ветку и промотайте до Compiling Jar From Sources

изображение

  1. Желательно поделится вашим патчем в комментариях, чтобы другим людям было проще.

Другая версия (< 1.17)

Для версий ниже 1.17 вы должны сделать тоже самое, но немного по другому Для начал вам нужно установить maven в WSL

sudo apt install maven

Вместо команд выше:

Команда применения патчей

./paper patch

Команда создания патчей

./paper rebuild

Сборка Jar

./paper jar
@LIMPIX31
Copy link
Author

собралось на 1.19! спасибо!

Сапрессор работает?

@zxcqirara
Copy link

Собирал на 1.19, и либо я что-то не так сделал, либо саппрессор не работает

@NanoXander
Copy link

Patch failed at 0918 UpdateSuppression-and-ItemShadowing
When you have resolved this problem, run "git am --continue".
If you prefer to skip this patch, run "git am --skip" instead.
To restore the original branch and stop patching, run "git am --abort".
error: corrupt patch at line 94
error: could not build fake ancestor
hint: Use 'git am --show-current-patch' to see the failed patch
*** Please review above details and finish the apply then
*** save the changes with ./gradlew rebuildPatches

@Shents
Copy link

Shents commented Jun 26, 2022

Спасибо, на 1.18.2 собирал ,всё работает.На 1.19 собралось но саппрессор не работает

@LIMPIX31
Copy link
Author

Patch failed at 0918 UpdateSuppression-and-ItemShadowing When you have resolved this problem, run "git am --continue". If you prefer to skip this patch, run "git am --skip" instead. To restore the original branch and stop patching, run "git am --abort". error: corrupt patch at line 94 error: could not build fake ancestor hint: Use 'git am --show-current-patch' to see the failed patch *** Please review above details and finish the apply then *** save the changes with ./gradlew rebuildPatches

Привет! Не знаю нужен ли тебе всё ещё мой ответ, Но перед компиляцией ты должен прописать следующие команды git config --global user.email "Твой маил", И следующую команду - git config --global user.name "Твоё имя/псевдоним", После чего повторно пропиши команду указанную в гайде и всё должно сработать.

Да, это нужно при первом запуске, но в случае @NanoXander ошибка в самом патче, обычно в такой ситуации в ошибки содержится пример этих двух команд.

Также как я понял на 1.19 этот патч не прокатит, нужно что-то новое думать

@LIMPIX31
Copy link
Author

собралось на 1.19! спасибо!

Сапрессор работает?

Похоже не работает, я нашёл в интернете видеоролик опубликованный пару дней назад, зарубежный ютубер построил другой мехнизм, который работает на основе заборов, а не рельс. Но люди в комментариях пишут что в 1.19 полностью пофиксили фантомные предметы, а так-же работает это совсем не так как обычный сапрессор

Похоже Mojang окончательно исправили это, вероятно это всё ещё можно вернуть, но тут другой вопрос, будет ли это соответствовать ванильности и стандартам Minecraft. Я придерживаюсь того, что есть баг исправлен оффициально Mojang, а не Spigot или Paper, то нужно принять это и не пытатся вернуть его.

@equivoke2sudo
Copy link

equivoke2sudo commented Jul 15, 2022

собралось на 1.19! спасибо!

Сапрессор работает?

Похоже не работает, я нашёл в интернете видеоролик опубликованный пару дней назад, зарубежный ютубер построил другой мехнизм, который работает на основе заборов, а не рельс. Но люди в комментариях пишут что в 1.19 полностью пофиксили фантомные предметы, а так-же работает это совсем не так как обычный сапрессор

Похоже Mojang окончательно исправили это, вероятно это всё ещё можно вернуть, но тут другой вопрос, будет ли это соответствовать ванильности и стандартам Minecraft. Я придерживаюсь того, что есть баг исправлен оффициально Mojang, а не Spigot или Paper, то нужно принять это и не пытатся вернуть его.

Недавно уже пытались создать новый механизм, но я не особо силён в английском поэтому из этого видео я понял очень мало чего, но работает он совершенно по другому - https://www.youtube.com/watch?v=81S7Q-O28X8

@equivoke2sudo
Copy link

Patch failed at 0926 UpdateSuppression-and-ItemShadowing
When you have resolved this problem, run "git am --continue".
If you prefer to skip this patch, run "git am --skip" instead.
To restore the original branch and stop patching, run "git am --abort".
error: invalid object 100644 230f5adc4df1679597f5b9aa9fcd36501efbebdd for 'src/main/java/net/minecraft/network/protocol/PacketUtils.java'
error: Repository lacks necessary blobs to fall back on 3-way merge.
hint: Use 'git am --show-current-patch=diff' to see the failed patch
*** Please review above details and finish the apply then
*** save the changes with ./gradlew rebuildPatches

Task :applyServerPatches FAILED

FAILURE: Build failed with an exception.

  • What went wrong:
    Execution failed for task ':applyServerPatches'.

io.papermc.paperweight.PaperweightException: Failed to apply patches

  • Try:

Run with --stacktrace option to get the stack trace.
Run with --info or --debug option to get more log output.
Run with --scan to get full insights.

BUILD FAILED in 1m 16s
36 actionable tasks: 10 executed, 26 from cache

@equivoke2sudo
Copy link

Patch failed at 0926 UpdateSuppression-and-ItemShadowing When you have resolved this problem, run "git am --continue". If you prefer to skip this patch, run "git am --skip" instead. To restore the original branch and stop patching, run "git am --abort". error: invalid object 100644 230f5adc4df1679597f5b9aa9fcd36501efbebdd for 'src/main/java/net/minecraft/network/protocol/PacketUtils.java' error: Repository lacks necessary blobs to fall back on 3-way merge. hint: Use 'git am --show-current-patch=diff' to see the failed patch *** Please review above details and finish the apply then *** save the changes with ./gradlew rebuildPatches

Task :applyServerPatches FAILED

FAILURE: Build failed with an exception.

* What went wrong:
  Execution failed for task ':applyServerPatches'.

io.papermc.paperweight.PaperweightException: Failed to apply patches

* Try:

Run with --stacktrace option to get the stack trace.
Run with --info or --debug option to get more log output.
Run with --scan to get full insights.

* Get more help at https://help.gradle.org

BUILD FAILED in 1m 16s 36 actionable tasks: 10 executed, 26 from cache

При применении патчей 1.18.2

@equivoke2sudo
Copy link

Patch failed at 0918 UpdateSuppression-and-ItemShadowing When you have resolved this problem, run "git am --continue". If you prefer to skip this patch, run "git am --skip" instead. To restore the original branch and stop patching, run "git am --abort". error: corrupt patch at line 94 error: could not build fake ancestor hint: Use 'git am --show-current-patch' to see the failed patch *** Please review above details and finish the apply then *** save the changes with ./gradlew rebuildPatches

Та-же ошибка

@MageGeorgiy
Copy link

Вопрос, как включить супрессор на 1.16.5 purpur?

@LIMPIX31
Copy link
Author

Вопрос, как включить супрессор на 1.16.5 purpur?

Измените код ядра Purpur как указано в патче.
На главной странице Purpur должны быть инструкции по внесению изменений

@MageGeorgiy
Copy link

Не собирается

@MageGeorgiy
Copy link

Добрые люди, пожалуйста, пропатчите purpur 1.16.5 у меня не работает :'(

@LIMPIX31
Copy link
Author

Не собирается

Тоже ошибка. Это баг Purpur скорей всего

@BoBkiNN
Copy link

BoBkiNN commented Sep 25, 2022

Можно ли как то все таки сделать на 1.19.2? Видел что на фабрике 1.19.2 работает

@LIMPIX31
Copy link
Author

LIMPIX31 commented Sep 25, 2022

Можно ли как то все таки сделать на 1.19.2? Видел что на фабрике 1.19.2 работает

Отправьте это всем кто спрашивает про Сапрессор на 1.19.2

Был смысл исправлять это когда это касалось пользователей Spigot и Paper, что создавало несправедливость, теперь это исправлено официально Mojang и единственный ваш путь, это модифицировать игру. Вы можете действовать в обратном направлении и внести противоположные изменения, что были внесены для исправления бага. Второй путь это искать новые баги, что и сделали для 1.19.2. Смотрите первое по запросу "Update Suppression 1.19".

Что касается Paper, то для них это больная тема. Подавление обновлений связано грубо говоря с серьёзной ошибкой возникающей при перегрузке. Если Paper разрешат эту ошибку, то это затронет стабильность работы сервера и вернёт дюпы, что не является целью Paper. Если они воссоздадут эту баго-механику без возникновения ошибки, это будет значить, что Paper уже не ванильное, а модифицированное ядро, что опять же не по пути для них. Если вы попробуете открыть проблему с упоминанием этой механики, то вы получите что-то вроде "Мы не работаем с этим" или ваш вопрос просто закроют. Paper - не техно ядро, это нужно понять.

Пытаясь вернуть Подавление в Paper, вы пытаетесь сесть на два стула между которыми немыслимое расстояние, один фиксит баги, другой пытается их вернуть.

Весомый фактор который наводит такое желание - это конечно BukkitAPI плагины. Но тут выбирайте либо техно ванилла, либо школопередоз плагинами

@BoBkiNN
Copy link

BoBkiNN commented Oct 6, 2022

Можно ли как то все таки сделать на 1.19.2? Видел что на фабрике 1.19.2 работает

Отправьте это всем кто спрашивает про Сапрессор на 1.19.2

Был смысл исправлять это когда это касалось пользователей Spigot и Paper, что создавало несправедливость, теперь это исправлено официально Mojang и единственный ваш путь, это модифицировать игру. Вы можете действовать в обратном направлении и внести противоположные изменения, что были внесены для исправления бага. Второй путь это искать новые баги, что и сделали для 1.19.2. Смотрите первое по запросу "Update Suppression 1.19".

Что касается Paper, то для них это больная тема. Подавление обновлений связано грубо говоря с серьёзной ошибкой возникающей при перегрузке. Если Paper разрешат эту ошибку, то это затронет стабильность работы сервера и вернёт дюпы, что не является целью Paper. Если они воссоздадут эту баго-механику без возникновения ошибки, это будет значить, что Paper уже не ванильное, а модифицированное ядро, что опять же не по пути для них. Если вы попробуете открыть проблему с упоминанием этой механики, то вы получите что-то вроде "Мы не работаем с этим" или ваш вопрос просто закроют. Paper - не техно ядро, это нужно понять.

Пытаясь вернуть Подавление в Paper, вы пытаетесь сесть на два стула между которыми немыслимое расстояние, один фиксит баги, другой пытается их вернуть.

Весомый фактор который наводит такое желание - это конечно BukkitAPI плагины. Но тут выбирайте либо техно ванилла, либо школопередоз плагинами

ясно, спасибо за ответ

@FogIOF
Copy link

FogIOF commented May 21, 2023

есть готовое ядро с патчем на 1.16.5?

@LIMPIX31
Copy link
Author

есть готовое ядро с патчем на 1.16.5?

Привет. Нет, есть только для 1.18.2

@Jaeforzs
Copy link

спасибо огромное за помощь!

@Endrik25
Copy link

Endrik25 commented Oct 19, 2023

а есть патч для 1.20.1?

@XTITAX
Copy link

XTITAX commented Jun 3, 2024

можете прислать готовое ядро с патчем на 1.18.2

@LIMPIX31
Copy link
Author

LIMPIX31 commented Jun 3, 2024

можете прислать готовое ядро с патчем на 1.18.2

https://mega.nz/file/qioUXR4a#_5A1TZGZS4-xdq3NBhhAweji3yK5BApkF67lKj2b6EM

@XTITAX
Copy link

XTITAX commented Jun 3, 2024

спасибо

@XTITAX
Copy link

XTITAX commented Jun 3, 2024

только ядро не работает

@LIMPIX31
Copy link
Author

LIMPIX31 commented Jun 3, 2024

только ядро не работает

Что конкретно означает "не работает"?

Лучше конечно самому собрать патч и билд

@BoBkiNN
Copy link

BoBkiNN commented Jun 3, 2024

Может ли кто-то сделать патч через миксины с помощью мода на сервер (миксины для Paper https://github.com/vectrix-space/ignite)?
Я сам пробовал сделать такой для версии 1.19.4, но я не до конца понял почему у меня не заработало

@XTITAX
Copy link

XTITAX commented Jun 3, 2024

я уже разобрался я пытался запустить через джаву 22 а надо было через 18

@XTITAX
Copy link

XTITAX commented Jun 3, 2024

я не могу собрать патч уже второй день стараюсь но не могу применить патчи

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment