Consolidated item ban commands and fixed /group help.
This commit is contained in:
parent
8a3a5dc3c1
commit
7c3ffee48c
1 changed files with 164 additions and 150 deletions
|
|
@ -202,11 +202,9 @@ namespace TShockAPI
|
||||||
add(Permissions.warp, Warp, "warp");
|
add(Permissions.warp, Warp, "warp");
|
||||||
add(Permissions.managegroup, Group, "group");
|
add(Permissions.managegroup, Group, "group");
|
||||||
add(Permissions.managegroup, GroupDeprecated, "addgroup", "delgroup", "modgroup");
|
add(Permissions.managegroup, GroupDeprecated, "addgroup", "delgroup", "modgroup");
|
||||||
add(Permissions.manageitem, AddItem, "additem", "banitem");
|
add(Permissions.manageitem, ItemBan, "itemban");
|
||||||
add(Permissions.manageitem, DeleteItem, "delitem", "unbanitem");
|
add(Permissions.manageitem, ItemBanDeprecated,
|
||||||
add(Permissions.manageitem, ListItems, "listitems", "listbanneditems");
|
"additem", "additemgroup", "banitem", "delitem", "delitemgroup", "listitems", "listbanneditems", "unbanitem");
|
||||||
add(Permissions.manageitem, AddItemGroup, "additemgroup");
|
|
||||||
add(Permissions.manageitem, DeleteItemGroup, "delitemgroup");
|
|
||||||
add(Permissions.manageregion, Region, "region");
|
add(Permissions.manageregion, Region, "region");
|
||||||
add(Permissions.manageregion, DebugRegions, "debugreg");
|
add(Permissions.manageregion, DebugRegions, "debugreg");
|
||||||
add(Permissions.cfg, Reload, "reload");
|
add(Permissions.cfg, Reload, "reload");
|
||||||
|
|
@ -1942,6 +1940,7 @@ namespace TShockAPI
|
||||||
args.Player.SendInfoMessage("Arguments: delperm <group name> <permissions...>, list [page], listperm <group name> [page]");
|
args.Player.SendInfoMessage("Arguments: delperm <group name> <permissions...>, list [page], listperm <group name> [page]");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
switch (args.Parameters[0].ToLower())
|
switch (args.Parameters[0].ToLower())
|
||||||
{
|
{
|
||||||
case "add":
|
case "add":
|
||||||
|
|
@ -2069,7 +2068,7 @@ namespace TShockAPI
|
||||||
#endregion
|
#endregion
|
||||||
return;
|
return;
|
||||||
case "help":
|
case "help":
|
||||||
args.Player.SendInfoMessage("Invalid syntax. Syntax: /group <command> [arguments]");
|
args.Player.SendInfoMessage("Syntax: /group <command> [arguments]");
|
||||||
args.Player.SendInfoMessage("Commands: add, addperm, del, delperm, list, listperm");
|
args.Player.SendInfoMessage("Commands: add, addperm, del, delperm, list, listperm");
|
||||||
args.Player.SendInfoMessage("Arguments: add <group name>, addperm <group name> <permissions...>, del <group name>");
|
args.Player.SendInfoMessage("Arguments: add <group name>, addperm <group name> <permissions...>, del <group name>");
|
||||||
args.Player.SendInfoMessage("Arguments: delperm <group name> <permissions...>, list [page], listperm <group name> [page]");
|
args.Player.SendInfoMessage("Arguments: delperm <group name> <permissions...>, list [page], listperm <group name> [page]");
|
||||||
|
|
@ -2127,175 +2126,190 @@ namespace TShockAPI
|
||||||
|
|
||||||
#region Item Management
|
#region Item Management
|
||||||
|
|
||||||
private static void AddItem(CommandArgs args)
|
private static void ItemBanDeprecated(CommandArgs args)
|
||||||
{
|
{
|
||||||
if (args.Parameters.Count == 1)
|
args.Player.SendInfoMessage("The item ban commands were merged into /itemban in TShock 4.1; check /itemban help.");
|
||||||
|
}
|
||||||
|
|
||||||
|
private static void ItemBan(CommandArgs args)
|
||||||
{
|
{
|
||||||
var items = TShock.Utils.GetItemByIdOrName(args.Parameters[0]);
|
if (args.Parameters.Count == 0)
|
||||||
|
{
|
||||||
|
args.Player.SendInfoMessage("Invalid syntax. Syntax: /itemban <command> [arguments]");
|
||||||
|
args.Player.SendInfoMessage("Commands: add, allow, del, disallow, list");
|
||||||
|
args.Player.SendInfoMessage("Arguments: add <item name>, allow <item name> <group name>");
|
||||||
|
args.Player.SendInfoMessage("Arguments: del <item name>, disallow <item name> <group name>, list [page]");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
switch (args.Parameters[0].ToLower())
|
||||||
|
{
|
||||||
|
case "add":
|
||||||
|
#region Add item
|
||||||
|
{
|
||||||
|
if (args.Parameters.Count != 2)
|
||||||
|
{
|
||||||
|
args.Player.SendErrorMessage("Invalid syntax. Syntax: /itemban add <item name>");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
List<Item> items = TShock.Utils.GetItemByIdOrName(args.Parameters[1]);
|
||||||
if (items.Count == 0)
|
if (items.Count == 0)
|
||||||
{
|
{
|
||||||
args.Player.SendErrorMessage("Invalid item type!");
|
args.Player.SendErrorMessage("Invalid item.");
|
||||||
}
|
}
|
||||||
else if (items.Count > 1)
|
else if (items.Count > 1)
|
||||||
{
|
{
|
||||||
args.Player.SendErrorMessage(string.Format("More than one ({0}) item matched!", items.Count));
|
args.Player.SendErrorMessage(string.Format("More than one ({0}) item matched.", items.Count));
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
var item = items[0];
|
TShock.Itembans.AddNewBan(items[0].name);
|
||||||
if (item.type >= 1)
|
args.Player.SendSuccessMessage("Banned " + items[0].name + ".");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#endregion
|
||||||
|
return;
|
||||||
|
case "allow":
|
||||||
|
#region Allow group to item
|
||||||
{
|
{
|
||||||
TShock.Itembans.AddNewBan(item.name);
|
if (args.Parameters.Count != 3)
|
||||||
args.Player.SendErrorMessage(item.name + " has been banned.");
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
{
|
||||||
args.Player.SendErrorMessage("Invalid item type!");
|
args.Player.SendErrorMessage("Invalid syntax. Syntax: /itemban allow <item name> <group name>");
|
||||||
}
|
return;
|
||||||
}
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
args.Player.SendErrorMessage("Invalid use: /additem \"item name\" or /additem ##.");
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private static void DeleteItem(CommandArgs args)
|
List<Item> items = TShock.Utils.GetItemByIdOrName(args.Parameters[1]);
|
||||||
{
|
|
||||||
if (args.Parameters.Count == 1)
|
|
||||||
{
|
|
||||||
var items = TShock.Utils.GetItemByIdOrName(args.Parameters[0]);
|
|
||||||
if (items.Count == 0)
|
if (items.Count == 0)
|
||||||
{
|
{
|
||||||
args.Player.SendErrorMessage("Invalid item type!");
|
args.Player.SendErrorMessage("Invalid item.");
|
||||||
}
|
}
|
||||||
else if (items.Count > 1)
|
else if (items.Count > 1)
|
||||||
{
|
{
|
||||||
args.Player.SendErrorMessage(string.Format("More than one ({0}) item matched!", items.Count));
|
args.Player.SendErrorMessage(string.Format("More than one ({0}) item matched.", items.Count));
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
var item = items[0];
|
if (!TShock.Groups.GroupExists(args.Parameters[2]))
|
||||||
if (item.type >= 1)
|
|
||||||
{
|
{
|
||||||
TShock.Itembans.RemoveBan(item.name);
|
args.Player.SendErrorMessage("Invalid group.");
|
||||||
args.Player.SendSuccessMessage(item.name + " has been unbanned.");
|
return;
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
args.Player.SendErrorMessage("Invalid item type!");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
args.Player.SendErrorMessage("Invalid use: /delitem \"item name\" or /delitem ##");
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private static void ListItems(CommandArgs args)
|
ItemBan ban = TShock.Itembans.GetItemBanByName(items[0].name);
|
||||||
|
if (ban == null)
|
||||||
{
|
{
|
||||||
args.Player.SendInfoMessage("The banned items are: " + String.Join(",", TShock.Itembans.ItemBans) + ".");
|
args.Player.SendErrorMessage(items[0].name + " is not banned.");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (!ban.AllowedGroups.Contains(args.Parameters[2]))
|
||||||
|
{
|
||||||
|
TShock.Itembans.AllowGroup(items[0].name, args.Parameters[2]);
|
||||||
|
args.Player.SendSuccessMessage(String.Format("{0} has been allowed to use {1}.", args.Parameters[2], items[0].name));
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
args.Player.SendWarningMessage(String.Format("{0} is already allowed to use {1}.", args.Parameters[2], items[0].name));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#endregion
|
||||||
|
return;
|
||||||
|
case "del":
|
||||||
|
#region Delete item
|
||||||
|
{
|
||||||
|
if (args.Parameters.Count != 2)
|
||||||
|
{
|
||||||
|
args.Player.SendErrorMessage("Invalid syntax. Syntax: /itemban del <item name>");
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
private static void AddItemGroup(CommandArgs args)
|
List<Item> items = TShock.Utils.GetItemByIdOrName(args.Parameters[1]);
|
||||||
{
|
|
||||||
if (args.Parameters.Count == 2)
|
|
||||||
{
|
|
||||||
var items = TShock.Utils.GetItemByIdOrName(args.Parameters[0]);
|
|
||||||
if (items.Count == 0)
|
if (items.Count == 0)
|
||||||
{
|
{
|
||||||
args.Player.SendErrorMessage("Invalid item type!");
|
args.Player.SendErrorMessage("Invalid item.");
|
||||||
}
|
}
|
||||||
else if (items.Count > 1)
|
else if (items.Count > 1)
|
||||||
{
|
{
|
||||||
args.Player.SendErrorMessage(string.Format("More than one ({0}) item matched!", items.Count));
|
args.Player.SendErrorMessage(string.Format("More than one ({0}) item matched.", items.Count));
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
var item = items[0];
|
TShock.Itembans.RemoveBan(items[0].name);
|
||||||
if (item.type >= 1)
|
args.Player.SendSuccessMessage("Unbanned " + items[0].name + ".");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#endregion
|
||||||
|
return;
|
||||||
|
case "disallow":
|
||||||
|
#region Allow group to item
|
||||||
{
|
{
|
||||||
if(TShock.Groups.GroupExists(args.Parameters[1]))
|
if (args.Parameters.Count != 3)
|
||||||
{
|
{
|
||||||
ItemBan ban = TShock.Itembans.GetItemBanByName(item.name);
|
args.Player.SendErrorMessage("Invalid syntax. Syntax: /itemban disallow <item name> <group name>");
|
||||||
|
return;
|
||||||
if(!ban.AllowedGroups.Contains(args.Parameters[1]))
|
|
||||||
{
|
|
||||||
TShock.Itembans.AllowGroup(item.name, args.Parameters[1]);
|
|
||||||
args.Player.SendSuccessMessage("Banned item " + item.name + " has been allowed for group " + args.Parameters[1] + ".");
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
args.Player.SendWarningMessage("Banned item " + item.name + " is already allowed for group " + args.Parameters[1] + "!");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
args.Player.SendErrorMessage("Group " + args.Parameters[1] + " not found!");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
args.Player.SendErrorMessage("Invalid item type!");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
args.Player.SendErrorMessage("Invalid use: /additemgroup \"item name\" \"group name\"");
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private static void DeleteItemGroup(CommandArgs args)
|
List<Item> items = TShock.Utils.GetItemByIdOrName(args.Parameters[1]);
|
||||||
{
|
|
||||||
if (args.Parameters.Count == 2)
|
|
||||||
{
|
|
||||||
var items = TShock.Utils.GetItemByIdOrName(args.Parameters[0]);
|
|
||||||
if (items.Count == 0)
|
if (items.Count == 0)
|
||||||
{
|
{
|
||||||
args.Player.SendErrorMessage("Invalid item type!");
|
args.Player.SendErrorMessage("Invalid item.");
|
||||||
}
|
}
|
||||||
else if (items.Count > 1)
|
else if (items.Count > 1)
|
||||||
{
|
{
|
||||||
args.Player.SendErrorMessage(string.Format("More than one ({0}) item matched!", items.Count));
|
args.Player.SendErrorMessage(string.Format("More than one ({0}) item matched.", items.Count));
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
var item = items[0];
|
if (!TShock.Groups.GroupExists(args.Parameters[2]))
|
||||||
if (item.type >= 1)
|
|
||||||
{
|
{
|
||||||
if(TShock.Groups.GroupExists(args.Parameters[1]))
|
args.Player.SendErrorMessage("Invalid group.");
|
||||||
{
|
return;
|
||||||
ItemBan ban = TShock.Itembans.GetItemBanByName(item.name);
|
|
||||||
|
|
||||||
if(ban.AllowedGroups.Contains(args.Parameters[1]))
|
|
||||||
{
|
|
||||||
TShock.Itembans.RemoveGroup(item.name, args.Parameters[1]);
|
|
||||||
args.Player.SendSuccessMessage("Removed access for group " + args.Parameters[1] + " to banned item " + item.name + ".");
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
args.Player.SendWarningMessage("Group " + args.Parameters[1] + " did not have access to banned item " + item.name + "!");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
args.Player.SendErrorMessage("Group " + args.Parameters[1] + " not found!");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
args.Player.SendErrorMessage("Invalid item type!");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
args.Player.SendErrorMessage("Invalid use: /delitemgroup \"item name\" \"group name\"");
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
ItemBan ban = TShock.Itembans.GetItemBanByName(items[0].name);
|
||||||
|
if (ban == null)
|
||||||
|
{
|
||||||
|
args.Player.SendErrorMessage(items[0].name + " is not banned.");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (ban.AllowedGroups.Contains(args.Parameters[2]))
|
||||||
|
{
|
||||||
|
TShock.Itembans.RemoveGroup(items[0].name, args.Parameters[2]);
|
||||||
|
args.Player.SendSuccessMessage(String.Format("{0} has been disallowed to use {1}.", args.Parameters[2], items[0].name));
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
args.Player.SendWarningMessage(String.Format("{0} is already disallowed to use {1}.", args.Parameters[2], items[0].name));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#endregion
|
||||||
|
return;
|
||||||
|
case "help":
|
||||||
|
args.Player.SendInfoMessage("Syntax: /itemban <command> [arguments]");
|
||||||
|
args.Player.SendInfoMessage("Commands: add, allow, del, disallow, list");
|
||||||
|
args.Player.SendInfoMessage("Arguments: add <item name>, allow <item name> <group name>");
|
||||||
|
args.Player.SendInfoMessage("Arguments: del <item name>, disallow <item name> <group name>, list [page]");
|
||||||
|
return;
|
||||||
|
case "list":
|
||||||
|
#region List items
|
||||||
|
int pageNumber;
|
||||||
|
if (!PaginationTools.TryParsePageNumber(args.Parameters, 1, args.Player, out pageNumber))
|
||||||
|
return;
|
||||||
|
IEnumerable<string> itemNames = from itemBan in TShock.Itembans.ItemBans
|
||||||
|
select itemBan.Name;
|
||||||
|
PaginationTools.SendPage(args.Player, pageNumber, PaginationTools.BuildLinesFromTerms(itemNames),
|
||||||
|
new PaginationTools.Settings
|
||||||
|
{
|
||||||
|
HeaderFormat = "Item bans ({0}/{1}):",
|
||||||
|
FooterFormat = "Type /itemban list {0} for more.",
|
||||||
|
NothingToDisplayString = "There are currently no banned items."
|
||||||
|
});
|
||||||
|
#endregion
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
#endregion Item Management
|
#endregion Item Management
|
||||||
|
|
||||||
#region Server Config Commands
|
#region Server Config Commands
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue