LunaChat
LunaChat copied to clipboard
ver1.16.5のmcMMOのパーティーチャットでエラー
環境情報
- PaperMC 1.16.5
- LunaChat v3.0.16
- McMMO 2.1.196
現象
- McMMOのパーティーチャットを投稿すると以下の通り、McMMOPartyChatEvent.getSender()が存在しないエラーが発生します。
- 再現手順
/party create error_test
/pc
/pc このメッセージでLunaChatのエラーが発生します。
/party quit
- LunaChatのMcMMOPartyChatEvent.getSender()呼出し箇所
[13:17:16] [Async Chat Thread - #4/ERROR]: Could not pass event McMMOPartyChatEvent to LunaChat v3.0.16
java.lang.NoSuchMethodError: 'java.lang.String com.gmail.nossr50.events.chat.McMMOPartyChatEvent.getSender()'
at com.github.ucchyocean.lc3.bridge.McMMOBridge.onMcMMOPartyChatEvent(McMMOBridge.java:45) ~[?:?]
at com.destroystokyo.paper.event.executor.asm.generated.GeneratedEventExecutor471.execute(Unknown Source) ~[?:?]
at org.bukkit.plugin.EventExecutor.lambda$create$1(EventExecutor.java:69) ~[patched_1.16.5.jar:git-Paper-629]
at co.aikar.timings.TimedEventExecutor.execute(TimedEventExecutor.java:76) ~[patched_1.16.5.jar:git-Paper-629]
at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.java:70) ~[patched_1.16.5.jar:git-Paper-629]
at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.java:607) ~[patched_1.16.5.jar:git-Paper-629]
at com.gmail.nossr50.chat.mailer.PartyChatMailer.processChatMessage(PartyChatMailer.java:37) ~[?:?]
at com.gmail.nossr50.chat.ChatManager.processPlayerMessage(ChatManager.java:80) ~[?:?]
at com.gmail.nossr50.chat.ChatManager.processPlayerMessage(ChatManager.java:49) ~[?:?]
at com.gmail.nossr50.listeners.PlayerListener.onPlayerChat(PlayerListener.java:960) ~[?:?]
at com.destroystokyo.paper.event.executor.asm.generated.GeneratedEventExecutor419.execute(Unknown Source) ~[?:?]
at org.bukkit.plugin.EventExecutor.lambda$create$1(EventExecutor.java:69) ~[patched_1.16.5.jar:git-Paper-629]
at co.aikar.timings.TimedEventExecutor.execute(TimedEventExecutor.java:76) ~[patched_1.16.5.jar:git-Paper-629]
at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.java:70) ~[patched_1.16.5.jar:git-Paper-629]
at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.java:607) ~[patched_1.16.5.jar:git-Paper-629]
at io.papermc.paper.adventure.ChatProcessor.post(ChatProcessor.java:225) ~[patched_1.16.5.jar:git-Paper-629]
at io.papermc.paper.adventure.ChatProcessor.processingLegacyFirst(ChatProcessor.java:105) ~[patched_1.16.5.jar:git-Paper-629]
at io.papermc.paper.adventure.ChatProcessor.process(ChatProcessor.java:63) ~[patched_1.16.5.jar:git-Paper-629]
at net.minecraft.server.v1_16_R3.PlayerConnection.chat(PlayerConnection.java:2088) ~[patched_1.16.5.jar:git-Paper-629]
at net.minecraft.server.v1_16_R3.PlayerConnection.c(PlayerConnection.java:2003) ~[patched_1.16.5.jar:git-Paper-629]
at net.minecraft.server.v1_16_R3.PlayerConnection.a(PlayerConnection.java:1941) ~[patched_1.16.5.jar:git-Paper-629]
at net.minecraft.server.v1_16_R3.PacketPlayInChat$1.run(PacketPlayInChat.java:44) ~[patched_1.16.5.jar:git-Paper-629]
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515) ~[?:?]
at java.util.concurrent.FutureTask.run(FutureTask.java:264) ~[?:?]
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128) ~[?:?]
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628) ~[?:?]
at java.lang.Thread.run(Thread.java:829) [?:?]
原因
- McMMO 2.1.154にてMcMMOPartyChatEventの親クラスに実装されていたMcMMOChatEvent.getSender()メソッドが削除された為です。
対応策
- 「McMMOChatEvent::getSender removed (use getDisplayName() instead)」と記載がある為、getDisplayName()を利用
- McMMOChatEvent::getDisplayName()には引数ChatChannelが必要
- LunaChat側ではimport com.gmail.nossr50.datatypes.chat.ChatChannel;を利用し、McMMOPartyChatEventではevent.getDisplayName(ChatChannel.PARTY)を利用します。
- 本対応は機能拡張ではないため、McMMOAdminChatEventのハンドリングは除外します。
McMMO変更履歴
- 2020/11/07 McMMOChatEvent.getSender()メソッドが削除されました。
Fix Hex-Colored names in parties/admin chat
Version 2.1.154
(API) Author class has been reworked
(API) McMMOChatEvent::getSender removed (use getDisplayName() instead)
(API) McMMMOChatEvent::setDisplayName() removed (you can set author names in Author)
(API) Removed Author::setName use Player::SetDisplayName instead
(API) Modified Author::getAuthoredName signature to -> Author::getAuthoredName(ChatChannel)
(API) Added Author::getAuthoredComponentName(ChatChannel)
(API) PartyAuthor and AdminAuthor removed, replaced by PlayerAuthor
引用 https://github.com/mcMMO-Dev/mcMMO/commit/a4fd632d533c10bc6f00b0a562670444f42ed5d1#diff-2c33ddc26d6200c3f721ecbfa51b23258c92a1bd7e65490cb857b91b4229a470L60
- 2020/10/27 McMMOChatEvent.getSender()メソッドが非推奨になりました。
Complete rewrite of Admin & Party chat code
Version 2.1.150
mcMMO Party & Admin Chat have had a rewrite, work was put in to make sure their API would be mostly compatible with the old one
mcMMO should now be compatible with 1.16.4's new social features
The style and look of admin/party chat is now determined by locale file instead of options in config.yml
Improved messages players recieve when they toggle on or off admin or party chat
All locale files have had [[]] color codes replaced by & color codes, you can still use [[GOLD]] and stuff if you want
Added new locale string 'Chat.Identity.Console'
Added new locale string 'Chat.Style.Admin'
Added new locale string 'Chat.Style.Party'
Added new locale string 'Chat.Channel.On'
Added new locale string 'Chat.Channel.Off'
(API) ChatAPI::getPartyChatManager() has been removed
(API) ChatAPI::sendPartyChat has been removed (similar functionality can be found in the new ChatManager class)
(API) ChatAPI::sendAdminChat has been removed (similar functionality can be found in the new ChatManager class)
(API) Fake events in mcMMO now implement 'FakeEvent' (thanks TheBusyBiscuit)
(API) Updated Adventure Library to 4.1.1
(API) McMMOChatEvent has been reworked, plugins dependent on this event should review this class and make appropriate changes
引用 https://github.com/mcMMO-Dev/mcMMO/commit/749c83ac59ab8a5c47a322759fd0ddf7e090b461?branch=749c83ac59ab8a5c47a322759fd0ddf7e090b461&diff=split#diff-2c33ddc26d6200c3f721ecbfa51b23258c92a1bd7e65490cb857b91b4229a470R61