Hi,
I'm creating am trying to send a packet to the dedicated server but i get this error:
[18:45:59] [Server thread/ERROR] [minecraft/MinecraftServer]: Encountered an unexpected exception
java.lang.NoSuchMethodError: 'java.lang.String net.minecraft.network.PacketBuffer.readString()'
at fr.modcraftmc.skyblock.network.PacketAddMember.<init>(PacketAddMember.java:17) ~[main/:?] {re:classloading}
at net.minecraftforge.fml.network.simple.IndexedMessageCodec.lambda$tryDecode$0(IndexedMessageCodec.java:120) ~[forge-1.15.2-31.2.36_mapped_snapshot_20200802-1.15.1-recomp.jar:?] {re:classloading}
at java.util.Optional.map(Optional.java:265) ~[?:?] {}
at net.minecraftforge.fml.network.simple.IndexedMessageCodec.tryDecode(IndexedMessageCodec.java:120) ~[forge-1.15.2-31.2.36_mapped_snapshot_20200802-1.15.1-recomp.jar:?] {re:classloading}
at net.minecraftforge.fml.network.simple.IndexedMessageCodec.consume(IndexedMessageCodec.java:162) ~[forge-1.15.2-31.2.36_mapped_snapshot_20200802-1.15.1-recomp.jar:?] {re:classloading}
at net.minecraftforge.fml.network.simple.SimpleChannel.networkEventListener(SimpleChannel.java:80) ~[forge-1.15.2-31.2.36_mapped_snapshot_20200802-1.15.1-recomp.jar:?] {re:classloading}
at net.minecraftforge.eventbus.EventBus.doCastFilter(EventBus.java:212) ~[eventbus-2.2.0-service.jar:?] {}
at net.minecraftforge.eventbus.EventBus.lambda$addListener$11(EventBus.java:204) ~[eventbus-2.2.0-service.jar:?] {}
at net.minecraftforge.eventbus.EventBus.post(EventBus.java:258) ~[eventbus-2.2.0-service.jar:?] {}
at net.minecraftforge.fml.network.NetworkInstance.dispatch(NetworkInstance.java:84) ~[?:?] {re:classloading}
at net.minecraftforge.fml.network.NetworkHooks.lambda$onCustomPayload$1(NetworkHooks.java:78) ~[?:?] {re:classloading}
at java.util.Optional.map(Optional.java:265) ~[?:?] {}
at net.minecraftforge.fml.network.NetworkHooks.onCustomPayload(NetworkHooks.java:78) ~[?:?] {re:classloading}
at net.minecraft.network.play.ServerPlayNetHandler.processCustomPayload(ServerPlayNetHandler.java:1366) ~[?:?] {re:classloading}
at net.minecraft.network.play.client.CCustomPayloadPacket.processPacket(CCustomPayloadPacket.java:51) ~[?:?] {re:classloading,pl:runtimedistcleaner:A}
at net.minecraft.network.play.client.CCustomPayloadPacket.processPacket(CCustomPayloadPacket.java:12) ~[?:?] {re:classloading,pl:runtimedistcleaner:A}
at net.minecraft.network.PacketThreadUtil.lambda$checkThreadAndEnqueue$0(PacketThreadUtil.java:19) ~[?:?] {re:classloading}
at net.minecraft.util.concurrent.TickDelayedTask.run(TickDelayedTask.java:20) ~[?:?] {re:classloading}
at net.minecraft.util.concurrent.ThreadTaskExecutor.run(ThreadTaskExecutor.java:140) ~[?:?] {re:classloading,pl:accesstransformer:B,pl:runtimedistcleaner:A}
at net.minecraft.util.concurrent.RecursiveEventLoop.run(RecursiveEventLoop.java:22) ~[?:?] {re:classloading}
at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:759) ~[?:?] {re:classloading,pl:accesstransformer:B,pl:runtimedistcleaner:A}
at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:141) ~[?:?] {re:classloading,pl:accesstransformer:B,pl:runtimedistcleaner:A}
at net.minecraft.util.concurrent.ThreadTaskExecutor.driveOne(ThreadTaskExecutor.java:110) ~[?:?] {re:classloading,pl:accesstransformer:B,pl:runtimedistcleaner:A}
at net.minecraft.server.MinecraftServer.driveOneInternal(MinecraftServer.java:742) ~[?:?] {re:classloading,pl:accesstransformer:B,pl:runtimedistcleaner:A}
at net.minecraft.server.MinecraftServer.driveOne(MinecraftServer.java:736) ~[?:?] {re:classloading,pl:accesstransformer:B,pl:runtimedistcleaner:A}
at net.minecraft.util.concurrent.ThreadTaskExecutor.driveUntil(ThreadTaskExecutor.java:123) ~[?:?] {re:classloading,pl:accesstransformer:B,pl:runtimedistcleaner:A}
at net.minecraft.server.MinecraftServer.runScheduledTasks(MinecraftServer.java:722) ~[?:?] {re:classloading,pl:accesstransformer:B,pl:runtimedistcleaner:A}
at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:666) [?:?] {re:classloading,pl:accesstransformer:B,pl:runtimedistcleaner:A}
at java.lang.Thread.run(Thread.java:834) [?:?] {}
There is my code:
PacketHandler class:
public class PacketHandler {
private static final String PROTOCOL_VERSION = "1";
public static SimpleChannel INSTANCE;
private static int Id = 0;
private static int nextId(){
return Id++;
}
public static void registerMessageS(){
INSTANCE = NetworkRegistry.newSimpleChannel(
new ResourceLocation(SkyBlock.MOD_ID, "main"),
() -> PROTOCOL_VERSION,
PROTOCOL_VERSION::equals,
PROTOCOL_VERSION::equals
);
INSTANCE.registerMessage(nextId(), PacketOpenGUI.class, PacketOpenGUI::toBytes, PacketOpenGUI::new, PacketOpenGUI::handle);
INSTANCE.registerMessage(nextId(), PacketOpenSettingsGUI.class, PacketOpenSettingsGUI::toBytes, PacketOpenSettingsGUI::new, PacketOpenSettingsGUI::handle);
INSTANCE.registerMessage(nextId(), PacketRequestSettings.class, PacketRequestSettings::toBytes, PacketRequestSettings::new, PacketRequestSettings::handle);
INSTANCE.registerMessage(nextId(), PacketAddMember.class, PacketAddMember::toBytes, PacketAddMember::new, PacketAddMember::handle);
INSTANCE.registerMessage(nextId(), PacketRemoveMember.class, PacketRemoveMember::toBytes, PacketRemoveMember::new, PacketRemoveMember::handle);
}
}
PacketAddMember class:
public class PacketAddMember {
String owner;
String newMember;
public PacketAddMember(PacketBuffer buf){
owner = buf.readString();
newMember = buf.readString();
}
public void toBytes(PacketBuffer buf){
buf.writeString(owner);
buf.writeString(newMember);
}
public PacketAddMember(String owner, String newMember){
this.owner = owner;
this.newMember = newMember;
}
public void handle(Supplier<NetworkEvent.Context> ctx){
ctx.get().enqueueWork(() -> {
Islands.addMember(owner, newMember);
});
ctx.get().setPacketHandled(true);
}
}
Bit of code of where i send the packet to the server:
private void addMember(Button button){
System.out.println("playerList.getSelected().toString() = " + playerList.getSelected().toString());
PacketHandler.INSTANCE.sendToServer(new PacketAddMember(Minecraft.getInstance().player.getDisplayName().getString().toLowerCase(), playerList.getSelected().toString()));
String newMember = playerList.getSelected().toString().toLowerCase();
memberList.set(memberList.indexOf(newMember+"=false"), newMember+"=true");
children.remove(playerList);
playerList = new PlayerList(Minecraft.getInstance(), 300, 110, 10, 100, 15);
children.add(playerList);
addMember.active = false;
removeMember.active = false;
}
The error occurs when i press the button which have for listener this method above.
Thank you for your help