mirror of
https://github.com/AtlasMediaGroup/TotalFreedomMod.git
synced 2025-07-01 12:36:41 +00:00
Mavenized project
This commit is contained in:
75
src/main/java/me/totalfreedom/totalfreedommod/AutoKick.java
Normal file
75
src/main/java/me/totalfreedom/totalfreedommod/AutoKick.java
Normal file
@ -0,0 +1,75 @@
|
||||
package me.totalfreedom.totalfreedommod;
|
||||
|
||||
import me.totalfreedom.totalfreedommod.config.ConfigEntry;
|
||||
import me.totalfreedom.totalfreedommod.util.FUtil;
|
||||
import net.pravian.aero.component.service.AbstractService;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.scheduler.BukkitRunnable;
|
||||
import org.bukkit.scheduler.BukkitTask;
|
||||
|
||||
public class AutoKick extends AbstractService<TotalFreedomMod>
|
||||
{
|
||||
|
||||
public static final long AUTOKICK_RATE = 10 * 20L;
|
||||
//
|
||||
private BukkitTask kickTask = null;
|
||||
private long autoKickTicks;
|
||||
private double autoKickThreshold;
|
||||
|
||||
public AutoKick(TotalFreedomMod plugin)
|
||||
{
|
||||
super(plugin);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onStart()
|
||||
{
|
||||
autoKickTicks = (long) ConfigEntry.AUTOKICK_TIME.getInteger() * 1000L;
|
||||
autoKickThreshold = ConfigEntry.AUTOKICK_THRESHOLD.getDouble();
|
||||
|
||||
if (!ConfigEntry.AUTOKICK_ENABLED.getBoolean())
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
kickTask = new BukkitRunnable()
|
||||
{
|
||||
|
||||
@Override
|
||||
public void run()
|
||||
{
|
||||
autoKickCheck();
|
||||
}
|
||||
}.runTaskTimer(plugin, AUTOKICK_RATE, AUTOKICK_RATE);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onStop()
|
||||
{
|
||||
FUtil.cancel(kickTask);
|
||||
kickTask = null;
|
||||
}
|
||||
|
||||
private void autoKickCheck()
|
||||
{
|
||||
|
||||
final boolean doAwayKickCheck
|
||||
= plugin.esb.isEssentialsEnabled()
|
||||
&& ((server.getOnlinePlayers().size() / server.getMaxPlayers()) > autoKickThreshold);
|
||||
|
||||
if (!doAwayKickCheck)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
for (Player player : server.getOnlinePlayers())
|
||||
{
|
||||
final long lastActivity = plugin.esb.getLastActivity(player.getName());
|
||||
if (lastActivity > 0 && lastActivity + autoKickTicks < System.currentTimeMillis())
|
||||
{
|
||||
player.kickPlayer("Automatically kicked by server for inactivity.");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
Reference in New Issue
Block a user