не понимаю

Версия Minecraft
1.7.10
API
Forge
122
1
5
Неправильное оформление вопроса
В одиночном режиме работает норм, а при запуске на сервере крашит, и выдет EntityClientPlayerMP. Я не понимаю как решить это, я пробывал ставить @SideOnly(Side.CLIENT) над IMessage, и где бы могло помочь, но крашило без ошибки либо никак не влияло. Перепробывал все что мог, и без результата.1654983681852.png
1654983537296.png
 
Краш-лог
cpw.mods.fml.common.LoaderException: java.lang.NoClassDefFoundError: net/minecraft/client/entity/EntityClientPlayerMP
Краш-лог:
cpw.mods.fml.common.LoaderException: java.lang.NoClassDefFoundError: net/minecraft/client/entity/EntityClientPlayerMP

Вложения

  • 1654983454590.png
    1654983454590.png
    7.8 KB · Просмотры: 3
  • crash-2022-06-12_00.32.40-server.txt
    5.5 KB · Просмотры: 1
1654986148238.png
при таком случае вылетает и выдает
cpw.mods.fml.common.LoaderException: java.lang.NoClassDefFoundError: Testmod/weight/MessageWeight$Handler
at cpw.mods.fml.common.LoadController.transition(LoadController.java:163)
at cpw.mods.fml.common.Loader.preinitializeMods(Loader.java:559)
at cpw.mods.fml.server.FMLServerHandler.beginServerLoading(FMLServerHandler.java:88)
at cpw.mods.fml.common.FMLCommonHandler.onServerStart(FMLCommonHandler.java:314)
at net.minecraft.server.dedicated.DedicatedServer.startServer(DedicatedServer.java:120)
at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:445)
at net.minecraft.server.MinecraftServer$2.run(MinecraftServer.java:752)
Caused by: java.lang.NoClassDefFoundError: testmod/weight/MessageWeight$Handler
 
Такое себе решение проблемы. В MessageContext есть side, её нужно проверять. Можно сделать что-то подобное:
onMessage:
    override fun onMessage(packet: IPacket, ctx: MessageContext): IPacket? {
        if (ctx.side.isServer)
            packet.handleServer(ctx.serverHandler.playerEntity)
        else
            packet.handleClient(getPlayer())
        return null
    }

И напомню, что в Java можно имплементировать сразу несколько интерфейсов, поэтому ты можешь вполне свой пакет сделать и хандлером. (implements IMessage, IMessageHandler<IMessage, IMessage>)
 
поэтому ты можешь вполне свой пакет сделать и хандлером.
Лучше так не делать, чтобы не было соблазна обращаться к полям пакета через this. IDE не в курсе что пакет и обработчик являются разными экземплярами.
 
В смысле спёрт? Хендлер и пакет в 1 класс суют почти все. На гитхабе видел кучу подобной херни

Лучше так не делать, чтобы не было соблазна обращаться к полям пакета через this
Лучше так не делать, чтобы потенциальные будущие коллеги в более профессиональной разработке не кринжевали с этого, и чтобы потом не пришлось доказывать им, что ты всё-таки знаешь, что такое S в SOLID 🙃
 
Назад
Сверху