mirror of
https://github.com/essentials/Essentials.git
synced 2025-08-17 03:54:19 +02:00
There is no need to start a second task to measure lag, it can in fact be measured with enough precision from the exisitng one.
This commit is contained in:
@@ -84,7 +84,7 @@ public class Essentials extends JavaPlugin implements IEssentials
|
|||||||
private transient ExecuteTimer execTimer;
|
private transient ExecuteTimer execTimer;
|
||||||
private transient I18n i18n;
|
private transient I18n i18n;
|
||||||
private transient Metrics metrics;
|
private transient Metrics metrics;
|
||||||
private transient LagMeter lagMeter;
|
private transient EssentialsTimer timer;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public ISettings getSettings()
|
public ISettings getSettings()
|
||||||
@@ -239,12 +239,9 @@ public class Essentials extends JavaPlugin implements IEssentials
|
|||||||
|
|
||||||
pm.registerEvents(tntListener, this);
|
pm.registerEvents(tntListener, this);
|
||||||
|
|
||||||
final EssentialsTimer timer = new EssentialsTimer(this);
|
timer = new EssentialsTimer(this);
|
||||||
getScheduler().scheduleSyncRepeatingTask(this, timer, 1, 100);
|
getScheduler().scheduleSyncRepeatingTask(this, timer, 1, 100);
|
||||||
|
|
||||||
lagMeter = new LagMeter();
|
|
||||||
getScheduler().scheduleSyncRepeatingTask(this, lagMeter, 0, 40);
|
|
||||||
|
|
||||||
Economy.setEss(this);
|
Economy.setEss(this);
|
||||||
execTimer.mark("RegListeners");
|
execTimer.mark("RegListeners");
|
||||||
|
|
||||||
@@ -626,9 +623,10 @@ public class Essentials extends JavaPlugin implements IEssentials
|
|||||||
return i18n;
|
return i18n;
|
||||||
}
|
}
|
||||||
|
|
||||||
public LagMeter getLagMeter()
|
@Override
|
||||||
|
public EssentialsTimer getTimer()
|
||||||
{
|
{
|
||||||
return lagMeter;
|
return timer;
|
||||||
}
|
}
|
||||||
|
|
||||||
private static class EssentialsWorldListener implements Listener, Runnable
|
private static class EssentialsWorldListener implements Listener, Runnable
|
||||||
|
@@ -2,6 +2,7 @@ package com.earth2me.essentials;
|
|||||||
|
|
||||||
import java.util.HashSet;
|
import java.util.HashSet;
|
||||||
import java.util.Iterator;
|
import java.util.Iterator;
|
||||||
|
import java.util.LinkedList;
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
import java.util.logging.Level;
|
import java.util.logging.Level;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
@@ -11,6 +12,8 @@ public class EssentialsTimer implements Runnable
|
|||||||
{
|
{
|
||||||
private final transient IEssentials ess;
|
private final transient IEssentials ess;
|
||||||
private final transient Set<User> onlineUsers = new HashSet<User>();
|
private final transient Set<User> onlineUsers = new HashSet<User>();
|
||||||
|
private transient long lastPoll = System.currentTimeMillis() - 3000;
|
||||||
|
private final transient LinkedList<Float> history = new LinkedList<Float>();
|
||||||
|
|
||||||
EssentialsTimer(final IEssentials ess)
|
EssentialsTimer(final IEssentials ess)
|
||||||
{
|
{
|
||||||
@@ -21,6 +24,21 @@ public class EssentialsTimer implements Runnable
|
|||||||
public void run()
|
public void run()
|
||||||
{
|
{
|
||||||
final long currentTime = System.currentTimeMillis();
|
final long currentTime = System.currentTimeMillis();
|
||||||
|
long timeSpent = (currentTime - lastPoll) / 1000;
|
||||||
|
if (timeSpent == 0)
|
||||||
|
{
|
||||||
|
timeSpent = 1;
|
||||||
|
}
|
||||||
|
if (history.size() > 10)
|
||||||
|
{
|
||||||
|
history.remove();
|
||||||
|
}
|
||||||
|
float tps = 100f / timeSpent;
|
||||||
|
if (tps <= 20)
|
||||||
|
{
|
||||||
|
history.add(tps);
|
||||||
|
}
|
||||||
|
lastPoll = currentTime;
|
||||||
for (Player player : ess.getServer().getOnlinePlayers())
|
for (Player player : ess.getServer().getOnlinePlayers())
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
@@ -51,4 +69,17 @@ public class EssentialsTimer implements Runnable
|
|||||||
user.resetInvulnerabilityAfterTeleport();
|
user.resetInvulnerabilityAfterTeleport();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public float getAverageTPS()
|
||||||
|
{
|
||||||
|
float avg = 0;
|
||||||
|
for (Float f : history)
|
||||||
|
{
|
||||||
|
if (f != null)
|
||||||
|
{
|
||||||
|
avg += f;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return avg / history.size();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@@ -71,5 +71,5 @@ public interface IEssentials extends Plugin
|
|||||||
|
|
||||||
void setMetrics(Metrics metrics);
|
void setMetrics(Metrics metrics);
|
||||||
|
|
||||||
LagMeter getLagMeter();
|
EssentialsTimer getTimer();
|
||||||
}
|
}
|
||||||
|
@@ -1,44 +0,0 @@
|
|||||||
package com.earth2me.essentials;
|
|
||||||
|
|
||||||
import java.util.LinkedList;
|
|
||||||
|
|
||||||
|
|
||||||
public class LagMeter implements Runnable
|
|
||||||
{
|
|
||||||
private transient long lastPoll = System.currentTimeMillis() - 3000;
|
|
||||||
private final transient LinkedList<Float> history = new LinkedList<Float>();
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void run()
|
|
||||||
{
|
|
||||||
long now = System.currentTimeMillis();
|
|
||||||
long timeSpent = (now - lastPoll) / 1000;
|
|
||||||
if (timeSpent == 0)
|
|
||||||
{
|
|
||||||
timeSpent = 1;
|
|
||||||
}
|
|
||||||
if (history.size() > 10)
|
|
||||||
{
|
|
||||||
history.remove();
|
|
||||||
}
|
|
||||||
float tps = 40f / timeSpent;
|
|
||||||
if (tps <= 20)
|
|
||||||
{
|
|
||||||
history.add(tps);
|
|
||||||
}
|
|
||||||
lastPoll = now;
|
|
||||||
}
|
|
||||||
|
|
||||||
public float getAverageTPS()
|
|
||||||
{
|
|
||||||
float avg = 0;
|
|
||||||
for (Float f : history)
|
|
||||||
{
|
|
||||||
if (f != null)
|
|
||||||
{
|
|
||||||
avg += f;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return avg / history.size();
|
|
||||||
}
|
|
||||||
}
|
|
@@ -17,7 +17,7 @@ public class Commandgc extends EssentialsCommand
|
|||||||
@Override
|
@Override
|
||||||
protected void run(final Server server, final CommandSender sender, final String commandLabel, final String[] args) throws Exception
|
protected void run(final Server server, final CommandSender sender, final String commandLabel, final String[] args) throws Exception
|
||||||
{
|
{
|
||||||
float tps = ess.getLagMeter().getAverageTPS();
|
float tps = ess.getTimer().getAverageTPS();
|
||||||
ChatColor color;
|
ChatColor color;
|
||||||
if (tps >= 18)
|
if (tps >= 18)
|
||||||
{
|
{
|
||||||
|
Reference in New Issue
Block a user