package fr.Alphart.BAT.Modules.Mute; import java.sql.Connection; import java.sql.SQLException; import java.sql.Statement; import net.md_5.bungee.api.ProxyServer; import net.md_5.bungee.api.connection.ProxiedPlayer; import fr.Alphart.BAT.BAT; import fr.Alphart.BAT.database.DataSourceHandler; import fr.Alphart.BAT.database.SQLQueries; /** * This task handles the mute related update :<br> * - check in the db for every active mute if it is finished if this is the case * : set mute_(ip)state to 0<br> * - update the PlayerMuteData of every player on the server <br> * <b>This task must be run asynchronously </b> */ public class MuteTask implements Runnable { private final Mute mute; public MuteTask(final Mute muteModule) { mute = muteModule; } @Override public void run() { Statement statement = null; try (Connection conn = BAT.getConnection()) { statement = conn.createStatement(); if (DataSourceHandler.isSQLite()) { statement.executeUpdate(SQLQueries.Mute.SQLite.updateExpiredMute); } else { statement.executeUpdate(SQLQueries.Mute.updateExpiredMute); } } catch (final SQLException e) { DataSourceHandler.handleException(e); } finally { DataSourceHandler.close(statement); } // Update player mute data for (final ProxiedPlayer player : ProxyServer.getInstance().getPlayers()) { mute.updateMuteData(player.getName()); } } }