bdf0ae866a
Проект начинается с двух вещей: клиент, который мы действительно собрали, и загрузчик, который является его частью, а не чем-то рядом. Форк - prepare-game.ps1 пересобирает клиент целиком: ванильный jar, SRG и MCP, SpecialSource, FernFlower, патчи, автофиксеры, javac. Идемпотентен. - Свой код игры лежит в src-overlay, потому что src пересоздаётся при каждой сборке и всё написанное вручную там погибает. - 116 патчей в patches/decompiler-fixes.txt. Каждый сверялся с оригинальным байткодом через javap: компиляция не ловит ошибки декомпиляции. - struct_diff.py сравнивает исходный байткод с нашей сборкой по классам, интерфейсам, суперклассам, методам и полям, и отдельно проверяет, что пропавшие классы действительно никому не нужны. Загрузчик - Собирается и тестируется без игры: build.ps1 не использует classpath вообще, поэтому SelfTest из 128 проверок проходит без запущенного форка. - Клиентский API не содержит ни одного игрового типа, реализацию даёт игра. - Политика: мод меняет то, что клиент показывает, но никогда то, что истинно в мире. Мир, предметы, игроки и сеть принадлежат серверу. - Capability приведены в соответствие с этой политикой: осталось шесть, и за каждым стоит реальная проверка. Прежние WORLD, PLAYER, NETWORK, TEXT, INPUT и COMMAND выдавались, но ничего не проверяли. - Команды модов имеют область CLIENT, SERVER или BOTH. Серверные не выполняются на клиенте никогда. - Свой jar загрузчика лежит в classpath игры и сборки форка. Инструменты - add_patch.py, чтобы каждое исправление переживало передекомпиляцию - find_self_comparisons.py, find_remove_index_bugs.py, find_callers.py - stage_run.py и fetch_missing.py для запуска клиента
39 lines
838 B
Plaintext
39 lines
838 B
Plaintext
# The fork is rebuilt from the verified vanilla jar, and everything under these
|
|
# paths is either Mojang-derived or generated from it. None of it is ours to
|
|
# publish: game-fork/src is decompiled Mojang code, game-fork/classes and
|
|
# game-fork/mappings are the remapped jar. What we wrote is in src-overlay,
|
|
# patches and scripts, and that is what belongs in this repository.
|
|
game-fork/src/
|
|
game-fork/classes/
|
|
game-fork/build/
|
|
game-fork/mappings/
|
|
game-fork/struct-diff.json
|
|
|
|
# A game directory: saves, logs, screenshots, native libraries, installed mods.
|
|
run/
|
|
|
|
# build output
|
|
build/
|
|
dist/
|
|
out/
|
|
target/
|
|
*.class
|
|
|
|
# jars are build products; the third-party ones we redistribute are un-ignored
|
|
*.jar
|
|
!rsx-client/third_party/**/*.jar
|
|
|
|
# python
|
|
__cache__/
|
|
__pycache__/
|
|
*.pyc
|
|
|
|
# editors
|
|
.idea/
|
|
.vscode/
|
|
*.iml
|
|
|
|
# os
|
|
Thumbs.db
|
|
desktop.ini
|
|
.DS_Store |