Skip to content

Commit

Permalink
Also get /top10 placed/deleted working with over 33 million
Browse files Browse the repository at this point in the history
  • Loading branch information
UnknownShadow200 committed Mar 19, 2020
1 parent 4dfef64 commit 2a0e56f
Show file tree
Hide file tree
Showing 3 changed files with 23 additions and 22 deletions.
14 changes: 7 additions & 7 deletions MCGalaxy/Commands/Maintenance/CmdPlayerEdit.cs
Expand Up @@ -90,16 +90,16 @@ public sealed class CmdPlayerEdit : Command2 {
PlayerDB.Update(args[0], PlayerData.ColumnIP, args[2]);
MessageDataChanged(p, args[0], args[1], args[2]);
} else if (opt == "modified") {
SetInteger(p, args, PlayerData.ColumnTotalBlocks, int.MaxValue, who,
SetInteger(p, args, PlayerData.ColumnBlocks, int.MaxValue, who,
v => who.TotalModified = v, type_lo);
} else if (opt == "drawn") {
SetInteger(p, args, PlayerData.ColumnTotalCuboided, int.MaxValue, who,
SetInteger(p, args, PlayerData.ColumnDrawn, int.MaxValue, who,
v => who.TotalDrawn = v, type_lo);
} else if (opt == "placed") {
SetInteger(p, args, PlayerData.ColumnTotalBlocks, int.MaxValue, who,
SetInteger(p, args, PlayerData.ColumnBlocks, int.MaxValue, who,
v => who.TotalPlaced = v, type_hi);
} else if (opt == "deleted") {
SetInteger(p, args, PlayerData.ColumnTotalCuboided, int.MaxValue, who,
SetInteger(p, args, PlayerData.ColumnDrawn, int.MaxValue, who,
v => who.TotalDeleted = v, type_hi);
} else if (opt == "totalkicked") {
SetInteger(p, args, PlayerData.ColumnKicked, 16777215, who,
Expand Down Expand Up @@ -198,12 +198,12 @@ public sealed class CmdPlayerEdit : Command2 {
string dbValue = args[2];
// special case handling for packed forms of totalBlocks and totalCuboided
if (type == 1) {
long packed = GetLong(args[0], column) & ~PlayerData.LowerBitsMask; // hi value only
long packed = GetLong(args[0], column) & ~PlayerData.LoBitsMask; // hi value only
packed |= (uint)value;
dbValue = packed.ToString();
} else if (type == 2) {
long packed = GetLong(args[0], column) & PlayerData.LowerBitsMask; // lo value only
packed |= ((long)value) << PlayerData.LowerBits;
long packed = GetLong(args[0], column) & PlayerData.LoBitsMask; // lo value only
packed |= ((long)value) << PlayerData.HiBitsShift;
dbValue = packed.ToString();
}
PlayerDB.Update(args[0], column, dbValue);
Expand Down
23 changes: 12 additions & 11 deletions MCGalaxy/Database/PlayerData.cs
Expand Up @@ -41,9 +41,9 @@ public class PlayerData {
public const string ColumnLastLogin = "LastLogin";
public const string ColumnTimeSpent = "TimeSpent";

public const string ColumnTotalBlocks = "totalBlocks";
public const string ColumnTotalCuboided = "totalCuboided";
public const string ColumnMessages = "Messages";
public const string ColumnBlocks = "totalBlocks";
public const string ColumnDrawn = "totalCuboided";
public const string ColumnMessages = "Messages";

public string Name, Color, Title, TitleColor, IP;
public DateTime FirstLogin, LastLogin;
Expand Down Expand Up @@ -122,8 +122,8 @@ public class PlayerData {
data.Kicks = record.GetInt(ColumnKicked);
data.Messages = record.GetInt(ColumnMessages);

long blocks = record.GetLong(ColumnTotalBlocks);
long drawn = record.GetLong(ColumnTotalCuboided);
long blocks = record.GetLong(ColumnBlocks);
long drawn = record.GetLong(ColumnDrawn);
data.TotalModified = UnpackLo(blocks);
data.TotalPlaced = UnpackHi(blocks);
data.TotalDrawn = UnpackLo(drawn);
Expand Down Expand Up @@ -167,17 +167,18 @@ public class PlayerData {


internal static long UnpackHi(long value) {
// unsigned shift right
return (long)((ulong)value >> LowerBits);
return (value >> HiBitsShift) & HiBitsMask;
}
internal static long UnpackLo(long value) {
return value & LowerBitsMask;
return value & LoBitsMask;
}
internal static long Pack(long hi, long lo) {
return hi << LowerBits | lo;
return hi << HiBitsShift | lo;
}

public const int LowerBits = 38;
public const long LowerBitsMask = (1L << LowerBits) - 1;
public const int HiBitsShift = 38;
public const long LoBitsMask = (1L << HiBitsShift) - 1;
// convert negative to positive after shifting
public const long HiBitsMask = (1L << 26) - 1;
}
}
8 changes: 4 additions & 4 deletions MCGalaxy/Database/Stats/TopStat.cs
Expand Up @@ -69,16 +69,16 @@ public sealed class TopStat {
new TopStat("Kicked", "Players",
PlayerData.ColumnKicked, MostKicked, FormatInteger),
new TopStat("Modified", "Players",
PlayerData.ColumnTotalBlocks + " & " + PlayerData.LowerBitsMask,
PlayerData.ColumnBlocks + " & " + PlayerData.LoBitsMask,
MostModified, FormatInteger),
new TopStat("Drawn", "Players",
PlayerData.ColumnTotalCuboided + " & " + PlayerData.LowerBitsMask,
PlayerData.ColumnDrawn + " & " + PlayerData.LoBitsMask,
MostDrawn, FormatInteger),
new TopStat("Placed", "Players",
PlayerData.ColumnTotalBlocks + " >> " + PlayerData.LowerBits,
PlayerData.ColumnBlocks + " >> " + PlayerData.HiBitsShift + " & " + PlayerData.HiBitsMask,
MostPlaced, FormatInteger),
new TopStat("Deleted", "Players",
PlayerData.ColumnTotalCuboided + " >> " + PlayerData.LowerBits,
PlayerData.ColumnDrawn + " >> " + PlayerData.HiBitsShift + " & " + PlayerData.HiBitsMask,
MostDeleted, FormatInteger),
new TopStat("TimeSpent", "Players",
PlayerData.ColumnTimeSpent, MostTime, FormatTimespan,
Expand Down

0 comments on commit 2a0e56f

Please sign in to comment.