Added Player version stat tracking.
Added server group stats.
This commit is contained in:
parent
aae40d3899
commit
6963f6bacf
@ -222,9 +222,9 @@
|
|||||||
</jar>
|
</jar>
|
||||||
<copy file="../bin/ServerMonitor.jar" todir="../../Testing/ServerMonitor/"/>
|
<copy file="../bin/ServerMonitor.jar" todir="../../Testing/ServerMonitor/"/>
|
||||||
</target>
|
</target>
|
||||||
<target name ="ServerStatus" description="ServerStatus">
|
<target name ="ServerStatifier" description="ServerStatifier">
|
||||||
<jar jarfile="../bin/ServerStatus.jar">
|
<jar jarfile="../bin/ServerStatifier.jar">
|
||||||
<fileset dir="../Mineplex.ServerStatus/bin">
|
<fileset dir="../Mineplex.ServerStatifier/bin">
|
||||||
<include name="**/*.class"/>
|
<include name="**/*.class"/>
|
||||||
</fileset>
|
</fileset>
|
||||||
|
|
||||||
@ -232,9 +232,9 @@
|
|||||||
|
|
||||||
<manifest>
|
<manifest>
|
||||||
<attribute name="Main-Class"
|
<attribute name="Main-Class"
|
||||||
value="mineplex.serverstatus.ServerStatus"/>
|
value="mineplex.serverstatifier.ServerStatifier"/>
|
||||||
</manifest>
|
</manifest>
|
||||||
</jar>
|
</jar>
|
||||||
<copy file="../bin/ServerStatus.jar" todir="../../Testing/ServerStatus/"/>
|
<copy file="../bin/ServerStatifier.jar" todir="../../Testing/ServerStatifier/"/>
|
||||||
</target>
|
</target>
|
||||||
</project>
|
</project>
|
@ -24,5 +24,6 @@ public class PlayerStats implements Listener
|
|||||||
public void playerConnect(PostLoginEvent event)
|
public void playerConnect(PostLoginEvent event)
|
||||||
{
|
{
|
||||||
_repository.addPlayer(event.getPlayer().getName());
|
_repository.addPlayer(event.getPlayer().getName());
|
||||||
|
_repository.addPlayerVersion(event.getPlayer().getName(), (event.getPlayer().getPendingConnection().getVersion() == 4 ? "1.7" : "1.6"));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -15,6 +15,9 @@ public class PlayerStatsRepository
|
|||||||
|
|
||||||
private static String CREATE_TABLE = "CREATE TABLE IF NOT EXISTS DailyUnique (id INT NOT NULL AUTO_INCREMENT, day VARCHAR(100), playerName VARCHAR(20), PRIMARY KEY (id), UNIQUE KEY unique_player_per_day (day, playerName));";
|
private static String CREATE_TABLE = "CREATE TABLE IF NOT EXISTS DailyUnique (id INT NOT NULL AUTO_INCREMENT, day VARCHAR(100), playerName VARCHAR(20), PRIMARY KEY (id), UNIQUE KEY unique_player_per_day (day, playerName));";
|
||||||
private static String INSERT_PLAYER = "INSERT INTO DailyUnique (day, playerName) values(curdate(), ?) ON DUPLICATE KEY UPDATE playerName=playerName;";
|
private static String INSERT_PLAYER = "INSERT INTO DailyUnique (day, playerName) values(curdate(), ?) ON DUPLICATE KEY UPDATE playerName=playerName;";
|
||||||
|
|
||||||
|
private static String CREATE_VER_TABLE = "CREATE TABLE IF NOT EXISTS PlayerVersion (id INT NOT NULL AUTO_INCREMENT, playerName VARCHAR(20), version VARCHAR(40), PRIMARY KEY (id), UNIQUE KEY unique_player (playerName));";
|
||||||
|
private static String INSERT_VER_PLAYER = "INSERT INTO PlayerVersion (playerName, version) values(?, ?) ON DUPLICATE KEY UPDATE version=version;";
|
||||||
|
|
||||||
public void initialize()
|
public void initialize()
|
||||||
{
|
{
|
||||||
@ -28,6 +31,11 @@ public class PlayerStatsRepository
|
|||||||
// Create table
|
// Create table
|
||||||
preparedStatement = _connection.prepareStatement(CREATE_TABLE);
|
preparedStatement = _connection.prepareStatement(CREATE_TABLE);
|
||||||
preparedStatement.execute();
|
preparedStatement.execute();
|
||||||
|
|
||||||
|
preparedStatement.close();
|
||||||
|
|
||||||
|
preparedStatement = _connection.prepareStatement(CREATE_VER_TABLE);
|
||||||
|
preparedStatement.execute();
|
||||||
}
|
}
|
||||||
catch (Exception exception)
|
catch (Exception exception)
|
||||||
{
|
{
|
||||||
@ -101,4 +109,58 @@ public class PlayerStatsRepository
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public boolean addPlayerVersion(String playerName, String version)
|
||||||
|
{
|
||||||
|
PreparedStatement preparedStatement = null;
|
||||||
|
|
||||||
|
try
|
||||||
|
{
|
||||||
|
if (_connection == null || _connection.isClosed())
|
||||||
|
_connection = DriverManager.getConnection(_connectionString, _userName, _password);
|
||||||
|
|
||||||
|
preparedStatement = _connection.prepareStatement(INSERT_VER_PLAYER, Statement.RETURN_GENERATED_KEYS);
|
||||||
|
|
||||||
|
preparedStatement.setString(1, playerName);
|
||||||
|
preparedStatement.setString(2, version);
|
||||||
|
|
||||||
|
int affectedRows = preparedStatement.executeUpdate();
|
||||||
|
|
||||||
|
if (affectedRows == 0)
|
||||||
|
{
|
||||||
|
throw new SQLException("Adding player version record failed, no rows affected.");
|
||||||
|
}
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
catch (Exception exception)
|
||||||
|
{
|
||||||
|
exception.printStackTrace();
|
||||||
|
|
||||||
|
try
|
||||||
|
{
|
||||||
|
Thread.sleep(10);
|
||||||
|
}
|
||||||
|
catch (InterruptedException e)
|
||||||
|
{
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
|
||||||
|
return addPlayer(playerName);
|
||||||
|
}
|
||||||
|
finally
|
||||||
|
{
|
||||||
|
if (preparedStatement != null)
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
preparedStatement.close();
|
||||||
|
}
|
||||||
|
catch (SQLException e)
|
||||||
|
{
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -15,10 +15,47 @@ public class GroupStatusData
|
|||||||
public int MaxServerNumber;
|
public int MaxServerNumber;
|
||||||
|
|
||||||
public List<ServerStatusData> EmptyServers = new ArrayList<ServerStatusData>();
|
public List<ServerStatusData> EmptyServers = new ArrayList<ServerStatusData>();
|
||||||
|
public List<ServerStatusData> KillServers = new ArrayList<ServerStatusData>();
|
||||||
public HashMap<Integer, ServerStatusData> Servers = new HashMap<Integer, ServerStatusData>();
|
public HashMap<Integer, ServerStatusData> Servers = new HashMap<Integer, ServerStatusData>();
|
||||||
|
|
||||||
public void addServer(ServerStatusData serverStatusData)
|
public void addServer(ServerStatusData serverStatusData)
|
||||||
{
|
{
|
||||||
|
if (Servers.containsKey(Integer.parseInt(serverStatusData.Name.split("-")[1])))
|
||||||
|
{
|
||||||
|
ServerStatusData existingServer = Servers.get(Integer.parseInt(serverStatusData.Name.split("-")[1]));
|
||||||
|
int existingCount = existingServer.Players;
|
||||||
|
int newCount = serverStatusData.Players;
|
||||||
|
|
||||||
|
if (newCount == 0 || newCount < existingCount)
|
||||||
|
{
|
||||||
|
KillServers.add(serverStatusData);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
else if (existingCount == 0 || newCount > existingCount)
|
||||||
|
{
|
||||||
|
KillServers.add(existingServer);
|
||||||
|
Players -= existingServer.Players;
|
||||||
|
MaxPlayers -= existingServer.MaxPlayers;
|
||||||
|
|
||||||
|
if (existingServer.Motd != null && (existingServer.Motd.contains("Starting") || existingServer.Motd.contains("Recruiting") || existingServer.Motd.contains("Waiting") || existingServer.Motd.contains("Cup") || existingServer.Motd.isEmpty() || existingServer.Motd.equals("")))
|
||||||
|
{
|
||||||
|
if (existingServer.Players < existingServer.MaxPlayers)
|
||||||
|
{
|
||||||
|
// Lobby joinable checking
|
||||||
|
if (existingServer.Motd.isEmpty() || existingServer.Motd.equals(""))
|
||||||
|
{
|
||||||
|
if (existingServer.Players / existingServer.MaxPlayers < 10)
|
||||||
|
_joinableCount--;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
_joinableCount--;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
Players += serverStatusData.Players;
|
Players += serverStatusData.Players;
|
||||||
MaxPlayers += serverStatusData.MaxPlayers;
|
MaxPlayers += serverStatusData.MaxPlayers;
|
||||||
|
|
||||||
@ -37,7 +74,7 @@ public class GroupStatusData
|
|||||||
_joinableCount++;
|
_joinableCount++;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
_totalCount++;
|
_totalCount++;
|
||||||
|
|
||||||
|
@ -58,6 +58,15 @@ public class ServerMonitor
|
|||||||
|
|
||||||
Collection<ServerGroupData> serverGroups = _repository.retrieveServerGroups();
|
Collection<ServerGroupData> serverGroups = _repository.retrieveServerGroups();
|
||||||
HashMap<String, GroupStatusData> groupStatusList = _repository.retrieveGroupStatusData();
|
HashMap<String, GroupStatusData> groupStatusList = _repository.retrieveGroupStatusData();
|
||||||
|
|
||||||
|
for (GroupStatusData groupStatus : groupStatusList.values())
|
||||||
|
{
|
||||||
|
for (ServerStatusData serverToKill : groupStatus.KillServers)
|
||||||
|
{
|
||||||
|
System.out.println("----DUPLICATE SERVER----> " + serverToKill.Address + ", " + serverToKill.Name);
|
||||||
|
killServer(serverToKill);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
for (ServerGroupData serverGroup : serverGroups)
|
for (ServerGroupData serverGroup : serverGroups)
|
||||||
{
|
{
|
||||||
|
Loading…
Reference in New Issue
Block a user