server-master/srcs/_plugins/WingsEmu.Plugins.Essentials/Administrator/Items/ItemManagement.cs
2026-02-10 18:21:30 +01:00

66 lines
No EOL
2.6 KiB
C#

// WingsEmu
//
// Developed by NosWings Team
using System.Collections.Generic;
using System.Threading.Tasks;
using Qmmands;
using WingsEmu.Commands.Checks;
using WingsEmu.Commands.Entities;
using WingsEmu.DTOs.Account;
using WingsEmu.Game._i18n;
using WingsEmu.Game.Extensions;
using WingsEmu.Game.Inventory;
using WingsEmu.Game.Items;
using WingsEmu.Game.Managers.StaticData;
using WingsEmu.Packets.Enums.Chat;
namespace WingsEmu.Plugins.Essentials.Administrator.Items;
[Group("itemtoggle", "itoggle", "itog")]
[Name("Admin-ItemManagement")]
[Description("Module related to Administrator commands for management.")]
[RequireAuthority(AuthorityType.Owner)]
public class AdministratorItemManagementModule : SaltyModuleBase
{
private readonly IGameLanguageService _gameLanguage;
private readonly IItemsManager _itemsManager;
private readonly IItemUsageToggleManager _itemUsageToggleManager;
public AdministratorItemManagementModule(IItemUsageToggleManager itemUsageToggleManager, IItemsManager itemsManager, IGameLanguageService gameLanguage)
{
_itemUsageToggleManager = itemUsageToggleManager;
_itemsManager = itemsManager;
_gameLanguage = gameLanguage;
}
[Command("block", "restrict", "disable", "d", "r")]
public async Task<SaltyCommandResult> BlockItemUsage(int vnum)
{
await _itemUsageToggleManager.BlockItemUsage(vnum);
return new SaltyCommandResult(true, $"{vnum} has been temporarily blocked!");
}
[Command("unblock", "authorize", "enable", "e", "a")]
public async Task<SaltyCommandResult> UnblockItemUsage(int vnum)
{
await _itemUsageToggleManager.UnblockItemUsage(vnum);
return new SaltyCommandResult(true, $"{vnum} has been unblocked!");
}
[Command("list", "get")]
public async Task<SaltyCommandResult> ListCurrentlyBlockedItemUsage()
{
IEnumerable<int> tmp = await _itemUsageToggleManager.GetBlockedItemUsages();
Context.Player.SendChatMessage("[BLOCKED_ITEMS]", ChatMessageColorType.Green);
Context.Player.SendChatMessage("===============================", ChatMessageColorType.Green);
foreach (int itemBlocked in tmp)
{
IGameItem itemName = _itemsManager.GetItem(itemBlocked);
Context.Player.SendChatMessage($"[{itemBlocked}] => {_gameLanguage.GetLanguage(GameDataType.Item, itemName.Name, Context.Player.UserLanguage)}", ChatMessageColorType.Green);
}
Context.Player.SendChatMessage("===============================", ChatMessageColorType.Green);
return new SaltyCommandResult(true);
}
}