Инструменты для сверки с оригинальным байткодом
struct_diff сравнивает классы по составу и показывает, каких не хватает. Но он отвечает на вопрос «того же ли набора методов», а не «тот ли код». Оба вопроса приходится задавать: прыжки и звуки шагов были сломаны именно кодом, который компилировался без ошибок и состоял из правильных методов. javap_diff сравнивает инструкции построчно, вызывая javap на обоих деревьях классификации. Наивное сравнение текста здесь бесполезно: перекомпиляция перенумеровывает constant pool, поэтому почти каждая строка отличается номером #123, хотя код совпадает. Инструмент убирает номера пула, сдвиги смещений от ldc/ldc_w и форму инструкций, после чего остаётся реальная разница. На звуке инструмент показал, что все аудио-классы совпадают с оригиналом. Остатки объясняются версией компилятора, а не правками: javac 8 собирает конкатенацию строк через StringBuilder, javac 17 через invokedynamic, а $values() у enum появился в более новых версиях. ogg_duration читает частоту дискретизации из заголовка Vorbis и число отсчётов из granule position последней страницы OggS. Отсюда видно, что файл сам по себе короче или что его просто обрывают при воспроизведении, — вопрос, который иначе приходится решать на слух. Проверено, что все 1085 ogg совпадают с индексом по SHA-1.
This commit is contained in:
@@ -1090,3 +1090,5 @@ boolean flag = this.onGround || d1 != d1 && d1 < 0.0D;
|
||||
boolean flag = this.onGround || d8 != d1 && d8 < 0.0D;
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -140,10 +140,10 @@ public final class RsxBootstrap {
|
||||
* matrices already unwound, so the overlay sets up its own projection and
|
||||
* leaves the state it did not set alone.
|
||||
*/
|
||||
public static void renderFrame(Minecraft minecraft) {
|
||||
if (loader == null || surface == null || !surface.available()) {
|
||||
return;
|
||||
}
|
||||
public static void renderFrame(Minecraft minecraft) {
|
||||
if (loader == null || surface == null || !surface.available()) {
|
||||
return;
|
||||
}
|
||||
if (frameFailed) {
|
||||
return;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user