Запуск сервера / клиента Minecraft Forge в Eclipse с модом Pixelmon 1.12.2-6.3.1 - PullRequest
0 голосов
/ 01 июля 2018

Я могу запустить сервер с модом Pixelmon так, как они говорят, т.е. используя кузницу Я хотел бы написать побочный мод для Pixelmon и пытаюсь запустить кузнечный сервер в Eclipse. Сервер и клиент работают нормально с моим собственным модом или без дополнительных модов, кроме тех, которые упакованы для моддинга с помощью forge, но он вылетает, когда я помещаю банку pixelmon в папку модов (см. Трассировку ниже).

Что я проверял до сих пор:

  • версия кузницы 2705 верна для Pixelmon 6.3.1
  • с использованием Java 8
  • без расширения .zip в файле jar
  • не извлек файл фляги
  • проблем с OOM нет
  • Minecraft 1.12.2 подходит для Pixelmon 6.3.1

Есть мысли о том, что я могу делать не так и могу попробовать дальше?

(из журнала аварий)

Подробное описание ошибки, пути к коду и всех известных подробностей приведено ниже:

-- System Details --
Details:
    Minecraft Version: 1.12.2
    Operating System: Mac OS X (x86_64) version 10.13.4
    Java Version: 1.8.0_101, Oracle Corporation
    Java VM Version: Java HotSpot(TM) 64-Bit Server VM (mixed mode), Oracle Corporation
    Memory: 774347184 bytes (738 MB) / 900726784 bytes (859 MB) up to 3817865216 bytes (3641 MB)
    JVM Flags: 0 total; 
    IntCache: cache: 0, tcache: 0, allocated: 0, tallocated: 0
    FML: MCP 9.42 Powered by Forge 14.23.4.2705 6 mods loaded, 6 mods active
    States: 'U' = Unloaded 'L' = Loaded 'C' = Constructed 'H' = Pre-initialized 'I' = Initialized 'J' = Post-initialized 'A' = Available 'D' = Disabled 'E' = Errored

| State | ID         | Version      | Source                              | Signature |
|:----- |:---------- |:------------ |:----------------------------------- |:--------- |
| UC    | minecraft  | 1.12.2       | minecraft.jar                       | None      |
| UC    | mcp        | 9.42         | minecraft.jar                       | None      |
| UC    | FML        | 8.0.99.99    | forgeSrc-1.12.2-14.23.4.2705.jar    | None      |
| UC    | forge      | 14.23.4.2705 | forgeSrc-1.12.2-14.23.4.2705.jar    | None      |
| UC    | examplemod | 1.0          | main                                | None      |
| U     | pixelmon   | 6.3.1        | Pixelmon-1.12.2-6.3.1-universal.jar | None      |

Loaded coremods (and transformers): 
Profiler Position: N/A (disabled)
Is Modded: Definitely; Server brand changed to 'fml,forge'
Type: Dedicated Server (map_server.txt)

Трассировка здесь:

[10:39:42] [Server thread/ERROR] [net.minecraft.server.MinecraftServer]: Encountered an unexpected exception
java.lang.NoClassDefFoundError: com/pixelmonmod/pixelmon/config/PixelmonConfig
    at com.pixelmonmod.pixelmon.storage.PixelmonStorage.<clinit>(PixelmonStorage.java:26) ~[PixelmonStorage.class:?]
    at com.pixelmonmod.pixelmon.Pixelmon.<clinit>(Pixelmon.java:121) ~[Pixelmon.class:?]
    at java.lang.Class.forName0(Native Method) ~[?:1.8.0_101]
    at java.lang.Class.forName(Class.java:348) ~[?:1.8.0_101]
    at net.minecraftforge.fml.common.FMLModContainer.constructMod(FMLModContainer.java:530) ~[forgeSrc-1.12.2-14.23.4.2705.jar:?]
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_101]
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[?:1.8.0_101]
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:1.8.0_101]
    at java.lang.reflect.Method.invoke(Method.java:498) ~[?:1.8.0_101]
    at com.google.common.eventbus.Subscriber.invokeSubscriberMethod(Subscriber.java:91) ~[guava-21.0.jar:?]
    at com.google.common.eventbus.Subscriber$SynchronizedSubscriber.invokeSubscriberMethod(Subscriber.java:150) ~[guava-21.0.jar:?]
    at com.google.common.eventbus.Subscriber$1.run(Subscriber.java:76) ~[guava-21.0.jar:?]
    at com.google.common.util.concurrent.MoreExecutors$DirectExecutor.execute(MoreExecutors.java:399) ~[guava-21.0.jar:?]
    at com.google.common.eventbus.Subscriber.dispatchEvent(Subscriber.java:71) ~[guava-21.0.jar:?]
    at com.google.common.eventbus.Dispatcher$PerThreadQueuedDispatcher.dispatch(Dispatcher.java:116) ~[guava-21.0.jar:?]
    at com.google.common.eventbus.EventBus.post(EventBus.java:217) ~[guava-21.0.jar:?]
    at net.minecraftforge.fml.common.LoadController.sendEventToModContainer(LoadController.java:218) ~[forgeSrc-1.12.2-14.23.4.2705.jar:?]
    at net.minecraftforge.fml.common.LoadController.propogateStateMessage(LoadController.java:196) ~[forgeSrc-1.12.2-14.23.4.2705.jar:?]
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_101]
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[?:1.8.0_101]
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:1.8.0_101]
    at java.lang.reflect.Method.invoke(Method.java:498) ~[?:1.8.0_101]
    at com.google.common.eventbus.Subscriber.invokeSubscriberMethod(Subscriber.java:91) ~[guava-21.0.jar:?]
    at com.google.common.eventbus.Subscriber$SynchronizedSubscriber.invokeSubscriberMethod(Subscriber.java:150) ~[guava-21.0.jar:?]
    at com.google.common.eventbus.Subscriber$1.run(Subscriber.java:76) ~[guava-21.0.jar:?]
    at com.google.common.util.concurrent.MoreExecutors$DirectExecutor.execute(MoreExecutors.java:399) ~[guava-21.0.jar:?]
    at com.google.common.eventbus.Subscriber.dispatchEvent(Subscriber.java:71) ~[guava-21.0.jar:?]
    at com.google.common.eventbus.Dispatcher$PerThreadQueuedDispatcher.dispatch(Dispatcher.java:116) ~[guava-21.0.jar:?]
    at com.google.common.eventbus.EventBus.post(EventBus.java:217) ~[guava-21.0.jar:?]
    at net.minecraftforge.fml.common.LoadController.distributeStateMessage(LoadController.java:135) ~[LoadController.class:?]
    at net.minecraftforge.fml.common.Loader.loadMods(Loader.java:593) ~[Loader.class:?]
    at net.minecraftforge.fml.server.FMLServerHandler.beginServerLoading(FMLServerHandler.java:97) ~[FMLServerHandler.class:?]
    at net.minecraftforge.fml.common.FMLCommonHandler.onServerStart(FMLCommonHandler.java:332) ~[FMLCommonHandler.class:?]
    at net.minecraft.server.dedicated.DedicatedServer.init(DedicatedServer.java:128) ~[DedicatedServer.class:?]
    at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:552) [MinecraftServer.class:?]
    at java.lang.Thread.run(Thread.java:745) [?:1.8.0_101]
Caused by: java.lang.ClassNotFoundException: com.pixelmonmod.pixelmon.config.PixelmonConfig
    at net.minecraft.launchwrapper.LaunchClassLoader.findClass(LaunchClassLoader.java:191) ~[launchwrapper-1.12.jar:?]
    at java.lang.ClassLoader.loadClass(ClassLoader.java:424) ~[?:1.8.0_101]
    at java.lang.ClassLoader.loadClass(ClassLoader.java:357) ~[?:1.8.0_101]
    ... 36 more
Caused by: java.lang.RuntimeException: java.lang.ClassNotFoundException: info.pixelmon.repack.ninja.leaping.configurate.objectmapping.ObjectMappingException
    at org.objectweb.asm.ClassWriter.getCommonSuperClass(ClassWriter.java:1728) ~[asm-debug-all-5.2.jar:5.2]
    at org.objectweb.asm.ClassWriter.getMergedType(ClassWriter.java:1698) ~[asm-debug-all-5.2.jar:5.2]
    at org.objectweb.asm.Frame.merge(Frame.java:1530) ~[asm-debug-all-5.2.jar:5.2]
    at org.objectweb.asm.Frame.merge(Frame.java:1441) ~[asm-debug-all-5.2.jar:5.2]
    at org.objectweb.asm.MethodWriter.visitMaxs(MethodWriter.java:1516) ~[asm-debug-all-5.2.jar:5.2]
    at org.objectweb.asm.commons.LocalVariablesSorter.visitMaxs(LocalVariablesSorter.java:165) ~[asm-debug-all-5.2.jar:5.2]
    at org.objectweb.asm.ClassReader.readCode(ClassReader.java:1634) ~[asm-debug-all-5.2.jar:5.2]
    at org.objectweb.asm.ClassReader.readMethod(ClassReader.java:1032) ~[asm-debug-all-5.2.jar:5.2]
    at org.objectweb.asm.ClassReader.accept(ClassReader.java:708) ~[asm-debug-all-5.2.jar:5.2]
    at org.objectweb.asm.ClassReader.accept(ClassReader.java:521) ~[asm-debug-all-5.2.jar:5.2]
    at net.minecraftforge.fml.common.asm.transformers.DeobfuscationTransformer.transform(DeobfuscationTransformer.java:51) ~[forgeSrc-1.12.2-14.23.4.2705.jar:?]
    at net.minecraft.launchwrapper.LaunchClassLoader.runTransformers(LaunchClassLoader.java:279) ~[launchwrapper-1.12.jar:?]
    at net.minecraft.launchwrapper.LaunchClassLoader.findClass(LaunchClassLoader.java:176) ~[launchwrapper-1.12.jar:?]
    at java.lang.ClassLoader.loadClass(ClassLoader.java:424) ~[?:1.8.0_101]
    at java.lang.ClassLoader.loadClass(ClassLoader.java:357) ~[?:1.8.0_101]
    ... 36 more

1 Ответ

0 голосов
/ 05 июля 2018

Это потому что мод фляги запутаны

Относительно запутанных имен

Minecraft имеет 3 уровня именования:

  1. Notch Names - это имена методов и полей, которые Minecraft использует при распространении. Часто такие вещи, как a.aa и b.cf2. Это полностью запутанное состояние
  2. Имена SRG - это имена, присвоенные методам и полям в процессе деобфускации во время выполнения, который Forge выполняет при запуске игры. Скомпилированные моды используют эти имена, так как они согласуются между собой в младших версиях
  3. MCP Names - это человекочитаемые имена, которые вы видите внутри Eclipse. Эти имена предоставляются вручную , когда кто-то выясняет, что поле или метод делает через MCP Bot на IRC. При установке среды разработки Forge с помощью MDK «текущие» сопоставления получают при запуске gradlew setup

Чтобы запустить мод в среде разработки, вам необходимо сначала деобфусцировать его, изменить имена SRG на имена MCP, чтобы он мог работать в среде разработки.

Есть несколько способов сделать это:

  1. Приобретите jar-файл "sources" у автора мода (в зависимости от прихоти автора; может быть или не быть публичным или открытым, иметь API и т. Д. И т. Д.)
  2. Используйте Code Chicken Core для выполнения deobf во время выполнения в Eclipse (может работать или не работать; обратите внимание: вам нужен jar для исходников)
  3. Использование такого инструмента, как BON2 (никогда не использовал, должен работать)
  4. используйте Gradle для деобфускации мода (должен работать всегда)

Проблема с вариантом 4 здесь заключается в том, что, хотя я знаю, что возможно , я не могу (и не смог в течение некоторого времени) найти необходимые инструкции. Вещи, которые я могу найти сейчас, опубликованные людьми, которые знают, как делать 4, предлагают делать 3.

...