Как обновлять отображение переменных в GUI?

Версия Minecraft
1.16.5
API
Forge
76
3
5
Не могу нормально обновлять переменные в гуишке, пытался сделать так, но работает коряво, обновляет каждое 2 нажатие, как можно сделать по другому?
Java:
Minecraft.getInstance().setScreen(new UpgradeStatsGui(new TranslationTextComponent(StalinRpg.MOD_ID + ".stats_hub_upgrade")));

Сам гуи
Java:
public static void addToStr(PlayerEntity playerIn) {
        IBaseExperienceCapability expCap = IGenericCapability.getUnwrappedCapability(playerIn,
                PlayerExperienceCapabilityProvider.LEVEL_CAP);
        float currentPoints = expCap.getPoints();
        if (!(currentPoints <= 0)) {
//            Minecraft.getInstance().setScreen(new UpgradeStatsGui(new TranslationTextComponent(StalinRpg.MOD_ID + ".stats_hub_upgrade")));
            float maxHp = playerIn.getMaxHealth();
            UUID uuid = playerIn.getUUID();
            Networking.INSTANCE.sendToServer(new SendPackAddStrength(maxHp, 1, uuid));
        }
    }

    @Override
    protected void init() {
        buttons.clear();
        buttons.add(addStrength = new ImageButton(this.width / 2 - 70, 89, 9, 9, 0, 0, 0, BUTTON_ADD_STATS, (button) -> {
            addToStr(player);
        }));
        this.addButton(addStrength);

        super.init();
    }

    @Override
    public void render(@Nonnull MatrixStack matrixStack, int mouseX, int mouseY, float partialTicks) {
        this.renderBackground(matrixStack);
        RenderSystem.color4f(1.0F, 1.0F, 1.0F, 1.0F);
        this.minecraft.getTextureManager().bind(STATS_HUB_UPGRADE);
        int textureWidth = 256;
        int textureHeight = 156;
        blit(matrixStack, this.width / 2 - 130, 10, 0, 0, textureWidth, textureHeight);
        this.addStrength.render(matrixStack, mouseX, mouseY, partialTicks);
        fr.draw(matrixStack, current_strength, this.width / 2 - 115, 90, 0xd50000);
        fr.draw(matrixStack, current_points, this.width / 2 - 79.5F, 33   , 0xd50000);
        fr.draw(matrixStack, current_betterPoints, this.width / 2 + 79.5F, 33, 0xd50000);
        super.render(matrixStack, mouseX, mouseY, partialTicks);
    }
 
76
3
5
Приходит ли пакет с сервера на обновление гуишки?
Нет, я не думал, что нужно отправлять пакет клиенту

Отправка пакета клиенту делаться так?
Java:
 Networking.INSTANCE.send(PacketDistributor.PLAYER.with(() -> (ServerPlayerEntity) playerIn), new SendPack("From Server"));
 
1,371
112
241
Нет, я не думал, что нужно отправлять пакет клиенту
Пакет - односторонняя вещь. Он не волна, он скорее некий луч (если не понял о чём я: посмотри как ведёт себя вода при столкновении с объектами, и как ведёт себя, например, лазерный луч)
Отправка пакета клиенту делаться так?
Почти. Глянь как это у меня происходит (я там открываю свою гуишку, но в принципе, можно и отправлять данные).
 
1,371
112
241
Хмммм, звучит как-то противоречиво хддд
Я имел в виду, что пакет идёт чётка к одному месту, а обратно его нужно уже пинать. Во всяком случае, те рассуждения выше были несколько некорректны с точки зрения выражений, но смысл, вроде как, понятен.
 
76
3
5
Мне данные отправлять не нужно, мне нужно что бы значения в самой гуишке обновлялись после нажатия на кнопку, так что я попробовал сделать так, но краш.
UpdateGuiScreen:
public class UpdateGuiScreen {
    public void handler(Supplier<NetworkEvent.ClientCustomPayloadEvent.Context> ctx) {
        ctx.get().enqueueWork(() -> openScreen());
        ctx.get().setPacketHandled(true);
    }
    @OnlyIn(Dist.CLIENT)
    public static void openScreen() {
        Minecraft.getInstance().setScreen(new UpgradeStatsGui(new TranslationTextComponent(StalinRpg.MOD_ID + ".stats_hub_upgrade")));
    }
}
Networking:
public class Networking {
    public static SimpleChannel INSTANCE;
    public static final String VERSION = "1.0";
    private static int ID = 0;

    public static int nextID() {
        return ID++;
    }

    public static void registerMessage() {
        INSTANCE = NetworkRegistry.newSimpleChannel(
                new ResourceLocation(StalinRpg.MOD_ID, "first_networking"),
                () -> VERSION,
                (version) -> version.equals(VERSION),
                (version) -> version.equals(VERSION)
        );
        INSTANCE.messageBuilder(SendPackAddStrength.class, nextID())
                .encoder(SendPackAddStrength::toBytes)
                .decoder(SendPackAddStrength::new)
                .consumer(SendPackAddStrength::handler)
                .consumer(SendPackAddStrength::addStrengthHandler)
                .add();
        INSTANCE.messageBuilder(UpdateGuiScreen.class, nextID())
                .consumer(UpdateGuiScreen::handler)
                .add();
    }
}

Сначала вставил в саму кнопку
Java:
public static void addToStr(PlayerEntity playerIn) {
        IBaseExperienceCapability expCap = IGenericCapability.getUnwrappedCapability(playerIn,
                PlayerExperienceCapabilityProvider.LEVEL_CAP);
        float currentPoints = expCap.getPoints();
        if (currentPoints > 0) {
            float maxHp = playerIn.getMaxHealth();
            UUID uuid = playerIn.getUUID();
            Networking.INSTANCE.sendToServer(new SendPackAddStrength(maxHp, 1, uuid));
//            Networking.INSTANCE.sendTo(new UpdateGuiScreen(), ((ServerPlayerEntity) playerIn).connection.connection, NetworkDirection.PLAY_TO_CLIENT);
        }
    }
Но так крашит
Java:
---- Minecraft Crash Report ----
// Hi. I'm Minecraft, and I'm a crashaholic.

Time: 16.12.22 11:52
Description: mouseClicked event handler

java.lang.ClassCastException: net.minecraft.client.entity.player.ClientPlayerEntity cannot be cast to net.minecraft.entity.player.ServerPlayerEntity
    at net.stalin.stalinrpg.client.gui.guiscreens.UpgradeStatsGui.lambda$addToStr$0(UpgradeStatsGui.java:61) ~[main/:?] {re:classloading}
    at net.minecraftforge.fml.network.PacketDistributor.lambda$playerConsumer$1(PacketDistributor.java:217) ~[forge-1.16.5-36.2.34_mapped_official_1.16.5-recomp.jar:?] {re:classloading}
    at net.minecraftforge.fml.network.PacketDistributor$PacketTarget.send(PacketDistributor.java:179) ~[forge-1.16.5-36.2.34_mapped_official_1.16.5-recomp.jar:?] {re:classloading}
    at net.minecraftforge.fml.network.simple.SimpleChannel.send(SimpleChannel.java:124) ~[forge-1.16.5-36.2.34_mapped_official_1.16.5-recomp.jar:?] {re:classloading}
    at net.stalin.stalinrpg.client.gui.guiscreens.UpgradeStatsGui.addToStr(UpgradeStatsGui.java:61) ~[main/:?] {re:classloading}
    at net.stalin.stalinrpg.client.gui.guiscreens.UpgradeStatsGui.lambda$init$1(UpgradeStatsGui.java:69) ~[main/:?] {re:classloading}
    at net.minecraft.client.gui.widget.button.Button.onPress(Button.java:26) ~[forge-1.16.5-36.2.34_mapped_official_1.16.5-recomp.jar:?] {re:classloading,pl:runtimedistcleaner:A}
    at net.minecraft.client.gui.widget.button.AbstractButton.onClick(AbstractButton.java:18) ~[forge-1.16.5-36.2.34_mapped_official_1.16.5-recomp.jar:?] {re:classloading,pl:runtimedistcleaner:A}
    at net.minecraft.client.gui.widget.Widget.mouseClicked(Widget.java:136) ~[forge-1.16.5-36.2.34_mapped_official_1.16.5-recomp.jar:?] {re:classloading,pl:runtimedistcleaner:A}
    at net.minecraft.client.gui.INestedGuiEventHandler.mouseClicked(INestedGuiEventHandler.java:28) ~[forge-1.16.5-36.2.34_mapped_official_1.16.5-recomp.jar:?] {re:classloading,pl:runtimedistcleaner:A}
    at net.minecraft.client.MouseHelper.lambda$onPress$0(MouseHelper.java:87) ~[forge-1.16.5-36.2.34_mapped_official_1.16.5-recomp.jar:?] {re:classloading,pl:runtimedistcleaner:A}
    at net.minecraft.client.gui.screen.Screen.wrapScreenError(Screen.java:427) ~[forge-1.16.5-36.2.34_mapped_official_1.16.5-recomp.jar:?] {re:classloading,pl:runtimedistcleaner:A}
    at net.minecraft.client.MouseHelper.onPress(MouseHelper.java:85) ~[forge-1.16.5-36.2.34_mapped_official_1.16.5-recomp.jar:?] {re:classloading,pl:runtimedistcleaner:A}
    at net.minecraft.client.MouseHelper.lambda$null$4(MouseHelper.java:181) ~[forge-1.16.5-36.2.34_mapped_official_1.16.5-recomp.jar:?] {re:classloading,pl:runtimedistcleaner:A}
    at net.minecraft.util.concurrent.ThreadTaskExecutor.execute(ThreadTaskExecutor.java:86) ~[forge-1.16.5-36.2.34_mapped_official_1.16.5-recomp.jar:?] {re:classloading,pl:accesstransformer:B}
    at net.minecraft.client.MouseHelper.lambda$setup$5(MouseHelper.java:180) ~[forge-1.16.5-36.2.34_mapped_official_1.16.5-recomp.jar:?] {re:classloading,pl:runtimedistcleaner:A}
    at org.lwjgl.glfw.GLFWMouseButtonCallbackI.callback(GLFWMouseButtonCallbackI.java:36) ~[lwjgl-glfw-3.2.2.jar:build 10] {}
    at org.lwjgl.system.JNI.invokeV(Native Method) ~[lwjgl-3.2.2.jar:build 10] {}
    at org.lwjgl.glfw.GLFW.glfwPollEvents(GLFW.java:3101) ~[lwjgl-glfw-3.2.2.jar:build 10] {}
    at com.mojang.blaze3d.systems.RenderSystem.flipFrame(RenderSystem.java:89) ~[forge-1.16.5-36.2.34_mapped_official_1.16.5-recomp.jar:?] {re:classloading,pl:runtimedistcleaner:A}
    at net.minecraft.client.MainWindow.updateDisplay(MainWindow.java:306) ~[forge-1.16.5-36.2.34_mapped_official_1.16.5-recomp.jar:?] {re:classloading,pl:runtimedistcleaner:A}
    at net.minecraft.client.Minecraft.runTick(Minecraft.java:997) ~[forge-1.16.5-36.2.34_mapped_official_1.16.5-recomp.jar:?] {re:classloading,pl:accesstransformer:B,pl:runtimedistcleaner:A}
    at net.minecraft.client.Minecraft.run(Minecraft.java:607) ~[forge-1.16.5-36.2.34_mapped_official_1.16.5-recomp.jar:?] {re:classloading,pl:accesstransformer:B,pl:runtimedistcleaner:A}
    at net.minecraft.client.main.Main.main(Main.java:184) ~[forge-1.16.5-36.2.34_mapped_official_1.16.5-recomp.jar:?] {re:classloading,pl:runtimedistcleaner:A}
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_352] {}
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[?:1.8.0_352] {}
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:1.8.0_352] {}
    at java.lang.reflect.Method.invoke(Method.java:498) ~[?:1.8.0_352] {}
    at net.minecraftforge.userdev.FMLUserdevClientLaunchProvider.lambda$launchService$0(FMLUserdevClientLaunchProvider.java:52) ~[forge-1.16.5-36.2.34_mapped_official_1.16.5-recomp.jar:?] {}
    at cpw.mods.modlauncher.LaunchServiceHandlerDecorator.launch(LaunchServiceHandlerDecorator.java:37) [modlauncher-8.1.3.jar:?] {}
    at cpw.mods.modlauncher.LaunchServiceHandler.launch(LaunchServiceHandler.java:54) [modlauncher-8.1.3.jar:?] {}
    at cpw.mods.modlauncher.LaunchServiceHandler.launch(LaunchServiceHandler.java:72) [modlauncher-8.1.3.jar:?] {}
    at cpw.mods.modlauncher.Launcher.run(Launcher.java:82) [modlauncher-8.1.3.jar:?] {}
    at cpw.mods.modlauncher.Launcher.main(Launcher.java:66) [modlauncher-8.1.3.jar:?] {}
    at net.minecraftforge.userdev.LaunchTesting.main(LaunchTesting.java:108) [forge-1.16.5-36.2.34_mapped_official_1.16.5-recomp.jar:?] {}


A detailed walkthrough of the error, its code path and all known details is as follows:
---------------------------------------------------------------------------------------

-- Head --
Thread: Render thread
Stacktrace:
    at net.stalin.stalinrpg.client.gui.guiscreens.UpgradeStatsGui.lambda$addToStr$0(UpgradeStatsGui.java:61) ~[?:?] {re:classloading}
    at net.minecraftforge.fml.network.PacketDistributor.lambda$playerConsumer$1(PacketDistributor.java:217) ~[forge:?] {re:classloading}
    at net.minecraftforge.fml.network.PacketDistributor$PacketTarget.send(PacketDistributor.java:179) ~[forge:?] {re:classloading}
    at net.minecraftforge.fml.network.simple.SimpleChannel.send(SimpleChannel.java:124) ~[forge:?] {re:classloading}
    at net.stalin.stalinrpg.client.gui.guiscreens.UpgradeStatsGui.addToStr(UpgradeStatsGui.java:61) ~[?:?] {re:classloading}
    at net.stalin.stalinrpg.client.gui.guiscreens.UpgradeStatsGui.lambda$init$1(UpgradeStatsGui.java:69) ~[?:?] {re:classloading}
    at net.minecraft.client.gui.widget.button.Button.onPress(Button.java:26) ~[forge:?] {re:classloading,pl:runtimedistcleaner:A}
    at net.minecraft.client.gui.widget.button.AbstractButton.onClick(AbstractButton.java:18) ~[forge:?] {re:classloading,pl:runtimedistcleaner:A}
    at net.minecraft.client.gui.widget.Widget.mouseClicked(Widget.java:136) ~[forge:?] {re:classloading,pl:runtimedistcleaner:A}
    at net.minecraft.client.gui.INestedGuiEventHandler.mouseClicked(INestedGuiEventHandler.java:28) ~[forge:?] {re:classloading,pl:runtimedistcleaner:A}
    at net.minecraft.client.MouseHelper.lambda$onPress$0(MouseHelper.java:87) ~[forge:?] {re:classloading,pl:runtimedistcleaner:A}
-- Affected screen --
Details:
    Screen name: net.stalin.stalinrpg.client.gui.guiscreens.UpgradeStatsGui
Stacktrace:
    at net.minecraft.client.gui.screen.Screen.wrapScreenError(Screen.java:427) ~[forge-1.16.5-36.2.34_mapped_official_1.16.5-recomp.jar:?] {re:classloading,pl:runtimedistcleaner:A}
    at net.minecraft.client.MouseHelper.onPress(MouseHelper.java:85) ~[forge-1.16.5-36.2.34_mapped_official_1.16.5-recomp.jar:?] {re:classloading,pl:runtimedistcleaner:A}
    at net.minecraft.client.MouseHelper.lambda$null$4(MouseHelper.java:181) ~[forge-1.16.5-36.2.34_mapped_official_1.16.5-recomp.jar:?] {re:classloading,pl:runtimedistcleaner:A}
    at net.minecraft.util.concurrent.ThreadTaskExecutor.execute(ThreadTaskExecutor.java:86) ~[forge-1.16.5-36.2.34_mapped_official_1.16.5-recomp.jar:?] {re:classloading,pl:accesstransformer:B}
    at net.minecraft.client.MouseHelper.lambda$setup$5(MouseHelper.java:180) ~[forge-1.16.5-36.2.34_mapped_official_1.16.5-recomp.jar:?] {re:classloading,pl:runtimedistcleaner:A}
    at org.lwjgl.glfw.GLFWMouseButtonCallbackI.callback(GLFWMouseButtonCallbackI.java:36) ~[lwjgl-glfw-3.2.2.jar:build 10] {}
    at org.lwjgl.system.JNI.invokeV(Native Method) ~[lwjgl-3.2.2.jar:build 10] {}
    at org.lwjgl.glfw.GLFW.glfwPollEvents(GLFW.java:3101) ~[lwjgl-glfw-3.2.2.jar:build 10] {}
    at com.mojang.blaze3d.systems.RenderSystem.flipFrame(RenderSystem.java:89) ~[forge:?] {re:classloading,pl:runtimedistcleaner:A}


-- Affected level --
Details:
    All players: 1 total; [ClientPlayerEntity['Dev'/34, l='ClientLevel', x=36.39, y=4.00, z=-153.92]]
    Chunk stats: Client Chunk Cache: 529, 336
    Level dimension: minecraft:overworld
    Level spawn location: World: (112,4,-144), Chunk: (at 0,0,0 in 7,-9; contains blocks 112,0,-144 to 127,255,-129), Region: (0,-1; contains chunks 0,-32 to 31,-1, blocks 0,0,-512 to 511,255,-1)
    Level time: 559149 game time, 82326 day time
    Server brand: forge
    Server type: Integrated singleplayer server
Stacktrace:
    at net.minecraft.client.world.ClientWorld.fillReportDetails(ClientWorld.java:447) ~[forge-1.16.5-36.2.34_mapped_official_1.16.5-recomp.jar:?] {re:classloading,pl:runtimedistcleaner:A}
    at net.minecraft.client.Minecraft.fillReport(Minecraft.java:2031) ~[forge-1.16.5-36.2.34_mapped_official_1.16.5-recomp.jar:?] {re:classloading,pl:accesstransformer:B,pl:runtimedistcleaner:A}
    at net.minecraft.client.Minecraft.run(Minecraft.java:623) ~[forge-1.16.5-36.2.34_mapped_official_1.16.5-recomp.jar:?] {re:classloading,pl:accesstransformer:B,pl:runtimedistcleaner:A}
    at net.minecraft.client.main.Main.main(Main.java:184) ~[forge-1.16.5-36.2.34_mapped_official_1.16.5-recomp.jar:?] {re:classloading,pl:runtimedistcleaner:A}
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_352] {}
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[?:1.8.0_352] {}
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:1.8.0_352] {}
    at java.lang.reflect.Method.invoke(Method.java:498) ~[?:1.8.0_352] {}
    at net.minecraftforge.userdev.FMLUserdevClientLaunchProvider.lambda$launchService$0(FMLUserdevClientLaunchProvider.java:52) ~[forge-1.16.5-36.2.34_mapped_official_1.16.5-recomp.jar:?] {}
    at cpw.mods.modlauncher.LaunchServiceHandlerDecorator.launch(LaunchServiceHandlerDecorator.java:37) [modlauncher-8.1.3.jar:?] {}
    at cpw.mods.modlauncher.LaunchServiceHandler.launch(LaunchServiceHandler.java:54) [modlauncher-8.1.3.jar:?] {}
    at cpw.mods.modlauncher.LaunchServiceHandler.launch(LaunchServiceHandler.java:72) [modlauncher-8.1.3.jar:?] {}
    at cpw.mods.modlauncher.Launcher.run(Launcher.java:82) [modlauncher-8.1.3.jar:?] {}
    at cpw.mods.modlauncher.Launcher.main(Launcher.java:66) [modlauncher-8.1.3.jar:?] {}
    at net.minecraftforge.userdev.LaunchTesting.main(LaunchTesting.java:108) [forge-1.16.5-36.2.34_mapped_official_1.16.5-recomp.jar:?] {}


-- System Details --
Details:
    Minecraft Version: 1.16.5
    Minecraft Version ID: 1.16.5
    Operating System: Windows 10 (amd64) version 10.0
    Java Version: 1.8.0_352, Amazon.com Inc.
    Java VM Version: OpenJDK 64-Bit Server VM (mixed mode), Amazon.com Inc.
    Memory: 454053000 bytes (433 MB) / 1084227584 bytes (1034 MB) up to 1895825408 bytes (1808 MB)
    CPUs: 4
    JVM Flags: 2 total; -XX:+IgnoreUnrecognizedVMOptions -XX:HeapDumpPath=MojangTricksIntelDriversForPerformance_javaw.exe_minecraft.exe.heapdump
    ModLauncher: 8.1.3+8.1.3+main-8.1.x.c94d18ec
    ModLauncher launch target: fmluserdevclient
    ModLauncher naming: mcp
    ModLauncher services:
        /mixin-0.8.4.jar mixin PLUGINSERVICE
        /eventbus-4.0.0.jar eventbus PLUGINSERVICE
        /forge-1.16.5-36.2.34_mapped_official_1.16.5-launcher.jar object_holder_definalize PLUGINSERVICE
        /forge-1.16.5-36.2.34_mapped_official_1.16.5-launcher.jar runtime_enum_extender PLUGINSERVICE
        /accesstransformers-3.0.1.jar accesstransformer PLUGINSERVICE
        /forge-1.16.5-36.2.34_mapped_official_1.16.5-launcher.jar capability_inject_definalize PLUGINSERVICE
        /forge-1.16.5-36.2.34_mapped_official_1.16.5-launcher.jar runtimedistcleaner PLUGINSERVICE
        /mixin-0.8.4.jar mixin TRANSFORMATIONSERVICE
        /forge-1.16.5-36.2.34_mapped_official_1.16.5-launcher.jar fml TRANSFORMATIONSERVICE
    FML: 36.2
    Forge: net.minecraftforge:36.2.34
    FML Language Providers:
        [email protected]
        minecraft@1
    Mod List:
        client-extra.jar                                  |Minecraft                     |minecraft                     |1.16.5              |DONE      |Manifest: a1:d4:5e:04:4f:d3:d6:e0:7b:37:97:cf:77:b0:de:ad:4a:47:ce:8c:96:49:5f:0a:cf:8c:ae:b2:6d:4b:8a:3f
        main                                              |RPG System                    |stalinrpg                     |NONE                |DONE      |Manifest: NOSIGNATURE
        forge-1.16.5-36.2.34_mapped_official_1.16.5-recomp|Forge                         |forge                         |36.2.34             |DONE      |Manifest: NOSIGNATURE
    Crash Report UUID: 360cf783-a151-461c-a767-473bca75318a
    Launched Version: MOD_DEV
    Backend library: LWJGL version 3.2.2 build 10
    Backend API: NVIDIA GeForce GTX 970/PCIe/SSE2 GL version 4.6.0 NVIDIA 526.86, NVIDIA Corporation
    GL Caps: Using framebuffer using OpenGL 3.0
    Using VBOs: Yes
    Is Modded: Definitely; Client brand changed to 'forge'
    Type: Client (map_client.txt)
    Graphics mode: fast
    Resource Packs:
    Current Language: English (US)
    CPU: 4x Intel(R) Core(TM) i5-4460 CPU @ 3.20GHz

Затем вставил сюда
Java:
public void addStrengthHandler(Supplier<NetworkEvent.ServerCustomPayloadLoginEvent.Context> ctx) {
        ctx.get().enqueueWork(() -> {
            ServerPlayerEntity player = ctx.get().getSender();
            IBaseExperienceCapability expCap = IGenericCapability.getUnwrappedCapability(player,
                    PlayerExperienceCapabilityProvider.LEVEL_CAP);
            expCap.removePoints(1, player);
            expCap.addStrength(1, player);
            expCap.setMaxHealth(addHealth, maxHealth, player);

            Networking.INSTANCE.sendTo(new UpdateGuiScreen(), ((ServerPlayerEntity) player).connection.connection, NetworkDirection.PLAY_TO_CLIENT);
        });
        ctx.get().setPacketHandled(true);
    }

Но выдаёт ошибку
Java:
[11:54:10] [Render thread/FATAL] [minecraft/ThreadTaskExecutor]: Error executing task on Client
java.lang.IndexOutOfBoundsException: readerIndex(0) + length(1) exceeds writerIndex(0): UnpooledByteBufAllocator$InstrumentedUnpooledUnsafeHeapByteBuf(ridx: 0, widx: 0, cap: 256)
    at io.netty.buffer.AbstractByteBuf.checkReadableBytes0(AbstractByteBuf.java:1405) ~[netty-all-4.1.25.Final.jar:4.1.25.Final] {}
    at io.netty.buffer.AbstractByteBuf.readByte(AbstractByteBuf.java:707) ~[netty-all-4.1.25.Final.jar:4.1.25.Final] {}
    at io.netty.buffer.AbstractByteBuf.readUnsignedByte(AbstractByteBuf.java:721) ~[netty-all-4.1.25.Final.jar:4.1.25.Final] {}
    at net.minecraft.network.PacketBuffer.readUnsignedByte(PacketBuffer.java:753) ~[forge-1.16.5-36.2.34_mapped_official_1.16.5-recomp.jar:?] {re:classloading}
    at net.minecraftforge.fml.network.simple.IndexedMessageCodec.consume(IndexedMessageCodec.java:155) ~[forge-1.16.5-36.2.34_mapped_official_1.16.5-recomp.jar:?] {re:classloading}
    at net.minecraftforge.fml.network.simple.SimpleChannel.networkEventListener(SimpleChannel.java:80) ~[forge-1.16.5-36.2.34_mapped_official_1.16.5-recomp.jar:?] {re:classloading}
    at net.minecraftforge.eventbus.EventBus.doCastFilter(EventBus.java:247) ~[eventbus-4.0.0.jar:?] {}
    at net.minecraftforge.eventbus.EventBus.lambda$addListener$11(EventBus.java:239) ~[eventbus-4.0.0.jar:?] {}
    at net.minecraftforge.eventbus.EventBus.post(EventBus.java:302) ~[eventbus-4.0.0.jar:?] {}
    at net.minecraftforge.eventbus.EventBus.post(EventBus.java:283) ~[eventbus-4.0.0.jar:?] {}
    at net.minecraftforge.fml.network.NetworkInstance.dispatch(NetworkInstance.java:86) ~[forge-1.16.5-36.2.34_mapped_official_1.16.5-recomp.jar:?] {re:classloading}
    at net.minecraftforge.fml.network.NetworkHooks.lambda$onCustomPayload$1(NetworkHooks.java:91) ~[forge-1.16.5-36.2.34_mapped_official_1.16.5-recomp.jar:?] {re:classloading}
    at java.util.Optional.map(Optional.java:215) ~[?:1.8.0_352] {}
    at net.minecraftforge.fml.network.NetworkHooks.onCustomPayload(NetworkHooks.java:91) ~[forge-1.16.5-36.2.34_mapped_official_1.16.5-recomp.jar:?] {re:classloading}
    at net.minecraft.client.network.play.ClientPlayNetHandler.handleCustomPayload(ClientPlayNetHandler.java:1904) ~[forge-1.16.5-36.2.34_mapped_official_1.16.5-recomp.jar:?] {re:classloading,pl:runtimedistcleaner:A}
    at net.minecraft.network.play.server.SCustomPayloadPlayPacket.handle(SCustomPayloadPlayPacket.java:59) ~[forge-1.16.5-36.2.34_mapped_official_1.16.5-recomp.jar:?] {re:classloading}
    at net.minecraft.network.play.server.SCustomPayloadPlayPacket.handle(SCustomPayloadPlayPacket.java:11) ~[forge-1.16.5-36.2.34_mapped_official_1.16.5-recomp.jar:?] {re:classloading}
    at net.minecraft.network.PacketThreadUtil.lambda$ensureRunningOnSameThread$0(PacketThreadUtil.java:19) ~[forge-1.16.5-36.2.34_mapped_official_1.16.5-recomp.jar:?] {re:classloading}
    at net.minecraft.util.concurrent.ThreadTaskExecutor.doRunTask(ThreadTaskExecutor.java:136) ~[forge-1.16.5-36.2.34_mapped_official_1.16.5-recomp.jar:?] {re:classloading,pl:accesstransformer:B}
    at net.minecraft.util.concurrent.RecursiveEventLoop.doRunTask(RecursiveEventLoop.java:22) ~[forge-1.16.5-36.2.34_mapped_official_1.16.5-recomp.jar:?] {re:classloading}
    at net.minecraft.util.concurrent.ThreadTaskExecutor.pollTask(ThreadTaskExecutor.java:109) ~[forge-1.16.5-36.2.34_mapped_official_1.16.5-recomp.jar:?] {re:classloading,pl:accesstransformer:B}
    at net.minecraft.util.concurrent.ThreadTaskExecutor.runAllTasks(ThreadTaskExecutor.java:97) ~[forge-1.16.5-36.2.34_mapped_official_1.16.5-recomp.jar:?] {re:classloading,pl:accesstransformer:B}
    at net.minecraft.client.Minecraft.runTick(Minecraft.java:948) ~[forge-1.16.5-36.2.34_mapped_official_1.16.5-recomp.jar:?] {re:classloading,pl:accesstransformer:B,pl:runtimedistcleaner:A}
    at net.minecraft.client.Minecraft.run(Minecraft.java:607) ~[forge-1.16.5-36.2.34_mapped_official_1.16.5-recomp.jar:?] {re:classloading,pl:accesstransformer:B,pl:runtimedistcleaner:A}
    at net.minecraft.client.main.Main.main(Main.java:184) ~[forge-1.16.5-36.2.34_mapped_official_1.16.5-recomp.jar:?] {re:classloading,pl:runtimedistcleaner:A}
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_352] {}
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[?:1.8.0_352] {}
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:1.8.0_352] {}
    at java.lang.reflect.Method.invoke(Method.java:498) ~[?:1.8.0_352] {}
    at net.minecraftforge.userdev.FMLUserdevClientLaunchProvider.lambda$launchService$0(FMLUserdevClientLaunchProvider.java:52) ~[forge-1.16.5-36.2.34_mapped_official_1.16.5-recomp.jar:?] {}
    at cpw.mods.modlauncher.LaunchServiceHandlerDecorator.launch(LaunchServiceHandlerDecorator.java:37) [modlauncher-8.1.3.jar:?] {}
    at cpw.mods.modlauncher.LaunchServiceHandler.launch(LaunchServiceHandler.java:54) [modlauncher-8.1.3.jar:?] {}
    at cpw.mods.modlauncher.LaunchServiceHandler.launch(LaunchServiceHandler.java:72) [modlauncher-8.1.3.jar:?] {}
    at cpw.mods.modlauncher.Launcher.run(Launcher.java:82) [modlauncher-8.1.3.jar:?] {}
    at cpw.mods.modlauncher.Launcher.main(Launcher.java:66) [modlauncher-8.1.3.jar:?] {}
    at net.minecraftforge.userdev.LaunchTesting.main(LaunchTesting.java:108) [forge-1.16.5-36.2.34_mapped_official_1.16.5-recomp.jar:?] {}

Что я делаю не так?
 
Последнее редактирование:
1,371
112
241
В UpdateGuiScreen ты просто открываешь гуи вместо его обновления, не оч. хорошо сделано. Затем, сам по себе пакет сделан несколько неудачно - два consumer'а без разделения client-server, из-за чего, вроде как, и краш. Ну и в целом не понятно чего ты хотел добиться, создавая эти два consumer'а. Вместо подобного я бы просто сделал два пакета. Ну и вроде бы, в этом я уже не уверен, ты обрабатываешь отправку пакета, а не его приём (поправьте, люди, если кто получше меня разбирается).
Вдобавок, у гуишки из аргументов конструктора можно выкинуть TranslationTextComponent и передавать в super уже не аргумент, а как-раз таки и этот TranslationTextComponent.
 
76
3
5
В UpdateGuiScreen ты просто открываешь гуи вместо его обновления
Так это по сути и есть обновление, потому что, при перезаходе в гуи все обновляется, вот я и решил что можно просто открывать его заново, после нажатия на кнопку.
 
434
41
110
Ну, если тебе плевать на производительность - все ОК, все равно не каждые 0.05 секунды будешь это делать. Иначе - все же лучше обновить 1 компонент, чем заново инстансировать все меню, включая все его компоненты.
 
76
3
5
Режим отладки о чем-то говорит?
Говорит, что всё нормуль
Java:
[01:13:25] [Render thread/INFO] [stalinrpg/]: ------->From client, button click
[01:13:25] [Server thread/INFO] [stalinrpg/]: ----------> sendExperienceChangesToClient. Current strength: 233
[01:13:25] [Server thread/INFO] [stalinrpg/]: ----------> sendExperienceChangesToClient. Current points: 5
[01:13:25] [Server thread/INFO] [stalinrpg/]: ----------> sendExperienceChangesToClient. Current betterPoints: 0
[01:13:25] [Server thread/INFO] [stalinrpg/]: ----------> sendExperienceChangesToClient. Current strength: 234
[01:13:25] [Server thread/INFO] [stalinrpg/]: ----------> sendExperienceChangesToClient. Current points: 5
[01:13:25] [Server thread/INFO] [stalinrpg/]: ----------> sendExperienceChangesToClient. Current betterPoints: 0
[01:13:25] [Server thread/INFO] [stalinrpg/]: ----------> sendExperienceChangesToClient. Current strength: 234
[01:13:25] [Server thread/INFO] [stalinrpg/]: ----------> sendExperienceChangesToClient. Current points: 5
[01:13:25] [Server thread/INFO] [stalinrpg/]: ----------> sendExperienceChangesToClient. Current betterPoints: 0
[01:13:25] [Server thread/INFO] [stalinrpg/]: -------->From server, hp add: 1.0
[01:13:51] [Render thread/INFO] [stalinrpg/]: ------->From client, button click
[01:13:51] [Server thread/INFO] [stalinrpg/]: ----------> sendExperienceChangesToClient. Current strength: 234
[01:13:51] [Server thread/INFO] [stalinrpg/]: ----------> sendExperienceChangesToClient. Current points: 4
[01:13:51] [Server thread/INFO] [stalinrpg/]: ----------> sendExperienceChangesToClient. Current betterPoints: 0
[01:13:51] [Server thread/INFO] [stalinrpg/]: ----------> sendExperienceChangesToClient. Current strength: 235
[01:13:51] [Server thread/INFO] [stalinrpg/]: ----------> sendExperienceChangesToClient. Current points: 4
[01:13:51] [Server thread/INFO] [stalinrpg/]: ----------> sendExperienceChangesToClient. Current betterPoints: 0
[01:13:51] [Server thread/INFO] [stalinrpg/]: ----------> sendExperienceChangesToClient. Current strength: 235
[01:13:51] [Server thread/INFO] [stalinrpg/]: ----------> sendExperienceChangesToClient. Current points: 4
[01:13:51] [Server thread/INFO] [stalinrpg/]: ----------> sendExperienceChangesToClient. Current betterPoints: 0
[01:13:51] [Server thread/INFO] [stalinrpg/]: -------->From server, hp add: 1.0
 
434
41
110
Аээ я немного о другом говорил. Поставь точку остановки в проблемный метод и запусти в режиме отладки свой мод, и там подсмотри что не так. Возможно, банальная ошибка в логике. (Примерно так оно у меня выглядит)
1671220470100.png
 
Сверху