- 5
- 1
- 5
Всем привет. Внезапно вчера стал у меня вываливаться с ошибкой проект, в котором я пытаюсь допилить мод, с которого был раньше сделан форк для сборки, которая мне интересна. (Сборка на 1.7.10 ИИС, конкретно мод, который допиливаю mapwriter).
Решил добавить в этот мод функционал, хранение данных(маркеры на карте) на сервере, чтобы при игре на сервере, чтобы если играет насколько игроков играло на одном сервере, могли видеть маркеры других игроков (опционально).
Так вот, т.к. этот мод (mapwriter) чисто клиентский, то для работы с сервером, необходимо, чтобы данные игрока отправлялись на сервер. Я только начинаю изучать java, поэтому чтобы не разбираться с ванильной отправкой пакетов, решил прикрутить ElegantNetworking, о котором прочитал здесь. Добавление прошло успешно, недели 2 уже потихоньку писал код, чтобы отправлялись пакеты с клиента на сервер и наоборот, посл. неск. дней, когда было время писал код, чтобы данный сохранялись в NBT на сервере. И вот вчера вечером неожиданно при запуске через idea майн при входе в мир начал вываливаться с ошибкой(java.lang.NullPointerException: Ticking memory connection). Сначала даже не понял почему начались краши, т.к. не трогал ту часть кода, но когда включил отладчик, то выявил проблему в отправке пакета с сервера на клиент. При дебаге кидает исключение, текст видно в отладчике idea
"Packet is not registered: mapwriter.server.networkPackets.ServerToClient.ServerCheckerPacket. Need to add @ElegantPacket annotation to packet class or check annotation processor availability"
Хотя аннотация в классе подключена, процессор аннотация в idea включен.
Скачал с гитхаба пример elegantnetworking Elegantnetworking Examples, запустил gradle setupdecompworkspace idea, при отправке пакета, такая же ошибка что пакет незарегистрирован.
Причем попробовал запустить через gradlew runClient, клиент запускается, но при попытке отправить пакет происходит краш с такое же ошибкой, что пакет незарегистрирован.
Решил добавить в этот мод функционал, хранение данных(маркеры на карте) на сервере, чтобы при игре на сервере, чтобы если играет насколько игроков играло на одном сервере, могли видеть маркеры других игроков (опционально).
Так вот, т.к. этот мод (mapwriter) чисто клиентский, то для работы с сервером, необходимо, чтобы данные игрока отправлялись на сервер. Я только начинаю изучать java, поэтому чтобы не разбираться с ванильной отправкой пакетов, решил прикрутить ElegantNetworking, о котором прочитал здесь. Добавление прошло успешно, недели 2 уже потихоньку писал код, чтобы отправлялись пакеты с клиента на сервер и наоборот, посл. неск. дней, когда было время писал код, чтобы данный сохранялись в NBT на сервере. И вот вчера вечером неожиданно при запуске через idea майн при входе в мир начал вываливаться с ошибкой(java.lang.NullPointerException: Ticking memory connection). Сначала даже не понял почему начались краши, т.к. не трогал ту часть кода, но когда включил отладчик, то выявил проблему в отправке пакета с сервера на клиент. При дебаге кидает исключение, текст видно в отладчике idea
"Packet is not registered: mapwriter.server.networkPackets.ServerToClient.ServerCheckerPacket. Need to add @ElegantPacket annotation to packet class or check annotation processor availability"
Хотя аннотация в классе подключена, процессор аннотация в idea включен.
Скачал с гитхаба пример elegantnetworking Elegantnetworking Examples, запустил gradle setupdecompworkspace idea, при отправке пакета, такая же ошибка что пакет незарегистрирован.
Причем попробовал запустить через gradlew runClient, клиент запускается, но при попытке отправить пакет происходит краш с такое же ошибкой, что пакет незарегистрирован.
Вход на сервер:
@SubscribeEvent
public void onEntityJoinWorld(EntityJoinWorldEvent event) {
Entity entity = event.entity;
UUID playerUUID=entity.getUniqueID();
if (!entity.worldObj.isRemote && entity instanceof EntityPlayerMP) {
//set flag, what MapWriter mod install and works on Server
new ServerCheckerPacket(true).sendToPlayer((EntityPlayerMP)event.entity);
}
}
Пакет:
package mapwriter.server.networkPackets.ServerToClient;
import hohserg.elegant.networking.api.ElegantPacket;
import hohserg.elegant.networking.api.ServerToClientPacket;
import mapwriter.Mw;
import net.minecraft.client.Minecraft;
@ElegantPacket
public class ServerCheckerPacket implements ServerToClientPacket {
final boolean mwServer;
public ServerCheckerPacket(boolean mwServerFlag) {
this.mwServer=mwServerFlag;
}
@Override
public void onReceive(Minecraft mc) {
//sets the flag that the server is installed and running server`s MapWriter
//(for save markers on server storage)
if(mc.theWorld.isRemote){
Mw.instance.isMwOnServerWorks=true;
}
}
}
- Краш-лог
-
Description: Ticking memory connection
java.lang.NullPointerException: Ticking memory connection
at cpw.mods.fml.common.network.internal.FMLProxyPacket.processPacket(FMLProxyPacket.java:110)
at net.minecraft.network.NetworkManager.processReceivedPackets(NetworkManager.java:241)
at net.minecraft.network.NetworkSystem.networkTick(NetworkSystem.java:182)
at net.minecraft.server.MinecraftServer.updateTimeLightAndEntities(MinecraftServer.java:726)
at net.minecraft.server.MinecraftServer.tick(MinecraftServer.java:614)
at net.minecraft.server.integrated.IntegratedServer.tick(IntegratedServer.java:118)
at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:485)
at net.minecraft.server.MinecraftServer$2.run(MinecraftServer.java:752)
A detailed walkthrough of the error, its code path and all known details is as follows:
---------------------------------------------------------------------------------------
-- Head --
Stacktrace:
at cpw.mods.fml.common.network.internal.FMLProxyPacket.processPacket(FMLProxyPacket.java:110)
at net.minecraft.network.NetworkManager.processReceivedPackets(NetworkManager.java:241)
-- Ticking connection --
Details:
Connection: net.minecraft.network.NetworkManager@4b6d0bfb
Stacktrace:
at net.minecraft.network.NetworkSystem.networkTick(NetworkSystem.java:182)
at net.minecraft.server.MinecraftServer.updateTimeLightAndEntities(MinecraftServer.java:726)
at net.minecraft.server.MinecraftServer.tick(MinecraftServer.java:614)
at net.minecraft.server.integrated.IntegratedServer.tick(IntegratedServer.java:118)
at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:485)
at net.minecraft.server.MinecraftServer$2.run(MinecraftServer.java:752
Краш-лог:
Description: Ticking memory connection
java.lang.NullPointerException: Ticking memory connection
at cpw.mods.fml.common.network.internal.FMLProxyPacket.processPacket(FMLProxyPacket.java:110)
at net.minecraft.network.NetworkManager.processReceivedPackets(NetworkManager.java:241)
at net.minecraft.network.NetworkSystem.networkTick(NetworkSystem.java:182)
at net.minecraft.server.MinecraftServer.updateTimeLightAndEntities(MinecraftServer.java:726)
at net.minecraft.server.MinecraftServer.tick(MinecraftServer.java:614)
at net.minecraft.server.integrated.IntegratedServer.tick(IntegratedServer.java:118)
at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:485)
at net.minecraft.server.MinecraftServer$2.run(MinecraftServer.java:752)
A detailed walkthrough of the error, its code path and all known details is as follows:
---------------------------------------------------------------------------------------
-- Head --
Stacktrace:
at cpw.mods.fml.common.network.internal.FMLProxyPacket.processPacket(FMLProxyPacket.java:110)
at net.minecraft.network.NetworkManager.processReceivedPackets(NetworkManager.java:241)
-- Ticking connection --
Details:
Connection: net.minecraft.network.NetworkManager@4b6d0bfb
Stacktrace:
at net.minecraft.network.NetworkSystem.networkTick(NetworkSystem.java:182)
at net.minecraft.server.MinecraftServer.updateTimeLightAndEntities(MinecraftServer.java:726)
at net.minecraft.server.MinecraftServer.tick(MinecraftServer.java:614)
at net.minecraft.server.integrated.IntegratedServer.tick(IntegratedServer.java:118)
at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:485)
at net.minecraft.server.MinecraftServer$2.run(MinecraftServer.java:752