LunaChat icon indicating copy to clipboard operation
LunaChat copied to clipboard

ver1.16.5のmcMMOのパーティーチャットでエラー

Open kubotan opened this issue 3 years ago • 0 comments

環境情報

  • PaperMC 1.16.5
  • LunaChat v3.0.16
  • McMMO 2.1.196

現象

  • McMMOのパーティーチャットを投稿すると以下の通り、McMMOPartyChatEvent.getSender()が存在しないエラーが発生します。
  • 再現手順
/party create error_test
/pc
/pc このメッセージでLunaChatのエラーが発生します。
/party quit
[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

kubotan avatar May 05 '21 16:05 kubotan