2424
2525import java .util .ArrayList ;
2626import java .util .Arrays ;
27+ import java .util .LinkedHashMap ;
2728import java .util .List ;
2829import java .util .Locale ;
2930import java .util .Map ;
@@ -51,6 +52,9 @@ public void reloadAll(CommandSender sender) {
5152 if (AdvancedSensitiveWords .networkSensitiveWordBs != null ) {
5253 AdvancedSensitiveWords .networkSensitiveWordBs .destroy ();
5354 }
55+ if (AdvancedSensitiveWords .obfuscatedUrlDetector != null ) {
56+ AdvancedSensitiveWords .obfuscatedUrlDetector .close ();
57+ }
5458 plugin .doInitTasks ();
5559 if (configuration .get (PluginSettings .BOOK_CACHE_CLEAR_ON_RELOAD )
5660 && configuration .get (PluginSettings .BOOK_CACHE )) {
@@ -69,36 +73,36 @@ public void showStatus(CommandSender sender) {
6973 ? "Windows"
7074 : OsUtil .isMac () ? "Mac" : OsUtil .isUnix () ? "Linux" : "Unknown" ;
7175 String bitness = OsUtil .is64 () ? "64bit" : "32bit" ;
72- String message = MessageUtils . retrieveMessage ( PluginMessages .MESSAGE_ON_COMMAND_STATUS )
73- . replace ( "% num% " , String .valueOf (Utils .messagesFilteredNum .get ()))
74- . replace ( "% mode% " , "Event" )
75- . replace ( "% init% " , String .valueOf (AdvancedSensitiveWords .isInitialized ))
76- . replace ( "%ms% " , TimingUtils .getProcessAverage () + "ms" )
77- . replace ( "% version% " , AdvancedSensitiveWords .PLUGIN_VERSION )
78- . replace ( "% mc_version% " , Utils .getMinecraftVersion ())
79- . replace ( "% platform% " , platform )
80- . replace ( "% bit% " , bitness )
81- . replace ( "% java_version% " , TimingUtils .getJvmVersion ())
82- . replace ( "% java_vendor% " , TimingUtils .getJvmVendor ());
83- MessageUtils . sendMessage ( sender , message );
76+ sendTemplate ( sender , PluginMessages .MESSAGE_ON_COMMAND_STATUS , Map . of (
77+ " num" , String .valueOf (Utils .messagesFilteredNum .get ()),
78+ " mode" , "Event" ,
79+ " init" , String .valueOf (AdvancedSensitiveWords .isInitialized ),
80+ "ms " , TimingUtils .getProcessAverage () + "ms" ,
81+ " version" , AdvancedSensitiveWords .PLUGIN_VERSION ,
82+ " mc_version" , Utils .getMinecraftVersion (),
83+ " platform" , platform ,
84+ " bit" , bitness ,
85+ " java_version" , TimingUtils .getJvmVersion (),
86+ " java_vendor" , TimingUtils .getJvmVendor ()
87+ ) );
8488 }
8589
8690 public void showAiStatus (CommandSender sender ) {
8791 LlmChatDetectionService .LlmRuntimeStatus status = plugin .getLlmChatDetectionService ().runtimeStatus ();
88- String message = MessageUtils . retrieveMessage ( PluginMessages . MESSAGE_ON_AI_STATUS )
89- . replace ( "% enabled% " , String .valueOf (status .enabled ()))
90- . replace ( "% submitted% " , String .valueOf (status .submittedRequests ()))
91- . replace ( "% dropped% " , String .valueOf (status .droppedRequests ()))
92- . replace ( "% failed% " , String .valueOf (status .failedRequests ()))
93- . replace ( "% invalid% " , String .valueOf (status .invalidResponses ()))
94- . replace ( "% enforced% " , String .valueOf (status .enforcedResponses ()))
95- . replace ( "% active% " , String .valueOf (status .activeRequests ()))
96- . replace ( "% queued% " , String .valueOf (status .queuedRequests ()))
97- . replace ( "% pool_size% " , String .valueOf (status .poolSize ()))
98- . replace ( "% model% " , status .modelName ())
99- . replace ( "% api_mode% " , status .apiMode ().name ())
100- . replace ( "% thresholds% " , formatCategoryPolicies (status .categoryPolicy ()));
101- MessageUtils . sendMessage (sender , message );
92+ Map < String , String > placeholders = new LinkedHashMap <>();
93+ placeholders . put ( " enabled" , String .valueOf (status .enabled ()));
94+ placeholders . put ( " submitted" , String .valueOf (status .submittedRequests ()));
95+ placeholders . put ( " dropped" , String .valueOf (status .droppedRequests ()));
96+ placeholders . put ( " failed" , String .valueOf (status .failedRequests ()));
97+ placeholders . put ( " invalid" , String .valueOf (status .invalidResponses ()));
98+ placeholders . put ( " enforced" , String .valueOf (status .enforcedResponses ()));
99+ placeholders . put ( " active" , String .valueOf (status .activeRequests ()));
100+ placeholders . put ( " queued" , String .valueOf (status .queuedRequests ()));
101+ placeholders . put ( " pool_size" , String .valueOf (status .poolSize ()));
102+ placeholders . put ( " model" , status .modelName ());
103+ placeholders . put ( " api_mode" , status .apiMode ().name ());
104+ placeholders . put ( " thresholds" , formatCategoryPolicies (status .categoryPolicy ()));
105+ sendTemplate (sender , PluginMessages . MESSAGE_ON_AI_STATUS , placeholders );
102106 }
103107
104108 public void test (CommandSender sender , String text ) {
@@ -112,11 +116,11 @@ public void test(CommandSender sender, String text) {
112116 return ;
113117 }
114118
115- String message = MessageUtils . retrieveMessage ( PluginMessages .MESSAGE_ON_COMMAND_TEST )
116- . replace ( "% original_msg% " , text )
117- . replace ( "% processed_msg% " , AdvancedSensitiveWords .replaceSensitive (text ))
118- . replace ( "% censored_list% " , censoredWords .toString ());
119- MessageUtils . sendMessage ( sender , message );
119+ sendTemplate ( sender , PluginMessages .MESSAGE_ON_COMMAND_TEST , Map . of (
120+ " original_msg" , text ,
121+ " processed_msg" , AdvancedSensitiveWords .replaceSensitive (text ),
122+ " censored_list" , censoredWords .toString ()
123+ ) );
120124 }
121125
122126 public void addBlockedWords (CommandSender sender , String [] words ) {
@@ -152,14 +156,14 @@ public void removeAllowedWords(CommandSender sender, String[] words) {
152156 }
153157
154158 public void showPlayerInfo (CommandSender sender , Player player ) {
155- String message = MessageUtils . retrieveMessage ( PluginMessages . MESSAGE_ON_PLAYER_INFO )
156- . replace ( "% player% " , player .getName ())
157- . replace ( "% violation% " , String .valueOf (ViolationCounter .INSTANCE .getTotalViolationCount (player )));
159+ Map < String , String > placeholders = new LinkedHashMap <>();
160+ placeholders . put ( " player" , player .getName ());
161+ placeholders . put ( " violation" , String .valueOf (ViolationCounter .INSTANCE .getTotalViolationCount (player )));
158162 for (ModuleType moduleType : ModuleType .violationModules ()) {
159- String placeholder = "%" + moduleType .name ().toLowerCase (Locale .ROOT ) + "_violation% " ;
160- message = message . replace (placeholder , String .valueOf (ViolationCounter .INSTANCE .getViolationCount (player , moduleType )));
163+ String placeholder = moduleType .name ().toLowerCase (Locale .ROOT ) + "_violation" ;
164+ placeholders . put (placeholder , String .valueOf (ViolationCounter .INSTANCE .getViolationCount (player , moduleType )));
161165 }
162- MessageUtils . sendMessage (sender , message );
166+ sendTemplate (sender , PluginMessages . MESSAGE_ON_PLAYER_INFO , placeholders );
163167 }
164168
165169 public void resetPlayerViolations (CommandSender sender , Player player , ModuleType moduleType ) {
@@ -172,10 +176,10 @@ public void resetPlayerViolations(CommandSender sender, Player player, ModuleTyp
172176 ViolationCounter .INSTANCE .resetViolationCount (player , moduleType );
173177 }
174178 }
175- String message = MessageUtils . retrieveMessage ( PluginMessages .MESSAGE_ON_COMMAND_RESET )
176- . replace ( "% player% " , player .getName ())
177- . replace ( "% module% " , moduleType == null ? "ALL" : moduleType .name ());
178- MessageUtils . sendMessage ( sender , message );
179+ sendTemplate ( sender , PluginMessages .MESSAGE_ON_COMMAND_RESET , Map . of (
180+ " player" , player .getName (),
181+ " module" , moduleType == null ? "ALL" : moduleType .name ()
182+ ) );
179183 }
180184
181185 public void teleportToReportedLocation (CommandSender sender , UUID worldId , double x , double y , double z ) {
@@ -204,9 +208,9 @@ public void punishPlayer(CommandSender sender, Player player, String method) {
204208 return ;
205209 }
206210
207- String message = MessageUtils . retrieveMessage ( PluginMessages .MESSAGE_ON_COMMAND_PUNISH_SUCCESS )
208- . replace ( "% player% " , player .getName ());
209- MessageUtils . sendMessage ( sender , message );
211+ sendTemplate ( sender , PluginMessages .MESSAGE_ON_COMMAND_PUNISH_SUCCESS , Map . of (
212+ " player" , player .getName ()
213+ ) );
210214 }
211215
212216 private boolean isInitialized (CommandSender sender ) {
@@ -222,6 +226,14 @@ private void sendTemporaryMutationMessage(CommandSender sender, PluginMessages s
222226 MessageUtils .sendMessage (sender , PluginMessages .MESSAGE_ON_COMMAND_RUNTIME_ONLY );
223227 }
224228
229+ private static void sendTemplate (
230+ CommandSender sender ,
231+ PluginMessages template ,
232+ Map <String , String > placeholders
233+ ) {
234+ MessageUtils .sendTemplate (sender , MessageUtils .retrieveMessage (template ), placeholders );
235+ }
236+
225237 private List <String > toWordList (String [] words ) {
226238 return new ArrayList <>(Arrays .asList (words ));
227239 }
0 commit comments