Merge pull request #489 from CoderCow/patch-1
Region Command Improvements, Fixed /who
This commit is contained in:
commit
6fa744e2b5
1 changed files with 63 additions and 72 deletions
|
|
@ -2819,62 +2819,24 @@ namespace TShockAPI
|
||||||
break;
|
break;
|
||||||
case "list":
|
case "list":
|
||||||
{
|
{
|
||||||
//How many regions per page
|
int pageNumber;
|
||||||
const int pagelimit = 15;
|
if (!PaginationTools.TryParsePageNumber(args.Parameters, 1, args.Player, out pageNumber))
|
||||||
//How many regions per line
|
|
||||||
const int perline = 5;
|
|
||||||
//Pages start at 0 but are displayed and parsed at 1
|
|
||||||
int page = 0;
|
|
||||||
|
|
||||||
|
|
||||||
if (args.Parameters.Count > 1)
|
|
||||||
{
|
|
||||||
if (!int.TryParse(args.Parameters[1], out page) || page < 1)
|
|
||||||
{
|
|
||||||
args.Player.SendMessage(string.Format("Invalid page number ({0})", page), Color.Red);
|
|
||||||
return;
|
return;
|
||||||
}
|
|
||||||
page--; //Substract 1 as pages are parsed starting at 1 and not 0
|
|
||||||
}
|
|
||||||
|
|
||||||
var regions = TShock.Regions.ListAllRegions(Main.worldID.ToString());
|
List<string> regionNames = new List<string>(TShock.Regions.Regions.Count);
|
||||||
|
regionNames.AddRange(
|
||||||
|
TShock.Regions.Regions.Where(r => r.WorldID == Main.worldID.ToString()).Select(r => r.Name)
|
||||||
|
);
|
||||||
|
|
||||||
// Are there even any regions to display?
|
PaginationTools.SendPage(
|
||||||
if (regions.Count == 0)
|
args.Player, pageNumber, PaginationTools.BuildLinesFromTerms(regionNames),
|
||||||
|
new PaginationTools.Settings
|
||||||
{
|
{
|
||||||
args.Player.SendMessage("There are currently no regions defined.", Color.Red);
|
HeaderFormat = "List of Regions ({0}/{1})",
|
||||||
return;
|
FooterFormat = "Type /region list {0} for more.",
|
||||||
}
|
NothingToDisplayString = "There are currently no regions defined."
|
||||||
|
|
||||||
//Check if they are trying to access a page that doesn't exist.
|
|
||||||
int pagecount = regions.Count / pagelimit;
|
|
||||||
if (page > pagecount)
|
|
||||||
{
|
|
||||||
args.Player.SendMessage(string.Format("Page number exceeds pages ({0}/{1})", page + 1, pagecount + 1), Color.Red);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
//Display the current page and the number of pages.
|
|
||||||
args.Player.SendMessage(string.Format("Current Regions ({0}/{1}):", page + 1, pagecount + 1), Color.Green);
|
|
||||||
|
|
||||||
//Add up to pagelimit names to a list
|
|
||||||
var nameslist = new List<string>();
|
|
||||||
for (int i = (page * pagelimit); (i < ((page * pagelimit) + pagelimit)) && i < regions.Count; i++)
|
|
||||||
{
|
|
||||||
nameslist.Add(regions[i].Name);
|
|
||||||
}
|
|
||||||
|
|
||||||
//convert the list to an array for joining
|
|
||||||
var names = nameslist.ToArray();
|
|
||||||
for (int i = 0; i < names.Length; i += perline)
|
|
||||||
{
|
|
||||||
args.Player.SendMessage(string.Join(", ", names, i, Math.Min(names.Length - i, perline)), Color.Yellow);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (page < pagecount)
|
|
||||||
{
|
|
||||||
args.Player.SendMessage(string.Format("Type /region list {0} for more regions.", (page + 2)), Color.Yellow);
|
|
||||||
}
|
}
|
||||||
|
);
|
||||||
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
@ -3022,6 +2984,31 @@ namespace TShockAPI
|
||||||
args.Player.SendMessage("Invalid syntax! Proper syntax: /region resize [regionname] [u/d/l/r] [amount]1",
|
args.Player.SendMessage("Invalid syntax! Proper syntax: /region resize [regionname] [u/d/l/r] [amount]1",
|
||||||
Color.Red);
|
Color.Red);
|
||||||
}
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case "tp":
|
||||||
|
{
|
||||||
|
if (!args.Player.Group.HasPermission(Permissions.tp))
|
||||||
|
{
|
||||||
|
args.Player.SendErrorMessage("You don't have the necessary permission to do that.");
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
if (args.Parameters.Count <= 1)
|
||||||
|
{
|
||||||
|
args.Player.SendErrorMessage("Invalid syntax! Proper syntax: /region tp [region].");
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
string regionName = string.Join(" ", args.Parameters.Skip(1));
|
||||||
|
Region region = TShock.Regions.GetRegionByName(regionName);
|
||||||
|
if (region == null)
|
||||||
|
{
|
||||||
|
args.Player.SendErrorMessage("Region \"{0}\" does not exist.", regionName);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
args.Player.Teleport(region.Area.Center.X, region.Area.Center.Y + 3);
|
||||||
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case "help":
|
case "help":
|
||||||
|
|
@ -3034,12 +3021,10 @@ namespace TShockAPI
|
||||||
if (!PaginationTools.TryParsePageNumber(args.Parameters, pageParamIndex, args.Player, out pageNumber))
|
if (!PaginationTools.TryParsePageNumber(args.Parameters, pageParamIndex, args.Player, out pageNumber))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
PaginationTools.SendPage(
|
List<string> lines = new List<string> {
|
||||||
args.Player, pageNumber, new[]
|
|
||||||
{
|
|
||||||
"set [1/2] - Sets the temporary region points.",
|
"set [1/2] - Sets the temporary region points.",
|
||||||
"clear - Clears the temporary region points.",
|
"clear - Clears the temporary region points.",
|
||||||
"define [name] - Defines the region.",
|
"define [name] - Defines the region with the given name.",
|
||||||
"delete [name] - Deletes the given region.",
|
"delete [name] - Deletes the given region.",
|
||||||
"name - Shows the name of the region at the given point.",
|
"name - Shows the name of the region at the given point.",
|
||||||
"list - Lists all regions.",
|
"list - Lists all regions.",
|
||||||
|
|
@ -3051,7 +3036,12 @@ namespace TShockAPI
|
||||||
"info [region] - Displays several information about the given region.",
|
"info [region] - Displays several information about the given region.",
|
||||||
"protect [name] [true/false] - Sets whether the tiles inside the region are protected or not.",
|
"protect [name] [true/false] - Sets whether the tiles inside the region are protected or not.",
|
||||||
"z [name] [#] - Sets the z-order of the region.",
|
"z [name] [#] - Sets the z-order of the region.",
|
||||||
},
|
};
|
||||||
|
if (args.Player.Group.HasPermission(Permissions.tp))
|
||||||
|
lines.Add("tp [region] - Teleports you to the given region's center.");
|
||||||
|
|
||||||
|
PaginationTools.SendPage(
|
||||||
|
args.Player, pageNumber, lines,
|
||||||
new PaginationTools.Settings
|
new PaginationTools.Settings
|
||||||
{
|
{
|
||||||
HeaderFormat = "Available Region Sub-Commands ({0}/{1}):",
|
HeaderFormat = "Available Region Sub-Commands ({0}/{1}):",
|
||||||
|
|
@ -3169,7 +3159,8 @@ namespace TShockAPI
|
||||||
|
|
||||||
args.Player.SendSuccessMessage("Online Players ({0}/{1})", TShock.Utils.ActivePlayers(), TShock.Config.MaxSlots);
|
args.Player.SendSuccessMessage("Online Players ({0}/{1})", TShock.Utils.ActivePlayers(), TShock.Config.MaxSlots);
|
||||||
PaginationTools.SendPage(
|
PaginationTools.SendPage(
|
||||||
args.Player, pageNumber, TShock.Utils.GetPlayers(displayIdsRequested), new PaginationTools.Settings
|
args.Player, pageNumber, PaginationTools.BuildLinesFromTerms(TShock.Utils.GetPlayers(displayIdsRequested)),
|
||||||
|
new PaginationTools.Settings
|
||||||
{
|
{
|
||||||
IncludeHeader = false,
|
IncludeHeader = false,
|
||||||
FooterFormat = string.Format("Type /who {0}{{0}} for more.", displayIdsRequested ? "-i " : string.Empty)
|
FooterFormat = string.Format("Type /who {0}{{0}} for more.", displayIdsRequested ? "-i " : string.Empty)
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue