Как подружить Kotlin и Forge

Версия Minecraft
1.7.10
1,159
38
544
Решил я приобщиться к новомодному движению и попробовать kotlin. И появились несколько вопросов:

  1. Я узнал, что могу использовать любой язык, работающий под JVM, написав свой ILanguageAdapter. ForgeForum говорит, что это нужно для того, чтобы на желаемом языке можно было заюзать аннотацию @mod. Внимание, вопрос: Разве я не могу написать главный класс мода на Java, а потом обращаться к нему через другой язык? Насколько я знаю, в проекте можно одновременно сочетать языки Java и Kotlin.
  2. Забив на первый вопрос, я нашел ILanguageAdapter для котлина под версию игры 1.7.10, скачал его jar-ник, положил в mods, сконфигурировал build.gradle и написал вот такой мод
    Kotlin:
    package com.example.examplemod
    import cpw.mods.fml.common.Mod
    import cpw.mods.fml.common.Mod.EventHandler
    import cpw.mods.fml.common.SidedProxy
    import cpw.mods.fml.common.event.FMLInitializationEvent
    import cpw.mods.fml.common.event.FMLPostInitializationEvent
    import cpw.mods.fml.common.event.FMLPreInitializationEvent
    import org.apache.logging.log4j.LogManager
    
    /**
    * Test mod (class-style)
    */
    @Mod(modid = "examplemod", name = "Example Mod", version = "1.0", modLanguageAdapter = "io.drakon.forgelin.KotlinAdapter")
    //@Suppress("unused")
    class ExampleMod {
    
        private val log = LogManager.getLogger("examplemod/Cls")
    
    //    companion object {
    //
    //        @SidedProxy(clientSide = "com.example.examplemod.ProxyClient")
    //        var clientProxy: ProxyClient? = null
    //
    //        @SidedProxy(serverSide = "com.example.examplemod.ProxyServer")
    //        var serverProxy: ProxyServer? = null
    //
    //    }
    
        //    @Suppress("UNUSED_PARAMETER")
        @EventHandler
        fun preinit(evt: FMLPreInitializationEvent) {
            log.info("Preinit.")
        }
    
        //    @Suppress("UNUSED_PARAMETER")
        @EventHandler
        fun init(evt: FMLInitializationEvent) {
            log.info("Init.")
        }
    
        //    @Suppress("UNUSED_PARAMETER")
        @EventHandler
        fun postinit(evt: FMLPostInitializationEvent) {
            log.info("Postinit.")
        }
    
    }
    Все запускается успешно, но прокси отказываются работать (именно поэтому они закоментированы):
    Код:
    "C:\Program Files\Java\jdk1.8.0_131\bin\java" -Xincgc -Xmx1024M -Xms1024M "-javaagent:C:\Program Files\JetBrains\IntelliJ IDEA Community Edition 2017.3\lib\idea_rt.jar=64556:C:\Program Files\JetBrains\IntelliJ IDEA Community Edition 2017.3\bin" -Dfile.encoding=UTF-8 -classpath "C:\Program Files\Java\jdk1.8.0_131\jre\lib\charsets.jar;C:\Program Files\Java\jdk1.8.0_131\jre\lib\deploy.jar;C:\Program Files\Java\jdk1.8.0_131\jre\lib\ext\access-bridge-64.jar;C:\Program Files\Java\jdk1.8.0_131\jre\lib\ext\cldrdata.jar;C:\Program Files\Java\jdk1.8.0_131\jre\lib\ext\dnsns.jar;C:\Program Files\Java\jdk1.8.0_131\jre\lib\ext\jaccess.jar;C:\Program Files\Java\jdk1.8.0_131\jre\lib\ext\jfxrt.jar;C:\Program Files\Java\jdk1.8.0_131\jre\lib\ext\localedata.jar;C:\Program Files\Java\jdk1.8.0_131\jre\lib\ext\nashorn.jar;C:\Program Files\Java\jdk1.8.0_131\jre\lib\ext\sunec.jar;C:\Program Files\Java\jdk1.8.0_131\jre\lib\ext\sunjce_provider.jar;C:\Program Files\Java\jdk1.8.0_131\jre\lib\ext\sunmscapi.jar;C:\Program Files\Java\jdk1.8.0_131\jre\lib\ext\sunpkcs11.jar;C:\Program Files\Java\jdk1.8.0_131\jre\lib\ext\zipfs.jar;C:\Program Files\Java\jdk1.8.0_131\jre\lib\javaws.jar;C:\Program Files\Java\jdk1.8.0_131\jre\lib\jce.jar;C:\Program Files\Java\jdk1.8.0_131\jre\lib\jfr.jar;C:\Program Files\Java\jdk1.8.0_131\jre\lib\jfxswt.jar;C:\Program Files\Java\jdk1.8.0_131\jre\lib\jsse.jar;C:\Program Files\Java\jdk1.8.0_131\jre\lib\management-agent.jar;C:\Program Files\Java\jdk1.8.0_131\jre\lib\plugin.jar;C:\Program Files\Java\jdk1.8.0_131\jre\lib\resources.jar;C:\Program Files\Java\jdk1.8.0_131\jre\lib\rt.jar;D:\Users\rares\Downloads\LookAround\out\production\classes;D:\Users\rares\Downloads\LookAround\out\production\resources;D:\Users\rares\.gradle\caches\modules-2\files-2.1\net.java.jutils\jutils\1.0.0\e12fe1fda814bd348c1579329c86943d2cd3c6a6\jutils-1.0.0.jar;D:\Users\rares\.gradle\caches\modules-2\files-2.1\com.google.code.gson\gson\2.2.4\a60a5e993c98c864010053cb901b7eab25306568\gson-2.2.4.jar;D:\Users\rares\.gradle\caches\modules-2\files-2.1\org.apache.commons\commons-compress\1.8.1\a698750c16740fd5b3871425f4cb3bbaa87f529d\commons-compress-1.8.1.jar;D:\Users\rares\.gradle\caches\modules-2\files-2.1\org.apache.httpcomponents\httpclient\4.3.3\18f4247ff4572a074444572cee34647c43e7c9c7\httpclient-4.3.3.jar;D:\Users\rares\.gradle\caches\modules-2\files-2.1\commons-logging\commons-logging\1.1.3\f6f66e966c70a83ffbdb6f17a0919eaf7c8aca7f\commons-logging-1.1.3.jar;D:\Users\rares\.gradle\caches\modules-2\files-2.1\org.apache.httpcomponents\httpcore\4.3.2\31fbbff1ddbf98f3aa7377c94d33b0447c646b6e\httpcore-4.3.2.jar;D:\Users\rares\.gradle\caches\modules-2\files-2.1\org.scala-lang\scala-actors-migration_2.11\1.1.0\dfa8bc42b181d5b9f1a5dd147f8ae308b893eb6f\scala-actors-migration_2.11-1.1.0.jar;D:\Users\rares\.gradle\caches\modules-2\files-2.1\org.scala-lang\scala-compiler\2.11.1\56ea2e6c025e0821f28d73ca271218b8dd04926a\scala-compiler-2.11.1.jar;D:\Users\rares\.gradle\caches\modules-2\files-2.1\org.scala-lang.plugins\scala-continuations-library_2.11\1.0.2\e517c53a7e9acd6b1668c5a35eccbaa3bab9aac\scala-continuations-library_2.11-1.0.2.jar;D:\Users\rares\.gradle\caches\modules-2\files-2.1\org.scala-lang.plugins\scala-continuations-plugin_2.11.1\1.0.2\f361a3283452c57fa30c1ee69448995de23c60f7\scala-continuations-plugin_2.11.1-1.0.2.jar;D:\Users\rares\.gradle\caches\modules-2\files-2.1\org.scala-lang\scala-library\2.11.1\e11da23da3eabab9f4777b9220e60d44c1aab6a\scala-library-2.11.1.jar;D:\Users\rares\.gradle\caches\modules-2\files-2.1\org.scala-lang\scala-parser-combinators_2.11\1.0.1\f05d7345bf5a58924f2837c6c1f4d73a938e1ff0\scala-parser-combinators_2.11-1.0.1.jar;D:\Users\rares\.gradle\caches\modules-2\files-2.1\org.scala-lang\scala-reflect\2.11.1\6580347e61cc7f8e802941e7fde40fa83b8badeb\scala-reflect-2.11.1.jar;D:\Users\rares\.gradle\caches\modules-2\files-2.1\org.scala-lang\scala-swing_2.11\1.0.1\b1cdd92bd47b1e1837139c1c53020e86bb9112ae\scala-swing_2.11-1.0.1.jar;D:\Users\rares\.gradle\caches\modules-2\files-2.1\java3d\vecmath\1.3.1\a0ae4f51da409fa0c20fa0ca59e6bbc9413ae71d\vecmath-1.3.1.jar;D:\Users\rares\.gradle\caches\modules-2\files-2.1\net.sf.trove4j\trove4j\3.0.3\42ccaf4761f0dfdfa805c9e340d99a755907e2dd\trove4j-3.0.3.jar;D:\Users\rares\.gradle\caches\modules-2\files-2.1\com.ibm.icu\icu4j-core-mojang\51.2\63d216a9311cca6be337c1e458e587f99d382b84\icu4j-core-mojang-51.2.jar;D:\Users\rares\.gradle\caches\modules-2\files-2.1\com.paulscode\codecjorbis\20101023\c73b5636faf089d9f00e8732a829577de25237ee\codecjorbis-20101023.jar;D:\Users\rares\.gradle\caches\modules-2\files-2.1\com.paulscode\codecwav\20101023\12f031cfe88fef5c1dd36c563c0a3a69bd7261da\codecwav-20101023.jar;D:\Users\rares\.gradle\caches\modules-2\files-2.1\com.paulscode\libraryjavasound\20101123\5c5e304366f75f9eaa2e8cca546a1fb6109348b3\libraryjavasound-20101123.jar;D:\Users\rares\.gradle\caches\modules-2\files-2.1\com.paulscode\librarylwjglopenal\20100824\73e80d0794c39665aec3f62eee88ca91676674ef\librarylwjglopenal-20100824.jar;D:\Users\rares\.gradle\caches\modules-2\files-2.1\com.paulscode\soundsystem\20120107\419c05fe9be71f792b2d76cfc9b67f1ed0fec7f6\soundsystem-20120107.jar;D:\Users\rares\.gradle\caches\minecraft\net\minecraftforge\forge\1.7.10-10.13.4.1614-1.7.10\start;D:\Users\rares\.gradle\caches\modules-2\files-2.1\org.ow2.asm\asm-debug-all\5.0.3\f9e364ae2a66ce2a543012a4668856e84e5dab74\asm-debug-all-5.0.3.jar;D:\Users\rares\.gradle\caches\modules-2\files-2.1\com.typesafe.akka\akka-actor_2.11\2.3.3\ed62e9fc709ca0f2ff1a3220daa8b70a2870078e\akka-actor_2.11-2.3.3.jar;D:\Users\rares\.gradle\caches\modules-2\files-2.1\com.typesafe\config\1.2.1\f771f71fdae3df231bcd54d5ca2d57f0bf93f467\config-1.2.1.jar;D:\Users\rares\.gradle\caches\modules-2\files-2.1\org.scala-lang\scala-xml_2.11\1.0.2\7a80ec00aec122fba7cd4e0d4cdd87ff7e4cb6d0\scala-xml_2.11-1.0.2.jar;D:\Users\rares\.gradle\caches\modules-2\files-2.1\net.sf.jopt-simple\jopt-simple\4.5\6065cc95c661255349c1d0756657be17c29a4fd3\jopt-simple-4.5.jar;D:\Users\rares\.gradle\caches\modules-2\files-2.1\lzma\lzma\0.0.1\521616dc7487b42bef0e803bd2fa3faf668101d7\lzma-0.0.1.jar;D:\Users\rares\.gradle\caches\modules-2\files-2.1\com.mojang\realms\1.3.5\807ae355ee63583becd7ea60e76aab1532bb42e\realms-1.3.5.jar;D:\Users\rares\.gradle\caches\modules-2\files-2.1\com.mojang\authlib\1.5.16\ef1582b11fd0943d069cdcb72e99008ac209a283\authlib-1.5.16.jar;D:\Users\rares\.gradle\caches\modules-2\files-2.1\org.apache.logging.log4j\log4j-api\2.0-beta9\1dd66e68cccd907880229f9e2de1314bd13ff785\log4j-api-2.0-beta9.jar;D:\Users\rares\.gradle\caches\modules-2\files-2.1\org.apache.logging.log4j\log4j-core\2.0-beta9\678861ba1b2e1fccb594bb0ca03114bb05da9695\log4j-core-2.0-beta9.jar;D:\Users\rares\.gradle\caches\modules-2\files-2.1\org.lwjgl.lwjgl\lwjgl\2.9.1\f58c5aabcef0e41718a564be9f8e412fff8db847\lwjgl-2.9.1.jar;D:\Users\rares\.gradle\caches\modules-2\files-2.1\org.lwjgl.lwjgl\lwjgl_util\2.9.1\290d7ba8a1bd9566f5ddf16ad06f09af5ec9b20e\lwjgl_util-2.9.1.jar;D:\Users\rares\.gradle\caches\modules-2\files-2.1\tv.twitch\twitch\5.16\1f55f009c61637c10c0acfb8b5ffc600f30044b4\twitch-5.16.jar;D:\Users\rares\.gradle\caches\modules-2\files-2.1\org.scala-lang\scala-actors\2.11.0\8ccfb6541de179bb1c4d45cf414acee069b7f78b\scala-actors-2.11.0.jar;D:\Users\rares\.gradle\caches\modules-2\files-2.1\org.scala-lang.modules\scala-xml_2.11\1.0.2\820fbca7e524b530fdadc594c39d49a21ea0337e\scala-xml_2.11-1.0.2.jar;D:\Users\rares\.gradle\caches\modules-2\files-2.1\org.scala-lang.modules\scala-parser-combinators_2.11\1.0.1\f05d7345bf5a58924f2837c6c1f4d73a938e1ff0\scala-parser-combinators_2.11-1.0.1.jar;D:\Users\rares\.gradle\caches\modules-2\files-2.1\net.java.jinput\jinput-platform\2.0.5\7ff832a6eb9ab6a767f1ade2b548092d0fa64795\jinput-platform-2.0.5-natives-linux.jar;D:\Users\rares\.gradle\caches\modules-2\files-2.1\net.java.jinput\jinput-platform\2.0.5\385ee093e01f587f30ee1c8a2ee7d408fd732e16\jinput-platform-2.0.5-natives-windows.jar;D:\Users\rares\.gradle\caches\modules-2\files-2.1\net.java.jinput\jinput-platform\2.0.5\53f9c919f34d2ca9de8c51fc4e1e8282029a9232\jinput-platform-2.0.5-natives-osx.jar;D:\Users\rares\.gradle\caches\modules-2\files-2.1\tv.twitch\twitch-platform\5.16\7c6affe439099806a4f552da14c42f9d643d8b23\twitch-platform-5.16-natives-windows-32.jar;D:\Users\rares\.gradle\caches\modules-2\files-2.1\tv.twitch\twitch-platform\5.16\39d0c3d363735b4785598e0e7fbf8297c706a9f9\twitch-platform-5.16-natives-windows-64.jar;D:\Users\rares\.gradle\caches\modules-2\files-2.1\tv.twitch\twitch-platform\5.16\62503ee712766cf77f97252e5902786fd834b8c5\twitch-platform-5.16-natives-osx.jar;D:\Users\rares\.gradle\caches\modules-2\files-2.1\tv.twitch\twitch-external-platform\4.5\18215140f010c05b9f86ef6f0f8871954d2ccebf\twitch-external-platform-4.5-natives-windows-32.jar;D:\Users\rares\.gradle\caches\modules-2\files-2.1\tv.twitch\twitch-external-platform\4.5\c3cde57891b935d41b6680a9c5e1502eeab76d86\twitch-external-platform-4.5-natives-windows-64.jar;D:\Users\rares\.gradle\caches\modules-2\files-2.1\org.lwjgl.lwjgl\lwjgl-platform\2.9.1\4c517eca808522457dd95ee8fc1fbcdbb602efbe\lwjgl-platform-2.9.1-natives-windows.jar;D:\Users\rares\.gradle\caches\modules-2\files-2.1\org.lwjgl.lwjgl\lwjgl-platform\2.9.1\aa9aae879af8eb378e22cfc64db56ec2ca9a44d1\lwjgl-platform-2.9.1-natives-linux.jar;D:\Users\rares\.gradle\caches\minecraft\net\minecraftforge\forge\1.7.10-10.13.4.1614-1.7.10\forgeSrc-1.7.10-10.13.4.1614-1.7.10.jar;D:\Users\rares\.gradle\caches\modules-2\files-2.1\com.google.code.findbugs\jsr305\1.3.9\40719ea6961c0cb6afaeb6a921eaa1f6afd4cfdf\jsr305-1.3.9.jar;D:\Users\rares\.gradle\caches\modules-2\files-2.1\io.netty\netty-all\4.0.10.Final\9e50bd52ffe257a0e2cd8d971688d6ce7d174325\netty-all-4.0.10.Final.jar;D:\Users\rares\.gradle\caches\modules-2\files-2.1\com.google.guava\guava\17.0\9c6ef172e8de35fd8d4d8783e4821e57cdef7445\guava-17.0.jar;D:\Users\rares\.gradle\caches\modules-2\files-2.1\org.apache.commons\commons-lang3\3.3.2\90a3822c38ec8c996e84c16a3477ef632cbc87a3\commons-lang3-3.3.2.jar;D:\Users\rares\.gradle\caches\modules-2\files-2.1\commons-io\commons-io\2.4\b1b6ea3b7e4aa4f492509a4952029cd8e48019ad\commons-io-2.4.jar;D:\Users\rares\.gradle\caches\modules-2\files-2.1\commons-codec\commons-codec\1.9\9ce04e34240f674bc72680f8b843b1457383161a\commons-codec-1.9.jar;D:\Users\rares\.gradle\caches\modules-2\files-2.1\net.java.jinput\jinput\2.0.5\39c7796b469a600f72380316f6b1f11db6c2c7c4\jinput-2.0.5.jar;D:\Users\rares\.gradle\caches\modules-2\files-2.1\org.lwjgl.lwjgl\lwjgl-platform\2.9.1\2d12c83fdfbc04ecabf02c7bc8cc54d034f0daac\lwjgl-platform-2.9.1-natives-osx.jar;D:\Users\rares\.gradle\caches\modules-2\files-2.1\net.minecraft\launchwrapper\1.12\111e7bea9c968cdb3d06ef4632bf7ff0824d0f36\launchwrapper-1.12.jar" GradleStart
    [16:41:30] [main/INFO] [GradleStart]: Extra: []
    [16:41:30] [main/INFO] [GradleStart]: Running with arguments: [--userProperties, {}, --assetsDir, D:/Users/rares/.gradle/caches/minecraft/assets, --assetIndex, 1.7.10, --accessToken, {REDACTED}, --version, 1.7.10, --tweakClass, cpw.mods.fml.common.launcher.FMLTweaker, --tweakClass, net.minecraftforge.gradle.tweakers.CoremodTweaker]
    [16:41:31] [main/INFO] [LaunchWrapper]: Loading tweak class name cpw.mods.fml.common.launcher.FMLTweaker
    [16:41:31] [main/INFO] [LaunchWrapper]: Using primary tweak class name cpw.mods.fml.common.launcher.FMLTweaker
    [16:41:31] [main/INFO] [LaunchWrapper]: Loading tweak class name net.minecraftforge.gradle.tweakers.CoremodTweaker
    [16:41:31] [main/INFO] [LaunchWrapper]: Calling tweak class cpw.mods.fml.common.launcher.FMLTweaker
    [16:41:31] [main/INFO] [FML]: Forge Mod Loader version 7.99.40.1614 for Minecraft 1.7.10 loading
    [16:41:31] [main/INFO] [FML]: Java is Java HotSpot(TM) 64-Bit Server VM, version 1.8.0_131, running on Windows 10:amd64:10.0, installed at C:\Program Files\Java\jdk1.8.0_131\jre
    [16:41:31] [main/INFO] [FML]: Managed to load a deobfuscated Minecraft name- we are in a deobfuscated environment. Skipping runtime deobfuscation
    [16:41:31] [main/WARN] [FML]: The coremod io.drakon.forgelin.CorePlugin does not have a MCVersion annotation, it may cause issues with this version of Minecraft
    [16:41:31] [main/INFO] [LaunchWrapper]: Calling tweak class net.minecraftforge.gradle.tweakers.CoremodTweaker
    [16:41:31] [main/INFO] [GradleStart]: Injecting location in coremod cpw.mods.fml.relauncher.FMLCorePlugin
    [16:41:31] [main/INFO] [GradleStart]: Injecting location in coremod net.minecraftforge.classloading.FMLForgePlugin
    [16:41:31] [main/INFO] [GradleStart]: Injecting location in coremod io.drakon.forgelin.CorePlugin
    [16:41:31] [main/INFO] [LaunchWrapper]: Loading tweak class name cpw.mods.fml.common.launcher.FMLInjectionAndSortingTweaker
    [16:41:31] [main/INFO] [LaunchWrapper]: Loading tweak class name cpw.mods.fml.common.launcher.FMLDeobfTweaker
    [16:41:31] [main/INFO] [LaunchWrapper]: Loading tweak class name net.minecraftforge.gradle.tweakers.AccessTransformerTweaker
    [16:41:31] [main/INFO] [LaunchWrapper]: Calling tweak class cpw.mods.fml.common.launcher.FMLInjectionAndSortingTweaker
    [16:41:31] [main/INFO] [LaunchWrapper]: Calling tweak class cpw.mods.fml.common.launcher.FMLInjectionAndSortingTweaker
    [16:41:31] [main/INFO] [LaunchWrapper]: Calling tweak class cpw.mods.fml.relauncher.CoreModManager$FMLPluginWrapper
    [16:41:32] [main/ERROR] [FML]: The binary patch set is missing. Either you are in a development environment, or things are not going to work!
    [16:41:40] [main/ERROR] [FML]: FML appears to be missing any signature data. This is not a good thing
    [16:41:40] [main/INFO] [LaunchWrapper]: Calling tweak class cpw.mods.fml.relauncher.CoreModManager$FMLPluginWrapper
    [16:41:40] [main/INFO] [LaunchWrapper]: Calling tweak class cpw.mods.fml.relauncher.CoreModManager$FMLPluginWrapper
    [16:41:40] [main/INFO] [LaunchWrapper]: Calling tweak class cpw.mods.fml.common.launcher.FMLDeobfTweaker
    [16:41:42] [main/INFO] [LaunchWrapper]: Calling tweak class net.minecraftforge.gradle.tweakers.AccessTransformerTweaker
    [16:41:42] [main/INFO] [LaunchWrapper]: Loading tweak class name cpw.mods.fml.common.launcher.TerminalTweaker
    [16:41:42] [main/INFO] [LaunchWrapper]: Calling tweak class cpw.mods.fml.common.launcher.TerminalTweaker
    [16:41:42] [main/INFO] [LaunchWrapper]: Launching wrapped minecraft {net.minecraft.client.main.Main}
    [16:41:46] [main/INFO]: Setting user: Player322
    [16:41:51] [Client thread/INFO]: LWJGL Version: 2.9.1
    [16:41:55] [Client thread/INFO] [STDOUT]: [cpw.mods.fml.client.SplashProgress:start:188]: ---- Minecraft Crash Report ----
    // Daisy, daisy...
    
    Time: 22.10.18 16:41
    Description: Loading screen debug info
    
    This is just a prompt for computer specs to be printed. THIS IS NOT A ERROR
    
    
    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 10 (amd64) version 10.0
        Java Version: 1.8.0_131, Oracle Corporation
        Java VM Version: Java HotSpot(TM) 64-Bit Server VM (mixed mode), Oracle Corporation
        Memory: 994718832 bytes (948 MB) / 1038876672 bytes (990 MB) up to 1038876672 bytes (990 MB)
        JVM Flags: 3 total; -Xincgc -Xmx1024M -Xms1024M
        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:
        GL info: ' Vendor: 'NVIDIA Corporation' Version: '4.6.0 NVIDIA 388.00' Renderer: 'GeForce 610M/PCIe/SSE2'
    [16:41:55] [Client thread/INFO] [MinecraftForge]: Attempting early MinecraftForge initialization
    [16:41:55] [Client thread/INFO] [FML]: MinecraftForge v10.13.4.1614 Initialized
    [16:41:55] [Client thread/INFO] [FML]: Replaced 183 ore recipies
    [16:41:55] [Client thread/INFO] [MinecraftForge]: Completed early MinecraftForge initialization
    [16:41:56] [Client thread/INFO] [FML]: Found 0 mods from the command line. Injecting into mod discoverer
    [16:41:56] [Client thread/INFO] [FML]: Searching D:\Users\rares\Downloads\LookAround\eclipse\mods for mods
    [16:42:17] [Client thread/INFO] [FML]: Forge Mod Loader has identified 5 mods to load
    [16:42:18] [Client thread/INFO] [FML]: Attempting connection with missing mods [mcp, FML, Forge, examplemod, Forgelin] at CLIENT
    [16:42:18] [Client thread/INFO] [FML]: Attempting connection with missing mods [mcp, FML, Forge, examplemod, Forgelin] at SERVER
    [16:42:19] [Client thread/WARN] [ILanguageAdapter/Kotlin]: Hey, you, modder who owns ExampleMod - you should be using 'object' instead of 'class' on your @Mod class.
    [16:42:19] [Client thread/INFO] [com.example.examplemod.ProxyClient]: Client proxy constructed.
    [16:42:19] [Client thread/ERROR] [FML]: An error occured trying to load a proxy into {serverSide=com.example.examplemod.ProxyServer}.com.example.examplemod.ExampleMod
    java.lang.ClassNotFoundException:
        at java.lang.Class.forName0(Native Method) ~[?:1.8.0_131]
        at java.lang.Class.forName(Class.java:348) ~[?:1.8.0_131]
        at cpw.mods.fml.common.ProxyInjector.inject(ProxyInjector.java:59) [ProxyInjector.class:?]
        at cpw.mods.fml.common.FMLModContainer.constructMod(FMLModContainer.java:512) [FMLModContainer.class:?]
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_131]
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[?:1.8.0_131]
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:1.8.0_131]
        at java.lang.reflect.Method.invoke(Method.java:498) ~[?:1.8.0_131]
        at com.google.common.eventbus.EventSubscriber.handleEvent(EventSubscriber.java:74) [guava-17.0.jar:?]
        at com.google.common.eventbus.SynchronizedEventSubscriber.handleEvent(SynchronizedEventSubscriber.java:47) [guava-17.0.jar:?]
        at com.google.common.eventbus.EventBus.dispatch(EventBus.java:322) [guava-17.0.jar:?]
        at com.google.common.eventbus.EventBus.dispatchQueuedEvents(EventBus.java:304) [guava-17.0.jar:?]
        at com.google.common.eventbus.EventBus.post(EventBus.java:275) [guava-17.0.jar:?]
        at cpw.mods.fml.common.LoadController.sendEventToModContainer(LoadController.java:212) [LoadController.class:?]
        at cpw.mods.fml.common.LoadController.propogateStateMessage(LoadController.java:190) [LoadController.class:?]
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_131]
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[?:1.8.0_131]
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:1.8.0_131]
        at java.lang.reflect.Method.invoke(Method.java:498) ~[?:1.8.0_131]
        at com.google.common.eventbus.EventSubscriber.handleEvent(EventSubscriber.java:74) [guava-17.0.jar:?]
        at com.google.common.eventbus.SynchronizedEventSubscriber.handleEvent(SynchronizedEventSubscriber.java:47) [guava-17.0.jar:?]
        at com.google.common.eventbus.EventBus.dispatch(EventBus.java:322) [guava-17.0.jar:?]
        at com.google.common.eventbus.EventBus.dispatchQueuedEvents(EventBus.java:304) [guava-17.0.jar:?]
        at com.google.common.eventbus.EventBus.post(EventBus.java:275) [guava-17.0.jar:?]
        at cpw.mods.fml.common.LoadController.distributeStateMessage(LoadController.java:119) [LoadController.class:?]
        at cpw.mods.fml.common.Loader.loadMods(Loader.java:513) [Loader.class:?]
        at cpw.mods.fml.client.FMLClientHandler.beginMinecraftLoading(FMLClientHandler.java:208) [FMLClientHandler.class:?]
        at net.minecraft.client.Minecraft.startGame(Minecraft.java:522) [Minecraft.class:?]
        at net.minecraft.client.Minecraft.run(Minecraft.java:942) [Minecraft.class:?]
        at net.minecraft.client.main.Main.main(Main.java:164) [Main.class:?]
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_131]
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[?:1.8.0_131]
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:1.8.0_131]
        at java.lang.reflect.Method.invoke(Method.java:498) ~[?:1.8.0_131]
        at net.minecraft.launchwrapper.Launch.launch(Launch.java:135) [launchwrapper-1.12.jar:?]
        at net.minecraft.launchwrapper.Launch.main(Launch.java:28) [launchwrapper-1.12.jar:?]
        at net.minecraftforge.gradle.GradleStartCommon.launch(Unknown Source) [start/:?]
        at GradleStart.main(Unknown Source) [start/:?]
    [16:42:19] [Client thread/ERROR] [FML]: Fatal errors were detected during the transition from CONSTRUCTING to PREINITIALIZATION. Loading cannot continue
    [16:42:19] [Client thread/ERROR] [FML]:
        States: 'U' = Unloaded 'L' = Loaded 'C' = Constructed 'H' = Pre-initialized 'I' = Initialized 'J' = Post-initialized 'A' = Available 'D' = Disabled 'E' = Errored
        UC    mcp{9.05} [Minecraft Coder Pack] (minecraft.jar)
        UC    FML{7.10.99.99} [Forge Mod Loader] (forgeSrc-1.7.10-10.13.4.1614-1.7.10.jar)
        UC    Forge{10.13.4.1614} [Minecraft Forge] (forgeSrc-1.7.10-10.13.4.1614-1.7.10.jar)
        UE    examplemod{1.0} [Example Mod] (classes)
        UC    Forgelin{@VERSION@-@KOTLIN@} [Kotlin for Forge] (Forgelin-1.7.10-0.1.0-1.0.0-beta-2423.jar)
    [16:42:19] [Client thread/ERROR] [FML]: The following problems were captured during this phase
    [16:42:19] [Client thread/ERROR] [FML]: Caught exception from examplemod
    cpw.mods.fml.common.LoaderException: java.lang.ClassNotFoundException:
    
        at cpw.mods.fml.common.ProxyInjector.inject(ProxyInjector.java:76) ~[forgeSrc-1.7.10-10.13.4.1614-1.7.10.jar:?]
        at cpw.mods.fml.common.FMLModContainer.constructMod(FMLModContainer.java:512) ~[forgeSrc-1.7.10-10.13.4.1614-1.7.10.jar:?]
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_131]
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[?:1.8.0_131]
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:1.8.0_131]
        at java.lang.reflect.Method.invoke(Method.java:498) ~[?:1.8.0_131]
        at com.google.common.eventbus.EventSubscriber.handleEvent(EventSubscriber.java:74) ~[guava-17.0.jar:?]
        at com.google.common.eventbus.SynchronizedEventSubscriber.handleEvent(SynchronizedEventSubscriber.java:47) ~[guava-17.0.jar:?]
        at com.google.common.eventbus.EventBus.dispatch(EventBus.java:322) ~[guava-17.0.jar:?]
        at com.google.common.eventbus.EventBus.dispatchQueuedEvents(EventBus.java:304) ~[guava-17.0.jar:?]
        at com.google.common.eventbus.EventBus.post(EventBus.java:275) ~[guava-17.0.jar:?]
        at cpw.mods.fml.common.LoadController.sendEventToModContainer(LoadController.java:212) ~[forgeSrc-1.7.10-10.13.4.1614-1.7.10.jar:?]
        at cpw.mods.fml.common.LoadController.propogateStateMessage(LoadController.java:190) ~[forgeSrc-1.7.10-10.13.4.1614-1.7.10.jar:?]
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_131]
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[?:1.8.0_131]
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:1.8.0_131]
        at java.lang.reflect.Method.invoke(Method.java:498) ~[?:1.8.0_131]
        at com.google.common.eventbus.EventSubscriber.handleEvent(EventSubscriber.java:74) ~[guava-17.0.jar:?]
        at com.google.common.eventbus.SynchronizedEventSubscriber.handleEvent(SynchronizedEventSubscriber.java:47) ~[guava-17.0.jar:?]
        at com.google.common.eventbus.EventBus.dispatch(EventBus.java:322) ~[guava-17.0.jar:?]
        at com.google.common.eventbus.EventBus.dispatchQueuedEvents(EventBus.java:304) ~[guava-17.0.jar:?]
        at com.google.common.eventbus.EventBus.post(EventBus.java:275) ~[guava-17.0.jar:?]
        at cpw.mods.fml.common.LoadController.distributeStateMessage(LoadController.java:119) [LoadController.class:?]
        at cpw.mods.fml.common.Loader.loadMods(Loader.java:513) [Loader.class:?]
        at cpw.mods.fml.client.FMLClientHandler.beginMinecraftLoading(FMLClientHandler.java:208) [FMLClientHandler.class:?]
        at net.minecraft.client.Minecraft.startGame(Minecraft.java:522) [Minecraft.class:?]
        at net.minecraft.client.Minecraft.run(Minecraft.java:942) [Minecraft.class:?]
        at net.minecraft.client.main.Main.main(Main.java:164) [Main.class:?]
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_131]
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[?:1.8.0_131]
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:1.8.0_131]
        at java.lang.reflect.Method.invoke(Method.java:498) ~[?:1.8.0_131]
        at net.minecraft.launchwrapper.Launch.launch(Launch.java:135) [launchwrapper-1.12.jar:?]
        at net.minecraft.launchwrapper.Launch.main(Launch.java:28) [launchwrapper-1.12.jar:?]
        at net.minecraftforge.gradle.GradleStartCommon.launch(Unknown Source) [start/:?]
        at GradleStart.main(Unknown Source) [start/:?]
    Caused by: java.lang.ClassNotFoundException:
        at java.lang.Class.forName0(Native Method) ~[?:1.8.0_131]
        at java.lang.Class.forName(Class.java:348) ~[?:1.8.0_131]
        at cpw.mods.fml.common.ProxyInjector.inject(ProxyInjector.java:59) ~[forgeSrc-1.7.10-10.13.4.1614-1.7.10.jar:?]
        ... 35 more
    [16:42:20] [Client thread/INFO] [STDOUT]: [net.minecraft.client.Minecraft:displayCrashReport:388]: ---- Minecraft Crash Report ----
    // Surprise! Haha. Well, this is awkward.
    
    Time: 22.10.18 16:42
    Description: There was a severe problem during mod loading that has caused the game to fail
    
    cpw.mods.fml.common.LoaderException: java.lang.ClassNotFoundException:
        at cpw.mods.fml.common.ProxyInjector.inject(ProxyInjector.java:76)
        at cpw.mods.fml.common.FMLModContainer.constructMod(FMLModContainer.java:512)
        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 com.google.common.eventbus.EventSubscriber.handleEvent(EventSubscriber.java:74)
        at com.google.common.eventbus.SynchronizedEventSubscriber.handleEvent(SynchronizedEventSubscriber.java:47)
        at com.google.common.eventbus.EventBus.dispatch(EventBus.java:322)
        at com.google.common.eventbus.EventBus.dispatchQueuedEvents(EventBus.java:304)
        at com.google.common.eventbus.EventBus.post(EventBus.java:275)
        at cpw.mods.fml.common.LoadController.sendEventToModContainer(LoadController.java:212)
        at cpw.mods.fml.common.LoadController.propogateStateMessage(LoadController.java:190)
        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 com.google.common.eventbus.EventSubscriber.handleEvent(EventSubscriber.java:74)
        at com.google.common.eventbus.SynchronizedEventSubscriber.handleEvent(SynchronizedEventSubscriber.java:47)
        at com.google.common.eventbus.EventBus.dispatch(EventBus.java:322)
        at com.google.common.eventbus.EventBus.dispatchQueuedEvents(EventBus.java:304)
        at com.google.common.eventbus.EventBus.post(EventBus.java:275)
        at cpw.mods.fml.common.LoadController.distributeStateMessage(LoadController.java:119)
        at cpw.mods.fml.common.Loader.loadMods(Loader.java:513)
        at cpw.mods.fml.client.FMLClientHandler.beginMinecraftLoading(FMLClientHandler.java:208)
        at net.minecraft.client.Minecraft.startGame(Minecraft.java:522)
        at net.minecraft.client.Minecraft.run(Minecraft.java:942)
        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)
    Caused by: java.lang.ClassNotFoundException:
        at java.lang.Class.forName0(Native Method)
        at java.lang.Class.forName(Class.java:348)
        at cpw.mods.fml.common.ProxyInjector.inject(ProxyInjector.java:59)
        ... 35 more
    
    
    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 10 (amd64) version 10.0
        Java Version: 1.8.0_131, Oracle Corporation
        Java VM Version: Java HotSpot(TM) 64-Bit Server VM (mixed mode), Oracle Corporation
        Memory: 692375672 bytes (660 MB) / 1038876672 bytes (990 MB) up to 1038876672 bytes (990 MB)
        JVM Flags: 3 total; -Xincgc -Xmx1024M -Xms1024M
        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 5 mods loaded, 5 mods active
        States: 'U' = Unloaded 'L' = Loaded 'C' = Constructed 'H' = Pre-initialized 'I' = Initialized 'J' = Post-initialized 'A' = Available 'D' = Disabled 'E' = Errored
        UC    mcp{9.05} [Minecraft Coder Pack] (minecraft.jar)
        UC    FML{7.10.99.99} [Forge Mod Loader] (forgeSrc-1.7.10-10.13.4.1614-1.7.10.jar)
        UC    Forge{10.13.4.1614} [Minecraft Forge] (forgeSrc-1.7.10-10.13.4.1614-1.7.10.jar)
        UE    examplemod{1.0} [Example Mod] (classes)
        UC    Forgelin{@VERSION@-@KOTLIN@} [Kotlin for Forge] (Forgelin-1.7.10-0.1.0-1.0.0-beta-2423.jar)
        GL info: ' Vendor: 'NVIDIA Corporation' Version: '4.6.0 NVIDIA 388.00' Renderer: 'GeForce 610M/PCIe/SSE2'
    [16:42:20] [Client thread/INFO] [STDOUT]: [net.minecraft.client.Minecraft:displayCrashReport:398]: #@!@# Game crashed! Crash report saved to: #@!@# D:\Users\rares\Downloads\LookAround\eclipse\.\crash-reports\crash-2018-10-22_16.42.20-client.txt
    Java HotSpot(TM) 64-Bit Server VM warning: Using incremental CMS is deprecated and will likely be removed in a future release
    
    Process finished with exit code -1
    Что я делаю не так и как мне заставить прокси работать?
  3. Я использую gradle-2.10 и ForgeGradle:1.2. Стоит ли мне обновляться? И можно ли? Важно, что я не хочу обновлять версию самой игры.

И вот мой build.gradle на всякий пожарный. То, что не удалось заставить работать - закоменчено.
Код:
buildscript {
    //ext.kotlin_version = '1.2.71'
    //ext.kotlin_version = '0.11.91.1'
    repositories {
        mavenCentral()
        maven {
            name = "forge"
            url = "http://files.minecraftforge.net/maven"
        }
        maven {
            name = "sonatype"
            url = "https://oss.sonatype.org/content/repositories/snapshots/"
        }
    }
    dependencies {
        classpath 'net.minecraftforge.gradle:ForgeGradle:1.2-SNAPSHOT'
        classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:0.11.91.1"
        //classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
    }
}

repositories {
    mavenCentral()
}

apply plugin: 'kotlin'
apply plugin: 'forge'

version = "1.0"
group = "com.example.examplemod" // http://maven.apache.org/guides/mini/guide-naming-conventions.html
archivesBaseName = "examplemod"

minecraft {
    version = "1.7.10-10.13.4.1614-1.7.10"
    runDir = "eclipse"
}

dependencies {
    //compile "org.jetbrains.kotlin:kotlin-stdlib-jdk8:$kotlin_version"
    compile "org.jetbrains.kotlin:kotlin-stdlib-jdk8:0.11.91.1"
    // you may put jars on which you depend on in ./libs
    // or you may define them like so..
    //compile "some.group:artifact:version:classifier"
    //compile "some.group:artifact:version"

    // real examples
    //compile 'com.mod-buildcraft:buildcraft:6.0.8:dev'  // adds buildcraft to the dev env
    //compile 'com.googlecode.efficient-java-matrix-library:ejml:0.24' // adds ejml to the dev env

    // for more info...
    // http://www.gradle.org/docs/current/userguide/artifact_dependencies_tutorial.html
    // http://www.gradle.org/docs/current/userguide/dependency_management.html

}

processResources
{
    // this will ensure that this task is redone when the versions change.
    inputs.property "version", project.version
    inputs.property "mcversion", project.minecraft.version

    // replace stuff in mcmod.info, nothing else
    from(sourceSets.main.resources.srcDirs) {
        include 'mcmod.info'

        // replace version and mcversion
        expand 'version':project.version, 'mcversion':project.minecraft.version
    }

    // copy everything else, thats not the mcmod.info
    from(sourceSets.main.resources.srcDirs) {
        exclude 'mcmod.info'
    }
}

//compileKotlin {
//    kotlinOptions {
//        jvmTarget = "1.8"
//    }
//}
//compileTestKotlin {
//    kotlinOptions {
//        jvmTarget = "1.8"
//    }
//}
 

Icosider

Kotliner
Администратор
3,601
99
664
Разве я не могу написать главный класс мода на Java, а потом обращаться к нему через другой язык?
Можно, и можно сразу на котлине главный класс писать.
Стоит ли мне обновляться? И можно ли? Важно, что я не хочу обновлять версию самой игры.
Стоит до 3.5 грабли обновить. До 4 версии не обновляйся, если не хочешь парится с настройкой фордж плагина.
Помимо этого, тебе надо котлин с собой таскать(его либы) либо сразу кинуть в джарник с модом.
"@SidedProxy(clientSide = "com.example.examplemod.ProxyClient")
var clientProxy: ProxyClient? = null" убери null и сделай lateinit, так как переменная с аннотацией SidedProxy будет инициализирована во время запуска майна.
 
Последнее редактирование:

Icosider

Kotliner
Администратор
3,601
99
664
Как вы достали со своим форджелином :m_faceplam: Он для 1.12.2 может и для старых аля 1.10-1.11, но не для 1.7.10. Котлин можно использовать и без всяких псевдомодов для разработки модов и плагинов.

Вот держи, мод в котором инициализируется прокси и всё работает, так сказать базис. В скрипте к граблям добавлен шейд, т.е. при упаковке тебе автоматом загрузятся котлиновские либы в мод, можешь конечно вручную их закидывать или таскать отдельно.
 
1,159
38
544
Есть же мод forgelin, это не то?
Так я его и указал. Смотри пост внимательней.

Так есть же бекпорт!

Вот держи, мод в котором инициализируется прокси и всё работает
Царский подгон и за шейд спасибо, не хотел самому с этим париться.

UPD: Можешь мод в атаче приложить? Боюсь, что на яндекс диске она когда-нибудь удалится
 

Icosider

Kotliner
Администратор
3,601
99
664
Боюсь, что на яндекс диске она когда-нибудь удалится
Диск мой, гигов там хватает с головой, так что не удалится. Я паблик данные храню в отдельной папке.

Так есть же бекпорт!
Вообще не вижу смысла использовать форджелин когда и так всё работает без доп адаптеров и модов.

Атас!
 
1,159
38
544
Диск мой, гигов там хватает с головой
Просто боюсь, что в один момент ты перестанешь заниматься форумом и удалишь все)

Вообще не вижу смысла использовать форджелин когда и так всё работает без доп адаптеров и модов.
Да я сам не понимаю. Если подумать, то Scala, Kotlin и даже Clojure можно использовать без адаптеров. Просто напишем мод-класс на джаве и будем к нему обращаться.
 

Icosider

Kotliner
Администратор
3,601
99
664
Просто боюсь, что в один момент ты перестанешь заниматься форумом и удалишь все)
Ну я ещё не стал крутым жаба программистом и в графен не ударился, так что перестану заниматься форумом и всё удалю я ещё не скоро)))
 
476
9
39
Выложи на гитхаб и тысячи разров будут тебе благодарны, хотя опытные и так всё сделают как надо)
 
476
9
39
2,505
81
397
Вообще, я не просто так докопался. Я не уверен, что прокси у тебя вообще проинициализируется, потому что на самом деле оно находится не в главном классе, а в KotlinTest$companion. Тоже самое было бы и с инстансом мода.

А вот следующее решение точно заработает:
Kotlin:
@Mod(modid = "kt", name = "Kotlin Test", version = "1.0")
object KotlinTest {
    @JvmStatic
    @SidedProxy(clientSide = "ru.ivasik.kotlin.ClientProxy",
                serverSide = "ru.ivasik.kotlin.CommonProxy")
    lateinit var proxy: CommonProxy

    @JvmStatic
    @Mod.InstanceFactory
    fun instance() = KotlinTest
}
 
Сверху