<init> хуки, асм, трансформеры

Версия Minecraft
1.7.10
Короче мну нужно добавить класс net.minecraft.client.renderer.VertexBuffer (1.9 стандартный класс)
и сделать в классе net.minecraft.client.renderer.WorldRenderer (1.7.10 стандартный класс) extend от net.minecraft.client.renderer.VertexBuffer (1.9 стандартный класс)
по идее в трансформере это делается так:
1592731517657.png
Вот теперь возникла проблема с конструктором там по стандарту был invokespecial на java/lang/Object
вот она типо пропала при таком трансформере:
1592732338784.png
и теперь возникла новый краш (крашлог прилагается)
как решить проблему в итоге?
 
Краш-лог
---- Minecraft Crash Report ----
// Would you like a cupcake?

Time: 21.06.20 12:28
Description: Unexpected error

java.lang.VerifyError: Call to wrong <init> method
Exception Details:
Location:
net/minecraft/client/renderer/WorldRenderer.<init>(Lnet/minecraft/world/World;Ljava/util/List;IIII)V @26: invokespecial
Reason:
Type 'java/util/ArrayList' (constant pool 62) is not assignable to 'net/minecraft/client/renderer/VertexBuffer' (constant pool 54)
Bytecode:
0x0000000: 2ab7 0036 2a02 b500 382a 05bc 04b5 003a
0x0000010: 2a04 b500 3c2a bb00 3e59 b700 36b5 0040
0x0000020: 2a2b b500 422a 01b5 0044 2a2c b500 462a
0x0000030: 1506 b500 382a 11fc 19b5 0048 2a1d 1504
0x0000040: 1505 b600 4c2a 03b5 004e b1

at net.minecraft.client.Minecraft.runGameLoop(Minecraft.java:1122)
at net.minecraft.client.Minecraft.run(Minecraft.java:962)
at net.minecraft.client.main.Main.main(Main.java:164)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at net.minecraft.launchwrapper.Launch.launch(Launch.java:135)
at net.minecraft.launchwrapper.Launch.main(Launch.java:28)
at net.minecraftforge.gradle.GradleStartCommon.launch(Unknown Source)
at GradleStart.main(Unknown Source)


A detailed walkthrough of the error, its code path and all known details is as follows:
---------------------------------------------------------------------------------------

-- System Details --
Details:
Minecraft Version: 1.7.10
Operating System: Windows 7 (amd64) version 6.1
Java Version: 1.8.0_202, Oracle Corporation
Java VM Version: Java HotSpot(TM) 64-Bit Server VM (mixed mode), Oracle Corporation
Memory: 137918088 bytes (131 MB) / 857210880 bytes (817 MB) up to 1888485376 bytes (1801 MB)
JVM Flags: 0 total;
AABB Pool Size: 0 (0 bytes; 0 MB) allocated, 0 (0 bytes; 0 MB) used
IntCache: cache: 0, tcache: 0, allocated: 0, tallocated: 0
FML: MCP v9.05 FML v7.10.99.99 Minecraft Forge 10.13.4.1614 24 mods loaded, 24 mods active
States: 'U' = Unloaded 'L' = Loaded 'C' = Constructed 'H' = Pre-initialized 'I' = Initialized 'J' = Post-initialized 'A' = Available 'D' = Disabled 'E' = Errored
UCHIJA mcp{9.05} [Minecraft Coder Pack] (minecraft.jar)
UCHIJA FML{7.10.99.99} [Forge Mod Loader] (forgeSrc-1.7.10-10.13.4.1614-1.7.10.jar)
UCHIJA Forge{10.13.4.1614} [Minecraft Forge] (forgeSrc-1.7.10-10.13.4.1614-1.7.10.jar)
UCHIJA CodeChickenCore{1.0.4.29} [CodeChicken Core] (minecraft.jar)
UCHIJA APortingCore{0.1} [APortingCore] (APortingCore-0.1.jar)
UCHIJA cei{0.1} [Chunk Edge Indicator] (1.8.9-chunkedgeindicator-1.0.jar)
UCHIJA betterchat{1.3} [Better Chat] (betterchat-1.3.jar)
UCHIJA cic{1.0} [CursorIconChanger] (cic-1.8.9-1.0.jar)
UCHIJA cleaner{1.1} [Cleaner] (cleaner-1.1.jar)
UCHIJA commandbutton{1.0.0} [Command Button] (combut-1.0.0(1.8.9).jar)
UCHIJA compactchat{1.3} [Compact Chat] (CompactChat-1.3(1.8.9).jar)
UCHIJA CustomBackgrounds{1.0} [Custom Backgrounds] (CustomBackgrounds-1.0.jar)
UCHIJA customwindowtitle{1.0.0} [Custom Window Title] (CustomWindowTitle-Legacy-v1.0.0.jar)
UCHIJA Ding{MC1.9.0v2} [Ding] (Ding-MC1.9.0v2.jar)
UCHIJA extendpolyphonylimit{1.3-for1.8-1.12.2} [ExtendPolyphonyLimit] (ExtendPolyphonyLimit-1.3-for1.8-1.12.2.jar)
UCHIJA instantdrown{1.8-1.0} [InstantDrown] (InstantDrown-1.8-1.0.jar)
UCHIJA inventory_x{1.8.9-1.0.0} [Inventory X] (inventory_x-1.8.9-1.0.0.jar)
UCHIJA k4lib{1.8.9-1.0.16} [K4Lib] (k4lib-1.8.9-1.0.16-universal.jar)
UCHIJA luckyblockoectarmor{6.0} [luckyblockoectarmor] (luckyblockoectarmor-6.0.jar)
UCHIJA nbsplayer{1.1.0.1} [NBS Player] (NBS+Player+1.1.0.1+(Forge+1.8.9).jar)
UCHIJA satdisp{1.0} [Saturation Display] (satdisp-1.0.jar)
UCHIJA thickfontfix{1.0} [Thick Font Fix] (ThickFontFix-1.8.9-1.0.jar)
UCHIJA twitter{1.1} [Twitter2MC] (twitter2mc-1.9-1.1.jar)
UCHIJA zoom{1.0} [FOV Zoom] (zoom-1.0(WATTT).jar)
GL info: ' Vendor: 'NVIDIA Corporation' Version: '4.4.0' Renderer: 'GeForce GT 640/PCIe/SSE2'
Launched Version: 1.7.10
LWJGL: 2.9.1
OpenGL: GeForce GT 640/PCIe/SSE2 GL version 4.4.0, NVIDIA Corporation
GL Caps: Using GL 1.3 multitexturing.
Using framebuffer objects because OpenGL 3.0 is supported and separate blending is supported.
Anisotropic filtering is supported and maximum anisotropy is 16.
Shaders are available because OpenGL 2.1 is supported.

Is Modded: Definitely; Client brand changed to 'fml,forge'
Type: Client (map_client.txt)
Resource Packs: [1.12+ note block sounds.zip]
Current Language: Русский (Россия)
Profiler Position: N/A (disabled)
Vec3 Pool Size: 0 (0 bytes; 0 MB) allocated, 0 (0 bytes; 0 MB) used
Anisotropic Filtering: Off (1)
Краш-лог:
---- Minecraft Crash Report ----
// Would you like a cupcake?

Time: 21.06.20 12:28
Description: Unexpected error

java.lang.VerifyError: Call to wrong <init> method
Exception Details:
  Location:
    net/minecraft/client/renderer/WorldRenderer.<init>(Lnet/minecraft/world/World;Ljava/util/List;IIII)V @26: invokespecial
  Reason:
    Type 'java/util/ArrayList' (constant pool 62) is not assignable to 'net/minecraft/client/renderer/VertexBuffer' (constant pool 54)
  Bytecode:
    0x0000000: 2ab7 0036 2a02 b500 382a 05bc 04b5 003a
    0x0000010: 2a04 b500 3c2a bb00 3e59 b700 36b5 0040
    0x0000020: 2a2b b500 422a 01b5 0044 2a2c b500 462a
    0x0000030: 1506 b500 382a 11fc 19b5 0048 2a1d 1504
    0x0000040: 1505 b600 4c2a 03b5 004e b1            

	at net.minecraft.client.Minecraft.runGameLoop(Minecraft.java:1122)
	at net.minecraft.client.Minecraft.run(Minecraft.java:962)
	at net.minecraft.client.main.Main.main(Main.java:164)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:498)
	at net.minecraft.launchwrapper.Launch.launch(Launch.java:135)
	at net.minecraft.launchwrapper.Launch.main(Launch.java:28)
	at net.minecraftforge.gradle.GradleStartCommon.launch(Unknown Source)
	at GradleStart.main(Unknown Source)


A detailed walkthrough of the error, its code path and all known details is as follows:
---------------------------------------------------------------------------------------

-- System Details --
Details:
	Minecraft Version: 1.7.10
	Operating System: Windows 7 (amd64) version 6.1
	Java Version: 1.8.0_202, Oracle Corporation
	Java VM Version: Java HotSpot(TM) 64-Bit Server VM (mixed mode), Oracle Corporation
	Memory: 137918088 bytes (131 MB) / 857210880 bytes (817 MB) up to 1888485376 bytes (1801 MB)
	JVM Flags: 0 total; 
	AABB Pool Size: 0 (0 bytes; 0 MB) allocated, 0 (0 bytes; 0 MB) used
	IntCache: cache: 0, tcache: 0, allocated: 0, tallocated: 0
	FML: MCP v9.05 FML v7.10.99.99 Minecraft Forge 10.13.4.1614 24 mods loaded, 24 mods active
	States: 'U' = Unloaded 'L' = Loaded 'C' = Constructed 'H' = Pre-initialized 'I' = Initialized 'J' = Post-initialized 'A' = Available 'D' = Disabled 'E' = Errored
	UCHIJA	mcp{9.05} [Minecraft Coder Pack] (minecraft.jar) 
	UCHIJA	FML{7.10.99.99} [Forge Mod Loader] (forgeSrc-1.7.10-10.13.4.1614-1.7.10.jar) 
	UCHIJA	Forge{10.13.4.1614} [Minecraft Forge] (forgeSrc-1.7.10-10.13.4.1614-1.7.10.jar) 
	UCHIJA	CodeChickenCore{1.0.4.29} [CodeChicken Core] (minecraft.jar) 
	UCHIJA	APortingCore{0.1} [APortingCore] (APortingCore-0.1.jar) 
	UCHIJA	cei{0.1} [Chunk Edge Indicator] (1.8.9-chunkedgeindicator-1.0.jar) 
	UCHIJA	betterchat{1.3} [Better Chat] (betterchat-1.3.jar) 
	UCHIJA	cic{1.0} [CursorIconChanger] (cic-1.8.9-1.0.jar) 
	UCHIJA	cleaner{1.1} [Cleaner] (cleaner-1.1.jar) 
	UCHIJA	commandbutton{1.0.0} [Command Button] (combut-1.0.0(1.8.9).jar) 
	UCHIJA	compactchat{1.3} [Compact Chat] (CompactChat-1.3(1.8.9).jar) 
	UCHIJA	CustomBackgrounds{1.0} [Custom Backgrounds] (CustomBackgrounds-1.0.jar) 
	UCHIJA	customwindowtitle{1.0.0} [Custom Window Title] (CustomWindowTitle-Legacy-v1.0.0.jar) 
	UCHIJA	Ding{MC1.9.0v2} [Ding] (Ding-MC1.9.0v2.jar) 
	UCHIJA	extendpolyphonylimit{1.3-for1.8-1.12.2} [ExtendPolyphonyLimit] (ExtendPolyphonyLimit-1.3-for1.8-1.12.2.jar) 
	UCHIJA	instantdrown{1.8-1.0} [InstantDrown] (InstantDrown-1.8-1.0.jar) 
	UCHIJA	inventory_x{1.8.9-1.0.0} [Inventory X] (inventory_x-1.8.9-1.0.0.jar) 
	UCHIJA	k4lib{1.8.9-1.0.16} [K4Lib] (k4lib-1.8.9-1.0.16-universal.jar) 
	UCHIJA	luckyblockoectarmor{6.0} [luckyblockoectarmor] (luckyblockoectarmor-6.0.jar) 
	UCHIJA	nbsplayer{1.1.0.1} [NBS Player] (NBS+Player+1.1.0.1+(Forge+1.8.9).jar) 
	UCHIJA	satdisp{1.0} [Saturation Display] (satdisp-1.0.jar) 
	UCHIJA	thickfontfix{1.0} [Thick Font Fix] (ThickFontFix-1.8.9-1.0.jar) 
	UCHIJA	twitter{1.1} [Twitter2MC] (twitter2mc-1.9-1.1.jar) 
	UCHIJA	zoom{1.0} [FOV Zoom] (zoom-1.0(WATTT).jar) 
	GL info: ' Vendor: 'NVIDIA Corporation' Version: '4.4.0' Renderer: 'GeForce GT 640/PCIe/SSE2'
	Launched Version: 1.7.10
	LWJGL: 2.9.1
	OpenGL: GeForce GT 640/PCIe/SSE2 GL version 4.4.0, NVIDIA Corporation
	GL Caps: Using GL 1.3 multitexturing.
Using framebuffer objects because OpenGL 3.0 is supported and separate blending is supported.
Anisotropic filtering is supported and maximum anisotropy is 16.
Shaders are available because OpenGL 2.1 is supported.

	Is Modded: Definitely; Client brand changed to 'fml,forge'
	Type: Client (map_client.txt)
	Resource Packs: [1.12+ note block sounds.zip]
	Current Language: Русский (Россия)
	Profiler Position: N/A (disabled)
	Vec3 Pool Size: 0 (0 bytes; 0 MB) allocated, 0 (0 bytes; 0 MB) used
	Anisotropic Filtering: Off (1)
я пишу мод для портирования модов с новых версий на старую
и там произошел конфуз в том плане что на 1.8.9 net.minecraft.client.renderer.WorldRenderer это тоже что и на 1.9 net.minecraft.client.renderer.VertexBuffer
а в 1.7.10 net.minecraft.client.renderer.WorldRenderer - вообще не то но при этом находится там где нужно
воот
 

tox1cozZ

aka Agravaine
8,455
598
2,892
я пишу мод для портирования модов с новых версий на старую
Не получится. Там слишком много изменилось между 1.7 и 1.8.
Если тяжело в АСМ - попробуй миксины(Миксины. Простое изменение байт-кода. Хуклиба на максималках.). Еще можно попробовать Javassist(Введение в Javassist).
 
Не получится. Там слишком много изменилось между 1.7 и 1.8.
ну от части моды у меня уже запускаются остается поправить ероры тип в данном случае мне нужна инфа
как работают наследники в АСМ
 
Возможно придется потом убрать, ибо компил может сломаться
короче проблема была в том что я тупень в <init> в каждом MethodInsnNode менял owner-а, а должен был только в начале метода, тему можно закрыть
 
Сверху