001package co.aikar.commands; 002 003import java.util.concurrent.TimeUnit; 004 005import com.velocitypowered.api.event.Subscribe; 006import com.velocitypowered.api.event.connection.DisconnectEvent; 007import com.velocitypowered.api.event.connection.PostLoginEvent; 008import com.velocitypowered.api.event.player.PlayerSettingsChangedEvent; 009import com.velocitypowered.api.plugin.PluginContainer; 010import com.velocitypowered.api.proxy.Player; 011import com.velocitypowered.api.proxy.ProxyServer; 012 013public class ACFVelocityListener { 014 015 private final VelocityCommandManager manager; 016 private final PluginContainer plugin; 017 private final ProxyServer proxy; 018 019 public ACFVelocityListener(VelocityCommandManager manager, PluginContainer plugin, ProxyServer proxy) { 020 this.manager = manager; 021 this.plugin = plugin; 022 this.proxy = proxy; 023 } 024 025 @Subscribe 026 public void onPlayerJoin(PostLoginEvent loginEvent) { 027 Player player = loginEvent.getPlayer(); 028 029 // the client settings are sent after a successful login 030 Runnable task = () -> manager.readLocale(player); 031 proxy.getScheduler().buildTask(plugin, task).delay(1, TimeUnit.SECONDS).schedule(); 032 } 033 034 @Subscribe 035 public void onDisconnect(DisconnectEvent disconnectEvent) { 036 // cleanup 037 Player player = disconnectEvent.getPlayer(); 038 manager.issuersLocale.remove(player.getUniqueId()); 039 } 040 041 @Subscribe 042 public void onSettingsChange(PlayerSettingsChangedEvent settingsEvent) { 043 manager.setIssuerLocale(settingsEvent.getPlayer(), settingsEvent.getPlayer().getPlayerSettings().getLocale()); 044 } 045}