[ошибка] Передача информации Мод <=> Плагин

Версия Minecraft
1.12.2
API
Forge
10
0
ссылка на туториал тут
Хочу сделать gui с кнопочками и брать информацию из плагина для него. Плагин Towny
Ознакомился с Туториалом, дополнительно прочитал про пакеты, про клиентскую и серверную стороны.
Сделал все как гайде, разве что некоторым методам static поставил в PacketHandlerClient.class(Были ошибки), больше нигде код не исправлял.
Вставляю мод и плагин в сервер и запускаю. Консоль выдает следующую ошибку
console:
[12:01:26 ERROR]: Encountered an unexpected exception
 java.lang.NoClassDefFoundError: com/niclic/tutorialMod/plugin/PacketHandlerClient
        at com.niclic.tutorialMod.Main.init(Main.java:29) ~[Main.class:1.0]
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_321]
        at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_321]
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_321]
        at java.lang.reflect.Method.invoke(Unknown Source) ~[?:1.8.0_321]
        at net.minecraftforge.fml.common.FMLModContainer.handleModStateEvent(FMLModContainer.java:632) ~[mohist.jar:?]
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_321]
        at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_321]
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_321]
        at java.lang.reflect.Method.invoke(Unknown Source) ~[?:1.8.0_321]
        at com.google.common.eventbus.Subscriber.invokeSubscriberMethod(Subscriber.java:91) ~[minecraft_server.1.12.2.jar:?]
        at com.google.common.eventbus.Subscriber$SynchronizedSubscriber.invokeSubscriberMethod(Subscriber.java:150) ~[minecraft_server.1.12.2.jar:?]
        at com.google.common.eventbus.Subscriber$1.run(Subscriber.java:76) ~[minecraft_server.1.12.2.jar:?]
        at com.google.common.util.concurrent.MoreExecutors$DirectExecutor.execute(MoreExecutors.java:399) ~[minecraft_server.1.12.2.jar:?]
        at com.google.common.eventbus.Subscriber.dispatchEvent(Subscriber.java:71) ~[minecraft_server.1.12.2.jar:?]
        at com.google.common.eventbus.Dispatcher$PerThreadQueuedDispatcher.dispatch(Dispatcher.java:116) ~[minecraft_server.1.12.2.jar:?]
        at com.google.common.eventbus.EventBus.post(EventBus.java:217) ~[minecraft_server.1.12.2.jar:?]
        at net.minecraftforge.fml.common.LoadController.sendEventToModContainer(LoadController.java:215) ~[LoadController.class:?]
        at net.minecraftforge.fml.common.LoadController.propogateStateMessage(LoadController.java:193) ~[LoadController.class:?]
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_321]
        at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_321]
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_321]
        at java.lang.reflect.Method.invoke(Unknown Source) ~[?:1.8.0_321]
        at com.google.common.eventbus.Subscriber.invokeSubscriberMethod(Subscriber.java:91) ~[minecraft_server.1.12.2.jar:?]
        at com.google.common.eventbus.Subscriber$SynchronizedSubscriber.invokeSubscriberMethod(Subscriber.java:150) ~[minecraft_server.1.12.2.jar:?]
        at com.google.common.eventbus.Subscriber$1.run(Subscriber.java:76) ~[minecraft_server.1.12.2.jar:?]
        at com.google.common.util.concurrent.MoreExecutors$DirectExecutor.execute(MoreExecutors.java:399) ~[minecraft_server.1.12.2.jar:?]
        at com.google.common.eventbus.Subscriber.dispatchEvent(Subscriber.java:71) ~[minecraft_server.1.12.2.jar:?]
        at com.google.common.eventbus.Dispatcher$PerThreadQueuedDispatcher.dispatch(Dispatcher.java:116) ~[minecraft_server.1.12.2.jar:?]
        at com.google.common.eventbus.EventBus.post(EventBus.java:217) ~[minecraft_server.1.12.2.jar:?]
        at net.minecraftforge.fml.common.LoadController.distributeStateMessage(LoadController.java:132) ~[LoadController.class:?]
        at net.minecraftforge.fml.common.Loader.initializeMods(Loader.java:766) ~[Loader.class:?]
        at net.minecraftforge.fml.server.FMLServerHandler.finishServerLoading(FMLServerHandler.java:111) ~[FMLServerHandler.class:?]
        at net.minecraftforge.fml.common.FMLCommonHandler.onServerStarted(FMLCommonHandler.java:334) ~[FMLCommonHandler.class:?]
        at net.minecraft.server.dedicated.DedicatedServer.func_71197_b(DedicatedServer.java:265) ~[nz.class:?]
        at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:590) [MinecraftServer.class:?]
        at java.lang.Thread.run(Unknown Source) [?:1.8.0_321]
Caused by: java.lang.ClassNotFoundException: com.niclic.tutorialMod.plugin.PacketHandlerClient
        at net.minecraft.launchwrapper.LaunchClassLoader.findClass(LaunchClassLoader.java:191) ~[launchwrapper-1.12.jar:?]
        at java.lang.ClassLoader.loadClass(Unknown Source) ~[?:1.8.0_321]
        at java.lang.ClassLoader.loadClass(Unknown Source) ~[?:1.8.0_321]
        ... 37 more
Caused by: net.minecraftforge.fml.common.asm.ASMTransformerWrapper$TransformerException: Exception in class transformer net.minecraftforge.fml.common.asm.transformers.SideTransformer@6635f7ca from coremod FMLCorePlugin
        at net.minecraftforge.fml.common.asm.ASMTransformerWrapper$TransformerWrapper.transform(ASMTransformerWrapper.java:264) ~[mohist.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(Unknown Source) ~[?:1.8.0_321]
        at java.lang.ClassLoader.loadClass(Unknown Source) ~[?:1.8.0_321]
        ... 37 more
Caused by: java.lang.RuntimeException: Attempted to load class com/niclic/tutorialMod/plugin/PacketHandlerClient for invalid side SERVER
        at net.minecraftforge.fml.common.asm.transformers.SideTransformer.transform(SideTransformer.java:60) ~[mohist.jar:?]
        at net.minecraftforge.fml.common.asm.ASMTransformerWrapper$TransformerWrapper.transform(ASMTransformerWrapper.java:260) ~[mohist.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(Unknown Source) ~[?:1.8.0_321]
        at java.lang.ClassLoader.loadClass(Unknown Source) ~[?:1.8.0_321]
        ... 37 more
В Main на 29 строчке в методе init > new PacketHandlerClient();
Добавил только static методам (отметил комментариями //тут)
PacketHandlerClient:
@SideOnly(Side.CLIENT)
public class PacketHandlerClient {
         //тут
    private static EnumMap<Side, FMLEmbeddedChannel> channels;

    public PacketHandlerClient() {
        this.channels = NetworkRegistry.INSTANCE.newChannel("yourschanel", new ChannelCodec());

        FMLEmbeddedChannel clientChannel = channels.get(Side.CLIENT);
        String codec = clientChannel.findChannelHandlerNameForType(ChannelCodec.class);
        clientChannel.pipeline().addAfter(codec, "yourschanel", new ChannelHandler());
    }
        //тут
    public static Packet createPacketFrom(BasePacket msg, Side side)
    {
        return channels.get(side).generatePacketFrom(msg);
    }
        //тут
    public static void sendPacketToServer(Packet packet)
    {
        channels.get(Side.CLIENT).writeOutbound(packet);

    }
        //тут и так стояло
    public static void sendPacketToServer(BasePacket packet)
    {
        Packet generatedPacket = createPacketFrom(packet, Side.SERVER);
        sendPacketToServer(generatedPacket);
    }

    private static class ChannelHandler extends SimpleChannelInboundHandler<BasePacket>
    {
        @Override
        protected void channelRead0(ChannelHandlerContext ctx, BasePacket packet) throws Exception
        {
            System.out.println("Got packet: " + packet.getClass().getSimpleName());

            try {
                PacketHandlerClient handler = new PacketHandlerClient();

                if (packet instanceof C0PacketName)

                    handler.handleC0PacketName((C0PacketName) packet);

            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    }

    private static class ChannelCodec extends FMLIndexedMessageToMessageCodec<BasePacket>
    {

        public ChannelCodec()
        {
            for (EnumPacket type : EnumPacket.values())
            {
                this.addDiscriminator(type.ordinal(), type.getPacketClass());
            }
        }

        @Override
        public void encodeInto(ChannelHandlerContext ctx,BasePacket msg, ByteBuf target) throws Exception
        {
            msg.write(target);
        }

        @Override
        public void decodeInto(ChannelHandlerContext ctx, ByteBuf source, BasePacket msg)
        {
            msg.read(source);

        }
    }

    private void handleC0PacketName(C0PacketName packet)
    {
           LogWrapper.info(packet.payload);
           Minecraft.getMinecraft().player.sendChatMessage("you lox" + packet.payload);
    }
}
 
Последнее редактирование:
1,074
72
372
Вставляю мод и плагин в сервер и запускаю.
Зачем мод на сервер, если за серверную часть отвечает плагин?
А так всё сделано, чтобы мод НЕ мог работать на сервере.
 
Сверху