11package org .mvplugins .multiverse .inventories .listeners ;
22
33import com .dumptruckman .minecraft .util .Logging ;
4- import github .scarsz .discordsrv .DiscordSRV ;
5- import github .scarsz .discordsrv .api .Subscribe ;
6- import github .scarsz .discordsrv .api .events .AchievementMessagePreProcessEvent ;
74import org .bukkit .Bukkit ;
85import org .bukkit .event .player .PlayerAdvancementDoneEvent ;
96import org .bukkit .event .player .PlayerRecipeDiscoverEvent ;
@@ -32,9 +29,9 @@ final class SilentGrantsListener implements MVInvListener {
3229 this .hasPlayerAdvancementDoneMessageMethod = ReflectHelper .getMethod (
3330 PlayerAdvancementDoneEvent .class ,"message" ) != null ;
3431
35- if (Bukkit .getPluginManager ().isPluginEnabled ("DiscordSRV" )) {
32+ if (hasPlayerAdvancementDoneMessageMethod && Bukkit .getPluginManager ().isPluginEnabled ("DiscordSRV" )) {
3633 Logging .fine ("Registering DiscordSRV advancement grant hook." );
37- DiscordSRV . api . subscribe ( new DiscordSrvHook () );
34+ AdvancementDonePaperHelper . getInstance (). registerDiscordSrvHook ( );
3835 }
3936 }
4037
@@ -58,37 +55,15 @@ void onPlayerAdvancementDone(PlayerAdvancementDoneEvent event) {
5855 return ;
5956 }
6057 if (playerShareHandlingState .isHandlingSharable (event .getPlayer (), Sharables .ADVANCEMENTS )) {
61- Logging .finest ("Suppressing advancement done message for player %s due to share handling." ,
62- event .getPlayer ().getName ());
63- event .message (net .kyori .adventure .text .Component .text ("mvinv:suppressed" ));
58+ AdvancementDonePaperHelper .getInstance ().handleAdvancementDoneEventSuppression (event );
6459 }
6560 }
6661
6762 @ EventMethod
6863 void onPluginEnable (PluginEnableEvent event ) {
69- if (event .getPlugin ().getName ().equals ("DiscordSRV" )) {
64+ if (hasPlayerAdvancementDoneMessageMethod && event .getPlugin ().getName ().equals ("DiscordSRV" )) {
7065 Logging .fine ("Registering DiscordSRV advancement grant hook." );
71- DiscordSRV .api .subscribe (new DiscordSrvHook ());
72- }
73- }
74-
75- private class DiscordSrvHook {
76- @ Subscribe
77- public void onAchievementMessage (AchievementMessagePreProcessEvent event ) {
78- if (!(event .getTriggeringBukkitEvent () instanceof PlayerAdvancementDoneEvent advancementEvent )) {
79- return ;
80- }
81- if (!hasPlayerAdvancementDoneMessageMethod ) {
82- // paper does not have the method to suppress notifications
83- return ;
84- }
85- if (net .kyori .adventure .text .Component .EQUALS .test (
86- advancementEvent .message (),
87- net .kyori .adventure .text .Component .text ("mvinv:suppressed" ))) {
88- Logging .finest ("Suppressing DiscordSRV advancement message for player %s due to share handling." ,
89- advancementEvent .getPlayer ().getName ());
90- event .setCancelled (true );
91- }
66+ AdvancementDonePaperHelper .getInstance ().registerDiscordSrvHook ();
9267 }
9368 }
9469}
0 commit comments