Оно не хукается...

Версия Minecraft
1.6.4
API
Forge
64
3
17
С помощью хуклибы фолкена захотел изменить тело метода knockBack в EntityLivingBase, пока просто выпилил всю логику и сделал printLn:
Java:
@Hook(returnCondition = ReturnCondition.ALWAYS)
public static void knockBack(EntityLivingBase entityLivingBase, Entity par1Entity, float paramFloat, double paramDouble1, double paramDouble2) {
    System.out.println("knockback");
}

Вот как выглядит оригинальный метод:

Java:
public void knockBack(Entity par1Entity, float par2, double par3, double par5)
{
    if (this.rand.nextDouble() >= this.getEntityAttribute(SharedMonsterAttributes.knockbackResistance).getAttributeValue())
    {
        this.isAirBorne = true;
        float f1 = MathHelper.sqrt_double(par3 * par3 + par5 * par5);
        float f2 = 0.4F;
        this.motionX /= 2.0D;
        this.motionY /= 2.0D;
        this.motionZ /= 2.0D;
        this.motionX -= par3 / (double)f1 * (double)f2;
        this.motionY += (double)f2;
        this.motionZ -= par5 / (double)f1 * (double)f2;

        if (this.motionY > 0.4000000059604645D)
        {
            this.motionY = 0.4000000059604645D;
        }
    }
}

Но ловлю краш при старте:
1752678688642.png
При этом, остальные хуки прекрасно работают
 
Краш-лог
2025-07-16 20:05:41 [INFO] [STDOUT] [DEBUG] Injecting hooks into class net.minecraft.entity.EntityLivingBase
2025-07-16 20:05:41 [SEVERE] [ForgeModLoader] Unable to launch
java.lang.reflect.InvocationTargetException
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:131)
at net.minecraft.launchwrapper.Launch.main(Launch.java:27)
Caused by: java.lang.NoClassDefFoundError: net/minecraft/entity/player/EntityPlayer
at net.minecraft.client.main.Main.main(Main.java:37)
Caused by: java.lang.NoClassDefFoundError: net/minecraft/entity/player/EntityPlayer

... 6 more
Caused by: java.lang.ClassNotFoundException: net.minecraft.entity.player.EntityPlayer
Caused by: java.lang.ClassNotFoundException: net.minecraft.entity.player.EntityPlayer

at net.minecraft.launchwrapper.LaunchClassLoader.findClass(LaunchClassLoader.java:186)
at java.lang.ClassLoader.loadClass(ClassLoader.java:419)
at java.lang.ClassLoader.loadClass(ClassLoader.java:352)
... 7 more
Caused by: java.lang.NoClassDefFoundError: net/minecraft/entity/EntityLivingBase
Caused by: java.lang.NoClassDefFoundError: net/minecraft/entity/EntityLivingBase

at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:757)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
at net.minecraft.launchwrapper.LaunchClassLoader.findClass(LaunchClassLoader.java:178)
... 9 more
Caused by: java.lang.ClassNotFoundException: net.minecraft.entity.EntityLivingBase
at net.minecraft.launchwrapper.LaunchClassLoader.findClass(LaunchClassLoader.java:186)
Caused by: java.lang.ClassNotFoundException: net.minecraft.entity.EntityLivingBase

at java.lang.ClassLoader.loadClass(ClassLoader.java:419)
at java.lang.ClassLoader.loadClass(ClassLoader.java:352)
... 13 more
Caused by: java.lang.ClassCircularityError: net/minecraft/entity/player/EntityPlayer
at java.lang.Class.forName0(Native Method)
Caused by: java.lang.ClassCircularityError: net/minecraft/entity/player/EntityPlayer

at java.lang.Class.forName(Class.java:348)
at org.objectweb.asm.ClassWriter.getCommonSuperClass(Unknown Source)
at org.objectweb.asm.ClassWriter.a(Unknown Source)
at org.objectweb.asm.Frame.a(Unknown Source)
at org.objectweb.asm.Frame.a(Unknown Source)
at org.objectweb.asm.MethodWriter.visitMaxs(Unknown Source)
at org.objectweb.asm.ClassReader.a(Unknown Source)
at org.objectweb.asm.ClassReader.b(Unknown Source)
Краш-лог:
2025-07-16 20:05:41 [INFO] [STDOUT] [DEBUG] Injecting hooks into class net.minecraft.entity.EntityLivingBase
2025-07-16 20:05:41 [SEVERE] [ForgeModLoader] Unable to launch
java.lang.reflect.InvocationTargetException
	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:131)
	at net.minecraft.launchwrapper.Launch.main(Launch.java:27)
Caused by: java.lang.NoClassDefFoundError: net/minecraft/entity/player/EntityPlayer
	at net.minecraft.client.main.Main.main(Main.java:37)
Caused by: java.lang.NoClassDefFoundError: net/minecraft/entity/player/EntityPlayer

	... 6 more
Caused by: java.lang.ClassNotFoundException: net.minecraft.entity.player.EntityPlayer
Caused by: java.lang.ClassNotFoundException: net.minecraft.entity.player.EntityPlayer

	at net.minecraft.launchwrapper.LaunchClassLoader.findClass(LaunchClassLoader.java:186)
	at java.lang.ClassLoader.loadClass(ClassLoader.java:419)
	at java.lang.ClassLoader.loadClass(ClassLoader.java:352)
	... 7 more
Caused by: java.lang.NoClassDefFoundError: net/minecraft/entity/EntityLivingBase
Caused by: java.lang.NoClassDefFoundError: net/minecraft/entity/EntityLivingBase

	at java.lang.ClassLoader.defineClass1(Native Method)
	at java.lang.ClassLoader.defineClass(ClassLoader.java:757)
	at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
	at net.minecraft.launchwrapper.LaunchClassLoader.findClass(LaunchClassLoader.java:178)
	... 9 more
Caused by: java.lang.ClassNotFoundException: net.minecraft.entity.EntityLivingBase
	at net.minecraft.launchwrapper.LaunchClassLoader.findClass(LaunchClassLoader.java:186)
Caused by: java.lang.ClassNotFoundException: net.minecraft.entity.EntityLivingBase

	at java.lang.ClassLoader.loadClass(ClassLoader.java:419)
	at java.lang.ClassLoader.loadClass(ClassLoader.java:352)
	... 13 more
Caused by: java.lang.ClassCircularityError: net/minecraft/entity/player/EntityPlayer
	at java.lang.Class.forName0(Native Method)
Caused by: java.lang.ClassCircularityError: net/minecraft/entity/player/EntityPlayer

	at java.lang.Class.forName(Class.java:348)
	at org.objectweb.asm.ClassWriter.getCommonSuperClass(Unknown Source)
	at org.objectweb.asm.ClassWriter.a(Unknown Source)
	at org.objectweb.asm.Frame.a(Unknown Source)
	at org.objectweb.asm.Frame.a(Unknown Source)
	at org.objectweb.asm.MethodWriter.visitMaxs(Unknown Source)
	at org.objectweb.asm.ClassReader.a(Unknown Source)
	at org.objectweb.asm.ClassReader.b(Unknown Source)
Короче, я вроде как разобрался. У меня шаблон с граблями под 1.6.4 и я юзаю пункт 4 (Подмена стандартных классов) из Фичи и фиксы в IntelliJ IDEA, т.е просто закинул все сорцы майна в /src/main/java
Проблема уходит когда я удаляю EntityLivingBase из исходов, как можно это исправить? Мне оч хочется сначала ванильный код править и ток потом делать хук
 
Мне оч хочется сначала ванильный код править и ток потом делать хук
Че за бред, ты ставишь всегда ретурн и по факту можешь править метод как хочешь через хук, делая тоже самое, когда правишь код майна
 
Я же по-любому всегда всегда использую это условие (always return), да?)
В любом случае - у меня много где в сорцах изменены области видимости полей и вопрос времени, когда я хукнусь в такой класс и опять словлю такой прикол
 
Назад
Сверху