public static bool IsItem(this CommandArg arg, out ItemAsset value) { if (arg.IsUInt16(out ushort id)) { Asset asset = Assets.find(EAssetType.ITEM, id); if (asset == null) { value = null; return(false); } value = (ItemAsset)asset; return(value != null); } else if (arg.IsGuid(out Guid guid)) { value = AssetUtil.GetItemAssets().FirstOrDefault(d => d.GUID == guid); return(value != null); } else { string search = arg.RawValue.StartsWith("@") ? arg.RawValue.Substring(1) : arg.RawValue; value = AssetUtil.GetItemAsset(search); return(value != null); } }