mirror of
https://github.com/TheDeus-Group/TFM-4.3-Reloaded.git
synced 2024-06-11 02:24:55 +00:00
90 lines
2.9 KiB
Java
90 lines
2.9 KiB
Java
package me.StevenLawson.TotalFreedomMod;
|
|
|
|
import me.StevenLawson.TotalFreedomMod.World.TFM_AdminWorld;
|
|
import me.StevenLawson.TotalFreedomMod.Bridge.TFM_EssentialsBridge;
|
|
import me.StevenLawson.TotalFreedomMod.Config.TFM_ConfigEntry;
|
|
import org.bukkit.Server;
|
|
import org.bukkit.World;
|
|
import org.bukkit.entity.Player;
|
|
import org.bukkit.scheduler.BukkitRunnable;
|
|
|
|
public class TFM_Heartbeat extends BukkitRunnable
|
|
{
|
|
private static final long AUTO_KICK_TIME = (long) TFM_ConfigEntry.AUTOKICK_TIME.getInteger() * 1000L;
|
|
private final TotalFreedomMod plugin;
|
|
private final Server server;
|
|
private static Long lastRan = null;
|
|
|
|
public TFM_Heartbeat(TotalFreedomMod instance)
|
|
{
|
|
this.plugin = instance;
|
|
this.server = plugin.getServer();
|
|
}
|
|
|
|
public static Long getLastRan()
|
|
{
|
|
return lastRan;
|
|
}
|
|
|
|
@Override
|
|
public void run()
|
|
{
|
|
lastRan = System.currentTimeMillis();
|
|
|
|
final boolean doAwayKickCheck =
|
|
TFM_ConfigEntry.AUTOKICK_ENABLED.getBoolean()
|
|
&& TFM_EssentialsBridge.isEssentialsEnabled()
|
|
&& ((server.getOnlinePlayers().length / server.getMaxPlayers()) > TFM_ConfigEntry.AUTOKICK_THRESHOLD.getDouble());
|
|
|
|
for (Player player : server.getOnlinePlayers())
|
|
{
|
|
final TFM_PlayerData playerdata = TFM_PlayerData.getPlayerData(player);
|
|
playerdata.resetMsgCount();
|
|
playerdata.resetBlockDestroyCount();
|
|
playerdata.resetBlockPlaceCount();
|
|
|
|
if (doAwayKickCheck)
|
|
{
|
|
final long lastActivity = TFM_EssentialsBridge.getLastActivity(player.getName());
|
|
if (lastActivity > 0 && lastActivity + AUTO_KICK_TIME < System.currentTimeMillis())
|
|
{
|
|
player.kickPlayer("Automatically kicked by server for inactivity.");
|
|
}
|
|
}
|
|
}
|
|
|
|
if (TFM_ConfigEntry.AUTO_ENTITY_WIPE.getBoolean())
|
|
{
|
|
TFM_Util.TFM_EntityWiper.wipeEntities(!TFM_ConfigEntry.ALLOW_EXPLOSIONS.getBoolean(), false);
|
|
}
|
|
|
|
if (TFM_ConfigEntry.DISABLE_WEATHER.getBoolean())
|
|
{
|
|
for (World world : server.getWorlds())
|
|
{
|
|
try
|
|
{
|
|
if (world == TFM_AdminWorld.getInstance().getWorld() && TFM_AdminWorld.getInstance().getWeatherMode() != TFM_AdminWorld.WeatherMode.OFF)
|
|
{
|
|
continue;
|
|
}
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
}
|
|
|
|
if (world.getWeatherDuration() > 0)
|
|
{
|
|
world.setThundering(false);
|
|
world.setWeatherDuration(0);
|
|
}
|
|
else if (world.getThunderDuration() > 0)
|
|
{
|
|
world.setStorm(false);
|
|
world.setThunderDuration(0);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|