/
minecraftbackup
/
AnarchyExploitFixes
Обзор
Документация
Войти
/
minecraftbackup
/
AnarchyExploitFixes
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
master
AnarchyExploitFixesLegacy/src/main/java/me/xginko/aef/modules/misc/FirstJoinMessages.java
74 строки
3 KB
Ginko
2.7.2 release (#233)
13 авг 2024, 08:21
Не верифицирован
13 авг 2024, 08:21
d20da6e
Код
Авторство
О чём код?
package me.xginko.aef.modules.misc; import me.xginko.aef.AnarchyExploitFixes; import me.xginko.aef.enums.AEFPermission; import me.xginko.aef.modules.AEFModule; import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; import org.bukkit.event.EventPriority; import org.bukkit.event.HandlerList; import org.bukkit.event.Listener; import org.bukkit.event.player.PlayerJoinEvent; import java.util.concurrent.CompletableFuture; import java.util.concurrent.atomic.AtomicInteger; public class FirstJoinMessages extends AEFModule implements Listener { private final AtomicInteger totalPlayers; private final boolean logFirstJoin; public FirstJoinMessages() { super("misc.join-leave-messages.first-join-messages"); this.totalPlayers = new AtomicInteger(0); this.config.addComment(configPath + ".enable", "Configure message in lang folder.\n" + "You can hide yourself and other players using the permission:\n" + AEFPermission.SILENT_JOIN.string()); this.logFirstJoin = config.getBoolean(configPath + ".show-in-console", true); } @Override public void enable() { // Prevent lag by getting total player number once and then counting up manually, // as getting all players is resource intense. // We do so async to not make the main thread wait. CompletableFuture.runAsync(() -> totalPlayers.set(plugin.getServer().getOfflinePlayers().length)) .thenRun(() -> plugin.getServer().getPluginManager().registerEvents(this, plugin)); } @Override public boolean shouldEnable() { return config.getBoolean(configPath + ".enable", false); } @Override public void disable() { HandlerList.unregisterAll(this); } @EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true) private void onPlayerJoin(PlayerJoinEvent event) { final Player joiningPlayer = event.getPlayer(); if (joiningPlayer.hasPlayedBefore()) return; if (joiningPlayer.hasPermission(AEFPermission.SILENT_JOIN.string())) return; final int playersNumber = totalPlayers.incrementAndGet(); for (final Player onlinePlayer : plugin.getServer().getOnlinePlayers()) { AnarchyExploitFixes.getDatastore().getJoinLeaveEnabled(onlinePlayer.getUniqueId()).thenAccept(enabled -> { if (enabled) AnarchyExploitFixes.getLang(onlinePlayer.getLocale()).misc_firstJoinMessage. forEach(line -> onlinePlayer.sendMessage(line .replace("%player%", joiningPlayer.getName()) .replace("%players_num%", Integer.toString(playersNumber)))); }); } if (logFirstJoin) { AnarchyExploitFixes.getLang(joiningPlayer.getLocale()).misc_firstJoinMessage .forEach(line -> AnarchyExploitFixes.unprefixedLogger().info(line .replace("%player%", joiningPlayer.getName()) .replace("%players_num%", Integer.toString(playersNumber)))); } } }