Возможно, нашел ошибку:Не надо пытаться написать что-то вроде registerHookContainer(MyHooks.class.getName()). Это тоже вызовет загрузку класса с хуками раньше чем надо.
public PrimaryClassTransformer() {
this.classMetadataReader = MainHookLoader.getDeobfuscationMetadataReader();
if (instance != null) {
// переносим хуки, которые уже успели нарегистрировать
this.hooksMap.putAll(PrimaryClassTransformer.instance.getHooksMap());
PrimaryClassTransformer.instance.getHooksMap().clear();
} else {
registerHookContainer(SecondaryTransformerHook.class.getName());
}
instance = this;
}
registerHookContainer(SecondaryTransformerHook.class.getName());
она на них как бы и без тебя работает)))10 лукасов и я портану вашу хук либу на новые версии
@Hook(returnCondition = ReturnCondition.ON_TRUE)
public static void init(BlockPlanks bg) {
bg.setTickRandomly(true);
System.out.println("hjf");
}
@Hook(createMethod = true)
public static void updateTick(BlockPlanks bg, World world, BlockPos pos, IBlockState state, Random rand)
{
System.out.println("hjf");
if (!world.isRemote)
{
for(EnumFacing f : EnumFacing.HORIZONTALS) {
if(world.getBlockState(pos.offset(f)).getMaterial() == Material.WATER) {
switch(state.getValue(BlockPlanks.VARIANT)) {
case OAK:
world.setBlockState(pos, RegBlocks.ROTTING_PLANKS.getDefaultState().withProperty(RottenPlanks.VARIANT, RottenPlanks.EnumType.ROTTEN_OAK));
default:
break;
case SPRUCE:
world.setBlockState(pos, RegBlocks.ROTTING_PLANKS.getDefaultState().withProperty(RottenPlanks.VARIANT, RottenPlanks.EnumType.ROTTEN_SPRUCE));
break;
case BIRCH:
world.setBlockState(pos, RegBlocks.ROTTING_PLANKS.getDefaultState().withProperty(RottenPlanks.VARIANT, RottenPlanks.EnumType.ROTTEN_BIRCH));
break;
case JUNGLE:
world.setBlockState(pos, RegBlocks.ROTTING_PLANKS.getDefaultState().withProperty(RottenPlanks.VARIANT, RottenPlanks.EnumType.ROTTEN_JUNGLE));
break;
case ACACIA:
world.setBlockState(pos, RegBlocks.ROTTING_PLANKS.getDefaultState().withProperty(RottenPlanks.VARIANT, RottenPlanks.EnumType.ROTTEN_ACACIA));
break;
case DARK_OAK:
world.setBlockState(pos, RegBlocks.ROTTING_PLANKS.getDefaultState().withProperty(RottenPlanks.VARIANT, RottenPlanks.EnumType.ROTTEN_DARK_OAK));
break;
}
}
}
}
}
А,я то про 1.12 подумал. 1.13 ваще не версия, и не надо ниче обновлять под нее, ящетаюГде? Жаловались что на 1.13 изменили систему кормодов и хуклиба не пашет.
Потому что надо methodName="<init>"ublic static void init(BlockPlanks bg) {
В логе че пишет?создание метода не работает
Ну как мы видим портировать и не будем.А,я то про 1.12 подумал. 1.13 ваще не версия, и не надо ниче обновлять под нее, ящетаю
ТУт нет такого. таргетМетод есть.Потому что надо methodName="<init>"
[16:47:49] [Server thread/INFO] [STDOUT]: [gloomyfolken.hooklib.asm.HookLogger$SystemOutLogger:debug:20]: [DEBUG] Injecting hooks into class net.minecraftforge.common.ForgeHooks
[16:47:49] [Server thread/INFO] [STDOUT]: [gloomyfolken.hooklib.asm.HookLogger$SystemOutLogger:severe:30]: [SEVERE] A problem has occurred during transformation of class net.minecraftforge.common.ForgeHooks.
[16:47:49] [Server thread/INFO] [STDOUT]: [gloomyfolken.hooklib.asm.HookLogger$SystemOutLogger:severe:30]: [SEVERE] Attached hooks:
[16:47:49] [Server thread/INFO] [STDOUT]: [gloomyfolken.hooklib.asm.HookLogger$SystemOutLogger:severe:30]: [SEVERE] AsmHook: net.minecraftforge.common.ForgeHooks#getTotalArmorValue(Lnet/minecraft/entity/player/EntityPlayer;)I -> ru.allformine.afmuf.hooks.AFMHookContainer#getTotalArmorValue(Lnet/minecraftforge/common/ForgeHooks;Lnet/minecraft/entity/player/EntityPlayer;I)I, ReturnCondition=ALWAYS, ReturnValue=HOOK_RETURN_VALUE, InjectorFactory: gloomyfolken.hooklib.asm.HookInjectorFactory$MethodExit, CreateMethod = false
[16:47:49] [Server thread/INFO] [STDOUT]: [gloomyfolken.hooklib.asm.HookLogger$SystemOutLogger:severe:30]: [SEVERE] Stack trace:
[16:47:49] [Server thread/INFO] [STDERR]: [gloomyfolken.hooklib.asm.HookLogger$SystemOutLogger:severe:36]: java.lang.NullPointerException
[16:47:49] [Server thread/INFO] [STDERR]: [gloomyfolken.hooklib.asm.HookLogger$SystemOutLogger:severe:36]: at gloomyfolken.hooklib.minecraft.MinecraftClassTransformer$1.isTargetMethod(MinecraftClassTransformer.java:94)
[16:47:49] [Server thread/INFO] [STDERR]: [gloomyfolken.hooklib.asm.HookLogger$SystemOutLogger:severe:36]: at gloomyfolken.hooklib.asm.HookInjectorClassVisitor.visitMethod(HookInjectorClassVisitor.java:38)
[16:47:49] [Server thread/INFO] [STDERR]: [gloomyfolken.hooklib.asm.HookLogger$SystemOutLogger:severe:36]: at org.objectweb.asm.ClassReader.b(Unknown Source)
[16:47:49] [Server thread/INFO] [STDERR]: [gloomyfolken.hooklib.asm.HookLogger$SystemOutLogger:severe:36]: at org.objectweb.asm.ClassReader.accept(Unknown Source)
[16:47:49] [Server thread/INFO] [STDERR]: [gloomyfolken.hooklib.asm.HookLogger$SystemOutLogger:severe:36]: at org.objectweb.asm.ClassReader.accept(Unknown Source)
[16:47:49] [Server thread/INFO] [STDERR]: [gloomyfolken.hooklib.asm.HookLogger$SystemOutLogger:severe:36]: at gloomyfolken.hooklib.asm.HookClassTransformer.transform(HookClassTransformer.java:57)
[16:47:49] [Server thread/INFO] [STDERR]: [gloomyfolken.hooklib.asm.HookLogger$SystemOutLogger:severe:36]: at gloomyfolken.hooklib.minecraft.MinecraftClassTransformer.transform(MinecraftClassTransformer.java:81)
[16:47:49] [Server thread/INFO] [STDERR]: [gloomyfolken.hooklib.asm.HookLogger$SystemOutLogger:severe:36]: at net.minecraft.launchwrapper.LaunchClassLoader.runTransformers(LaunchClassLoader.java:279)
[16:47:49] [Server thread/INFO] [STDERR]: [gloomyfolken.hooklib.asm.HookLogger$SystemOutLogger:severe:36]: at net.minecraft.launchwrapper.LaunchClassLoader.findClass(LaunchClassLoader.java:176)
[16:47:49] [Server thread/INFO] [STDERR]: [gloomyfolken.hooklib.asm.HookLogger$SystemOutLogger:severe:36]: at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
[16:47:49] [Server thread/INFO] [STDERR]: [gloomyfolken.hooklib.asm.HookLogger$SystemOutLogger:severe:36]: at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
[16:47:49] [Server thread/INFO] [STDERR]: [gloomyfolken.hooklib.asm.HookLogger$SystemOutLogger:severe:36]: at net.minecraftforge.common.MinecraftForge.initialize(MinecraftForge.java:93)
[16:47:49] [Server thread/INFO] [STDERR]: [gloomyfolken.hooklib.asm.HookLogger$SystemOutLogger:severe:36]: at net.minecraftforge.fml.common.FMLCommonHandler.beginLoading(FMLCommonHandler.java:160)
[16:47:49] [Server thread/INFO] [STDERR]: [gloomyfolken.hooklib.asm.HookLogger$SystemOutLogger:severe:36]: at net.minecraftforge.fml.server.FMLServerHandler.<init>(FMLServerHandler.java:86)
[16:47:49] [Server thread/INFO] [STDERR]: [gloomyfolken.hooklib.asm.HookLogger$SystemOutLogger:severe:36]: at net.minecraftforge.fml.server.FMLServerHandler.<clinit>(FMLServerHandler.java:77)
[16:47:49] [Server thread/INFO] [STDERR]: [gloomyfolken.hooklib.asm.HookLogger$SystemOutLogger:severe:36]: at net.minecraftforge.fml.common.FMLCommonHandler.onServerStart(FMLCommonHandler.java:332)
[16:47:49] [Server thread/INFO] [STDERR]: [gloomyfolken.hooklib.asm.HookLogger$SystemOutLogger:severe:36]: at net.minecraft.server.dedicated.DedicatedServer.func_71197_b(DedicatedServer.java:125)
[16:47:49] [Server thread/INFO] [STDERR]: [gloomyfolken.hooklib.asm.HookLogger$SystemOutLogger:severe:36]: at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:486)
[16:47:49] [Server thread/INFO] [STDERR]: [gloomyfolken.hooklib.asm.HookLogger$SystemOutLogger:severe:36]: at java.lang.Thread.run(Thread.java:748)
[16:47:49] [Server thread/INFO] [STDOUT]: [gloomyfolken.hooklib.asm.HookLogger$SystemOutLogger:warning:25]: [WARNING] Can not find target method of hook AsmHook: net.minecraftforge.common.ForgeHooks#getTotalArmorValue(Lnet/minecraft/entity/player/EntityPlayer;)I -> ru.allformine.afmuf.hooks.AFMHookContainer#getTotalArmorValue(Lnet/minecraftforge/common/ForgeHooks;Lnet/minecraft/entity/player/EntityPlayer;I)I, ReturnCondition=ALWAYS, ReturnValue=HOOK_RETURN_VALUE, InjectorFactory: gloomyfolken.hooklib.asm.HookInjectorFactory$MethodExit, CreateMethod = false
@Hook(injectOnExit = true, returnCondition = ReturnCondition.ALWAYS)
public static int getTotalArmorValue(ForgeHooks fh, EntityPlayer player, @Hook.ReturnValue int returnValue) {
return returnValue / 2;
}
Покажи че там, в репе строчки не совпадаютat gloomyfolken.hooklib.minecraft.MinecraftClassTransformer$1.isTargetMethod(MinecraftClassTransformer.java:94)
Так и надо, никак иначе. Как?Может надо свою хуклибу в jar запихать, но как?