mirror of
https://github.com/ClassiCube/MCGalaxy.git
synced 2025-09-23 04:32:50 -04:00
Combine /reload and /reveal. (Thanks goodlyay)
This commit is contained in:
parent
30a2dc5315
commit
7113b0ee53
@ -440,7 +440,7 @@ namespace MCGalaxy.Commands.CPE {
|
||||
if (pl.level == null || !pl.level.HasCustomBlocks) continue;
|
||||
if (!pl.outdatedClient) continue;
|
||||
|
||||
CmdReveal.ReloadMap(p, pl, true);
|
||||
CmdReload.ReloadMap(p, pl, true);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -49,14 +49,16 @@ namespace MCGalaxy {
|
||||
}
|
||||
|
||||
protected bool CheckSuper(Player p, string message, string type) {
|
||||
if (message != "" || (p != null && p.ircNick == null)) return false;
|
||||
SuperRequiresArgs(p, type);
|
||||
if (message != "" || !Player.IsSuper(p)) return false;
|
||||
SuperRequiresArgs(name, p, type);
|
||||
return true;
|
||||
}
|
||||
|
||||
protected void SuperRequiresArgs(Player p, string type) {
|
||||
string src = p == null ? "console" : "IRC";
|
||||
Player.Message(p, "When using /{0} from {2}, you must provide a {1}.", name, type, src);
|
||||
protected void SuperRequiresArgs(Player p, string type) { SuperRequiresArgs(name, p, type); }
|
||||
|
||||
protected static void SuperRequiresArgs(string cmd, Player p, string type) {
|
||||
string src = p == null ? "console" : "IRC";
|
||||
Player.Message(p, "When using /{0} from {2}, you must provide a {1}.", cmd, type, src);
|
||||
}
|
||||
|
||||
protected bool CheckExtraPerm(Player p, int num = 1) {
|
||||
|
@ -17,57 +17,62 @@
|
||||
*/
|
||||
using System;
|
||||
namespace MCGalaxy.Commands {
|
||||
|
||||
public sealed class CmdReveal : Command {
|
||||
|
||||
public override string name { get { return "reveal"; } }
|
||||
public override string shortcut { get { return ""; } }
|
||||
public override string type { get { return CommandTypes.Moderation; } }
|
||||
public override bool museumUsable { get { return true; } }
|
||||
public override LevelPermission defaultRank { get { return LevelPermission.AdvBuilder; } }
|
||||
public sealed class CmdReload : Command {
|
||||
public override string name { get { return "reload"; } }
|
||||
public override string shortcut { get { return "reveal"; } }
|
||||
public override string type { get { return CommandTypes.World; } }
|
||||
public override bool museumUsable { get { return false; } }
|
||||
public override LevelPermission defaultRank { get { return LevelPermission.Guest; } }
|
||||
public override CommandAlias[] Aliases {
|
||||
get { return new [] { new CommandAlias("rejoin"), new CommandAlias("rd") }; }
|
||||
}
|
||||
public override CommandPerm[] AdditionalPerms {
|
||||
get { return new[] { new CommandPerm(LevelPermission.Operator, "+ can reveal to everyone") }; }
|
||||
get { return new[] { new CommandPerm(LevelPermission.Operator, "+ can reload for other players") }; }
|
||||
}
|
||||
|
||||
public override void Use(Player p, string message) {
|
||||
if (CheckSuper(p, message, "player or level name")) return;
|
||||
if (message == "") message = p.name;
|
||||
string[] parts = message.Split(' ');
|
||||
for (int i = 0; i < parts.Length; i++)
|
||||
parts[i] = parts[i].ToLower();
|
||||
string[] parts = message.ToLower().Split(' ');
|
||||
|
||||
Level lvl = null;
|
||||
if (parts.Length == 2) {
|
||||
lvl = LevelInfo.Find(parts[1]);
|
||||
} else if (p != null && p.level != null) {
|
||||
lvl = p.level;
|
||||
}
|
||||
|
||||
if (parts[0] == "all") {
|
||||
if (lvl == null) { Player.Message(p, "Level not found."); return; }
|
||||
if (!CheckExtraPerm(p)) { MessageNeedPerms(p, "can reload all players in a map."); return; }
|
||||
|
||||
Player[] players = PlayerInfo.Online.Items;
|
||||
foreach (Player who in players) {
|
||||
if (who.level == lvl)
|
||||
ReloadMap(p, who, true);
|
||||
}
|
||||
if (!ReloadAll(p, parts)) return;
|
||||
} else {
|
||||
Player who = PlayerInfo.FindMatches(p, parts[0]);
|
||||
if (who == null) {
|
||||
return;
|
||||
} else if (who.group.Permission > p.group.Permission && p != who) {
|
||||
if (who == null) return;
|
||||
if (p != null && who.group.Permission > p.group.Permission) {
|
||||
MessageTooHighRank(p, "reload the map for", true); return;
|
||||
}
|
||||
ReloadMap(p, who, true);
|
||||
}
|
||||
ReloadMap(p, who, true);
|
||||
}
|
||||
GC.Collect();
|
||||
GC.WaitForPendingFinalizers();
|
||||
}
|
||||
|
||||
bool ReloadAll(Player p, string[] parts) {
|
||||
Level lvl = null;
|
||||
if (parts.Length == 2) {
|
||||
lvl = LevelInfo.Find(parts[1]);
|
||||
if (lvl == null) return false;
|
||||
} else if (!Player.IsSuper(p)) {
|
||||
lvl = p.level;
|
||||
} else {
|
||||
SuperRequiresArgs(name + " all", p, "level name"); return false;
|
||||
}
|
||||
|
||||
if (!CheckExtraPerm(p)) { MessageNeedPerms(p, "can reload all players in a map."); return false; }
|
||||
Player[] players = PlayerInfo.Online.Items;
|
||||
foreach (Player who in players) {
|
||||
if (who.level == lvl)
|
||||
ReloadMap(p, who, true);
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
internal static void ReloadMap(Player p, Player who, bool showMessage) {
|
||||
who.Loading = true;
|
||||
Entities.DespawnEntities(who);
|
||||
who.SendUserMOTD(); who.SendMap(who.level);
|
||||
who.SendUserMOTD(); who.SendMap(who.level);
|
||||
Entities.SpawnEntities(who);
|
||||
who.Loading = false;
|
||||
|
||||
@ -78,32 +83,10 @@ namespace MCGalaxy.Commands {
|
||||
}
|
||||
|
||||
public override void Help(Player p) {
|
||||
Player.Message(p, "%T/reveal <name> %H- Reloads the map for <name>.");
|
||||
Player.Message(p, "%T/reveal all %H- Reloads for all players in your map");
|
||||
Player.Message(p, "%T/reveal all <map> %H- Reloads for all players in <map>");
|
||||
}
|
||||
}
|
||||
|
||||
public sealed class CmdReload : Command {
|
||||
|
||||
public override string name { get { return "reload"; } }
|
||||
public override string shortcut { get { return "rd"; } }
|
||||
public override string type { get { return CommandTypes.World; } }
|
||||
public override bool museumUsable { get { return false; } }
|
||||
public override LevelPermission defaultRank { get { return LevelPermission.Guest; } }
|
||||
public override CommandAlias[] Aliases {
|
||||
get { return new [] { new CommandAlias("rejoin") }; }
|
||||
}
|
||||
|
||||
public override void Use(Player p, string message) {
|
||||
if (Player.IsSuper(p)) { MessageInGameOnly(p); return; }
|
||||
CmdReveal.ReloadMap(p, p, false);
|
||||
}
|
||||
|
||||
public override void Help(Player p) {
|
||||
Player.Message(p, "%T/reload");
|
||||
Player.Message(p, "%HReloads the map you in, just for you.");
|
||||
Player.Message(p, "%HUse %T/reveal %Hto reload maps for other players.");
|
||||
Player.Message(p, "%T/reload %H- Reloads the map you are in, just for you.");
|
||||
Player.Message(p, "%T/reload <name> %H- Reloads the map for [name].");
|
||||
Player.Message(p, "%T/reload all %H- Reloads for all players in map you are in.");
|
||||
Player.Message(p, "%T/reload all [map] %H- Reloads for all players in [map]");
|
||||
}
|
||||
}
|
||||
}
|
@ -127,7 +127,7 @@ namespace MCGalaxy.Drawing.Ops {
|
||||
Player[] players = PlayerInfo.Online.Items;
|
||||
foreach (Player pl in players) {
|
||||
if (pl.level.name.CaselessEq(lvl.name))
|
||||
CmdReveal.ReloadMap(p, pl, true);
|
||||
CmdReload.ReloadMap(p, pl, true);
|
||||
}
|
||||
GC.Collect();
|
||||
GC.WaitForPendingFinalizers();
|
||||
|
@ -386,7 +386,7 @@
|
||||
<Compile Include="Commands\World\CmdPhysics.cs" />
|
||||
<Compile Include="Commands\World\CmdRenameLvl.cs" />
|
||||
<Compile Include="Commands\World\CmdRestore.cs" />
|
||||
<Compile Include="Commands\World\CmdReveal.cs" />
|
||||
<Compile Include="Commands\World\CmdReload.cs" />
|
||||
<Compile Include="Commands\World\CmdSave.cs" />
|
||||
<Compile Include="Commands\World\CmdSetspawn.cs" />
|
||||
<Compile Include="Commands\World\CmdUnflood.cs" />
|
||||
|
Loading…
x
Reference in New Issue
Block a user