4drian3d / 4drian3d/SignedVelocity

Detect the need and implement handling for legacy AsyncPlayerChatEvent

Đang mở
#151 0 bình luận 2 reaction 0 người được giao Xem trên GitHub
wontfix
Ngôn ngữ chính
Java
Star
73
Fork
23
Merge trung bình
11 giờ 19 phút
Pull request đã merge (30 ngày)
9

Mô tả

SignedVelocity has first-class support for AsyncChatEvent, which is fantastic. However, for multiple reasons, it should support `AsyncPlayerChatEvent`, and not just in a separate (and unmaintained) repository like https://github.com/4drian3d/SignedVelocity-Legacy.

### Proposal
SignedVelocity could easily check `AsyncPlayerChatEvent.getHandlerList()` to see if there are any listeners, and if so, add handling for this event. If I remember correctly, the AsyncPlayerChatEvent happens first. Thus, existing logic and data could be re-used, except that SignedVelocity could perform a "peek" on the data queue while listening to it (whereas standard "poll" is reserved for AsyncChatEvent).

If you want to discourage usage of `AsyncPlayerChatEvent`, which is certainly a worthy goal, this could also be an opportunity to print a warning message.

### Motivation
Besides it being already difficult to debug chat cancelation across plugins, SignedVelocity introduces another complication. By forgoing to implement the AsyncPlayerChatEvent in the main repository, SignedVelocity causes unexpected behavior when interacting with established or aged chat plugins. This plugin is advertised on Modrinth as transmitting chat event behavior to the backend servers, but if there are cases where that fails, then SignedVelocity starts to fail in its stated objective.

AsyncPlayerChatEvent may be deprecated. However, it is still supported API, and it is a go-to for plugins that want to run on Spigot. We may see plugins continue to use this event for several years, and I don't think SignedVelocity is in a good position to push everyone toward Paper & `AsyncChatEvent` - at least not instantly, which is why I suggested a warning message.

Hướng dẫn đóng góp

Chưa lập chỉ mục được hướng dẫn đóng góp cho kho mã nguồn này

Hướng nghiên cứu

Look at the existing AsyncChatEvent handling in the codebase, likely in a main plugin class. Find where event listeners are registered and data queues are managed. Check AsyncPlayerChatEvent.getHandlerList() to understand listener detection. The change involves adding conditional logic, possibly a 'peek' operation on the queue, and a warning message. Test with plugins that use the legacy event.

Do mô hình lập chỉ mục viết ra từ nội dung của issue.

Đánh giá

Công nghệ
java
Lĩnh vực
api, backend
Loại issue
Tính năng
Độ khó
4/5
Thời gian dự kiến
3-5 ngày
Mức độ hoạt động
Đình trệ
Độ rõ ràng
Khá rõ ràng
Mức phù hợp với người mới
45/100

Nhận issue mới trong hộp thư của bạn

Bản tóm tắt ngắn những issue GitHub phù hợp với người mới.