Jump to content

Recommended Posts

Posted

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

Posted

There are two readString methods, one takes an argument the other doesn't.

The no-arg one you're using is only present on the client.

This is my Forum Signature, I am currently attempting to transform it into a small guide for fixing easier issues using spoiler blocks to keep things tidy.

 

As the most common issue I feel I should put this outside the main bulk:

The only official source for Forge is https://files.minecraftforge.net, and the only site I trust for getting mods is CurseForge.

If you use any site other than these, please take a look at the StopModReposts project and install their browser extension, I would also advise running a virus scan.

 

For players asking for assistance with Forge please expand the spoiler below and read the appropriate section(s) in its/their entirety.

  Reveal hidden contents

 

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Announcements



×
×
  • Create New...

Important Information

By using this site, you agree to our Terms of Use.