@@ -41,6 +41,10 @@ public boolean onCommand(CommandSender sender, Command command, String label, St
4141 handleTest (sender , args );
4242 break ;
4343
44+ case "testall" :
45+ handleTestAll (sender , args );
46+ break ;
47+
4448 case "stats" :
4549 handleStats (sender , args );
4650 break ;
@@ -145,6 +149,111 @@ private void handleTest(CommandSender sender, String[] args) {
145149 }
146150 }
147151
152+ private void handleTestAll (CommandSender sender , String [] args ) {
153+ if (!sender .hasPermission ("welcome.test" )) {
154+ MessageUtils .sendMessage (sender , plugin .getMessagesConfig ().getString ("commands.no-permission" ));
155+ return ;
156+ }
157+
158+ Player target ;
159+ if (args .length > 1 ) {
160+ target = Bukkit .getPlayer (args [1 ]);
161+ if (target == null ) {
162+ String msg = plugin .getMessagesConfig ().getString ("commands.player-not-found" );
163+ MessageUtils .sendMessage (sender , msg .replace ("{player}" , args [1 ]));
164+ return ;
165+ }
166+ } else if (sender instanceof Player ) {
167+ target = (Player ) sender ;
168+ } else {
169+ MessageUtils .sendMessage (sender , "&cPlease specify a player name!" );
170+ return ;
171+ }
172+
173+ MessageUtils .sendMessage (sender , "&6&l=== WelcomeMessages Feature Showcase ===" );
174+ MessageUtils .sendMessage (sender , "&7Testing all features for: &e" + target .getName ());
175+ MessageUtils .sendMessage (sender , "" );
176+
177+ // Test 1: Basic Messages
178+ MessageUtils .sendMessage (sender , "&a&l1. Basic Messages:" );
179+ boolean isFirstJoin = plugin .getDataManager ().isFirstJoin (target );
180+ String joinMessage = plugin .getMessageManager ().getJoinMessage (target , isFirstJoin );
181+ String quitMessage = plugin .getMessageManager ().getQuitMessage (target );
182+
183+ MessageUtils .sendMessage (sender , "&7Join: " + joinMessage );
184+ MessageUtils .sendMessage (sender , "&7Quit: " + quitMessage );
185+ MessageUtils .sendMessage (sender , "" );
186+
187+ // Test 2: RGB and Gradient Text
188+ MessageUtils .sendMessage (sender , "&a&l2. RGB & Gradient Text:" );
189+ MessageUtils .sendMessage (sender , "&7Basic RGB: &#FF6B6BHello ECDC4World -B7D1Test" );
190+ MessageUtils .sendMessage (sender , "&7Gradient: <gradient:#FF6B6B:#4ECDC4>Welcome to our server!</gradient>" );
191+ MessageUtils .sendMessage (sender , "&7Rainbow: <rainbow>This is rainbow text!</rainbow>" );
192+ MessageUtils .sendMessage (sender , "" );
193+
194+ // Test 3: PlaceholderAPI Examples
195+ MessageUtils .sendMessage (sender , "&a&l3. PlaceholderAPI Examples:" );
196+ MessageUtils .sendMessage (sender , "&7Join Count: &e" + plugin .getDataManager ().getJoinCount (target ));
197+ MessageUtils .sendMessage (sender , "&7First Join: &e" + (isFirstJoin ? "Yes" : "No" ));
198+ MessageUtils .sendMessage (sender , "&7Messages Disabled: &e" + plugin .getDataManager ().hasMessagesDisabled (target ));
199+ MessageUtils .sendMessage (sender , "&7Player Status: &e" + (isFirstJoin ? "New Player" : "Returning Player" ));
200+ MessageUtils .sendMessage (sender , "" );
201+
202+ // Test 4: Rank Messages
203+ MessageUtils .sendMessage (sender , "&a&l4. Rank System:" );
204+ String [] ranks = {"owner" , "admin" , "mvp" , "vip" };
205+ for (String rank : ranks ) {
206+ if (target .hasPermission ("welcome.rank." + rank )) {
207+ MessageUtils .sendMessage (sender , "&7You have &e" + rank .toUpperCase () + " &7rank permissions" );
208+ break ;
209+ }
210+ }
211+ MessageUtils .sendMessage (sender , "" );
212+
213+ // Test 5: Effects (if sender is target)
214+ if (sender .equals (target )) {
215+ MessageUtils .sendMessage (sender , "&a&l5. Visual Effects (starting in 3 seconds):" );
216+ MessageUtils .sendMessage (sender , "&7- Title effects" );
217+ MessageUtils .sendMessage (sender , "&7- Sound effects" );
218+ MessageUtils .sendMessage (sender , "&7- Particle effects" );
219+ MessageUtils .sendMessage (sender , "&7- Firework effects" );
220+ MessageUtils .sendMessage (sender , "" );
221+
222+ // Schedule effects with delays for better showcase
223+ Bukkit .getScheduler ().runTaskLater (plugin , () -> {
224+ MessageUtils .sendMessage (target , "&6&l>>> Title Effect <<<" );
225+ plugin .getEffectManager ().sendTitle (target , isFirstJoin );
226+ }, 60L );
227+
228+ Bukkit .getScheduler ().runTaskLater (plugin , () -> {
229+ MessageUtils .sendMessage (target , "&6&l>>> Sound Effect <<<" );
230+ plugin .getEffectManager ().playJoinSound (target , isFirstJoin );
231+ }, 80L );
232+
233+ Bukkit .getScheduler ().runTaskLater (plugin , () -> {
234+ MessageUtils .sendMessage (target , "&6&l>>> Particle Effect <<<" );
235+ plugin .getEffectManager ().playJoinParticles (target , isFirstJoin );
236+ }, 100L );
237+
238+ Bukkit .getScheduler ().runTaskLater (plugin , () -> {
239+ MessageUtils .sendMessage (target , "&6&l>>> Firework Effect <<<" );
240+ plugin .getEffectManager ().launchFireworks (target );
241+ }, 120L );
242+
243+ Bukkit .getScheduler ().runTaskLater (plugin , () -> {
244+ MessageUtils .sendMessage (target , "&6&l=== Showcase Complete! ===" );
245+ MessageUtils .sendMessage (target , "&7All features have been demonstrated." );
246+ MessageUtils .sendMessage (target , "&7Perfect for screenshots! 📸" );
247+ }, 140L );
248+ } else {
249+ MessageUtils .sendMessage (sender , "&a&l5. Visual Effects:" );
250+ MessageUtils .sendMessage (sender , "&7Effects can only be shown to the target player" );
251+ MessageUtils .sendMessage (sender , "&7Run &e/welcome testall &7on yourself to see effects" );
252+ MessageUtils .sendMessage (sender , "" );
253+ MessageUtils .sendMessage (sender , "&6&l=== Showcase Complete! ===" );
254+ }
255+ }
256+
148257 private void handleStats (CommandSender sender , String [] args ) {
149258 if (!sender .hasPermission ("welcome.stats" )) {
150259 MessageUtils .sendMessage (sender , plugin .getMessagesConfig ().getString ("commands.no-permission" ));
@@ -232,12 +341,12 @@ public List<String> onTabComplete(CommandSender sender, Command command, String
232341 List <String > completions = new ArrayList <>();
233342
234343 if (args .length == 1 ) {
235- List <String > subCommands = Arrays .asList ("help" , "reload" , "test" , "stats" , "reset" , "toggle" , "version" );
344+ List <String > subCommands = Arrays .asList ("help" , "reload" , "test" , "testall" , " stats" , "reset" , "toggle" , "version" );
236345 StringUtil .copyPartialMatches (args [0 ], subCommands , completions );
237346 } else if (args .length == 2 ) {
238347 String subCommand = args [0 ].toLowerCase ();
239348
240- if (subCommand .equals ("test" ) || subCommand .equals ("stats" ) || subCommand .equals ("reset" )) {
349+ if (subCommand .equals ("test" ) || subCommand .equals ("testall" ) || subCommand . equals ( " stats" ) || subCommand .equals ("reset" )) {
241350 List <String > playerNames = Bukkit .getOnlinePlayers ().stream ()
242351 .map (Player ::getName )
243352 .collect (Collectors .toList ());
0 commit comments