/
minecraftbackup
/
AnarchyExploitFixes
Обзор
Документация
Войти
/
minecraftbackup
/
AnarchyExploitFixes
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
master
AnarchyExploitFixesFolia/src/main/java/me/xginko/aef/modules/misc/JoinLeaveMessages.java
104 строки
5 KB
xGinko
more config touchup
07 июн 2024, 02:48
07 июн 2024, 02:48
24d5886
Код
Авторство
О чём код?
package me.xginko.aef.modules.misc; import me.xginko.aef.AnarchyExploitFixes; import me.xginko.aef.enums.AEFKey; import me.xginko.aef.enums.AEFPermission; import me.xginko.aef.modules.AEFModule; import net.kyori.adventure.text.Component; import net.kyori.adventure.text.TextReplacementConfig; 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 org.bukkit.event.player.PlayerQuitEvent; import org.bukkit.persistence.PersistentDataContainer; import org.bukkit.persistence.PersistentDataType; public class JoinLeaveMessages extends AEFModule implements Listener { private final boolean connectionMsgsOnByDefault, showInConsole, firstJoinEnabled; public JoinLeaveMessages() { super("misc.join-leave-messages"); config.addComment(configPath + ".enable", "If you want to hide yourself or someone else when logging\n" + "into the game, use these permissions:\n" + AEFPermission.SILENT_JOIN.string() + ", " + AEFPermission.SILENT_LEAVE.string()); this.connectionMsgsOnByDefault = config.connectionMsgsAreOnByDefault; this.showInConsole = config.getBoolean(configPath + ".show-in-console", false); this.firstJoinEnabled = config.getBoolean(configPath + ".first-join-messages.enable", false); } @Override public void enable() { plugin.getServer().getPluginManager().registerEvents(this, plugin); } @Override public boolean shouldEnable() { return config.getBoolean(configPath + ".enable", true); } @Override public void disable() { HandlerList.unregisterAll(this); } @SuppressWarnings("DataFlowIssue") @EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true) private void onPlayerJoinEvent(PlayerJoinEvent event) { event.joinMessage(null); final Player joiningPlayer = event.getPlayer(); if (joiningPlayer.hasPermission(AEFPermission.SILENT_JOIN.string())) return; if (firstJoinEnabled && !joiningPlayer.hasPlayedBefore()) return; for (final Player onlinePlayer : plugin.getServer().getOnlinePlayers()) { onlinePlayer.getScheduler().execute(plugin, () -> { final PersistentDataContainer dataContainer = onlinePlayer.getPersistentDataContainer(); if ( !dataContainer.has(AEFKey.CONNECT_MSG_TOGGLE.getKey()) ? connectionMsgsOnByDefault : dataContainer.get(AEFKey.CONNECT_MSG_TOGGLE.getKey(), PersistentDataType.BOOLEAN) ) { onlinePlayer.sendMessage(AnarchyExploitFixes.getLang(onlinePlayer.locale()).misc_joinMessage .replaceText(TextReplacementConfig.builder().matchLiteral("%player%").replacement(joiningPlayer.name()).build())); } }, null, 1L); } if (showInConsole) { AnarchyExploitFixes.getUnprefixedLogger().info(AnarchyExploitFixes.getLang(joiningPlayer.locale()).misc_joinMessage .replaceText(TextReplacementConfig.builder().matchLiteral("%player%").replacement(joiningPlayer.name()).build()) .append(Component.text(" (" + joiningPlayer.locale() + ")"))); } } @SuppressWarnings("DataFlowIssue") @EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true) private void onPlayerLeaveEvent(PlayerQuitEvent event) { event.quitMessage(null); final Player leavingPlayer = event.getPlayer(); if (leavingPlayer.hasPermission(AEFPermission.SILENT_LEAVE.string())) return; for (final Player onlinePlayer : plugin.getServer().getOnlinePlayers()) { onlinePlayer.getScheduler().execute(plugin, () -> { if (onlinePlayer.getUniqueId().equals(leavingPlayer.getUniqueId())) return; final PersistentDataContainer dataContainer = onlinePlayer.getPersistentDataContainer(); if ( !dataContainer.has(AEFKey.CONNECT_MSG_TOGGLE.getKey()) ? connectionMsgsOnByDefault : dataContainer.get(AEFKey.CONNECT_MSG_TOGGLE.getKey(), PersistentDataType.BOOLEAN) ) { onlinePlayer.sendMessage(AnarchyExploitFixes.getLang(onlinePlayer.locale()).misc_leaveMessage .replaceText(TextReplacementConfig.builder().matchLiteral("%player%").replacement(leavingPlayer.name()).build())); } }, null, 1L); } if (showInConsole) { AnarchyExploitFixes.getUnprefixedLogger().info(AnarchyExploitFixes.getLang(leavingPlayer.locale()).misc_leaveMessage .replaceText(TextReplacementConfig.builder().matchLiteral("%player%").replacement(leavingPlayer.name()).build()) .append(Component.text(" (" + leavingPlayer.locale() + ")"))); } } }