mirror of
https://github.com/ClassiCube/MCGalaxy.git
synced 2025-10-03 02:21:53 -04:00
Make the various Line printer methods in OnlineStat/OfflineStat public so plugins can use (and abuse) them
This commit is contained in:
parent
687dd02aa0
commit
952ba94c5b
@ -22,10 +22,10 @@ namespace MCGalaxy.DB {
|
|||||||
|
|
||||||
public delegate void OfflineStatPrinter(Player p, PlayerData who);
|
public delegate void OfflineStatPrinter(Player p, PlayerData who);
|
||||||
|
|
||||||
/// <summary> Prints stats for an offline player in /whois. </summary>
|
/// <summary> Prints stats for an offline player in /info. </summary>
|
||||||
public static class OfflineStat {
|
public static class OfflineStat {
|
||||||
|
|
||||||
/// <summary> List of stats that can be output to /whois. </summary>
|
/// <summary> List of stats that can be output to /info. </summary>
|
||||||
public static List<OfflineStatPrinter> Stats = new List<OfflineStatPrinter>() {
|
public static List<OfflineStatPrinter> Stats = new List<OfflineStatPrinter>() {
|
||||||
OfflineCoreLine,
|
OfflineCoreLine,
|
||||||
(p, who) => OnlineStat.MiscLine(p, who.Name, who.Deaths, who.Money),
|
(p, who) => OnlineStat.MiscLine(p, who.Name, who.Deaths, who.Money),
|
||||||
@ -39,7 +39,7 @@ namespace MCGalaxy.DB {
|
|||||||
(p, who) => OnlineStat.IPLine(p, who.Name, who.IP),
|
(p, who) => OnlineStat.IPLine(p, who.Name, who.IP),
|
||||||
};
|
};
|
||||||
|
|
||||||
static void OfflineCoreLine(Player p, PlayerData data) {
|
public static void OfflineCoreLine(Player p, PlayerData data) {
|
||||||
Group group = Group.GroupIn(data.Name);
|
Group group = Group.GroupIn(data.Name);
|
||||||
string color = data.Color.Length == 0 ? group.Color : data.Color;
|
string color = data.Color.Length == 0 ? group.Color : data.Color;
|
||||||
string prefix = data.Title.Length == 0 ? "" : color + "[" + data.TitleColor + data.Title + color + "] ";
|
string prefix = data.Title.Length == 0 ? "" : color + "[" + data.TitleColor + data.Title + color + "] ";
|
||||||
@ -47,15 +47,15 @@ namespace MCGalaxy.DB {
|
|||||||
OnlineStat.CoreLine(p, fullName, data.Name, group, data.Messages);
|
OnlineStat.CoreLine(p, fullName, data.Name, group, data.Messages);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void BlocksModifiedLine(Player p, PlayerData who) {
|
public static void BlocksModifiedLine(Player p, PlayerData who) {
|
||||||
p.Message(" Modified &a{0} %Sblocks", who.TotalModified);
|
p.Message(" Modified &a{0} %Sblocks", who.TotalModified);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void TimeSpentLine(Player p, PlayerData who) {
|
public static void TimeSpentLine(Player p, PlayerData who) {
|
||||||
p.Message(" Spent &a{0} %Son the server", who.TotalTime.Shorten());
|
p.Message(" Spent &a{0} %Son the server", who.TotalTime.Shorten());
|
||||||
}
|
}
|
||||||
|
|
||||||
static void LoginLine(Player p, PlayerData who) {
|
public static void LoginLine(Player p, PlayerData who) {
|
||||||
p.Message(" First login &a{0}%S, last login &a{1}",
|
p.Message(" First login &a{0}%S, last login &a{1}",
|
||||||
who.FirstLogin.ToString("yyyy-MM-dd"), who.LastLogin.ToString("yyyy-MM-dd"));
|
who.FirstLogin.ToString("yyyy-MM-dd"), who.LastLogin.ToString("yyyy-MM-dd"));
|
||||||
}
|
}
|
||||||
|
@ -24,10 +24,10 @@ namespace MCGalaxy.DB {
|
|||||||
|
|
||||||
public delegate void OnlineStatPrinter(Player p, Player who);
|
public delegate void OnlineStatPrinter(Player p, Player who);
|
||||||
|
|
||||||
/// <summary> Prints stats for an online player in /whois. </summary>
|
/// <summary> Prints stats for an online player in /info. </summary>
|
||||||
public static class OnlineStat {
|
public static class OnlineStat {
|
||||||
|
|
||||||
/// <summary> List of stats that can be output to /whois. </summary>
|
/// <summary> List of stats that can be output to /info. </summary>
|
||||||
public static List<OnlineStatPrinter> Stats = new List<OnlineStatPrinter>() {
|
public static List<OnlineStatPrinter> Stats = new List<OnlineStatPrinter>() {
|
||||||
OnlineCoreLine,
|
OnlineCoreLine,
|
||||||
(p, who) => MiscLine(p, who.name, who.TimesDied, who.money),
|
(p, who) => MiscLine(p, who.name, who.TimesDied, who.money),
|
||||||
@ -43,7 +43,7 @@ namespace MCGalaxy.DB {
|
|||||||
EntityLine,
|
EntityLine,
|
||||||
};
|
};
|
||||||
|
|
||||||
static void OnlineCoreLine(Player p, Player who) {
|
public static void OnlineCoreLine(Player p, Player who) {
|
||||||
string prefix = who.title.Length == 0 ? "" : who.MakeTitle(who.title, who.titlecolor);
|
string prefix = who.title.Length == 0 ? "" : who.MakeTitle(who.title, who.titlecolor);
|
||||||
string fullName = prefix + who.ColoredName;
|
string fullName = prefix + who.ColoredName;
|
||||||
CoreLine(p, fullName, who.name, who.group, who.TotalMessagesSent);
|
CoreLine(p, fullName, who.name, who.group, who.TotalMessagesSent);
|
||||||
@ -64,31 +64,31 @@ namespace MCGalaxy.DB {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static void BlocksModifiedLine(Player p, Player who) {
|
public static void BlocksModifiedLine(Player p, Player who) {
|
||||||
p.Message(" Modified &a{0} %Sblocks, &a{1} %Ssince login", who.TotalModified, who.SessionModified);
|
p.Message(" Modified &a{0} %Sblocks, &a{1} %Ssince login", who.TotalModified, who.SessionModified);
|
||||||
}
|
}
|
||||||
|
|
||||||
internal static void BlockStatsLine(Player p, long placed, long deleted, long drawn) {
|
public static void BlockStatsLine(Player p, long placed, long deleted, long drawn) {
|
||||||
p.Message(" &a{0} %Splaced, &a{1} %Sdeleted, &a{2} %Sdrawn",
|
p.Message(" &a{0} %Splaced, &a{1} %Sdeleted, &a{2} %Sdrawn",
|
||||||
placed, deleted, drawn);
|
placed, deleted, drawn);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void TimeSpentLine(Player p, Player who) {
|
public static void TimeSpentLine(Player p, Player who) {
|
||||||
TimeSpan timeOnline = DateTime.UtcNow - who.SessionStartTime;
|
TimeSpan timeOnline = DateTime.UtcNow - who.SessionStartTime;
|
||||||
p.Message(" Spent &a{0} %Son the server, &a{1} %Sthis session",
|
p.Message(" Spent &a{0} %Son the server, &a{1} %Sthis session",
|
||||||
who.TotalTime.Shorten(), timeOnline.Shorten());
|
who.TotalTime.Shorten(), timeOnline.Shorten());
|
||||||
}
|
}
|
||||||
|
|
||||||
static void LoginLine(Player p, Player who) {
|
public static void LoginLine(Player p, Player who) {
|
||||||
p.Message(" First login &a{0}%S, and is currently &aonline",
|
p.Message(" First login &a{0}%S, and is currently &aonline",
|
||||||
who.FirstLogin.ToString("yyyy-MM-dd"));
|
who.FirstLogin.ToString("yyyy-MM-dd"));
|
||||||
}
|
}
|
||||||
|
|
||||||
internal static void LoginsLine(Player p, int logins, int kicks) {
|
public static void LoginsLine(Player p, int logins, int kicks) {
|
||||||
p.Message(" Logged in &a{0} %Stimes, &c{1} %Sof which ended in a kick", logins, kicks);
|
p.Message(" Logged in &a{0} %Stimes, &c{1} %Sof which ended in a kick", logins, kicks);
|
||||||
}
|
}
|
||||||
|
|
||||||
internal static void BanLine(Player p, string name) {
|
public static void BanLine(Player p, string name) {
|
||||||
if (!Group.BannedRank.Players.Contains(name)) return;
|
if (!Group.BannedRank.Players.Contains(name)) return;
|
||||||
string banner, reason, prevRank;
|
string banner, reason, prevRank;
|
||||||
DateTime time;
|
DateTime time;
|
||||||
@ -102,7 +102,7 @@ namespace MCGalaxy.DB {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
internal static void SpecialGroupLine(Player p, string name) {
|
public static void SpecialGroupLine(Player p, string name) {
|
||||||
if (Server.Devs.CaselessContains(name.RemoveLastPlus()))
|
if (Server.Devs.CaselessContains(name.RemoveLastPlus()))
|
||||||
p.Message(" Player is an &9{0} Developer", Server.SoftwareName);
|
p.Message(" Player is an &9{0} Developer", Server.SoftwareName);
|
||||||
if (Server.Mods.CaselessContains(name.RemoveLastPlus()))
|
if (Server.Mods.CaselessContains(name.RemoveLastPlus()))
|
||||||
@ -111,7 +111,7 @@ namespace MCGalaxy.DB {
|
|||||||
p.Message(" Player is the &cServer owner");
|
p.Message(" Player is the &cServer owner");
|
||||||
}
|
}
|
||||||
|
|
||||||
internal static void IPLine(Player p, string name, string ip) {
|
public static void IPLine(Player p, string name, string ip) {
|
||||||
ItemPerms seeIpPerms = CommandExtraPerms.Find("WhoIs", 1);
|
ItemPerms seeIpPerms = CommandExtraPerms.Find("WhoIs", 1);
|
||||||
if (!seeIpPerms.UsableBy(p.Rank)) return;
|
if (!seeIpPerms.UsableBy(p.Rank)) return;
|
||||||
|
|
||||||
@ -123,7 +123,7 @@ namespace MCGalaxy.DB {
|
|||||||
p.Message(" Player is &fWhitelisted");
|
p.Message(" Player is &fWhitelisted");
|
||||||
}
|
}
|
||||||
|
|
||||||
static void IdleLine(Player p, Player who) {
|
public static void IdleLine(Player p, Player who) {
|
||||||
TimeSpan idleTime = DateTime.UtcNow - who.LastAction;
|
TimeSpan idleTime = DateTime.UtcNow - who.LastAction;
|
||||||
if (who.afkMessage != null) {
|
if (who.afkMessage != null) {
|
||||||
p.Message(" Idle for {0} (AFK {1}%S)", idleTime.Shorten(), who.afkMessage);
|
p.Message(" Idle for {0} (AFK {1}%S)", idleTime.Shorten(), who.afkMessage);
|
||||||
@ -132,7 +132,7 @@ namespace MCGalaxy.DB {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static void EntityLine(Player p, Player who) {
|
public static void EntityLine(Player p, Player who) {
|
||||||
bool hasSkin = !who.SkinName.CaselessEq(who.truename);
|
bool hasSkin = !who.SkinName.CaselessEq(who.truename);
|
||||||
bool hasModel = !(who.Model.CaselessEq("humanoid") || who.Model.CaselessEq("human"));
|
bool hasModel = !(who.Model.CaselessEq("humanoid") || who.Model.CaselessEq("human"));
|
||||||
|
|
||||||
|
@ -44,6 +44,10 @@ namespace MCGalaxy {
|
|||||||
public sealed partial class Level : IDisposable {
|
public sealed partial class Level : IDisposable {
|
||||||
|
|
||||||
public Level(string name, ushort width, ushort height, ushort length) {
|
public Level(string name, ushort width, ushort height, ushort length) {
|
||||||
|
Init(name, width, height, length);
|
||||||
|
}
|
||||||
|
|
||||||
|
void Init(string name, ushort width, ushort height, ushort length) {
|
||||||
if (width < 1) width = 1;
|
if (width < 1) width = 1;
|
||||||
if (height < 1) height = 1;
|
if (height < 1) height = 1;
|
||||||
if (length < 1) length = 1;
|
if (length < 1) length = 1;
|
||||||
@ -62,21 +66,21 @@ namespace MCGalaxy {
|
|||||||
this.name = name; MapName = name.ToLower();
|
this.name = name; MapName = name.ToLower();
|
||||||
BlockDB = new BlockDB(this);
|
BlockDB = new BlockDB(this);
|
||||||
|
|
||||||
blocks = new byte[Width * Height * Length];
|
blocks = new byte[width * height * length];
|
||||||
ChunksX = Utils.CeilDiv16(Width);
|
ChunksX = Utils.CeilDiv16(width);
|
||||||
ChunksY = Utils.CeilDiv16(Height);
|
ChunksY = Utils.CeilDiv16(height);
|
||||||
ChunksZ = Utils.CeilDiv16(Length);
|
ChunksZ = Utils.CeilDiv16(length);
|
||||||
CustomBlocks = new byte[ChunksX * ChunksY * ChunksZ][];
|
CustomBlocks = new byte[ChunksX * ChunksY * ChunksZ][];
|
||||||
|
|
||||||
spawnx = (ushort)(Width / 2);
|
spawnx = (ushort)(width / 2);
|
||||||
spawny = (ushort)(Height * 0.75f);
|
spawny = (ushort)(height * 0.75f);
|
||||||
spawnz = (ushort)(Length / 2);
|
spawnz = (ushort)(length / 2);
|
||||||
rotx = 0; roty = 0;
|
rotx = 0; roty = 0;
|
||||||
|
|
||||||
VisitAccess = new LevelAccessController(Config, name, true);
|
VisitAccess = new LevelAccessController(Config, name, true);
|
||||||
BuildAccess = new LevelAccessController(Config, name, false);
|
BuildAccess = new LevelAccessController(Config, name, false);
|
||||||
listCheckExists = new SparseBitSet(Width, Height, Length);
|
listCheckExists = new SparseBitSet(width, height, length);
|
||||||
listUpdateExists = new SparseBitSet(Width, Height, Length);
|
listUpdateExists = new SparseBitSet(width, height, length);
|
||||||
}
|
}
|
||||||
|
|
||||||
public List<Player> players { get { return getPlayers(); } }
|
public List<Player> players { get { return getPlayers(); } }
|
||||||
@ -132,8 +136,8 @@ namespace MCGalaxy {
|
|||||||
|
|
||||||
/// <summary> Attempts to automatically unload this map. </summary>
|
/// <summary> Attempts to automatically unload this map. </summary>
|
||||||
public bool AutoUnload() {
|
public bool AutoUnload() {
|
||||||
bool can = IsMuseum || (Server.Config.AutoLoadMaps && Config.AutoUnload && !HasPlayers());
|
bool can = IsMuseum || (Server.Config.AutoLoadMaps && Config.AutoUnload && !HasPlayers());
|
||||||
return can && Unload(true);
|
return can && Unload(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
public bool Unload(bool silent = false, bool save = true) {
|
public bool Unload(bool silent = false, bool save = true) {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user