|
21 | 21 | import io.papermc.paper.event.player.PlayerServerFullCheckEvent; |
22 | 22 | import net.ess3.api.IEssentials; |
23 | 23 | import net.ess3.api.events.AfkStatusChangeEvent; |
| 24 | +import net.ess3.api.events.VanishStatusChangeEvent; |
24 | 25 | import net.ess3.provider.CommandSendListenerProvider; |
25 | 26 | import net.ess3.provider.FormattedCommandAliasProvider; |
26 | 27 | import net.ess3.provider.InventoryViewProvider; |
|
32 | 33 | import net.essentialsx.api.v2.events.AsyncUserDataLoadEvent; |
33 | 34 | import org.bukkit.BanEntry; |
34 | 35 | import org.bukkit.BanList; |
| 36 | +import org.bukkit.Bukkit; |
35 | 37 | import org.bukkit.GameMode; |
36 | 38 | import org.bukkit.Location; |
37 | 39 | import org.bukkit.Material; |
@@ -297,14 +299,7 @@ public void onPlayerQuit(final PlayerQuitEvent event) { |
297 | 299 | if (hideJoinQuitMessages() || ess.getSettings().allowSilentJoinQuit() && user.isAuthorized("essentials.silentquit")) { |
298 | 300 | event.setQuitMessage(null); |
299 | 301 | } else if (ess.getSettings().isCustomQuitMessage() && event.getQuitMessage() != null) { |
300 | | - final Player player = event.getPlayer(); |
301 | | - final String msg = ess.getSettings().getCustomQuitMessage() |
302 | | - .replace("{PLAYER}", player.getDisplayName()) |
303 | | - .replace("{USERNAME}", player.getName()) |
304 | | - .replace("{ONLINE}", NumberFormat.getInstance().format(ess.getOnlinePlayers().size() - 1)) // Subtract 1 as the leaving player is still online during this time |
305 | | - .replace("{UPTIME}", DateUtil.formatDateDiff(ManagementFactory.getRuntimeMXBean().getStartTime())) |
306 | | - .replace("{PREFIX}", FormatUtil.replaceFormat(ess.getPermissionsHandler().getPrefix(player))) |
307 | | - .replace("{SUFFIX}", FormatUtil.replaceFormat(ess.getPermissionsHandler().getSuffix(player))); |
| 302 | + final String msg = buildQuitMessage(user); |
308 | 303 |
|
309 | 304 | event.setQuitMessage(msg.isEmpty() ? null : msg); |
310 | 305 | } |
@@ -341,6 +336,50 @@ public void onPlayerQuit(final PlayerQuitEvent event) { |
341 | 336 | user.dispose(); |
342 | 337 | } |
343 | 338 |
|
| 339 | + @EventHandler(ignoreCancelled = true, priority = EventPriority.MONITOR) |
| 340 | + public void onVanishStatusChange(final VanishStatusChangeEvent event) { |
| 341 | + if (!ess.getSettings().isVanishFakeJoinLeave()) { |
| 342 | + return; |
| 343 | + } |
| 344 | + |
| 345 | + if (event.getValue()) { |
| 346 | + final String quitMessage = buildQuitMessage((User) event.getAffected()); |
| 347 | + |
| 348 | + if (!quitMessage.isEmpty()) { |
| 349 | + Bukkit.broadcastMessage(quitMessage); |
| 350 | + } |
| 351 | + |
| 352 | + return; |
| 353 | + } |
| 354 | + |
| 355 | + final String joinMessage = buildJoinMessage((User) event.getAffected(), false, null); |
| 356 | + |
| 357 | + if (!joinMessage.isEmpty()) { |
| 358 | + Bukkit.broadcastMessage(joinMessage); |
| 359 | + } |
| 360 | + } |
| 361 | + |
| 362 | + private String buildJoinMessage(final User user, boolean newUsername, String lastAccountName) { |
| 363 | + return (newUsername && ess.getSettings().isCustomNewUsernameMessage() ? ess.getSettings().getCustomNewUsernameMessage() : ess.getSettings().getCustomJoinMessage()) |
| 364 | + .replace("{PLAYER}", user.getDisplayName()).replace("{USERNAME}", user.getName()) |
| 365 | + .replace("{UNIQUE}", NumberFormat.getInstance().format(ess.getUsers().getUserCount())) |
| 366 | + .replace("{ONLINE}", NumberFormat.getInstance().format(ess.getOnlinePlayers().size())) |
| 367 | + .replace("{UPTIME}", DateUtil.formatDateDiff(ManagementFactory.getRuntimeMXBean().getStartTime())) |
| 368 | + .replace("{PREFIX}", FormatUtil.replaceFormat(ess.getPermissionsHandler().getPrefix(user.getBase()))) |
| 369 | + .replace("{SUFFIX}", FormatUtil.replaceFormat(ess.getPermissionsHandler().getSuffix(user.getBase()))) |
| 370 | + .replace("{OLDUSERNAME}", lastAccountName == null ? "" : lastAccountName); |
| 371 | + } |
| 372 | + |
| 373 | + private String buildQuitMessage(final User user) { |
| 374 | + return ess.getSettings().getCustomQuitMessage() |
| 375 | + .replace("{PLAYER}", user.getDisplayName()) |
| 376 | + .replace("{USERNAME}", user.getName()) |
| 377 | + .replace("{ONLINE}", NumberFormat.getInstance().format(ess.getOnlinePlayers().size() - 1)) // Subtract 1 as the leaving player is still online during this time |
| 378 | + .replace("{UPTIME}", DateUtil.formatDateDiff(ManagementFactory.getRuntimeMXBean().getStartTime())) |
| 379 | + .replace("{PREFIX}", FormatUtil.replaceFormat(ess.getPermissionsHandler().getPrefix(user.getBase()))) |
| 380 | + .replace("{SUFFIX}", FormatUtil.replaceFormat(ess.getPermissionsHandler().getSuffix(user.getBase()))); |
| 381 | + } |
| 382 | + |
344 | 383 | @SuppressWarnings("UnstableApiUsage") |
345 | 384 | private final class JoinListener1_21 implements Listener { |
346 | 385 | private final Map<UUID, String> newUserLocales = new ConcurrentHashMap<>(); |
@@ -458,14 +497,7 @@ private void joinFlow(final User user, final long currentTime, final String mess |
458 | 497 | } else if (message == null || hideJoinQuitMessages()) { |
459 | 498 | effectiveMessage = null; |
460 | 499 | } else if (ess.getSettings().isCustomJoinMessage()) { |
461 | | - final String msg = (newUsername && ess.getSettings().isCustomNewUsernameMessage() ? ess.getSettings().getCustomNewUsernameMessage() : ess.getSettings().getCustomJoinMessage()) |
462 | | - .replace("{PLAYER}", user.getDisplayName()).replace("{USERNAME}", user.getName()) |
463 | | - .replace("{UNIQUE}", NumberFormat.getInstance().format(ess.getUsers().getUserCount())) |
464 | | - .replace("{ONLINE}", NumberFormat.getInstance().format(ess.getOnlinePlayers().size())) |
465 | | - .replace("{UPTIME}", DateUtil.formatDateDiff(ManagementFactory.getRuntimeMXBean().getStartTime())) |
466 | | - .replace("{PREFIX}", FormatUtil.replaceFormat(ess.getPermissionsHandler().getPrefix(user.getBase()))) |
467 | | - .replace("{SUFFIX}", FormatUtil.replaceFormat(ess.getPermissionsHandler().getSuffix(user.getBase()))) |
468 | | - .replace("{OLDUSERNAME}", lastAccountName == null ? "" : lastAccountName); |
| 500 | + final String msg = buildJoinMessage(user, newUsername, lastAccountName); |
469 | 501 | effectiveMessage = msg.isEmpty() ? null : msg; |
470 | 502 | } else if (ess.getSettings().allowSilentJoinQuit()) { |
471 | 503 | effectiveMessage = message; |
|
0 commit comments