#Error with hadle packet

4 messages · Page 1 of 1 (latest)

runic acorn
#
public class ModNetworking {
    public static void register(){
        PayloadTypeRegistry.playC2S().register(ClickPayload.ID,ClickPayload.CODEC);
        ServerPlayNetworking.registerGlobalReceiver(ClickPayload.ID, (clickPayload, context) -> {
            context.server().execute(() -> {
                System.out.println(clickPayload.stack());
            });
        });
    }
}
#
public record ClickPayload(ItemStack stack) implements CustomPayload {
    public static final Identifier ITEM_CLICK_PACKET_ID = Identifier.of(Auction.MOD_ID, "item_click");
    public static final CustomPayload.Id<ClickPayload> ID = new CustomPayload.Id<>(ITEM_CLICK_PACKET_ID);
    public static final PacketCodec<RegistryByteBuf, ClickPayload> CODEC = PacketCodec.tuple(ItemStack.PACKET_CODEC, ClickPayload::stack, ClickPayload::new);
    @Override
    public Id<? extends CustomPayload> getId() {
        return ID;
    }
}
#
public class ItemWidget extends ClickableWidget {

    private final ItemStack stack;

    public ItemWidget(ItemStack stack, int x, int y) {
        super(x, y, 16, 16, Text.empty());
        this.stack = stack;
    }

    @Override
    protected void renderWidget(DrawContext context, int mouseX, int mouseY, float delta) {
        context.drawItem(stack,this.getX(),this.getY());
        context.drawItemInSlot(MinecraftClient.getInstance().textRenderer,stack,this.getX(),this.getY());
    }

    @Override
    protected void appendClickableNarrations(NarrationMessageBuilder builder) {

    }

    @Override
    public void onClick(double mouseX, double mouseY) {
        super.onClick(mouseX, mouseY);
        if(isMouseOver(mouseX,mouseY)){
            ItemStorage.removeItem(MinecraftClient.getInstance().world.getRegistryManager(), stack);
            ClientNetworking.sendItemClickPacket(stack);
            if(!MinecraftClient.getInstance().player.getInventory().insertStack(stack)){
                MinecraftClient.getInstance().player.dropStack(stack);
            }
            MinecraftClient.getInstance().setScreen(new AhScreen(Text.empty()));
        }
    }
}
#

for? idk

public class ClientNetworking {

    public static void sendItemClickPacket(ItemStack itemStack) {
        ClientPlayNetworking.send(new ClickPayload(itemStack));
    }

}